Cerber Security & Antispam - Version 8.6.7

Version Description

  • New: In the professional version of WP Cerber, you can now permit user registrations for IP addresses in the White IP Access List only.
  • New: All URLs in the logs are displayed in a shortened form without the websites domain. There is no much value having see known things.
  • New: A new label "IP Whitelisted" with green borders has been introduced. It is displayed in a log row on the Live Traffic if the IP address was in White IP Access List, but the appropriate setting Use White IP Access List was not enabled at the moment when the event was logged.
  • New: If you now hover the mouse over a red square icon in the Activity or Live Traffic log, you see the reason why the IP address in the row is currently locked out.
  • New: If you now hover the mouse over a green or black square Access List icon in the Activity or Live Traffic log, you see the comment youve previously specified for that Access List entry.
  • Improved: All non-REGEX entries in the list of prohibited usernames (logins) are case-insensitive now. This applies to standard Latin-based (ASCII) WordPress usernames only.
  • Improved: The name of a group in the Group column on Cerber.Hubs website list is a link that takes you to the list of websites in the group.
  • Improved: The launch time of the daily maintenance tasks is now set to the night-time at 02:20. If you need them to get rescheduled, you can manually delete the cerber_daily cron task via a plugin or deactivate/activate WP Cerber.
  • Fixed: Configured REST API restrictions have no effect if a WordPress is installed not in the root folder of a website (there is a path in the site URL). Affected versions: 8.6.1 and newer.
  • Fixed: A bug in the logging subsystem: depending on server configuration, submitted form fields are not saved into the DB (if it is enabled in the logging settings).
  • Fixed: A bug with Cerbers admin CSS styles that were added in the previous version and hid the top pagination links on the "All posts" and "All posts" admin pages.
Download this release

Release Info

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

Code changes from version 8.6.6 to 8.6.7

admin/cerber-admin.php CHANGED
@@ -314,10 +314,19 @@ add_action( 'wp_ajax_cerber_view_file', function () {
314
  cerber_check_ajax_permissions();
315
 
316
  $get = crb_get_query_params();
317
- $file_name = $get['file'];
 
 
 
 
 
 
 
 
 
318
 
319
  if ( ! @is_file( $file_name ) ) {
320
- crb_admin_stop_ajax( 'I/O Error' );
321
 
322
  return;
323
  }
@@ -325,13 +334,13 @@ add_action( 'wp_ajax_cerber_view_file', function () {
325
  $file_size = filesize( $file_name );
326
 
327
  if ( $file_size > 8000000 ) {
328
- crb_admin_stop_ajax( 'Error: This file is too large to display.' );
329
 
330
  return;
331
  }
332
 
333
  if ( $file_size <= 0 ) {
334
- crb_admin_stop_ajax( 'The file is empty.' );
335
 
336
  return;
337
  }
@@ -679,7 +688,6 @@ function crb_admin_stop_ajax( $msg = '' ) {
679
  echo $msg;
680
  }
681
  if ( ! nexus_is_valid_request() ) {
682
- //wp_die();
683
  exit;
684
  }
685
  }
314
  cerber_check_ajax_permissions();
315
 
316
  $get = crb_get_query_params();
317
+
318
+ if ( ! $file_name = $get['file'] ) {
319
+ crb_admin_stop_ajax( 'Error: Filename not specified. Please run a new malware scan.' );
320
+ }
321
+
322
+ if ( ! @file_exists( $file_name ) ) {
323
+ crb_admin_stop_ajax( 'Error: The requested file doesn\'t exist or has been deleted: ' . htmlspecialchars( $file_name ). '. Please run a new malware scan.' );
324
+
325
+ return;
326
+ }
327
 
328
  if ( ! @is_file( $file_name ) ) {
329
+ crb_admin_stop_ajax( 'Error: The requested file is not an ordinary file: ' . htmlspecialchars( $file_name ) );
330
 
331
  return;
332
  }
334
  $file_size = filesize( $file_name );
335
 
336
  if ( $file_size > 8000000 ) {
337
+ crb_admin_stop_ajax( 'Error: The requested is too large to display: ' . crb_size_format( $file_size ) );
338
 
339
  return;
340
  }
341
 
342
  if ( $file_size <= 0 ) {
343
+ crb_admin_stop_ajax( 'The requested file is empty.' );
344
 
345
  return;
346
  }
688
  echo $msg;
689
  }
690
  if ( ! nexus_is_valid_request() ) {
 
691
  exit;
692
  }
693
  }
admin/cerber-settings.php CHANGED
@@ -36,7 +36,7 @@ if ( ! defined( 'WPINC' ) || ! defined( 'CERBER_VER' ) ) {
36
 
37
  // Cerber's settings form in the WP dashboard
38
  // @since 8.5.9.1
39
- define( 'CRB_SETTINGS_GROUP', 'cerber_settings_group' );
40
 
41
  add_action( 'admin_init', function () { // @since 8.6.3.1
42
  cerber_admin_init();
36
 
37
  // Cerber's settings form in the WP dashboard
38
  // @since 8.5.9.1
39
+ const CRB_SETTINGS_GROUP = 'cerber_settings_group';
40
 
41
  add_action( 'admin_init', function () { // @since 8.6.3.1
42
  cerber_admin_init();
assets/admin.css CHANGED
@@ -472,7 +472,8 @@ div.crb-announcement p {
472
 
473
  .cerber-msg li {
474
  list-style-type: square;
475
- line-height: 180%;
 
476
  }
477
 
478
  .cerber-msg h1 {
@@ -503,7 +504,7 @@ div.crb-announcement p {
503
  color: white;
504
  }
505
 
506
- .tablenav.top .pagination-links {
507
  display: none;
508
  }
509
 
@@ -613,7 +614,8 @@ td.crb-traffic-details table td:nth-child(2) {
613
  color: #fff;
614
  }
615
  .crb-200 {
616
- color: green;
 
617
  }
618
  .crb-403,
619
  .crb-404,
@@ -632,16 +634,25 @@ td.crb-traffic-details table td:nth-child(2) {
632
 
633
  .crb-req-status-500,
634
  .crb-req-status-501,
635
- .crb-req-status-502{
636
- background-color: #51ae43;
 
637
  color: #fff;
638
  }
639
 
640
- .crb-php-error{
 
 
 
 
 
 
 
641
  background-color: #8892bf;
642
  color: #fff;
643
  }
644
- .crb-above{
 
645
  background-color: #FFFF55;
646
  }
647
  .crb-fields-table {
@@ -727,8 +738,9 @@ td.crb-traffic-details table td:nth-child(2) {
727
 
728
  /* IP info like WHOIS details */
729
 
730
- .ip-info-label {
731
- padding: 1px 6px 1px 6px;
 
732
  margin-right: 4px;
733
  white-space: nowrap;
734
  }
@@ -797,10 +809,8 @@ td.crb-traffic-details table td:nth-child(2) {
797
  }
798
 
799
  .crb-log-status{
800
- /*background-color: #777;
801
- color: #ffffff;*/
802
  background-color: #d2d2d2;
803
- color: #373737;
804
  display: inline-block;
805
  padding: 0 5px 0 5px;
806
 
@@ -809,65 +819,69 @@ td.crb-traffic-details table td:nth-child(2) {
809
  }
810
 
811
  .crb-status-500 {
812
- background-color: #51ae43;
813
  color: #ffffff;
814
  }
815
 
816
- p.act-url, .act-role{
817
  color: #777;
818
  }
819
- p.act-url{
 
820
  margin: 0.3em 0 !important;
821
  font-weight: normal;
822
  }
823
- .act-icon {
 
824
  display: inline-block;
825
  vertical-align: middle;
826
  width: 1em;
827
  height: 1em;
828
  margin-right: 1em;
829
  margin-bottom: 0.2em;
830
- /* background-color: inherit;*/
831
  }
832
- .css-table{
 
833
  display: table;
834
  }
835
- .css-table > div{
 
836
  display: table-cell;
837
- /*vertical-align: middle;*/
838
  }
839
 
840
- .ip-aclB, .crb-color-black {
841
  background-color: #000;
842
  color: #fff;
843
  }
844
 
845
- .ip-aclW, .crb-color-green {
846
- background-color: #83CE77;
847
  color: #fff;
848
  }
849
 
850
- .color-blocked {
851
  background-color: #FF5733;
852
  color: #fff;
853
  }
854
 
855
- .green_label, .actv5 {
856
  display: inline-block;
857
  padding: 3px 5px 3px 5px;
858
  /*margin: 1px;*/
859
- background-color: #83CE77;
860
  color: #000;
861
  /*border-radius: 5px;*/
862
  border-left: 4px solid rgba(0, 0, 0, 0);
863
  border-right: 4px solid rgba(0, 0, 0, 0);
864
  }
865
 
866
- .red_label, .actv10, .actv11, .actv12, .actv16, .actv17, .actv18, .actv19, .actv41, .actv42, .actv53, .actv54, .actv55, .actv56, .actv70, .actv71 {
867
  display: inline-block;
868
  padding: 3px 5px 3px 5px;
869
  /*margin: 1px;*/
870
- background-color: #FF5733;
 
871
  color: #000;
872
  /*border-radius: 5px;*/
873
  border-left: 4px solid rgba(0, 0, 0, 0);
@@ -923,13 +937,14 @@ p.act-url{
923
  .crb10 span:first-child,
924
  .crb11 span:first-child {
925
  display: inline-block;
 
926
  background-color: #FF5733;
927
  margin-right: 1.5em;
928
  line-height: 1.2;
929
  }
930
  .crb5 {
931
  /*border-left: 4px solid #FF5733;*/
932
- border-left: 0.4em solid #51AE43;
933
  padding-bottom: 2px;
934
  }
935
 
@@ -1086,6 +1101,7 @@ a.nav-tab:first-child{
1086
  font-weight: normal;
1087
  margin-left: 0;
1088
  border-right: none;
 
1089
  }
1090
  .cerber-tabs .nav-tab:hover {
1091
  color: #000;
@@ -1605,15 +1621,18 @@ div.crb-extra-info span#ip-country{
1605
  div.crb-extra-info span#ip-address{
1606
  margin-right: 1em;
1607
  }
1608
- div.crb-extra-info #ip-details {
1609
  float: left;
1610
  max-width: 30%;
1611
  }
1612
  div.crb-extra-info #acl-buttons{
1613
  float:right;
1614
  max-width: 30%;
1615
- }
1616
 
 
 
 
1617
 
1618
  #crb_the_summary > div {
1619
  display: table-row;
@@ -1751,10 +1770,6 @@ div#whois:hover {
1751
  margin-right: 0.5em;
1752
  }
1753
 
1754
- .cerber-button {
1755
- /*vertical-align: middle;*/
1756
- }
1757
-
1758
  .cerber-button i {
1759
  vertical-align: middle;
1760
  font-size: 120%;
472
 
473
  .cerber-msg li {
474
  list-style-type: square;
475
+ line-height: 160%;
476
+ padding-bottom: 0.5em;
477
  }
478
 
479
  .cerber-msg h1 {
504
  color: white;
505
  }
506
 
507
+ #crb-admin .tablenav.top .pagination-links {
508
  display: none;
509
  }
510
 
614
  color: #fff;
615
  }
616
  .crb-200 {
617
+ color: #2db05a;
618
+ font-weight: 500;
619
  }
620
  .crb-403,
621
  .crb-404,
634
 
635
  .crb-req-status-500,
636
  .crb-req-status-501,
637
+ .crb-req-status-502,
638
+ .crb-req-status-503 {
639
+ background-color: #2db05a;
640
  color: #fff;
641
  }
642
 
643
+ .crb-req-status-510,
644
+ .crb-req-status-511,
645
+ .crb-req-status-512 {
646
+ border: solid 2px #2db05a;
647
+ color: #222;
648
+ }
649
+
650
+ .crb-php-error {
651
  background-color: #8892bf;
652
  color: #fff;
653
  }
654
+
655
+ .crb-above {
656
  background-color: #FFFF55;
657
  }
658
  .crb-fields-table {
738
 
739
  /* IP info like WHOIS details */
740
 
741
+ .crb_ip_info_label {
742
+ /*padding: 1px 6px 1px 6px;*/
743
+ padding: 4px 8px;
744
  margin-right: 4px;
745
  white-space: nowrap;
746
  }
809
  }
810
 
811
  .crb-log-status{
 
 
812
  background-color: #d2d2d2;
813
+ color: #222;
814
  display: inline-block;
815
  padding: 0 5px 0 5px;
816
 
819
  }
820
 
821
  .crb-status-500 {
822
+ background-color: #2db05a;
823
  color: #ffffff;
824
  }
825
 
826
+ .crb_act_url, .crb_act_role {
827
  color: #777;
828
  }
829
+
830
+ .crb_act_url {
831
  margin: 0.3em 0 !important;
832
  font-weight: normal;
833
  }
834
+
835
+ .crb_act_icon {
836
  display: inline-block;
837
  vertical-align: middle;
838
  width: 1em;
839
  height: 1em;
840
  margin-right: 1em;
841
  margin-bottom: 0.2em;
842
+ /* background-color: inherit;*/
843
  }
844
+
845
+ .crb_css_table {
846
  display: table;
847
  }
848
+
849
+ .crb_css_table > div {
850
  display: table-cell;
 
851
  }
852
 
853
+ .crb_ip_aclB, .crb_color_black {
854
  background-color: #000;
855
  color: #fff;
856
  }
857
 
858
+ .crb_ip_aclW, .crb_color_green {
859
+ background-color: #2db05a;
860
  color: #fff;
861
  }
862
 
863
+ .crb_color_blocked {
864
  background-color: #FF5733;
865
  color: #fff;
866
  }
867
 
868
+ .actv5 {
869
  display: inline-block;
870
  padding: 3px 5px 3px 5px;
871
  /*margin: 1px;*/
872
+ background-color: #2db05a;
873
  color: #000;
874
  /*border-radius: 5px;*/
875
  border-left: 4px solid rgba(0, 0, 0, 0);
876
  border-right: 4px solid rgba(0, 0, 0, 0);
877
  }
878
 
879
+ .actv10, .actv11, .actv12, .actv16, .actv17, .actv18, .actv19, .actv41, .actv42, .actv53, .actv54, .actv55, .actv56, .actv70, .actv71 {
880
  display: inline-block;
881
  padding: 3px 5px 3px 5px;
882
  /*margin: 1px;*/
883
+ /*background-color: #FF5733;*/
884
+ background-color: #FC5643;
885
  color: #000;
886
  /*border-radius: 5px;*/
887
  border-left: 4px solid rgba(0, 0, 0, 0);
937
  .crb10 span:first-child,
938
  .crb11 span:first-child {
939
  display: inline-block;
940
+ color: #FFF;
941
  background-color: #FF5733;
942
  margin-right: 1.5em;
943
  line-height: 1.2;
944
  }
945
  .crb5 {
946
  /*border-left: 4px solid #FF5733;*/
947
+ border-left: 0.4em solid #2db05a;
948
  padding-bottom: 2px;
949
  }
950
 
1101
  font-weight: normal;
1102
  margin-left: 0;
1103
  border-right: none;
1104
+ color: #333;
1105
  }
1106
  .cerber-tabs .nav-tab:hover {
1107
  color: #000;
1621
  div.crb-extra-info span#ip-address{
1622
  margin-right: 1em;
1623
  }
1624
+ /*div.crb-extra-info #ip-details {
1625
  float: left;
1626
  max-width: 30%;
1627
  }
1628
  div.crb-extra-info #acl-buttons{
1629
  float:right;
1630
  max-width: 30%;
1631
+ }*/
1632
 
1633
+ .crb-extra-info #add_acl_black button {
1634
+ min-width: 15em;
1635
+ }
1636
 
1637
  #crb_the_summary > div {
1638
  display: table-row;
1770
  margin-right: 0.5em;
1771
  }
1772
 
 
 
 
 
1773
  .cerber-button i {
1774
  vertical-align: middle;
1775
  font-size: 120%;
assets/admin.js CHANGED
@@ -242,13 +242,13 @@ jQuery(document).ready(function ($) {
242
  // Add UTM
243
 
244
  $('div#crb-admin').on('click', 'a', function (event) {
245
- var link = $(this).attr('href');
246
  if (link.startsWith('https://wpcerber.com') && !link.includes('wp-admin')) {
247
- var url_char = '?';
248
  if (link.includes('?')) {
249
  url_char = '&';
250
  }
251
- $(this).attr('href', link + url_char + 'utm_source=wp_plugin');
252
  }
253
  });
254
 
242
  // Add UTM
243
 
244
  $('div#crb-admin').on('click', 'a', function (event) {
245
+ let link = $(this).attr('href');
246
  if (link.startsWith('https://wpcerber.com') && !link.includes('wp-admin')) {
247
+ let url_char = '?';
248
  if (link.includes('?')) {
249
  url_char = '&';
250
  }
251
+ $(this).attr('href', link + url_char + 'utm_source=wp_plugin&culoc=' + crb_user_locale);
252
  }
253
  });
254
 
assets/icons/fonts/crb.svg CHANGED
@@ -38,10 +38,12 @@
38
  <glyph unicode="&#xe228;" glyph-name="bxs-world" d="M256 325.334c-117.632 0-213.333-95.702-213.333-213.334s95.701-213.333 213.333-213.333 213.333 95.702 213.333 213.333-95.702 213.334-213.333 213.334zM192-46.101v30.101l-64 64v42.666l-21.334 42.666h-19.861c9.664 77.034 70.827 138.197 147.862 147.861v-19.861l-21.333-42.666-42.666-42.666-21.334-42.666 21.334-42.666h21.334l21.334-21.334h42.666v-42.666l-40.192-80.363c-8.171 1.984-16.149 4.48-23.808 7.594zM376.618-8.618l-13.952 13.952-21.334 42.666-21.334 21.334-21.334 20.992 21.334 21.674 42.666 21.334v21.334l-21.334 21.334 21.334 42.666v26.346c38.954-31.296 64-79.254 64-133.014 0-47.040-19.136-89.707-50.048-120.618z" />
39
  <glyph unicode="&#xe908;" glyph-name="bxl-google" d="M432.704 147.072h-177.643v-73.621h102.23c-9.514-46.784-49.344-73.664-102.23-73.664-62.357 0-112.619 50.262-112.619 112.64 0 62.358 50.262 112.618 112.618 112.618 26.858 0 51.136-9.536 70.186-25.131l55.466 55.446c-33.792 29.462-77.12 47.637-125.654 47.637-105.685 0-190.592-84.885-190.592-190.592s84.886-190.592 190.592-190.592c95.296 0 181.952 69.312 181.952 190.592 0 11.264-1.728 23.403-4.31 34.667z" />
40
  <glyph unicode="&#xe937;" glyph-name="bx-bell-off" d="M426.666-16c0.149-0.022 0.32-0.022 0.426 0 11.798 0 21.334 9.536 21.334 21.334 0 3.84-1.002 7.445-2.795 10.56l-18.966 56.896v81.877c0 84.053-62.762 156.587-147.328 168.853l-21.611 1.75c-1.152 0.085-2.282 0.085-3.435 0l-22.678-1.856c-40.49-5.824-76.053-26.048-102.037-54.827l-50.496 50.496-30.166-30.166 384-384 30.166 30.166-48.918 48.918h12.502zM236.374 281.024l19.648 1.579 18.517-1.451c62.4-9.088 109.462-63.466 109.462-126.486v-85.334c0-2.283 0.384-4.565 1.11-6.741l11.947-35.925h-25.558l-211.669 211.669c19.37 22.422 46.102 38.294 76.544 42.688zM128 69.334v82.752l-38.614 38.613c-2.56-11.669-4.053-23.702-4.053-36.032v-81.877l-20.224-60.714c-2.197-6.507-1.088-13.675 2.922-19.221 4.011-5.568 10.454-8.853 17.302-8.853h96c0-41.173 33.494-74.666 74.667-74.666 30.954 0 57.579 18.966 68.885 45.866l-71.466 71.466h-138.475l11.968 35.925c0.704 2.176 1.088 4.459 1.088 6.741zM288-16c0-17.942-14.058-32-32-32s-32 14.058-32 32h64z" />
 
41
  <glyph unicode="&#xe93d;" glyph-name="bx-bolt" d="M207.147-100.416c1.855-0.584 3.987-0.921 6.198-0.921 7.368 0 13.862 3.738 17.689 9.421l0.048 0.076 170.667 256c2.247 3.327 3.587 7.427 3.587 11.84 0 11.782-9.551 21.333-21.334 21.333-0.001 0-0.002 0-0.003 0h-102.805l17.195 103.147c0.187 1.059 0.294 2.279 0.294 3.523 0 5.271-1.919 10.093-5.097 13.807l0.024-0.029c-3.93 4.632-9.757 7.552-16.264 7.552-0.005 0-0.009 0-0.014 0h-128c0 0 0 0-0 0-11.030 0-20.106-8.372-21.219-19.108l-0.007-0.091-21.334-213.334c-0.068-0.639-0.107-1.382-0.107-2.134 0-11.782 9.552-21.334 21.334-21.334 0 0 0 0 0.001 0h64v-149.333c0-9.575 6.309-17.676 14.995-20.375l0.151-0.041zM151.573 112l17.066 170.667h83.499l-17.195-103.147c-0.187-1.059-0.294-2.279-0.294-3.523 0-5.271 1.919-10.094 5.097-13.807l-0.024 0.029c4.054-4.8 10.006-7.552 16.278-7.552h88.149l-109.483-164.202v100.202c0 11.782-9.552 21.334-21.334 21.334v0h-61.76z" />
42
  <glyph unicode="&#xe949;" glyph-name="bx-bug" d="M422.4 101.334c0 10.923-0.918 21.547-2.262 32h47.914v42.666h-57.493c-8.389 25.751-20.612 48.074-36.209 67.58l0.327-0.422 45.76 45.76-30.166 30.165-46.166-46.144c-25.579 19.563-55.723 31.062-88.106 31.062s-62.528-11.499-88.106-31.062l-46.144 46.144-30.166-30.165 45.76-45.76c-15.27-19.083-27.493-41.405-35.457-65.659l-0.426-1.498h-58.794v-42.666h49.216c-1.365-10.453-2.282-21.077-2.282-32 0-10.986 0.918-21.718 2.304-32.234h-49.237v-42.666h58.859c4.864-14.784 11.094-28.714 18.517-41.558l-49.792-49.792 30.165-30.166 45.184 45.184c29.418-31.872 68.032-51.435 110.4-51.435s80.981 19.563 110.4 51.435l45.184-45.184 30.166 30.166-49.792 49.792c7.445 12.842 13.675 26.774 18.517 41.558h58.858v42.666h-49.259c1.408 10.517 2.325 21.248 2.325 32.234zM256 261.334c47.382 0 88.555-34.646 109.355-85.334h-218.709c20.8 50.688 61.974 85.334 109.355 85.334zM277.334-56.106v146.774h-42.666v-146.774c-58.090 13.12-102.4 78.656-102.4 157.44 0 10.965 0.853 21.654 2.496 32h242.453c1.642-10.346 2.496-21.035 2.496-32 0.022-78.805-44.288-144.32-102.379-157.44z" />
43
  <glyph unicode="&#xe970;" glyph-name="bx-chip" d="M426.666 261.334c0 11.782-9.551 21.334-21.334 21.334v0h-42.666v42.666h-42.666v-42.666h-42.666v42.666h-42.666v-42.666h-42.666v42.666h-42.666v-42.666h-42.666c-11.782 0-21.334-9.552-21.334-21.334v0-42.667h-42.666v-42.667h42.666v-42.666h-42.666v-42.666h42.666v-42.666h-42.666v-42.666h42.666v-42.666c0-11.782 9.552-21.334 21.334-21.334v0h42.666v-42.666h42.666v42.666h42.666v-42.666h42.666v42.666h42.666v-42.666h42.666v42.666h42.666c11.782 0 21.334 9.551 21.334 21.334v0 42.666h42.666v42.666h-42.666v42.666h42.666v42.666h-42.666v42.666h42.666v42.666h-42.666v42.666zM384-16h-256v256h256v-256zM213.333 154.667h85.333v-85.333h-85.334z" />
44
  <glyph unicode="&#xe980;" glyph-name="bx-collection" d="M426.666 154.667h-341.334c-11.782 0-21.334-9.552-21.334-21.333v0-213.334c0-11.782 9.552-21.334 21.334-21.334v0h341.334c11.782 0 21.334 9.551 21.334 21.334v0 213.333c0 11.782-9.551 21.333-21.334 21.333v0zM405.334-58.666h-298.666v170.666h298.666v-170.666zM106.666 240h298.666v-42.666h-298.666zM149.333 325.334h213.333v-42.666h-213.333z" />
 
45
  <glyph unicode="&#xe9c2;" glyph-name="bx-flask" d="M341.334 158.422v124.246h21.334v42.666h-213.333v-42.666h21.333v-124.246l-84.032-231.125c-0.815-2.17-1.287-4.678-1.287-7.296 0-11.777 9.543-21.325 21.317-21.334h298.668c0.005 0 0.010 0 0.015 0 11.771 0 21.312 9.541 21.312 21.312 0 2.626-0.475 5.142-1.344 7.464l0.048-0.147-84.032 231.125zM298.666 282.666v-128c0-2.475 0.448-4.95 1.301-7.296l12.842-35.37h-113.621l12.864 35.37c0.832 2.346 1.28 4.822 1.28 7.296v128h85.333zM137.131-58.666l46.549 128h144.661l46.55-128h-237.76z" />
46
  <glyph unicode="&#xe9db;" glyph-name="bx-hide" d="M256-37.334c20.182 0 38.613 2.197 55.424 5.995l-37.483 37.483c-5.824-0.448-11.733-0.81-17.941-0.81-114.155 0-158.379 82.048-169.088 106.666 4.352 10.026 14.379 29.462 32.171 49.002l-29.824 29.824c-32.81-35.563-45.248-71.382-45.483-72.085-1.472-4.374-1.472-9.131 0-13.504 0.448-1.408 49.386-142.57 212.224-142.57zM468.224 105.259c1.472 4.373 1.472 9.131 0 13.504-0.448 1.408-49.387 142.571-212.224 142.571-39.19 0-71.382-8.448-98.219-20.928l-78.698 78.678-30.166-30.166 384-384 30.166 30.166-70.805 70.805c55.765 41.642 75.669 98.475 75.947 99.37zM313.408 84.757c4.075 8.298 6.592 17.45 6.592 27.243 0 35.008-28.992 64-64 64-9.792 0-18.944-2.518-27.243-6.592l-38.571 38.571c18.794 6.571 40.512 10.688 65.814 10.688 114.154 0 158.379-82.048 169.088-106.666-6.442-14.762-24.875-49.962-63.019-75.904l-48.661 48.661z" />
47
  <glyph unicode="&#xe9dc;" glyph-name="bx-history" d="M234.667 197.333v-106.667h106.667v42.666h-64v64zM426.666 112c0 92.501-78.144 170.667-170.667 170.667-92.501 0-170.667-78.166-170.667-170.667h-42.666l64-84.8 64 84.8h-42.666c0 69.376 58.624 128 128 128s128-58.624 128-128-58.624-128-128-128v-42.666c92.522 0 170.667 78.166 170.667 170.666z" />
38
  <glyph unicode="&#xe228;" glyph-name="bxs-world" d="M256 325.334c-117.632 0-213.333-95.702-213.333-213.334s95.701-213.333 213.333-213.333 213.333 95.702 213.333 213.333-95.702 213.334-213.333 213.334zM192-46.101v30.101l-64 64v42.666l-21.334 42.666h-19.861c9.664 77.034 70.827 138.197 147.862 147.861v-19.861l-21.333-42.666-42.666-42.666-21.334-42.666 21.334-42.666h21.334l21.334-21.334h42.666v-42.666l-40.192-80.363c-8.171 1.984-16.149 4.48-23.808 7.594zM376.618-8.618l-13.952 13.952-21.334 42.666-21.334 21.334-21.334 20.992 21.334 21.674 42.666 21.334v21.334l-21.334 21.334 21.334 42.666v26.346c38.954-31.296 64-79.254 64-133.014 0-47.040-19.136-89.707-50.048-120.618z" />
39
  <glyph unicode="&#xe908;" glyph-name="bxl-google" d="M432.704 147.072h-177.643v-73.621h102.23c-9.514-46.784-49.344-73.664-102.23-73.664-62.357 0-112.619 50.262-112.619 112.64 0 62.358 50.262 112.618 112.618 112.618 26.858 0 51.136-9.536 70.186-25.131l55.466 55.446c-33.792 29.462-77.12 47.637-125.654 47.637-105.685 0-190.592-84.885-190.592-190.592s84.886-190.592 190.592-190.592c95.296 0 181.952 69.312 181.952 190.592 0 11.264-1.728 23.403-4.31 34.667z" />
40
  <glyph unicode="&#xe937;" glyph-name="bx-bell-off" d="M426.666-16c0.149-0.022 0.32-0.022 0.426 0 11.798 0 21.334 9.536 21.334 21.334 0 3.84-1.002 7.445-2.795 10.56l-18.966 56.896v81.877c0 84.053-62.762 156.587-147.328 168.853l-21.611 1.75c-1.152 0.085-2.282 0.085-3.435 0l-22.678-1.856c-40.49-5.824-76.053-26.048-102.037-54.827l-50.496 50.496-30.166-30.166 384-384 30.166 30.166-48.918 48.918h12.502zM236.374 281.024l19.648 1.579 18.517-1.451c62.4-9.088 109.462-63.466 109.462-126.486v-85.334c0-2.283 0.384-4.565 1.11-6.741l11.947-35.925h-25.558l-211.669 211.669c19.37 22.422 46.102 38.294 76.544 42.688zM128 69.334v82.752l-38.614 38.613c-2.56-11.669-4.053-23.702-4.053-36.032v-81.877l-20.224-60.714c-2.197-6.507-1.088-13.675 2.922-19.221 4.011-5.568 10.454-8.853 17.302-8.853h96c0-41.173 33.494-74.666 74.667-74.666 30.954 0 57.579 18.966 68.885 45.866l-71.466 71.466h-138.475l11.968 35.925c0.704 2.176 1.088 4.459 1.088 6.741zM288-16c0-17.942-14.058-32-32-32s-32 14.058-32 32h64z" />
41
+ <glyph unicode="&#xe938;" glyph-name="bx-bell-plus" d="M277.334 240h-42.666v-64h-64v-42.666h64v-64h42.666v64h64v42.666h-64zM426.666 72.789v81.877c0 84.053-62.762 156.587-147.328 168.853l-21.611 1.75c-0.514 0.041-1.113 0.064-1.717 0.064s-1.203-0.023-1.796-0.069l0.078 0.005-22.678-1.856c-83.392-11.99-146.282-84.544-146.282-168.747v-81.877l-20.224-60.714c-0.693-2.012-1.093-4.33-1.093-6.741 0-11.776 9.542-21.324 21.317-21.334h96.001c0-41.173 33.493-74.666 74.666-74.666s74.666 33.493 74.666 74.666h96.427c0 0 0.002 0 0.002 0 11.782 0 21.334 9.551 21.334 21.334 0 3.884-1.038 7.526-2.852 10.663l0.055-0.103-18.966 56.896zM256-48c-17.941 0-32 14.058-32 32h64c0-17.942-14.058-32-32-32zM114.944 26.666l11.968 35.925c0.68 2.012 1.078 4.328 1.088 6.736v85.339c0 63.125 47.168 117.526 108.374 126.358l19.648 1.578 18.517-1.45c62.4-9.088 109.462-63.466 109.462-126.486v-85.334c0-2.283 0.384-4.565 1.11-6.741l11.947-35.925h-282.112z" />
42
  <glyph unicode="&#xe93d;" glyph-name="bx-bolt" d="M207.147-100.416c1.855-0.584 3.987-0.921 6.198-0.921 7.368 0 13.862 3.738 17.689 9.421l0.048 0.076 170.667 256c2.247 3.327 3.587 7.427 3.587 11.84 0 11.782-9.551 21.333-21.334 21.333-0.001 0-0.002 0-0.003 0h-102.805l17.195 103.147c0.187 1.059 0.294 2.279 0.294 3.523 0 5.271-1.919 10.093-5.097 13.807l0.024-0.029c-3.93 4.632-9.757 7.552-16.264 7.552-0.005 0-0.009 0-0.014 0h-128c0 0 0 0-0 0-11.030 0-20.106-8.372-21.219-19.108l-0.007-0.091-21.334-213.334c-0.068-0.639-0.107-1.382-0.107-2.134 0-11.782 9.552-21.334 21.334-21.334 0 0 0 0 0.001 0h64v-149.333c0-9.575 6.309-17.676 14.995-20.375l0.151-0.041zM151.573 112l17.066 170.667h83.499l-17.195-103.147c-0.187-1.059-0.294-2.279-0.294-3.523 0-5.271 1.919-10.094 5.097-13.807l-0.024 0.029c4.054-4.8 10.006-7.552 16.278-7.552h88.149l-109.483-164.202v100.202c0 11.782-9.552 21.334-21.334 21.334v0h-61.76z" />
43
  <glyph unicode="&#xe949;" glyph-name="bx-bug" d="M422.4 101.334c0 10.923-0.918 21.547-2.262 32h47.914v42.666h-57.493c-8.389 25.751-20.612 48.074-36.209 67.58l0.327-0.422 45.76 45.76-30.166 30.165-46.166-46.144c-25.579 19.563-55.723 31.062-88.106 31.062s-62.528-11.499-88.106-31.062l-46.144 46.144-30.166-30.165 45.76-45.76c-15.27-19.083-27.493-41.405-35.457-65.659l-0.426-1.498h-58.794v-42.666h49.216c-1.365-10.453-2.282-21.077-2.282-32 0-10.986 0.918-21.718 2.304-32.234h-49.237v-42.666h58.859c4.864-14.784 11.094-28.714 18.517-41.558l-49.792-49.792 30.165-30.166 45.184 45.184c29.418-31.872 68.032-51.435 110.4-51.435s80.981 19.563 110.4 51.435l45.184-45.184 30.166 30.166-49.792 49.792c7.445 12.842 13.675 26.774 18.517 41.558h58.858v42.666h-49.259c1.408 10.517 2.325 21.248 2.325 32.234zM256 261.334c47.382 0 88.555-34.646 109.355-85.334h-218.709c20.8 50.688 61.974 85.334 109.355 85.334zM277.334-56.106v146.774h-42.666v-146.774c-58.090 13.12-102.4 78.656-102.4 157.44 0 10.965 0.853 21.654 2.496 32h242.453c1.642-10.346 2.496-21.035 2.496-32 0.022-78.805-44.288-144.32-102.379-157.44z" />
44
  <glyph unicode="&#xe970;" glyph-name="bx-chip" d="M426.666 261.334c0 11.782-9.551 21.334-21.334 21.334v0h-42.666v42.666h-42.666v-42.666h-42.666v42.666h-42.666v-42.666h-42.666v42.666h-42.666v-42.666h-42.666c-11.782 0-21.334-9.552-21.334-21.334v0-42.667h-42.666v-42.667h42.666v-42.666h-42.666v-42.666h42.666v-42.666h-42.666v-42.666h42.666v-42.666c0-11.782 9.552-21.334 21.334-21.334v0h42.666v-42.666h42.666v42.666h42.666v-42.666h42.666v42.666h42.666v-42.666h42.666v42.666h42.666c11.782 0 21.334 9.551 21.334 21.334v0 42.666h42.666v42.666h-42.666v42.666h42.666v42.666h-42.666v42.666h42.666v42.666h-42.666v42.666zM384-16h-256v256h256v-256zM213.333 154.667h85.333v-85.333h-85.334z" />
45
  <glyph unicode="&#xe980;" glyph-name="bx-collection" d="M426.666 154.667h-341.334c-11.782 0-21.334-9.552-21.334-21.333v0-213.334c0-11.782 9.552-21.334 21.334-21.334v0h341.334c11.782 0 21.334 9.551 21.334 21.334v0 213.333c0 11.782-9.551 21.333-21.334 21.333v0zM405.334-58.666h-298.666v170.666h298.666v-170.666zM106.666 240h298.666v-42.666h-298.666zM149.333 325.334h213.333v-42.666h-213.333z" />
46
+ <glyph unicode="&#xe9a3;" glyph-name="bx-download" d="M234.667 282.666v-170.666h-64l85.333-85.334 85.334 85.334h-64v170.667zM426.666-16h-341.334v170.667h-42.666v-192c0-11.782 9.552-21.334 21.334-21.334v0h384c11.782 0 21.334 9.551 21.334 21.334v0 192h-42.666v-170.667z" />
47
  <glyph unicode="&#xe9c2;" glyph-name="bx-flask" d="M341.334 158.422v124.246h21.334v42.666h-213.333v-42.666h21.333v-124.246l-84.032-231.125c-0.815-2.17-1.287-4.678-1.287-7.296 0-11.777 9.543-21.325 21.317-21.334h298.668c0.005 0 0.010 0 0.015 0 11.771 0 21.312 9.541 21.312 21.312 0 2.626-0.475 5.142-1.344 7.464l0.048-0.147-84.032 231.125zM298.666 282.666v-128c0-2.475 0.448-4.95 1.301-7.296l12.842-35.37h-113.621l12.864 35.37c0.832 2.346 1.28 4.822 1.28 7.296v128h85.333zM137.131-58.666l46.549 128h144.661l46.55-128h-237.76z" />
48
  <glyph unicode="&#xe9db;" glyph-name="bx-hide" d="M256-37.334c20.182 0 38.613 2.197 55.424 5.995l-37.483 37.483c-5.824-0.448-11.733-0.81-17.941-0.81-114.155 0-158.379 82.048-169.088 106.666 4.352 10.026 14.379 29.462 32.171 49.002l-29.824 29.824c-32.81-35.563-45.248-71.382-45.483-72.085-1.472-4.374-1.472-9.131 0-13.504 0.448-1.408 49.386-142.57 212.224-142.57zM468.224 105.259c1.472 4.373 1.472 9.131 0 13.504-0.448 1.408-49.387 142.571-212.224 142.571-39.19 0-71.382-8.448-98.219-20.928l-78.698 78.678-30.166-30.166 384-384 30.166 30.166-70.805 70.805c55.765 41.642 75.669 98.475 75.947 99.37zM313.408 84.757c4.075 8.298 6.592 17.45 6.592 27.243 0 35.008-28.992 64-64 64-9.792 0-18.944-2.518-27.243-6.592l-38.571 38.571c18.794 6.571 40.512 10.688 65.814 10.688 114.154 0 158.379-82.048 169.088-106.666-6.442-14.762-24.875-49.962-63.019-75.904l-48.661 48.661z" />
49
  <glyph unicode="&#xe9dc;" glyph-name="bx-history" d="M234.667 197.333v-106.667h106.667v42.666h-64v64zM426.666 112c0 92.501-78.144 170.667-170.667 170.667-92.501 0-170.667-78.166-170.667-170.667h-42.666l64-84.8 64 84.8h-42.666c0 69.376 58.624 128 128 128s128-58.624 128-128-58.624-128-128-128v-42.666c92.522 0 170.667 78.166 170.667 170.666z" />
assets/icons/fonts/crb.ttf CHANGED
Binary file
assets/icons/fonts/crb.woff CHANGED
Binary file
assets/icons/style.css CHANGED
@@ -1,17 +1,18 @@
1
  @font-face {
2
  font-family: 'crb';
3
  src:
4
- url('fonts/crb.ttf?y57wup') format('truetype'),
5
- url('fonts/crb.woff?y57wup') format('woff'),
6
- url('fonts/crb.svg?y57wup#crb') format('svg');
7
  font-weight: normal;
8
  font-style: normal;
 
9
  }
10
 
11
  .crb-icon {
12
  /* use !important to prevent issues with browser extensions that change fonts */
13
  font-family: 'crb' !important;
14
- speak: none;
15
  font-style: normal;
16
  font-weight: normal;
17
  font-variant: normal;
@@ -32,6 +33,9 @@
32
  .crb-icon-bx-bell-off:before {
33
  content: "\e937";
34
  }
 
 
 
35
  .crb-icon-bx-bolt:before {
36
  content: "\e93d";
37
  }
@@ -56,6 +60,9 @@
56
  .crb-icon-bx-dashboard:before {
57
  content: "\e204";
58
  }
 
 
 
59
  .crb-icon-bx-error:before {
60
  content: "\e205";
61
  }
1
  @font-face {
2
  font-family: 'crb';
3
  src:
4
+ url('fonts/crb.ttf?v388dd') format('truetype'),
5
+ url('fonts/crb.woff?v388dd') format('woff'),
6
+ url('fonts/crb.svg?v388dd#crb') format('svg');
7
  font-weight: normal;
8
  font-style: normal;
9
+ font-display: block;
10
  }
11
 
12
  .crb-icon {
13
  /* use !important to prevent issues with browser extensions that change fonts */
14
  font-family: 'crb' !important;
15
+ speak: never;
16
  font-style: normal;
17
  font-weight: normal;
18
  font-variant: normal;
33
  .crb-icon-bx-bell-off:before {
34
  content: "\e937";
35
  }
36
+ .crb-icon-bx-bell-plus:before {
37
+ content: "\e938";
38
+ }
39
  .crb-icon-bx-bolt:before {
40
  content: "\e93d";
41
  }
60
  .crb-icon-bx-dashboard:before {
61
  content: "\e204";
62
  }
63
+ .crb-icon-bx-download:before {
64
+ content: "\e9a3";
65
+ }
66
  .crb-icon-bx-error:before {
67
  content: "\e205";
68
  }
cerber-2fa.php CHANGED
@@ -20,8 +20,8 @@
20
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
  */
22
 
23
- define( 'CERBER_PIN_LENGTH', 4 );
24
- define( 'CERBER_PIN_EXPIRES', 15 );
25
 
26
  final class CRB_2FA {
27
  private static $user_id = null;
@@ -223,7 +223,7 @@ final class CRB_2FA {
223
  }
224
 
225
  static function restrict_and_verify( $user_id = null ) {
226
- global $cerber_status;
227
  static $done = false;
228
 
229
  if ( $done ) {
@@ -323,7 +323,7 @@ final class CRB_2FA {
323
  $cus['2fa_history'] = array( 0, time() );
324
  cerber_update_set( 'cerber_user', $cus, $user_id );
325
 
326
- $cerber_status = 27;
327
  cerber_log( 5, $twofactor['login'], $user_id );
328
  cerber_login_history( $user_id );
329
 
20
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
  */
22
 
23
+ const CERBER_PIN_LENGTH = 4;
24
+ const CERBER_PIN_EXPIRES = 15;
25
 
26
  final class CRB_2FA {
27
  private static $user_id = null;
223
  }
224
 
225
  static function restrict_and_verify( $user_id = null ) {
226
+ global $cerber_act_status;
227
  static $done = false;
228
 
229
  if ( $done ) {
323
  $cus['2fa_history'] = array( 0, time() );
324
  cerber_update_set( 'cerber_user', $cus, $user_id );
325
 
326
+ $cerber_act_status = 27;
327
  cerber_log( 5, $twofactor['login'], $user_id );
328
  cerber_login_history( $user_id );
329
 
cerber-addons.php CHANGED
@@ -4,9 +4,9 @@
4
  *
5
  */
6
 
7
- define( 'CRB_ADDON_PAGE', 'cerber-addons' );
8
- define( 'CRB_ADDON_SIGN', '_addon' );
9
- define( 'CRB_BOOT_ADDONS', 'boot_cerber_addons' );
10
 
11
  // Add-ons API -----------------------------------------------------------------
12
 
4
  *
5
  */
6
 
7
+ const CRB_ADDON_PAGE = 'cerber-addons';
8
+ const CRB_ADDON_SIGN = '_addon';
9
+ const CRB_BOOT_ADDONS = 'boot_cerber_addons';
10
 
11
  // Add-ons API -----------------------------------------------------------------
12
 
cerber-ds.php CHANGED
@@ -31,6 +31,7 @@ final class CRB_DS {
31
  private static $user_blocked = false;
32
  private static $user_fields = array( 'user_login' => 'lgn', 'user_pass' => 'pwd', 'user_email' => 'eml' );
33
  private static $opt_cache = array();
 
34
  //private static $user_metas = array( 'capabilities' );
35
 
36
  static function enable_shadowing( $type ) {
@@ -332,29 +333,31 @@ final class CRB_DS {
332
  return;
333
  }
334
 
335
- $update_shadow = false;
336
-
337
- if ( crb_get_settings( 'ds_4acc_acl' ) && crb_acl_is_white() ) {
338
- $update_shadow = true;
339
- }
340
 
341
  switch ( $mode ) {
342
  case 'new':
343
  self::$update_user = null;
344
- if ( ! $update_shadow ) {
345
- $update_shadow = self::acc_new( $user_id );
346
  }
347
- if ( $update_shadow ) {
348
  self::update_user_shadow( $user_id );
349
  }
350
  break;
 
351
  case 'update':
352
  self::$update_user = $user_id;
353
- self::acc_update( $user_id, $data );
354
- // Must be deferred till user's data is saved to DB
355
- add_action( 'profile_update', function ( $user_id ) {
356
- CRB_DS::update_helper( $user_id );
357
- } );
 
 
 
 
358
  break;
359
  }
360
 
@@ -377,7 +380,7 @@ final class CRB_DS {
377
  * @return bool true if this operation is permitted
378
  */
379
  private static function acc_new( $user_id ) {
380
- global $cerber_status;
381
 
382
  $set = crb_get_settings();
383
  self::$user_blocked = false;
@@ -385,13 +388,13 @@ final class CRB_DS {
385
  // Due to lack of a hook in the wp_insert_user() we are forced to check permissions and use wp_delete_user() after the user was created
386
  if ( ! is_user_logged_in() ) {
387
  if ( ! crb_user_has_role_strict( $set['ds_regs_roles'], $user_id ) ) {
388
- $cerber_status = 32;
389
  self::$user_blocked = true;
390
  }
391
  }
392
  else {
393
  if ( ! cerber_user_has_role( $set['ds_add_acc'] ) ) {
394
- $cerber_status = 33;
395
  self::$user_blocked = true;
396
  }
397
  }
@@ -421,11 +424,11 @@ final class CRB_DS {
421
  * @return bool true if this operation is permitted
422
  */
423
  private static function acc_update( $user_id, $data ) {
424
- global $cerber_status, $wpdb;
425
 
426
  $cid = get_current_user_id();
427
 
428
- self::$acc_owner = ( $user_id == $cid ) ? true : false;
429
  self::$user_blocked = false;
430
 
431
  if ( ! cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
@@ -455,7 +458,7 @@ final class CRB_DS {
455
  // Protect the user's row in the users table
456
  add_filter( 'query', 'crb_empty_query', PHP_INT_MAX );
457
  add_filter( 'pre_get_col_charset', 'crb_return_wp_error', PHP_INT_MAX );
458
- $cerber_status = ( ! $cid ) ? 34 : 33;
459
  cerber_log( 73 );
460
  }
461
 
@@ -485,24 +488,24 @@ final class CRB_DS {
485
  }
486
 
487
  /**
488
- * Protect/process users metas and roles from being updated
 
489
  *
490
- * @param $var
491
  * @param $user_id
492
  * @param $meta_key
493
  * @param $meta_value
494
- * @param $prev_value
495
  *
496
- * @return bool|null
497
  */
498
- static function protect_user_meta( $var, $user_id, $meta_key, $meta_value, $prev_value ) {
499
- global $cerber_status;
500
 
501
  // A user is not permitted to be created or updated?
502
  if ( self::$user_blocked ) {
503
  if ( self::is_meta_protected( $meta_key ) ) { // User roles are here
504
- $cerber_status = ( ! is_user_logged_in() ) ? 34 : 33;
505
  cerber_log( 76 );
 
506
 
507
  return false;
508
  }
@@ -511,21 +514,23 @@ final class CRB_DS {
511
  if ( true === self::is_meta_preserve( $meta_key ) ) {
512
  $ok = false;
513
 
514
- //if ( ( self::$update_user == $user_id )
515
  if ( cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
516
  $ok = true;
517
  }
518
  // Makes sense for user's role meta ONLY
519
- elseif ( is_array( $meta_value ) && ! array_diff_key( $meta_value, array_flip( crb_get_settings( 'ds_regs_roles' ) ) ) ) {
 
 
520
  $ok = true;
521
  }
522
 
523
  if ( $ok ) {
 
524
  self::update_user_shadow( $user_id, null, array( $meta_key => $meta_value ) );
525
  }
526
  }
527
 
528
- return $var;
529
  }
530
 
531
  private static function is_meta_preserve( $meta_key = null ) {
@@ -559,10 +564,10 @@ final class CRB_DS {
559
  return false;
560
  }
561
 
562
- static function get_user_meta( $user_id, $meta_key, $single ) {
563
 
564
- if ( ( $conf = self::get_config( 1 ) )
565
- && $conf[5] == $meta_key ) {
566
  return false; // Skip use shadow meta (infinite loop protection)
567
  }
568
 
@@ -584,7 +589,7 @@ final class CRB_DS {
584
  * @return mixed The old value if update is not permitted
585
  */
586
  static function setting_processor( &$value, $option, &$old_value ) {
587
- global $cerber_status;
588
 
589
  if ( empty( self::get_protected_settings()[3][ $option ] ) ) {
590
  return $value;
@@ -611,7 +616,7 @@ final class CRB_DS {
611
  $roles = crb_get_settings( 'ds_4opts_roles' );
612
 
613
  if ( ! $roles || ! cerber_user_has_role( $roles ) ) {
614
- $cerber_status = ( is_user_logged_in() ) ? 33 : 34;
615
  cerber_log( 75 );
616
 
617
  return $old_value;
@@ -623,7 +628,7 @@ final class CRB_DS {
623
  }
624
 
625
  static function role_processor( &$value, $option, &$old_value ) {
626
- global $cerber_status;
627
 
628
  if ( ! is_array( $value )
629
  || ( substr( $option, - 11 ) != '_user_roles' ) ) {
@@ -634,11 +639,11 @@ final class CRB_DS {
634
  return $value;
635
  }
636
 
637
- $cerber_status = 0;
638
 
639
  if ( ! self::role_update_permitted( $value, $old_value ) ) {
640
- if ( ! $cerber_status ) {
641
- $cerber_status = ( is_user_logged_in() ) ? 33 : 34;
642
  }
643
  cerber_log( 74 );
644
 
@@ -694,6 +699,14 @@ final class CRB_DS {
694
  return true;
695
  }
696
 
 
 
 
 
 
 
 
 
697
  /**
698
  * Install hooks for retrieving data of protected settings
699
  *
@@ -881,17 +894,23 @@ if ( crb_get_settings( 'ds_4acc' ) && CRB_DS::is_ready( 1 ) ) {
881
  return $data;
882
  }, PHP_INT_MAX, 3 );
883
 
884
- add_filter( 'update_user_metadata', function ( $var, $object_id, $meta_key, $meta_value, $prev_value ) {
885
  // apply_filters( "update_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $prev_value );
886
 
887
- return CRB_DS::protect_user_meta( $var, $object_id, $meta_key, $meta_value, $prev_value );
 
 
 
 
888
 
889
- }, PHP_INT_MAX, 5 );
 
 
890
 
891
  add_filter( 'get_user_metadata', function ( $var, $object_id, $meta_key, $single ) {
892
  //$check = apply_filters( "get_{$meta_type}_metadata", null, $object_id, $meta_key, $single );
893
 
894
- if ( $meta = CRB_DS::get_user_meta( $object_id, $meta_key, $single ) ) {
895
  return $meta;
896
  }
897
 
31
  private static $user_blocked = false;
32
  private static $user_fields = array( 'user_login' => 'lgn', 'user_pass' => 'pwd', 'user_email' => 'eml' );
33
  private static $opt_cache = array();
34
+ private static $no_user_meta_shadow = ''; // Do not return user meta from shadow when meta is updating.
35
  //private static $user_metas = array( 'capabilities' );
36
 
37
  static function enable_shadowing( $type ) {
333
  return;
334
  }
335
 
336
+ //$update_permitted = self::acc_update_permitted_by_ip();
337
+ $update_permitted = ( crb_get_settings( 'ds_4acc_acl' ) && crb_acl_is_white() );
 
 
 
338
 
339
  switch ( $mode ) {
340
  case 'new':
341
  self::$update_user = null;
342
+ if ( ! $update_permitted ) {
343
+ $update_permitted = self::acc_new( $user_id );
344
  }
345
+ if ( $update_permitted ) {
346
  self::update_user_shadow( $user_id );
347
  }
348
  break;
349
+
350
  case 'update':
351
  self::$update_user = $user_id;
352
+ if ( ! $update_permitted ) {
353
+ $update_permitted = self::acc_update( $user_id, $data );
354
+ }
355
+ if ( $update_permitted ) {
356
+ // Must be deferred till user's data is saved to DB
357
+ add_action( 'profile_update', function ( $user_id ) {
358
+ CRB_DS::update_helper( $user_id );
359
+ } );
360
+ }
361
  break;
362
  }
363
 
380
  * @return bool true if this operation is permitted
381
  */
382
  private static function acc_new( $user_id ) {
383
+ global $cerber_act_status;
384
 
385
  $set = crb_get_settings();
386
  self::$user_blocked = false;
388
  // Due to lack of a hook in the wp_insert_user() we are forced to check permissions and use wp_delete_user() after the user was created
389
  if ( ! is_user_logged_in() ) {
390
  if ( ! crb_user_has_role_strict( $set['ds_regs_roles'], $user_id ) ) {
391
+ $cerber_act_status = 32;
392
  self::$user_blocked = true;
393
  }
394
  }
395
  else {
396
  if ( ! cerber_user_has_role( $set['ds_add_acc'] ) ) {
397
+ $cerber_act_status = 33;
398
  self::$user_blocked = true;
399
  }
400
  }
424
  * @return bool true if this operation is permitted
425
  */
426
  private static function acc_update( $user_id, $data ) {
427
+ global $cerber_act_status, $wpdb;
428
 
429
  $cid = get_current_user_id();
430
 
431
+ self::$acc_owner = ( $user_id == $cid );
432
  self::$user_blocked = false;
433
 
434
  if ( ! cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
458
  // Protect the user's row in the users table
459
  add_filter( 'query', 'crb_empty_query', PHP_INT_MAX );
460
  add_filter( 'pre_get_col_charset', 'crb_return_wp_error', PHP_INT_MAX );
461
+ $cerber_act_status = ( ! $cid ) ? 34 : 33;
462
  cerber_log( 73 );
463
  }
464
 
488
  }
489
 
490
  /**
491
+ * Restricts updating if not allowed.
492
+ * Updates shadow of user meta (and roles) if allowed.
493
  *
 
494
  * @param $user_id
495
  * @param $meta_key
496
  * @param $meta_value
 
497
  *
498
+ * @return bool
499
  */
500
+ static function update_user_meta( $user_id, $meta_key, $meta_value ) {
501
+ global $cerber_act_status;
502
 
503
  // A user is not permitted to be created or updated?
504
  if ( self::$user_blocked ) {
505
  if ( self::is_meta_protected( $meta_key ) ) { // User roles are here
506
+ $cerber_act_status = ( ! is_user_logged_in() ) ? 34 : 33;
507
  cerber_log( 76 );
508
+ self::$no_user_meta_shadow = '';
509
 
510
  return false;
511
  }
514
  if ( true === self::is_meta_preserve( $meta_key ) ) {
515
  $ok = false;
516
 
 
517
  if ( cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
518
  $ok = true;
519
  }
520
  // Makes sense for user's role meta ONLY
521
+ elseif ( is_array( $meta_value )
522
+ && ( $reg_roles = (array) crb_get_settings( 'ds_regs_roles' ) )
523
+ && ! array_diff_key( $meta_value, array_flip( $reg_roles ) ) ) {
524
  $ok = true;
525
  }
526
 
527
  if ( $ok ) {
528
+ self::$no_user_meta_shadow = $meta_key;
529
  self::update_user_shadow( $user_id, null, array( $meta_key => $meta_value ) );
530
  }
531
  }
532
 
533
+ return true;
534
  }
535
 
536
  private static function is_meta_preserve( $meta_key = null ) {
564
  return false;
565
  }
566
 
567
+ static function get_shadow_user_meta( $user_id, $meta_key, $single ) {
568
 
569
+ if ( self::$no_user_meta_shadow == $meta_key
570
+ || ( ( $conf = self::get_config( 1 ) ) && $conf[5] == $meta_key ) ) {
571
  return false; // Skip use shadow meta (infinite loop protection)
572
  }
573
 
589
  * @return mixed The old value if update is not permitted
590
  */
591
  static function setting_processor( &$value, $option, &$old_value ) {
592
+ global $cerber_act_status;
593
 
594
  if ( empty( self::get_protected_settings()[3][ $option ] ) ) {
595
  return $value;
616
  $roles = crb_get_settings( 'ds_4opts_roles' );
617
 
618
  if ( ! $roles || ! cerber_user_has_role( $roles ) ) {
619
+ $cerber_act_status = ( is_user_logged_in() ) ? 33 : 34;
620
  cerber_log( 75 );
621
 
622
  return $old_value;
628
  }
629
 
630
  static function role_processor( &$value, $option, &$old_value ) {
631
+ global $cerber_act_status;
632
 
633
  if ( ! is_array( $value )
634
  || ( substr( $option, - 11 ) != '_user_roles' ) ) {
639
  return $value;
640
  }
641
 
642
+ $cerber_act_status = 0;
643
 
644
  if ( ! self::role_update_permitted( $value, $old_value ) ) {
645
+ if ( ! $cerber_act_status ) {
646
+ $cerber_act_status = ( is_user_logged_in() ) ? 33 : 34;
647
  }
648
  cerber_log( 74 );
649
 
699
  return true;
700
  }
701
 
702
+ /*static function acc_update_permitted_by_ip() {
703
+ if ( crb_get_settings( 'ds_4acc_acl' ) && crb_acl_is_white() ) {
704
+ return true;
705
+ }
706
+
707
+ return false;
708
+ }*/
709
+
710
  /**
711
  * Install hooks for retrieving data of protected settings
712
  *
894
  return $data;
895
  }, PHP_INT_MAX, 3 );
896
 
897
+ add_filter( 'update_user_metadata', function ( $var, $object_id, $meta_key, $meta_value ) {
898
  // apply_filters( "update_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $prev_value );
899
 
900
+ $allowed = CRB_DS::update_user_meta( $object_id, $meta_key, $meta_value );
901
+
902
+ if ( ! $allowed ) {
903
+ return true;
904
+ }
905
 
906
+ return $var;
907
+
908
+ }, PHP_INT_MAX, 4 );
909
 
910
  add_filter( 'get_user_metadata', function ( $var, $object_id, $meta_key, $single ) {
911
  //$check = apply_filters( "get_{$meta_type}_metadata", null, $object_id, $meta_key, $single );
912
 
913
+ if ( $meta = CRB_DS::get_shadow_user_meta( $object_id, $meta_key, $single ) ) {
914
  return $meta;
915
  }
916
 
cerber-lab.php CHANGED
@@ -35,14 +35,15 @@
35
  // If this file is called directly, abort executing.
36
  if ( ! defined( 'WPINC' ) ) { exit; }
37
 
38
- define( 'LAB_NODE_MAX', 9 ); // Maximum node ID
39
- define( 'LAB_DELAY_MAX', 2000 ); // milliseconds, reasonable maximum of processing time while connecting to a node
40
- define( 'LAB_RECHECK', 15 * 60 ); // seconds, allowed interval for rechecking nodes
41
- define( 'LAB_INTERVAL', 180 ); // seconds, push interval
42
- define( 'LAB_DNS_TTL', 3 * 24 * 3600 ); // seconds, interval of updating DNS cache for nodes IPs
43
- define( 'LAB_IP_OK', 100 ); // an ideal, the best possible reputation
44
- define( 'LAB_KEY_LENGTH', 32 );
45
- define( 'LAB_LICENSE_GRACE', 3600 * 24 * 3 );
 
46
 
47
  /**
48
  * Is IP blocked globally in Cerber Lab?
@@ -361,7 +362,7 @@ function lab_get_node( $node_id = null ) {
361
  if ( ! $best_id ) {
362
  if ( $nodes && ! empty( $nodes['best'] ) ) {
363
  $best_id = $nodes['best'];
364
- if ( ! $nodes['nodes'][ $best_id ]['last'][1] ) { // this node was not active at the last request
365
  unset( $nodes['nodes'][ $best_id ] );
366
  $best_id = lab_best_node( $nodes['nodes'] );
367
  }
@@ -499,15 +500,18 @@ function lab_status() {
499
  ksort( $nodes['nodes'] );
500
 
501
  foreach ( $nodes['nodes'] as $id => $node ) {
502
- $delay = round( 1000 * $node['last'][0] ) . ' ms';
503
- $ago = cerber_ago_time( $node['last'][3] );
 
 
 
504
  $status = $node['last'][1];
505
  if ( $status ) {
506
  $status = '<span style = "color:green;">' . $status . '</span>';
507
  }
508
  else {
509
  $status = 'Down';
510
- $delay = 'Unknown';
511
  }
512
  if ( $country = lab_get_country( $node['last'][5], false ) ) {
513
  $country = cerber_country_name( $country );
@@ -581,7 +585,7 @@ function lab_is_cloud_ok(){
581
  * @param $details
582
  */
583
  function lab_save_push( $ip, $reason_id, $details = null ) {
584
- global $cerber_status;
585
  $ip = filter_var( $ip, FILTER_VALIDATE_IP );
586
  if ( ! $ip || is_ip_private( $ip ) || crb_acl_is_white( $ip ) || ! ( crb_get_settings( 'cerberlab' ) || lab_lab() ) ) {
587
  return;
@@ -592,7 +596,7 @@ function lab_save_push( $ip, $reason_id, $details = null ) {
592
  $details = array( 'uri' => $_SERVER['REQUEST_URI'] );
593
  }
594
  elseif ( $reason_id == 100 ) {
595
- $details = absint( $cerber_status );
596
  }
597
 
598
  if ( is_array( $details ) ) {
@@ -644,9 +648,7 @@ function lab_gen_site_id() {
644
  $home = rtrim( trim( $home ), '/' );
645
  $id = substr( $home, strpos( $home, '//' ) + 2 );
646
 
647
- $site_id = md5( $id );
648
-
649
- return $site_id;
650
  }
651
 
652
  /**
35
  // If this file is called directly, abort executing.
36
  if ( ! defined( 'WPINC' ) ) { exit; }
37
 
38
+ const LAB_NODE_MAX = 9; // Maximum node ID
39
+ const LAB_IGNORE_NODES = array( 8, 9 );
40
+ const LAB_DELAY_MAX = 2000; // milliseconds, reasonable maximum of processing time while connecting to a node
41
+ const LAB_RECHECK = 15 * 60; // seconds, allowed interval for rechecking nodes
42
+ const LAB_INTERVAL = 180; // seconds, push interval
43
+ const LAB_DNS_TTL = 3 * 24 * 3600; // seconds, interval of updating DNS cache for nodes IPs
44
+ const LAB_IP_OK = 100; // an ideal, the best possible reputation
45
+ const LAB_KEY_LENGTH = 32;
46
+ const LAB_LICENSE_GRACE = 3600 * 24 * 3;
47
 
48
  /**
49
  * Is IP blocked globally in Cerber Lab?
362
  if ( ! $best_id ) {
363
  if ( $nodes && ! empty( $nodes['best'] ) ) {
364
  $best_id = $nodes['best'];
365
+ if ( empty( $nodes['nodes'][ $best_id ]['last'][1] ) ) { // this node was not active at the last request
366
  unset( $nodes['nodes'][ $best_id ] );
367
  $best_id = lab_best_node( $nodes['nodes'] );
368
  }
500
  ksort( $nodes['nodes'] );
501
 
502
  foreach ( $nodes['nodes'] as $id => $node ) {
503
+ if ( in_array( $id, LAB_IGNORE_NODES ) ) {
504
+ continue;
505
+ }
506
+ $delay = round( 1000 * $node['last'][0] ) . ' ms';
507
+ $ago = cerber_ago_time( $node['last'][3] );
508
  $status = $node['last'][1];
509
  if ( $status ) {
510
  $status = '<span style = "color:green;">' . $status . '</span>';
511
  }
512
  else {
513
  $status = 'Down';
514
+ $delay = 'Unknown';
515
  }
516
  if ( $country = lab_get_country( $node['last'][5], false ) ) {
517
  $country = cerber_country_name( $country );
585
  * @param $details
586
  */
587
  function lab_save_push( $ip, $reason_id, $details = null ) {
588
+ global $cerber_act_status;
589
  $ip = filter_var( $ip, FILTER_VALIDATE_IP );
590
  if ( ! $ip || is_ip_private( $ip ) || crb_acl_is_white( $ip ) || ! ( crb_get_settings( 'cerberlab' ) || lab_lab() ) ) {
591
  return;
596
  $details = array( 'uri' => $_SERVER['REQUEST_URI'] );
597
  }
598
  elseif ( $reason_id == 100 ) {
599
+ $details = absint( $cerber_act_status );
600
  }
601
 
602
  if ( is_array( $details ) ) {
648
  $home = rtrim( trim( $home ), '/' );
649
  $id = substr( $home, strpos( $home, '//' ) + 2 );
650
 
651
+ return md5( $id );
 
 
652
  }
653
 
654
  /**
cerber-load.php CHANGED
@@ -36,47 +36,47 @@ if ( ! defined( 'WPINC' ) ) {
36
  exit;
37
  }
38
 
39
- define( 'CERBER_LOG_TABLE', 'cerber_log' );
40
- define( 'CERBER_QMEM_TABLE', 'cerber_qmem' );
41
- define( 'CERBER_TRAF_TABLE', 'cerber_traffic' );
42
- define( 'CERBER_ACL_TABLE', 'cerber_acl' );
43
- define( 'CERBER_BLOCKS_TABLE', 'cerber_blocks' );
44
- define( 'CERBER_LAB_TABLE', 'cerber_lab' );
45
- define( 'CERBER_LAB_IP_TABLE', 'cerber_lab_ip' );
46
- define( 'CERBER_LAB_NET_TABLE', 'cerber_lab_net' );
47
- define( 'CERBER_GEO_TABLE', 'cerber_countries' );
48
- define( 'CERBER_SCAN_TABLE', 'cerber_files' );
49
- define( 'CERBER_SETS_TABLE', 'cerber_sets' );
50
- define( 'CERBER_MS_TABLE', 'cerber_ms' );
51
- define( 'CERBER_MS_LIST_TABLE', 'cerber_ms_lists' );
52
- define( 'CERBER_USS_TABLE', 'cerber_uss' );
53
-
54
- define( 'CERBER_BUKEY', '_crb_blocked' );
55
- define( 'CERBER_PREFIX', '_cerber_' );
56
- define( 'CERBER_MARKER1', 'WP CERBER GROOVE' );
57
- define( 'CERBER_MARKER2', 'WP CERBER CLAMPS' );
58
- define( 'CERBER_NO_REMOTE_IP', '0.0.0.0' );
59
-
60
- define( 'WP_LOGIN_SCRIPT', 'wp-login.php' );
61
- define( 'WP_REG_URI', 'wp-register.php' );
62
- define( 'WP_SIGNUP_SCRIPT', 'wp-signup.php' );
63
- define( 'WP_XMLRPC_SCRIPT', 'xmlrpc.php' );
64
- define( 'WP_TRACKBACK_SCRIPT', 'wp-trackback.php' );
65
- define( 'WP_PING_SCRIPT', 'wp-trackback.php' );
66
- define( 'WP_COMMENT_SCRIPT', 'wp-comments-post.php' );
67
-
68
- define( 'GOO_RECAPTCHA_URL', 'https://www.google.com/recaptcha/api/siteverify' );
69
-
70
- define( 'CERBER_REQ_PHP', '5.6' );
71
- define( 'CERBER_REQ_WP', '4.9' );
72
- define( 'CERBER_TECH', 'https://cerber.tech/' );
73
-
74
- define( 'CERBER_CIREC_LIMIT', 30 ); // Upper limit for allowed nested values during inspection for malware
75
-
76
- define( 'CERBER_AGGRESSIVE', 1 );
77
-
78
- define( 'CRB_CNTX_SAFE', 1 );
79
- define( 'CRB_CNTX_NEXUS', 2 );
80
 
81
  $dir = dirname( __FILE__ );
82
 
@@ -142,7 +142,7 @@ class WP_Cerber {
142
  * @since 6.3.3
143
  */
144
  final public function isURIProhibited() {
145
- global $cerber_status;
146
 
147
  if ( isset( $this->uri_prohibited ) ) {
148
  return $this->uri_prohibited;
@@ -165,7 +165,7 @@ class WP_Cerber {
165
  || $script == WP_SIGNUP_SCRIPT
166
  || ( $script == WP_REG_URI && ! get_option( 'users_can_register' ) ) ) {
167
  if ( !empty( $this->options['wplogin'] ) ) {
168
- $cerber_status = 19;
169
  cerber_log( 50 );
170
  cerber_soft_block_add( $this->remote_ip, 702, $script );
171
  $this->uri_prohibited = true;
@@ -186,7 +186,7 @@ class WP_Cerber {
186
  return true;
187
  }
188
  if ( !cerber_geo_allowed( 'geo_xmlrpc' ) ) {
189
- $cerber_status = 16;
190
  cerber_log( 71 );
191
  $this->uri_prohibited = true;
192
  return true;
@@ -294,11 +294,6 @@ class WP_Cerber {
294
  return $this->deny;
295
  }
296
 
297
- // TODO: replace it with cerber_get_remote_ip()
298
- final public function getRemoteIp() {
299
- return $this->remote_ip;
300
- }
301
-
302
  final public function getRequestID() {
303
  return $this->session_id;
304
  }
@@ -382,15 +377,6 @@ class WP_Cerber {
382
  return $this->options;
383
  }
384
 
385
- /*
386
- final public function isProhibited( $username ) {
387
- if ( empty( $this->options['prohibited'] ) ) {
388
- return false;
389
- }
390
-
391
- return in_array( $username, (array) $this->options['prohibited'] );
392
- }*/
393
-
394
  /**
395
  * Adding reCAPTCHA widgets
396
  *
@@ -829,7 +815,7 @@ function cerber_load_admin_code() {
829
  *
830
  */
831
  function cerber_extra_vision() {
832
- global $cerber_logged, $cerber_status;
833
 
834
  // Multiple different malicious activities
835
 
@@ -845,7 +831,7 @@ function cerber_extra_vision() {
845
  $remain = cerber_get_remain_count( $ip, true, $black ); // @since 6.7.5
846
  if ( $remain < 1 ) {
847
  cerber_soft_block_add( $ip, 707 );
848
- $cerber_status = 18;
849
 
850
  return true;
851
  }
@@ -854,7 +840,7 @@ function cerber_extra_vision() {
854
  $remain = cerber_get_remain_count( $ip, true, array( 400 ), 10, 30 );
855
  if ( $remain < 1 ) {
856
  cerber_block_add( $ip, 721 );
857
- $cerber_status = 18;
858
 
859
  return true;
860
  }
@@ -958,7 +944,7 @@ function cerber_auth_required( $allowed_url ) {
958
  */
959
  add_action( 'login_head', 'cerber_login_head' );
960
  function cerber_login_head() {
961
- global $error, $wp_cerber;
962
 
963
  if ( !$allowed = cerber_is_ip_allowed() ) :
964
  ?>
@@ -970,6 +956,8 @@ function cerber_login_head() {
970
  <?php
971
  endif;
972
 
 
 
973
  $wp_cerber->reCaptcha( 'style' );
974
 
975
  if ( !cerber_is_http_get() ) {
@@ -1067,14 +1055,14 @@ function cerber_authenticate( $user, $username, $password ) {
1067
  */
1068
  add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1069
  // former cerber_stop_authentication()
1070
- global $wp_cerber, $cerber_status;
1071
 
1072
  $deny = false;
1073
  $user_msg = '';
1074
 
1075
  if ( $b = crb_is_user_blocked( $user->ID ) ) {
1076
  $user_msg = $b['blocked_msg'];
1077
- $cerber_status = 25;
1078
  $deny = true;
1079
  }
1080
  elseif ( crb_acl_is_white() ) { // @since 8.2.2
@@ -1084,11 +1072,11 @@ add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1084
  $deny = true;
1085
  }
1086
  elseif ( ! cerber_geo_allowed( 'geo_login', $user ) ) {
1087
- $cerber_status = 16;
1088
  $deny = true;
1089
  }
1090
  elseif ( lab_is_blocked( cerber_get_remote_ip() ) ) {
1091
- $cerber_status = 15;
1092
  $deny = true;
1093
  }
1094
 
@@ -1096,7 +1084,7 @@ add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1096
  status_header( 403 );
1097
  $error = new WP_Error();
1098
  if ( ! $user_msg ) {
1099
- $user_msg = $wp_cerber->getErrorMsg();
1100
  }
1101
  $error->add( 'cerber_wp_error', $user_msg, array( 'user_id' => $user->ID ) );
1102
 
@@ -1107,8 +1095,8 @@ add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1107
  }, PHP_INT_MAX, 2 );
1108
 
1109
  function crb_login_error( $username, $act = null, $status = null ) {
1110
- global $cerber_status;
1111
- $cerber_status = $status;
1112
  if ( $act ) {
1113
  cerber_log( $act, $username );
1114
  }
@@ -1189,7 +1177,7 @@ function cerber_login_history( $user_id ) {
1189
  */
1190
  //add_action( 'wp_login_failed', 'cerber_login_failed' ); // @since 4.18
1191
  function cerber_login_failed( $user_login, $user_id = 0 ) {
1192
- global $cerber_status;
1193
  static $is_processed = false;
1194
 
1195
  if ( $is_processed ) return;
@@ -1211,9 +1199,9 @@ function cerber_login_failed( $user_login, $user_id = 0 ) {
1211
  $ac = 51;
1212
  }
1213
  elseif ( ! cerber_is_ip_allowed( $ip )
1214
- || $cerber_status == 15
1215
- || $cerber_status == 16
1216
- || $cerber_status == 25 ) { // TODO should be refactored together with cerber_stop_authentication
1217
  $ac = 53;
1218
  }
1219
 
@@ -1510,8 +1498,8 @@ function crb_redirect_by_policy( $user, $policy ) {
1510
  }
1511
 
1512
  function cerber_user_logout( $status = null ) {
1513
- global $cerber_status, $current_user, $userdata, $user_ID;
1514
- $cerber_status = ( ! $status ) ? 26 : absint( $status );
1515
 
1516
  if ( $current_user instanceof WP_User ) {
1517
  $uid = $current_user->ID;
@@ -1532,22 +1520,27 @@ function cerber_user_logout( $status = null ) {
1532
  // Registration -----------------------------------------------------------------------
1533
 
1534
  function cerber_is_registration_prohibited( $user_login, $user_email = '' ) {
1535
- global $wp_cerber, $cerber_status;
1536
-
1537
- /*
1538
- if ( crb_acl_is_white() ) {
1539
- return false;
1540
- }*/
1541
 
1542
  $code = null;
1543
  $msg = null;
1544
 
1545
- if ( crb_is_reg_limit_reached() ) {
1546
- $cerber_status = 17;
 
 
1547
  cerber_log( 54 );
1548
  $code = 'ip_denied';
1549
- $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1550
- apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
 
 
 
 
 
 
 
 
1551
  }
1552
  elseif ( cerber_is_bot( 'botsreg' ) ) {
1553
  cerber_log( 54 ); // TODO should be separate code to detect bot activity?
@@ -1561,14 +1554,14 @@ function cerber_is_registration_prohibited( $user_login, $user_email = '' ) {
1561
  $wp_cerber->reCaptchaMsg( 'register' );
1562
  }
1563
  elseif ( cerber_is_prohibited( $user_login ) ) {
1564
- $cerber_status = 30;
1565
  cerber_log( 54 );
1566
  $code = 'prohibited_login';
1567
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1568
  apply_filters( 'cerber_msg_prohibited', __( 'Username is not allowed. Please choose another one.', 'wp-cerber' ), 'register' );
1569
  }
1570
  elseif ( ! cerber_is_email_permited( $user_email ) ) {
1571
- $cerber_status = 31;
1572
  cerber_log( 54 );
1573
  $code = 'prohibited_email';
1574
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
@@ -1581,7 +1574,7 @@ function cerber_is_registration_prohibited( $user_login, $user_email = '' ) {
1581
  apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
1582
  }
1583
  elseif ( ! cerber_geo_allowed( 'geo_register' ) ) {
1584
- $cerber_status = 16; // TODO: refactor cerber_log, include this status as a second parameter
1585
  cerber_log( 54 ); // TODO should be separate code?
1586
  $code = 'country_denied';
1587
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
@@ -1623,6 +1616,8 @@ function cerber_is_email_permited( $email ) {
1623
  return true;
1624
  }
1625
 
 
 
1626
  foreach ( $list as $item ) {
1627
  if ( $item[0] == '/' && substr( $item, - 1 ) == '/' ) {
1628
  $pattern = $item . 'i'; // we permit to specify any REGEX
@@ -1631,7 +1626,6 @@ function cerber_is_email_permited( $email ) {
1631
  }
1632
  }
1633
  elseif ( false !== strpos( $item, '*' ) ) {
1634
- //$wildcard = '[\w\-\.@]+?';
1635
  $wildcard = '.+?';
1636
  $pattern = '/^' . str_replace( array( '.', '*' ), array( '\.', $wildcard ), $item ) . '$/i';
1637
  if ( @preg_match( $pattern, $email ) ) {
@@ -1735,6 +1729,11 @@ add_filter( 'option_users_can_register', function ( $value ) {
1735
  if ( ! cerber_is_ip_allowed() || crb_is_reg_limit_reached() ) {
1736
  return false;
1737
  }
 
 
 
 
 
1738
 
1739
  return $value;
1740
  }, PHP_INT_MAX );
@@ -1789,7 +1788,7 @@ add_filter( 'pre_comment_approved', function ( $approved, $commentdata ) {
1789
  *
1790
  */
1791
  add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
1792
- global $cerber_status;
1793
 
1794
  $deny = false;
1795
 
@@ -1797,7 +1796,7 @@ add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
1797
  $deny = true;
1798
  }
1799
  elseif ( ! cerber_geo_allowed( 'geo_comment' ) ) {
1800
- $cerber_status = 16;
1801
  cerber_log(19);
1802
  $deny = true;
1803
  }
@@ -1821,14 +1820,14 @@ add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
1821
  *
1822
  */
1823
  add_filter( 'rest_allow_anonymous_comments', function ( $allowed, $request ) {
1824
- global $cerber_status;
1825
 
1826
  if ( ! cerber_is_ip_allowed() ) {
1827
  $allowed = false;
1828
  }
1829
  if ( ! cerber_geo_allowed( 'geo_comment' ) ) {
1830
  cerber_log(19);
1831
- $cerber_status = 16;
1832
  $allowed = false;
1833
  }
1834
  elseif ( lab_is_blocked( cerber_get_remote_ip() ) ) {
@@ -1907,12 +1906,14 @@ add_filter( 'comment_form_submit_field', function ( $value ) {
1907
  */
1908
  add_filter( 'login_errors', 'cerber_login_form_msg' ); // hook on POST if credentials was wrong
1909
  function cerber_login_form_msg( $errors ) {
1910
- global $error, $wp_cerber;
 
1911
  if ( cerber_can_msg() ) {
 
1912
  if ( ! cerber_is_ip_allowed() ) {
1913
  $errors = $wp_cerber->getErrorMsg();
1914
  }
1915
- elseif ( ! $error && ( $msg = $wp_cerber->getRemainMsg() ) ) {
1916
  $errors .= '<p>' . $msg;
1917
  }
1918
  }
@@ -1987,7 +1988,7 @@ add_action( 'init', function () {
1987
  *
1988
  */
1989
  function cerber_access_control() {
1990
- global $wp_cerber, $cerber_status, $cerber_req_status;
1991
 
1992
  if ( crb_acl_is_white() ) {
1993
  return;
@@ -2007,26 +2008,13 @@ function cerber_access_control() {
2007
  elseif ( cerber_is_rest_url() ) {
2008
  $rest_allowed = true;
2009
 
2010
- /*if ( ! empty( $opt['norest'] ) ) {
2011
- $rest_allowed = false;
2012
- if ( $opt['restauth'] && is_user_logged_in() ) {
2013
- $rest_allowed = true;
2014
- }
2015
- elseif ( cerber_is_route_allowed() ) {
2016
- $rest_allowed = true;
2017
- }
2018
- }
2019
- if ( $rest_allowed && cerber_is_route_blocked() ) {
2020
- $rest_allowed = false;
2021
- }*/
2022
-
2023
  if ( ! cerber_is_rest_permitted() ) {
2024
  $rest_allowed = false;
2025
  }
2026
 
2027
  if ( $rest_allowed && ! cerber_geo_allowed( 'geo_restapi' ) ) {
2028
  $rest_allowed = false;
2029
- $cerber_status = 16;
2030
  }
2031
 
2032
  if ( ! $rest_allowed ) {
@@ -2091,7 +2079,7 @@ function cerber_auth_access() {
2091
  *
2092
  */
2093
  function cerber_post_control() {
2094
- global $cerber_status;
2095
 
2096
  if ( ! cerber_is_http_post() || crb_acl_is_white() ) {
2097
  return;
@@ -2121,12 +2109,12 @@ function cerber_post_control() {
2121
  }
2122
  elseif ( ! cerber_geo_allowed( 'geo_submit' ) ) {
2123
  $deny = true;
2124
- $cerber_status = 16; // TODO: refactor cerber_log, include this status as a second parameter
2125
  cerber_log( 18 );
2126
  }
2127
  elseif ( lab_is_blocked( null, true ) ) {
2128
  $deny = true;
2129
- $cerber_status = 18;
2130
  cerber_log( 18 );
2131
  }
2132
 
@@ -2610,7 +2598,7 @@ function cerber_antibot_gene($recreate = false) {
2610
  * @return bool
2611
  */
2612
  function cerber_is_bot( $location = '' ) {
2613
- global $cerber_status, $cerber_req_status;
2614
  static $ret = null;
2615
 
2616
  $remote_ip = cerber_get_remote_ip();
@@ -2704,7 +2692,7 @@ function cerber_is_bot( $location = '' ) {
2704
  }
2705
 
2706
  if ( $ret ) {
2707
- $cerber_status = 11;
2708
  lab_save_push( $remote_ip, 333 );
2709
  }
2710
  }
@@ -3046,13 +3034,13 @@ function cerber_block_add( $ip_address = '', $reason_id = 1, $details = '', $dur
3046
  * @return bool true if IP is locked out
3047
  */
3048
  function cerber_block_check( $ip = '' ) {
 
3049
 
3050
- // @since 4.8
3051
- if ( cerber_get_block( $ip ) ) {
3052
- return true;
3053
  }
3054
 
3055
- return false;
3056
  }
3057
 
3058
  /**
@@ -3202,7 +3190,7 @@ function cerber_get_remain_count( $ip = '', $check_acl = true, $activity = array
3202
  * @return bool
3203
  */
3204
  function cerber_is_ip_allowed( $ip = '', $context = null ) {
3205
- global $cerber_status;
3206
 
3207
  if ( ! $ip ) {
3208
  $ip = cerber_get_remote_ip();
@@ -3216,24 +3204,24 @@ function cerber_is_ip_allowed( $ip = '', $context = null ) {
3216
  return true;
3217
  }
3218
  if ( $tag == 'B' ) {
3219
- $cerber_status = 14;
3220
  return false;
3221
  }
3222
 
3223
  if ( $b = cerber_get_block( $ip ) ) {
3224
  if ( ! in_array( $b->reason_id, crb_context_get_allowed( $context ) ) ) {
3225
- $cerber_status = 13;
3226
  return false;
3227
  }
3228
  }
3229
 
3230
  if ( $context != CRB_CNTX_NEXUS && cerber_is_citadel() ) {
3231
- $cerber_status = 19;
3232
  return false;
3233
  }
3234
 
3235
  if ( lab_is_blocked( $ip, false ) ) {
3236
- $cerber_status = 15;
3237
  return false;
3238
  }
3239
 
@@ -3267,6 +3255,8 @@ function cerber_is_prohibited( $username ) {
3267
  return false;
3268
  }
3269
 
 
 
3270
  if ( $list = (array) crb_get_settings( 'prohibited' ) ) {
3271
  foreach ( $list as $item ) {
3272
  if ( mb_substr( $item, 0, 1 ) == '/' && mb_substr( $item, - 1 ) == '/' ) {
@@ -3275,7 +3265,7 @@ function cerber_is_prohibited( $username ) {
3275
  return true;
3276
  }
3277
  }
3278
- elseif ($username === $item){
3279
  return true;
3280
  }
3281
  }
@@ -3286,10 +3276,10 @@ function cerber_is_prohibited( $username ) {
3286
 
3287
  // TODO: Merge with $wp_cerber->getStatus();
3288
  function cerber_get_status( $ip, $activity = null ) {
3289
- global $cerber_status;
3290
 
3291
- if ( ! empty( $cerber_status ) ) {
3292
- return absint( $cerber_status );
3293
  }
3294
 
3295
  if ( cerber_block_check( $ip ) ) {
@@ -3301,6 +3291,12 @@ function cerber_get_status( $ip, $activity = null ) {
3301
  if ( in_array( $activity, array( 1, 2, 5, 20, 21 ) ) ) {
3302
  return 500;
3303
  }
 
 
 
 
 
 
3304
 
3305
  return 0;
3306
  }
@@ -3364,11 +3360,14 @@ function crb_acl_is_black( $ip = '' ) {
3364
  * @param string $ip
3365
  * @param string $tag
3366
  * @param int $acl_slice
 
 
 
3367
  *
3368
  * @return bool|string
3369
  */
3370
- function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0 ) {
3371
- static $cache;
3372
 
3373
  if ( ! $ip ) {
3374
  $ip = cerber_get_remote_ip();
@@ -3377,12 +3376,15 @@ function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0 ) {
3377
  $key = cerber_get_id_ip( $ip ) . (string) $tag;
3378
 
3379
  if ( isset( $cache[ $key ] ) ) {
 
3380
  return $cache[ $key ];
3381
  }
3382
 
3383
  if ( cerber_is_ipv6( $ip ) ) {
3384
- $ret = cerber_ipv6_acl_check( $ip, $tag, $acl_slice );
3385
  $cache[ $key ] = $ret;
 
 
3386
 
3387
  return $ret;
3388
  }
@@ -3394,7 +3396,8 @@ function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0 ) {
3394
  if ( $tag !== 'W' && $tag !== 'B' ) {
3395
  $ret = false;
3396
  }
3397
- elseif ( cerber_db_get_var( 'SELECT ip FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "' . $tag . '" LIMIT 1' ) ) {
 
3398
  $ret = true;
3399
  }
3400
  else {
@@ -3402,20 +3405,26 @@ function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0 ) {
3402
  }
3403
 
3404
  $cache[ $key ] = $ret;
 
3405
  return $ret;
3406
  }
3407
  else {
3408
  // We use two queries because of possible overlapping an IP and its network
3409
- if ( $ret = cerber_db_get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "W" LIMIT 1' ) ) {
3410
- $cache[ $key ] = $ret;
3411
- return $ret;
 
 
3412
  }
3413
- if ( $ret = cerber_db_get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "B" LIMIT 1' ) ) {
3414
- $cache[ $key ] = $ret;
3415
- return $ret;
 
 
3416
  }
3417
 
3418
  $cache[ $key ] = false;
 
3419
  return false;
3420
  }
3421
  }
@@ -3426,10 +3435,11 @@ function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0 ) {
3426
  * @param string $ip
3427
  * @param string $tag
3428
  * @param int $acl_slice
 
3429
  *
3430
  * @return bool|null|string
3431
  */
3432
- function cerber_ipv6_acl_check( $ip, $tag = '', $acl_slice = 0 ) {
3433
 
3434
  if ( ! $ip ) {
3435
  $ip = cerber_get_remote_ip();
@@ -3444,22 +3454,38 @@ function cerber_ipv6_acl_check( $ip, $tag = '', $acl_slice = 0 ) {
3444
  return false;
3445
  }
3446
 
3447
- if ( ! $list = cerber_db_get_col( 'SELECT v6range FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 1 AND ip_long_begin <= ' . $d0 . ' AND ' . $d0 . ' <= ip_long_end AND tag = "' . $tag . '"' ) ) {
3448
- return false;
 
 
 
 
 
 
 
 
 
 
3449
  }
3450
 
3451
- if ( ! crb_ipv6_is_in_range_list( $d1, $d2, $list ) ) {
3452
  return false;
3453
  }
3454
 
 
 
3455
  return true;
3456
  }
3457
  else {
3458
- if ( ! $list = cerber_db_get_results( 'SELECT v6range,tag FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 1 AND ip_long_begin <= ' . $d0 . ' AND ' . $d0 . ' <= ip_long_end' ) ) {
3459
  return false;
3460
  }
3461
 
3462
- return crb_ipv6_get_tag( $d1, $d2, $list );
 
 
 
 
3463
  }
3464
  }
3465
 
@@ -3484,12 +3510,13 @@ function crb_ipv6_is_in_range( $ip, $range ) {
3484
  * @param int $d1
3485
  * @param int $d2
3486
  * @param array $list
 
3487
  *
3488
  * @return bool
3489
  */
3490
- function crb_ipv6_is_in_range_list( $d1, $d2, &$list ) {
3491
 
3492
- foreach ( $list as $v6range ) {
3493
  list( $begin1, $begin2, $end1, $end2 ) = explode( '#', $v6range, 4 );
3494
  if ( crb_compare_numbers( $d1, $d2, $begin1, $begin2 )
3495
  && crb_compare_numbers( $end1, $end2, $d1, $d2 ) ) {
@@ -3506,13 +3533,14 @@ function crb_ipv6_is_in_range_list( $d1, $d2, &$list ) {
3506
  * @param $d1
3507
  * @param $d2
3508
  * @param $v6rows
 
3509
  *
3510
  * @return bool|string false if IP is not in any list, 'B' if is in the black, 'W' if is in the white
3511
  */
3512
- function crb_ipv6_get_tag( $d1, $d2, &$v6rows ) {
3513
  $black = false;
3514
 
3515
- foreach ( $v6rows as $row ) {
3516
  if ( $black && ( $row['tag'] == 'B' ) ) {
3517
  continue;
3518
  }
@@ -3681,7 +3709,7 @@ function cerber_parse_ip_range( $string ) {
3681
  $begin = ip2long( $begin_ip );
3682
  $end = ip2long( $end_ip );
3683
 
3684
- if ( $begin >= $end ) {
3685
  return false;
3686
  }
3687
 
@@ -3774,10 +3802,17 @@ function cerber_cidr2range( $cidr = '' ) {
3774
  if ( ! is_numeric( $mask ) ) {
3775
  return false;
3776
  }
3777
- $begin = long2ip( ( ip2long( $net ) ) & ( ( - 1 << ( 32 - (int) $mask ) ) ) );
3778
- $end = long2ip( ( ip2long( $net ) ) + pow( 2, ( 32 - (int) $mask ) ) - 1 );
3779
 
3780
- return cerber_parse_ip_range( $begin . ' - ' . $end );
 
 
 
 
 
 
 
 
 
3781
  }
3782
 
3783
  /**
@@ -4259,7 +4294,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4259
  $body .= 'https://wpcerber.com/cloudflare-and-wordpress-cerber/' . "\n\n";
4260
  $body .= 'Be in touch with the developer.' . "\n\n";
4261
  $body .= 'Follow Cerber on Twitter: https://twitter.com/wpcerber' . "\n\n";
4262
- $body .= 'Subscribe to the Cerber\'s newsletter: https://wpcerber.com/subscribe-newsletter/' . "\n\n";
4263
  break;
4264
  case 'newlurl':
4265
  $subj .= __( 'New Custom login URL', 'wp-cerber' );
@@ -4319,7 +4354,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4319
  $footer .= "\n\n" . __( 'Your license is valid until', 'wp-cerber' ) . ' ' . $date;
4320
  }
4321
 
4322
- $footer .= "\n\n\n" . __( 'This message was sent by', 'wp-cerber' ) . ' WP Cerber Security ' . CERBER_VER . "\n";
4323
  $footer .= 'https://wpcerber.com';
4324
 
4325
  if ( $html_mode ) {
@@ -4689,7 +4724,10 @@ add_action( 'cerber_bg_launcher', function () {
4689
  }
4690
 
4691
  if ( ! wp_next_scheduled( 'cerber_daily' ) ) {
4692
- wp_schedule_event( $next_hour + 1200, 'daily', 'cerber_daily' );
 
 
 
4693
  }
4694
 
4695
  define( 'CRB_DOING_BG_TASK', 1 );
@@ -5278,7 +5316,7 @@ register_activation_hook( cerber_plugin_file(), function () {
5278
 
5279
  crb_x_update_add_on_list();
5280
 
5281
- $slave = ( nexus_is_master() || nexus_is_slave() ) ? '' : ' <i class="crb-icon crb-icon-bx-cog"></i> <a href="' . cerber_admin_link( '', array( 'page' => 'cerber-nexus' ) ) . '">' . __( 'Enable slave mode', 'wp-cerber' ) . '</a>';
5282
 
5283
  $msg =
5284
  '<h2>' . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . '</h2>'
@@ -5383,7 +5421,9 @@ function cerber_upgrade_all( $force = false ) {
5383
  cerber_push_the_news();
5384
  cerber_delete_expired_set( true );
5385
  CRB_Cache::reset();
5386
- wp_clear_scheduled_hook( 'cerber_hourly' ); // @since 5.8
 
 
5387
 
5388
  lab_get_key( true );
5389
  $cerber_doing_upgrade = false;
@@ -5986,7 +6026,7 @@ register_shutdown_function( function () {
5986
  } );
5987
 
5988
  function cerber_error_shield( $mode = 1 ) {
5989
- global $cerber_status, $cerber_blocked;
5990
 
5991
  require_once( ABSPATH . WPINC . '/pluggable.php' ); // @since 8.5 for is_user_logged_in()
5992
 
@@ -6047,7 +6087,7 @@ function cerber_error_shield( $mode = 1 ) {
6047
  $c = cerber_db_get_var( 'SELECT COUNT(ip) FROM ' . CERBER_QMEM_TABLE . ' WHERE ip = "' . $ip . '" AND stamp > ' . $t );
6048
  if ( $c >= $limit ) {
6049
  cerber_soft_block_add( $ip, 711 );
6050
- $cerber_status = 18;
6051
  }
6052
  }
6053
 
@@ -6189,12 +6229,14 @@ function cerber_traffic_log(){
6189
  if ( ! empty( $_FILES ) ) {
6190
  $fields[3] = $_FILES;
6191
  }
 
6192
  if ( ! empty( $fields ) ) {
6193
  $fields = serialize( $fields );
6194
  }
6195
  else {
6196
  $fields = '';
6197
  }
 
6198
  }
6199
 
6200
  // Extra request details
@@ -6248,16 +6290,13 @@ function cerber_traffic_log(){
6248
  if ( crb_get_settings( 'tiphperr' ) ) {
6249
  if ( $cerber_php_errors && is_array( $cerber_php_errors ) ) {
6250
  //$err_not = array( E_NOTICE, E_WARNING );
6251
- $i = 0;
6252
- foreach ( $cerber_php_errors as $key => $e ) {
6253
- if ( $e[0] == E_NOTICE ) {
6254
- //unset( $cerber_php_errors[ $key ] );
6255
- }
6256
- else {
6257
- $i ++;
6258
- }
6259
- if ( $i > 25 ) { // Save no more errors
6260
- break;
6261
  }
6262
  }
6263
  if ( $cerber_php_errors ) {
@@ -6280,9 +6319,14 @@ function cerber_traffic_log(){
6280
 
6281
  $uri = cerber_real_escape( $uri );
6282
  $details = cerber_real_escape( $details );
6283
- $fields = ( $php_err ) ? cerber_real_escape( $fields ) : '';
6284
  $php_err = ( $php_err ) ? cerber_real_escape( $php_err ) : '';
6285
- $req_status = absint( $cerber_req_status );
 
 
 
 
 
6286
 
6287
  $query = 'INSERT INTO ' . CERBER_TRAF_TABLE . '
6288
  (ip, ip_long, uri, request_fields , request_details, session_id, user_id, stamp, processing, request_method, http_code, wp_id, wp_type, is_bot, blog_id, php_errors, req_status )
@@ -6451,7 +6495,7 @@ function cerber_log_exceptions() {
6451
  * @since 6.0
6452
  */
6453
  function cerber_mask_fields( $fields ) {
6454
- $to_mask = array( 'pwd', 'pass', 'password', 'password_1', 'password_2', 'cerber-cloud-key' );
6455
  if ( $list = (array) crb_get_settings( 'timask' ) ) {
6456
  $to_mask = array_merge( $to_mask, $list );
6457
  }
@@ -6564,7 +6608,7 @@ function cerber_get_non_wp_fields() {
6564
  * @since 6.0
6565
  */
6566
  function cerber_beast() {
6567
- global $cerber_status, $cerber_req_status;
6568
 
6569
  if ( is_admin()
6570
  || cerber_is_wp_cron()
@@ -6625,7 +6669,7 @@ function cerber_beast() {
6625
  if ( $uri_script && $script_filename = cerber_script_filename() ) { // @since 8.6.3.4
6626
  // Scanning for executable scripts?
6627
  if ( ! cerber_script_exists( $uri ) && ! cerber_is_login_request() ) {
6628
- $cerber_status = 19;
6629
  cerber_log( 55 );
6630
  if ( $ti_mode > 1 ) {
6631
  cerber_soft_block_add( null, 708 );
@@ -6636,17 +6680,17 @@ function cerber_beast() {
6636
  $deny = false;
6637
  if ( crb_acl_is_black() ) {
6638
  $deny = true;
6639
- $cerber_status = 14;
6640
  }
6641
  //elseif ( ! in_array( $uri_script, cerber_get_wp_scripts() ) ) {
6642
  elseif ( ! CRB_Request::is_script( cerber_get_wp_scripts() ) ) {
6643
  if ( ! cerber_is_ip_allowed() ) {
6644
  $deny = true;
6645
- $cerber_status = 13;
6646
  }
6647
  elseif ( lab_is_blocked( null, true ) ) {
6648
  $deny = true;
6649
- $cerber_status = 15;
6650
  }
6651
  }
6652
  if ( $deny ) {
@@ -6701,7 +6745,7 @@ function cerber_screen_request_fields(){
6701
  * @return bool|int
6702
  */
6703
  function cerber_inspect_array( &$array, $white = array() ) {
6704
- global $cerber_status;
6705
  static $rec_limit = null;
6706
 
6707
  if ( ! $array ) {
@@ -6715,7 +6759,7 @@ function cerber_inspect_array( &$array, $white = array() ) {
6715
  $rec_limit --;
6716
  if ( $rec_limit <= 0 ) {
6717
  $rec_limit = null;
6718
- $cerber_status = 20;
6719
 
6720
  return 100;
6721
  }
@@ -6742,7 +6786,7 @@ function cerber_inspect_array( &$array, $white = array() ) {
6742
  }
6743
 
6744
  function cerber_inspect_value( &$value = '', $reset = false ) {
6745
- global $cerber_status, $crb_x64;
6746
  static $rec_limit = null; // Real recursion limit
6747
 
6748
  if ( ! $value || is_numeric( $value ) ) {
@@ -6760,7 +6804,7 @@ function cerber_inspect_value( &$value = '', $reset = false ) {
6760
  $rec_limit --;
6761
  if ( $rec_limit <= 0 ) {
6762
  $rec_limit = null;
6763
- $cerber_status = 21;
6764
 
6765
  return 100;
6766
  }
@@ -6774,7 +6818,7 @@ function cerber_inspect_value( &$value = '', $reset = false ) {
6774
  else {
6775
  $parsed = cerber_detect_php_code( $value );
6776
  if ( ! empty( $parsed[0] ) ) {
6777
- $cerber_status = 22;
6778
  $found = 100;
6779
  }
6780
  elseif ( ! empty( $parsed[1] ) ) {
@@ -6786,11 +6830,11 @@ function cerber_inspect_value( &$value = '', $reset = false ) {
6786
  }
6787
  }
6788
  if ( ! $found && cerber_detect_other_code( $value ) ) {
6789
- $cerber_status = 23;
6790
  $found = 100;
6791
  }
6792
  if ( ! $found && cerber_detect_js_code( $value ) ) {
6793
- $cerber_status = 24;
6794
  $found = 100;
6795
  }
6796
  }
@@ -7148,7 +7192,7 @@ function cerber_push_the_news() {
7148
  if ( ! defined( 'CRB_JUST_MARRIED' )
7149
  && ( ( ! $ac = cerber_get_set( '_activated' ) ) || ( crb_array_get( $ac, 'time' ) < ( time() - 30 * DAY_IN_SECONDS ) ) )
7150
  && ! lab_lab() ) {
7151
- $text .= ' <h2 style="margin-top: 28px;">Cerber needs your help</h2>
7152
  <p style="margin-top: 20px;">
7153
  By sharing your unique opinion on WP Cerber, you will help the engineers behind the plugin make greater progress and help other professionals find the right software. You can leave your review on one of the following websites. No needs to use English. Feel free to use your native language. Thanks!
7154
  </p>
@@ -7156,7 +7200,7 @@ function cerber_push_the_news() {
7156
 
7157
  <p><a href="https://www.trustpilot.com/review/wpcerber.com" target="_blank">Trustpilot</a> &nbsp;/&nbsp;
7158
  <a href="https://www.g2crowd.com/products/cerber-security-antispam-malware-scan/" target="_blank">G2.COM</a> &nbsp;/&nbsp;
7159
- <a href="https://reviews.capterra.com/new/187653" target="_blank">Capterra</a></p>
7160
 
7161
  <!--<p><a href="https://www.trustpilot.com/review/wpcerber.com" target="_blank">Trustpilot</a></p>
7162
  <p><a href="https://www.g2crowd.com/products/cerber-security-antispam-malware-scan/" target="_blank">G2.COM</a></p>
36
  exit;
37
  }
38
 
39
+ const CERBER_LOG_TABLE = 'cerber_log';
40
+ const CERBER_QMEM_TABLE = 'cerber_qmem';
41
+ const CERBER_TRAF_TABLE = 'cerber_traffic';
42
+ const CERBER_ACL_TABLE = 'cerber_acl';
43
+ const CERBER_BLOCKS_TABLE = 'cerber_blocks';
44
+ const CERBER_LAB_TABLE = 'cerber_lab';
45
+ const CERBER_LAB_IP_TABLE = 'cerber_lab_ip';
46
+ const CERBER_LAB_NET_TABLE = 'cerber_lab_net';
47
+ const CERBER_GEO_TABLE = 'cerber_countries';
48
+ const CERBER_SCAN_TABLE = 'cerber_files';
49
+ const CERBER_SETS_TABLE = 'cerber_sets';
50
+ const CERBER_MS_TABLE = 'cerber_ms';
51
+ const CERBER_MS_LIST_TABLE = 'cerber_ms_lists';
52
+ const CERBER_USS_TABLE = 'cerber_uss';
53
+
54
+ const CERBER_BUKEY = '_crb_blocked';
55
+ const CERBER_PREFIX = '_cerber_';
56
+ const CERBER_MARKER1 = 'WP CERBER GROOVE';
57
+ const CERBER_MARKER2 = 'WP CERBER CLAMPS';
58
+ const CERBER_NO_REMOTE_IP = '0.0.0.0';
59
+
60
+ const WP_LOGIN_SCRIPT = 'wp-login.php';
61
+ const WP_REG_URI = 'wp-register.php';
62
+ const WP_SIGNUP_SCRIPT = 'wp-signup.php';
63
+ const WP_XMLRPC_SCRIPT = 'xmlrpc.php';
64
+ const WP_TRACKBACK_SCRIPT = 'wp-trackback.php';
65
+ const WP_PING_SCRIPT = 'wp-trackback.php';
66
+ const WP_COMMENT_SCRIPT = 'wp-comments-post.php';
67
+
68
+ const GOO_RECAPTCHA_URL = 'https://www.google.com/recaptcha/api/siteverify';
69
+
70
+ const CERBER_REQ_PHP = '5.6';
71
+ const CERBER_REQ_WP = '4.9';
72
+ const CERBER_TECH = 'https://cerber.tech/';
73
+
74
+ const CERBER_CIREC_LIMIT = 30; // Upper limit for allowed nested values during inspection for malware
75
+
76
+ const CERBER_AGGRESSIVE = 1;
77
+
78
+ const CRB_CNTX_SAFE = 1;
79
+ const CRB_CNTX_NEXUS = 2;
80
 
81
  $dir = dirname( __FILE__ );
82
 
142
  * @since 6.3.3
143
  */
144
  final public function isURIProhibited() {
145
+ global $cerber_act_status;
146
 
147
  if ( isset( $this->uri_prohibited ) ) {
148
  return $this->uri_prohibited;
165
  || $script == WP_SIGNUP_SCRIPT
166
  || ( $script == WP_REG_URI && ! get_option( 'users_can_register' ) ) ) {
167
  if ( !empty( $this->options['wplogin'] ) ) {
168
+ $cerber_act_status = 19;
169
  cerber_log( 50 );
170
  cerber_soft_block_add( $this->remote_ip, 702, $script );
171
  $this->uri_prohibited = true;
186
  return true;
187
  }
188
  if ( !cerber_geo_allowed( 'geo_xmlrpc' ) ) {
189
+ $cerber_act_status = 16;
190
  cerber_log( 71 );
191
  $this->uri_prohibited = true;
192
  return true;
294
  return $this->deny;
295
  }
296
 
 
 
 
 
 
297
  final public function getRequestID() {
298
  return $this->session_id;
299
  }
377
  return $this->options;
378
  }
379
 
 
 
 
 
 
 
 
 
 
380
  /**
381
  * Adding reCAPTCHA widgets
382
  *
815
  *
816
  */
817
  function cerber_extra_vision() {
818
+ global $cerber_logged, $cerber_act_status;
819
 
820
  // Multiple different malicious activities
821
 
831
  $remain = cerber_get_remain_count( $ip, true, $black ); // @since 6.7.5
832
  if ( $remain < 1 ) {
833
  cerber_soft_block_add( $ip, 707 );
834
+ $cerber_act_status = 18;
835
 
836
  return true;
837
  }
840
  $remain = cerber_get_remain_count( $ip, true, array( 400 ), 10, 30 );
841
  if ( $remain < 1 ) {
842
  cerber_block_add( $ip, 721 );
843
+ $cerber_act_status = 18;
844
 
845
  return true;
846
  }
944
  */
945
  add_action( 'login_head', 'cerber_login_head' );
946
  function cerber_login_head() {
947
+ global $error;
948
 
949
  if ( !$allowed = cerber_is_ip_allowed() ) :
950
  ?>
956
  <?php
957
  endif;
958
 
959
+ $wp_cerber = get_wp_cerber();
960
+
961
  $wp_cerber->reCaptcha( 'style' );
962
 
963
  if ( !cerber_is_http_get() ) {
1055
  */
1056
  add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1057
  // former cerber_stop_authentication()
1058
+ global $cerber_act_status;
1059
 
1060
  $deny = false;
1061
  $user_msg = '';
1062
 
1063
  if ( $b = crb_is_user_blocked( $user->ID ) ) {
1064
  $user_msg = $b['blocked_msg'];
1065
+ $cerber_act_status = 25;
1066
  $deny = true;
1067
  }
1068
  elseif ( crb_acl_is_white() ) { // @since 8.2.2
1072
  $deny = true;
1073
  }
1074
  elseif ( ! cerber_geo_allowed( 'geo_login', $user ) ) {
1075
+ $cerber_act_status = 16;
1076
  $deny = true;
1077
  }
1078
  elseif ( lab_is_blocked( cerber_get_remote_ip() ) ) {
1079
+ $cerber_act_status = 15;
1080
  $deny = true;
1081
  }
1082
 
1084
  status_header( 403 );
1085
  $error = new WP_Error();
1086
  if ( ! $user_msg ) {
1087
+ $user_msg = get_wp_cerber()->getErrorMsg();
1088
  }
1089
  $error->add( 'cerber_wp_error', $user_msg, array( 'user_id' => $user->ID ) );
1090
 
1095
  }, PHP_INT_MAX, 2 );
1096
 
1097
  function crb_login_error( $username, $act = null, $status = null ) {
1098
+ global $cerber_act_status;
1099
+ $cerber_act_status = $status;
1100
  if ( $act ) {
1101
  cerber_log( $act, $username );
1102
  }
1177
  */
1178
  //add_action( 'wp_login_failed', 'cerber_login_failed' ); // @since 4.18
1179
  function cerber_login_failed( $user_login, $user_id = 0 ) {
1180
+ global $cerber_act_status;
1181
  static $is_processed = false;
1182
 
1183
  if ( $is_processed ) return;
1199
  $ac = 51;
1200
  }
1201
  elseif ( ! cerber_is_ip_allowed( $ip )
1202
+ || $cerber_act_status == 15
1203
+ || $cerber_act_status == 16
1204
+ || $cerber_act_status == 25 ) { // TODO should be refactored together with cerber_stop_authentication
1205
  $ac = 53;
1206
  }
1207
 
1498
  }
1499
 
1500
  function cerber_user_logout( $status = null ) {
1501
+ global $cerber_act_status, $current_user, $userdata, $user_ID;
1502
+ $cerber_act_status = ( ! $status ) ? 26 : absint( $status );
1503
 
1504
  if ( $current_user instanceof WP_User ) {
1505
  $uid = $current_user->ID;
1520
  // Registration -----------------------------------------------------------------------
1521
 
1522
  function cerber_is_registration_prohibited( $user_login, $user_email = '' ) {
1523
+ global $wp_cerber, $cerber_act_status;
 
 
 
 
 
1524
 
1525
  $code = null;
1526
  $msg = null;
1527
 
1528
+ if ( crb_get_settings( 'regwhite' )
1529
+ && ! crb_acl_is_white()
1530
+ && lab_lab() ) {
1531
+ $cerber_act_status = 37;
1532
  cerber_log( 54 );
1533
  $code = 'ip_denied';
1534
+ if ( ! $msg = crb_get_settings( 'regwhite_msg' ) ) {
1535
+ $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' . __( 'You are not allowed to register.', 'wp-cerber' );
1536
+ }
1537
+ }
1538
+ elseif ( crb_is_reg_limit_reached() ) {
1539
+ $cerber_act_status = 17;
1540
+ cerber_log( 54 );
1541
+ $code = 'ip_denied';
1542
+ $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1543
+ apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
1544
  }
1545
  elseif ( cerber_is_bot( 'botsreg' ) ) {
1546
  cerber_log( 54 ); // TODO should be separate code to detect bot activity?
1554
  $wp_cerber->reCaptchaMsg( 'register' );
1555
  }
1556
  elseif ( cerber_is_prohibited( $user_login ) ) {
1557
+ $cerber_act_status = 30;
1558
  cerber_log( 54 );
1559
  $code = 'prohibited_login';
1560
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1561
  apply_filters( 'cerber_msg_prohibited', __( 'Username is not allowed. Please choose another one.', 'wp-cerber' ), 'register' );
1562
  }
1563
  elseif ( ! cerber_is_email_permited( $user_email ) ) {
1564
+ $cerber_act_status = 31;
1565
  cerber_log( 54 );
1566
  $code = 'prohibited_email';
1567
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1574
  apply_filters( 'cerber_msg_denied', __( 'You are not allowed to register.', 'wp-cerber' ), 'register' );
1575
  }
1576
  elseif ( ! cerber_geo_allowed( 'geo_register' ) ) {
1577
+ $cerber_act_status = 16; // TODO: refactor cerber_log, include this status as a second parameter
1578
  cerber_log( 54 ); // TODO should be separate code?
1579
  $code = 'country_denied';
1580
  $msg = '<strong>' . __( 'ERROR:', 'wp-cerber' ) . ' </strong>' .
1616
  return true;
1617
  }
1618
 
1619
+ $email = strtolower( $email );
1620
+
1621
  foreach ( $list as $item ) {
1622
  if ( $item[0] == '/' && substr( $item, - 1 ) == '/' ) {
1623
  $pattern = $item . 'i'; // we permit to specify any REGEX
1626
  }
1627
  }
1628
  elseif ( false !== strpos( $item, '*' ) ) {
 
1629
  $wildcard = '.+?';
1630
  $pattern = '/^' . str_replace( array( '.', '*' ), array( '\.', $wildcard ), $item ) . '$/i';
1631
  if ( @preg_match( $pattern, $email ) ) {
1729
  if ( ! cerber_is_ip_allowed() || crb_is_reg_limit_reached() ) {
1730
  return false;
1731
  }
1732
+ if ( crb_get_settings( 'regwhite' )
1733
+ && ! crb_acl_is_white()
1734
+ && lab_lab() ) {
1735
+ return false;
1736
+ }
1737
 
1738
  return $value;
1739
  }, PHP_INT_MAX );
1788
  *
1789
  */
1790
  add_action( 'pre_comment_on_post', function ( $comment_post_ID ) {
1791
+ global $cerber_act_status;
1792
 
1793
  $deny = false;
1794
 
1796
  $deny = true;
1797
  }
1798
  elseif ( ! cerber_geo_allowed( 'geo_comment' ) ) {
1799
+ $cerber_act_status = 16;
1800
  cerber_log(19);
1801
  $deny = true;
1802
  }
1820
  *
1821
  */
1822
  add_filter( 'rest_allow_anonymous_comments', function ( $allowed, $request ) {
1823
+ global $cerber_act_status;
1824
 
1825
  if ( ! cerber_is_ip_allowed() ) {
1826
  $allowed = false;
1827
  }
1828
  if ( ! cerber_geo_allowed( 'geo_comment' ) ) {
1829
  cerber_log(19);
1830
+ $cerber_act_status = 16;
1831
  $allowed = false;
1832
  }
1833
  elseif ( lab_is_blocked( cerber_get_remote_ip() ) ) {
1906
  */
1907
  add_filter( 'login_errors', 'cerber_login_form_msg' ); // hook on POST if credentials was wrong
1908
  function cerber_login_form_msg( $errors ) {
1909
+ global $error;
1910
+
1911
  if ( cerber_can_msg() ) {
1912
+ $wp_cerber = get_wp_cerber();
1913
  if ( ! cerber_is_ip_allowed() ) {
1914
  $errors = $wp_cerber->getErrorMsg();
1915
  }
1916
+ elseif ( ! $error && ( $msg = $wp_cerber->getRemainMsg() ) ) {
1917
  $errors .= '<p>' . $msg;
1918
  }
1919
  }
1988
  *
1989
  */
1990
  function cerber_access_control() {
1991
+ global $wp_cerber, $cerber_act_status, $cerber_req_status;
1992
 
1993
  if ( crb_acl_is_white() ) {
1994
  return;
2008
  elseif ( cerber_is_rest_url() ) {
2009
  $rest_allowed = true;
2010
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2011
  if ( ! cerber_is_rest_permitted() ) {
2012
  $rest_allowed = false;
2013
  }
2014
 
2015
  if ( $rest_allowed && ! cerber_geo_allowed( 'geo_restapi' ) ) {
2016
  $rest_allowed = false;
2017
+ $cerber_act_status = 16;
2018
  }
2019
 
2020
  if ( ! $rest_allowed ) {
2079
  *
2080
  */
2081
  function cerber_post_control() {
2082
+ global $cerber_act_status;
2083
 
2084
  if ( ! cerber_is_http_post() || crb_acl_is_white() ) {
2085
  return;
2109
  }
2110
  elseif ( ! cerber_geo_allowed( 'geo_submit' ) ) {
2111
  $deny = true;
2112
+ $cerber_act_status = 16; // TODO: refactor cerber_log, include this status as a second parameter
2113
  cerber_log( 18 );
2114
  }
2115
  elseif ( lab_is_blocked( null, true ) ) {
2116
  $deny = true;
2117
+ $cerber_act_status = 18;
2118
  cerber_log( 18 );
2119
  }
2120
 
2598
  * @return bool
2599
  */
2600
  function cerber_is_bot( $location = '' ) {
2601
+ global $cerber_act_status, $cerber_req_status;
2602
  static $ret = null;
2603
 
2604
  $remote_ip = cerber_get_remote_ip();
2692
  }
2693
 
2694
  if ( $ret ) {
2695
+ $cerber_act_status = 11;
2696
  lab_save_push( $remote_ip, 333 );
2697
  }
2698
  }
3034
  * @return bool true if IP is locked out
3035
  */
3036
  function cerber_block_check( $ip = '' ) {
3037
+ static $ret;
3038
 
3039
+ if ( ! isset( $ret ) ) {
3040
+ $ret = cerber_get_block( $ip );
 
3041
  }
3042
 
3043
+ return $ret;
3044
  }
3045
 
3046
  /**
3190
  * @return bool
3191
  */
3192
  function cerber_is_ip_allowed( $ip = '', $context = null ) {
3193
+ global $cerber_act_status;
3194
 
3195
  if ( ! $ip ) {
3196
  $ip = cerber_get_remote_ip();
3204
  return true;
3205
  }
3206
  if ( $tag == 'B' ) {
3207
+ $cerber_act_status = 14;
3208
  return false;
3209
  }
3210
 
3211
  if ( $b = cerber_get_block( $ip ) ) {
3212
  if ( ! in_array( $b->reason_id, crb_context_get_allowed( $context ) ) ) {
3213
+ $cerber_act_status = 13;
3214
  return false;
3215
  }
3216
  }
3217
 
3218
  if ( $context != CRB_CNTX_NEXUS && cerber_is_citadel() ) {
3219
+ $cerber_act_status = 19;
3220
  return false;
3221
  }
3222
 
3223
  if ( lab_is_blocked( $ip, false ) ) {
3224
+ $cerber_act_status = 15;
3225
  return false;
3226
  }
3227
 
3255
  return false;
3256
  }
3257
 
3258
+ $username_lower = strtolower( $username ); // since 'prohibited' gets lower case when settings are saved
3259
+
3260
  if ( $list = (array) crb_get_settings( 'prohibited' ) ) {
3261
  foreach ( $list as $item ) {
3262
  if ( mb_substr( $item, 0, 1 ) == '/' && mb_substr( $item, - 1 ) == '/' ) {
3265
  return true;
3266
  }
3267
  }
3268
+ elseif ( $username_lower == $item ) {
3269
  return true;
3270
  }
3271
  }
3276
 
3277
  // TODO: Merge with $wp_cerber->getStatus();
3278
  function cerber_get_status( $ip, $activity = null ) {
3279
+ global $cerber_act_status;
3280
 
3281
+ if ( ! empty( $cerber_act_status ) ) {
3282
+ return absint( $cerber_act_status );
3283
  }
3284
 
3285
  if ( cerber_block_check( $ip ) ) {
3291
  if ( in_array( $activity, array( 1, 2, 5, 20, 21 ) ) ) {
3292
  return 500;
3293
  }
3294
+ if ( in_array( $activity, array( 72, 73, 75, 76 ) ) ) {
3295
+ return 511;
3296
+ }
3297
+ if ( $activity == 74 ) {
3298
+ return 512;
3299
+ }
3300
 
3301
  return 0;
3302
  }
3360
  * @param string $ip
3361
  * @param string $tag
3362
  * @param int $acl_slice
3363
+ * @param object|null $row If a given IP is in any ACL, it contains an appropriate DB row object:
3364
+ * for IPv4 all columns
3365
+ * for IPv6 comments column only
3366
  *
3367
  * @return bool|string
3368
  */
3369
+ function cerber_acl_check( $ip = null, $tag = '', $acl_slice = 0, &$row = null ) {
3370
+ static $cache, $row_cache;
3371
 
3372
  if ( ! $ip ) {
3373
  $ip = cerber_get_remote_ip();
3376
  $key = cerber_get_id_ip( $ip ) . (string) $tag;
3377
 
3378
  if ( isset( $cache[ $key ] ) ) {
3379
+ $row = $row_cache[ $key ];
3380
  return $cache[ $key ];
3381
  }
3382
 
3383
  if ( cerber_is_ipv6( $ip ) ) {
3384
+ $ret = cerber_ipv6_acl_check( $ip, $tag, $acl_slice, $row );
3385
  $cache[ $key ] = $ret;
3386
+ $row = (object) $row;
3387
+ $row_cache[ $key ] = $row;
3388
 
3389
  return $ret;
3390
  }
3396
  if ( $tag !== 'W' && $tag !== 'B' ) {
3397
  $ret = false;
3398
  }
3399
+ //elseif ( cerber_db_get_var( 'SELECT ip FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "' . $tag . '" LIMIT 1' ) ) {
3400
+ elseif ( $row = cerber_db_get_row( 'SELECT * FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "' . $tag . '" LIMIT 1' ) ) {
3401
  $ret = true;
3402
  }
3403
  else {
3405
  }
3406
 
3407
  $cache[ $key ] = $ret;
3408
+ $row_cache[ $key ] = $row;
3409
  return $ret;
3410
  }
3411
  else {
3412
  // We use two queries because of possible overlapping an IP and its network
3413
+ //if ( $ret = cerber_db_get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "W" LIMIT 1' ) ) {
3414
+ if ( $row = cerber_db_get_row( 'SELECT * FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "W" LIMIT 1', MYSQL_FETCH_OBJECT ) ) {
3415
+ $cache[ $key ] = $row->tag;
3416
+ $row_cache[ $key ] = $row;
3417
+ return $row->tag;
3418
  }
3419
+ //if ( $ret = cerber_db_get_var( 'SELECT tag FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "B" LIMIT 1' ) ) {
3420
+ if ( $row = cerber_db_get_row( 'SELECT * FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 0 AND ip_long_begin <= ' . $long . ' AND ' . $long . ' <= ip_long_end AND tag = "B" LIMIT 1', MYSQL_FETCH_OBJECT ) ) {
3421
+ $cache[ $key ] = $row->tag;
3422
+ $row_cache[ $key ] = $row;
3423
+ return $row->tag;
3424
  }
3425
 
3426
  $cache[ $key ] = false;
3427
+ $row_cache[ $key ] = false;
3428
  return false;
3429
  }
3430
  }
3435
  * @param string $ip
3436
  * @param string $tag
3437
  * @param int $acl_slice
3438
+ * @param object|null $row @since 8.6.7
3439
  *
3440
  * @return bool|null|string
3441
  */
3442
+ function cerber_ipv6_acl_check( $ip, $tag = '', $acl_slice = 0, &$row = null ) {
3443
 
3444
  if ( ! $ip ) {
3445
  $ip = cerber_get_remote_ip();
3454
  return false;
3455
  }
3456
 
3457
+ $results = array();
3458
+
3459
+ if ( empty( $row ) ) {
3460
+ if ( ! $list = cerber_db_get_col( 'SELECT v6range FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 1 AND ip_long_begin <= ' . $d0 . ' AND ' . $d0 . ' <= ip_long_end AND tag = "' . $tag . '"' ) ) {
3461
+ return false;
3462
+ }
3463
+ }
3464
+ else {
3465
+ if ( ! $results = cerber_db_get_results( 'SELECT v6range,comments FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 1 AND ip_long_begin <= ' . $d0 . ' AND ' . $d0 . ' <= ip_long_end AND tag = "' . $tag . '"' ) ) {
3466
+ return false;
3467
+ }
3468
+ $list = array_column( $results, 'v6range' );
3469
  }
3470
 
3471
+ if ( ! crb_ipv6_is_in_range_list( $d1, $d2, $list, $key ) ) {
3472
  return false;
3473
  }
3474
 
3475
+ $row = crb_array_get( $results, $key );
3476
+
3477
  return true;
3478
  }
3479
  else {
3480
+ if ( ! $results = cerber_db_get_results( 'SELECT v6range,tag,comments FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = ' . $acl_slice . ' AND ver6 = 1 AND ip_long_begin <= ' . $d0 . ' AND ' . $d0 . ' <= ip_long_end' ) ) {
3481
  return false;
3482
  }
3483
 
3484
+ if ( $tag = crb_ipv6_get_tag( $d1, $d2, $results, $key ) ) {
3485
+ $row = crb_array_get( $results, $key );
3486
+ }
3487
+
3488
+ return $tag;
3489
  }
3490
  }
3491
 
3510
  * @param int $d1
3511
  * @param int $d2
3512
  * @param array $list
3513
+ * @param int $key
3514
  *
3515
  * @return bool
3516
  */
3517
+ function crb_ipv6_is_in_range_list( $d1, $d2, &$list, &$key = null ) {
3518
 
3519
+ foreach ( $list as $key => $v6range ) {
3520
  list( $begin1, $begin2, $end1, $end2 ) = explode( '#', $v6range, 4 );
3521
  if ( crb_compare_numbers( $d1, $d2, $begin1, $begin2 )
3522
  && crb_compare_numbers( $end1, $end2, $d1, $d2 ) ) {
3533
  * @param $d1
3534
  * @param $d2
3535
  * @param $v6rows
3536
+ * @param int $key
3537
  *
3538
  * @return bool|string false if IP is not in any list, 'B' if is in the black, 'W' if is in the white
3539
  */
3540
+ function crb_ipv6_get_tag( $d1, $d2, &$v6rows, &$key = null ) {
3541
  $black = false;
3542
 
3543
+ foreach ( $v6rows as $key => $row ) {
3544
  if ( $black && ( $row['tag'] == 'B' ) ) {
3545
  continue;
3546
  }
3709
  $begin = ip2long( $begin_ip );
3710
  $end = ip2long( $end_ip );
3711
 
3712
+ if ( $begin > $end ) {
3713
  return false;
3714
  }
3715
 
3802
  if ( ! is_numeric( $mask ) ) {
3803
  return false;
3804
  }
 
 
3805
 
3806
+ if ( $mask == 32 ) {
3807
+ $begin_ip = $net;
3808
+ $end_ip = $net;
3809
+ }
3810
+ else {
3811
+ $begin_ip = long2ip( ( ip2long( $net ) ) & ( ( - 1 << ( 32 - (int) $mask ) ) ) );
3812
+ $end_ip = long2ip( ( ip2long( $net ) ) + pow( 2, ( 32 - (int) $mask ) ) - 1 );
3813
+ }
3814
+
3815
+ return cerber_parse_ip_range( $begin_ip . ' - ' . $end_ip );
3816
  }
3817
 
3818
  /**
4294
  $body .= 'https://wpcerber.com/cloudflare-and-wordpress-cerber/' . "\n\n";
4295
  $body .= 'Be in touch with the developer.' . "\n\n";
4296
  $body .= 'Follow Cerber on Twitter: https://twitter.com/wpcerber' . "\n\n";
4297
+ $body .= "Subscribe to Cerber's newsletter: https://wpcerber.com/subscribe-newsletter/" . "\n\n";
4298
  break;
4299
  case 'newlurl':
4300
  $subj .= __( 'New Custom login URL', 'wp-cerber' );
4354
  $footer .= "\n\n" . __( 'Your license is valid until', 'wp-cerber' ) . ' ' . $date;
4355
  }
4356
 
4357
+ $footer .= "\n\n\n" . __( 'This message was sent by', 'wp-cerber' ) . ' WP Cerber Security ' . ( lab_lab() ? 'PRO ' : '' ) . CERBER_VER . "\n";
4358
  $footer .= 'https://wpcerber.com';
4359
 
4360
  if ( $html_mode ) {
4724
  }
4725
 
4726
  if ( ! wp_next_scheduled( 'cerber_daily' ) ) {
4727
+ if ( ! $when = strtotime( 'midnight' ) + 24 * 3600 ) {
4728
+ $when = $next_hour;
4729
+ }
4730
+ wp_schedule_event( $when + 2 * 3600 + 1200, 'daily', 'cerber_daily' );
4731
  }
4732
 
4733
  define( 'CRB_DOING_BG_TASK', 1 );
5316
 
5317
  crb_x_update_add_on_list();
5318
 
5319
+ //$slave = ( nexus_is_master() || nexus_is_slave() ) ? '' : ' <i class="crb-icon crb-icon-bx-cog"></i> <a href="' . cerber_admin_link( '', array( 'page' => 'cerber-nexus' ) ) . '">' . __( 'Enable slave mode', 'wp-cerber' ) . '</a>';
5320
 
5321
  $msg =
5322
  '<h2>' . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . '</h2>'
5421
  cerber_push_the_news();
5422
  cerber_delete_expired_set( true );
5423
  CRB_Cache::reset();
5424
+ if ( wp_next_scheduled( 'cerber_hourly' ) ) {
5425
+ wp_clear_scheduled_hook( 'cerber_hourly' ); // not in use since v. 5.8.
5426
+ }
5427
 
5428
  lab_get_key( true );
5429
  $cerber_doing_upgrade = false;
6026
  } );
6027
 
6028
  function cerber_error_shield( $mode = 1 ) {
6029
+ global $cerber_act_status, $cerber_blocked;
6030
 
6031
  require_once( ABSPATH . WPINC . '/pluggable.php' ); // @since 8.5 for is_user_logged_in()
6032
 
6087
  $c = cerber_db_get_var( 'SELECT COUNT(ip) FROM ' . CERBER_QMEM_TABLE . ' WHERE ip = "' . $ip . '" AND stamp > ' . $t );
6088
  if ( $c >= $limit ) {
6089
  cerber_soft_block_add( $ip, 711 );
6090
+ $cerber_act_status = 18;
6091
  }
6092
  }
6093
 
6229
  if ( ! empty( $_FILES ) ) {
6230
  $fields[3] = $_FILES;
6231
  }
6232
+
6233
  if ( ! empty( $fields ) ) {
6234
  $fields = serialize( $fields );
6235
  }
6236
  else {
6237
  $fields = '';
6238
  }
6239
+
6240
  }
6241
 
6242
  // Extra request details
6290
  if ( crb_get_settings( 'tiphperr' ) ) {
6291
  if ( $cerber_php_errors && is_array( $cerber_php_errors ) ) {
6292
  //$err_not = array( E_NOTICE, E_WARNING );
6293
+ foreach ( $cerber_php_errors as $key => $err ) {
6294
+ if ( $err[0] == E_WARNING ) {
6295
+ if ( $err[3] == 68
6296
+ && '/wp-includes/class-phpass.php' == substr( $err[2], - 29 )
6297
+ && strpos( $err[1], '/dev/urandom' ) ) {
6298
+ unset( $cerber_php_errors[ $key ] );
6299
+ }
 
 
 
6300
  }
6301
  }
6302
  if ( $cerber_php_errors ) {
6319
 
6320
  $uri = cerber_real_escape( $uri );
6321
  $details = cerber_real_escape( $details );
6322
+ $fields = ( $fields ) ? cerber_real_escape( $fields ) : '';
6323
  $php_err = ( $php_err ) ? cerber_real_escape( $php_err ) : '';
6324
+
6325
+ if ( ! $req_status = absint( $cerber_req_status ) ) {
6326
+ if ( crb_acl_is_white() ) {
6327
+ $req_status = 510;
6328
+ }
6329
+ }
6330
 
6331
  $query = 'INSERT INTO ' . CERBER_TRAF_TABLE . '
6332
  (ip, ip_long, uri, request_fields , request_details, session_id, user_id, stamp, processing, request_method, http_code, wp_id, wp_type, is_bot, blog_id, php_errors, req_status )
6495
  * @since 6.0
6496
  */
6497
  function cerber_mask_fields( $fields ) {
6498
+ $to_mask = array( 'pwd', 'pass', 'password', 'password_1', 'password_2', 'post_password', 'cerber-cloud-key' );
6499
  if ( $list = (array) crb_get_settings( 'timask' ) ) {
6500
  $to_mask = array_merge( $to_mask, $list );
6501
  }
6608
  * @since 6.0
6609
  */
6610
  function cerber_beast() {
6611
+ global $cerber_act_status, $cerber_req_status;
6612
 
6613
  if ( is_admin()
6614
  || cerber_is_wp_cron()
6669
  if ( $uri_script && $script_filename = cerber_script_filename() ) { // @since 8.6.3.4
6670
  // Scanning for executable scripts?
6671
  if ( ! cerber_script_exists( $uri ) && ! cerber_is_login_request() ) {
6672
+ $cerber_act_status = 19;
6673
  cerber_log( 55 );
6674
  if ( $ti_mode > 1 ) {
6675
  cerber_soft_block_add( null, 708 );
6680
  $deny = false;
6681
  if ( crb_acl_is_black() ) {
6682
  $deny = true;
6683
+ $cerber_act_status = 14;
6684
  }
6685
  //elseif ( ! in_array( $uri_script, cerber_get_wp_scripts() ) ) {
6686
  elseif ( ! CRB_Request::is_script( cerber_get_wp_scripts() ) ) {
6687
  if ( ! cerber_is_ip_allowed() ) {
6688
  $deny = true;
6689
+ $cerber_act_status = 13;
6690
  }
6691
  elseif ( lab_is_blocked( null, true ) ) {
6692
  $deny = true;
6693
+ $cerber_act_status = 15;
6694
  }
6695
  }
6696
  if ( $deny ) {
6745
  * @return bool|int
6746
  */
6747
  function cerber_inspect_array( &$array, $white = array() ) {
6748
+ global $cerber_act_status;
6749
  static $rec_limit = null;
6750
 
6751
  if ( ! $array ) {
6759
  $rec_limit --;
6760
  if ( $rec_limit <= 0 ) {
6761
  $rec_limit = null;
6762
+ $cerber_act_status = 20;
6763
 
6764
  return 100;
6765
  }
6786
  }
6787
 
6788
  function cerber_inspect_value( &$value = '', $reset = false ) {
6789
+ global $cerber_act_status, $crb_x64;
6790
  static $rec_limit = null; // Real recursion limit
6791
 
6792
  if ( ! $value || is_numeric( $value ) ) {
6804
  $rec_limit --;
6805
  if ( $rec_limit <= 0 ) {
6806
  $rec_limit = null;
6807
+ $cerber_act_status = 21;
6808
 
6809
  return 100;
6810
  }
6818
  else {
6819
  $parsed = cerber_detect_php_code( $value );
6820
  if ( ! empty( $parsed[0] ) ) {
6821
+ $cerber_act_status = 22;
6822
  $found = 100;
6823
  }
6824
  elseif ( ! empty( $parsed[1] ) ) {
6830
  }
6831
  }
6832
  if ( ! $found && cerber_detect_other_code( $value ) ) {
6833
+ $cerber_act_status = 23;
6834
  $found = 100;
6835
  }
6836
  if ( ! $found && cerber_detect_js_code( $value ) ) {
6837
+ $cerber_act_status = 24;
6838
  $found = 100;
6839
  }
6840
  }
7192
  if ( ! defined( 'CRB_JUST_MARRIED' )
7193
  && ( ( ! $ac = cerber_get_set( '_activated' ) ) || ( crb_array_get( $ac, 'time' ) < ( time() - 30 * DAY_IN_SECONDS ) ) )
7194
  && ! lab_lab() ) {
7195
+ $text .= ' <h2 style="margin-top: 28px;">Cerber needs your support to keep moving forward</h2>
7196
  <p style="margin-top: 20px;">
7197
  By sharing your unique opinion on WP Cerber, you will help the engineers behind the plugin make greater progress and help other professionals find the right software. You can leave your review on one of the following websites. No needs to use English. Feel free to use your native language. Thanks!
7198
  </p>
7200
 
7201
  <p><a href="https://www.trustpilot.com/review/wpcerber.com" target="_blank">Trustpilot</a> &nbsp;/&nbsp;
7202
  <a href="https://www.g2crowd.com/products/cerber-security-antispam-malware-scan/" target="_blank">G2.COM</a> &nbsp;/&nbsp;
7203
+ <!-- <a href="https://reviews.capterra.com/new/187653" target="_blank">Capterra</a></p> -->
7204
 
7205
  <!--<p><a href="https://www.trustpilot.com/review/wpcerber.com" target="_blank">Trustpilot</a></p>
7206
  <p><a href="https://www.g2crowd.com/products/cerber-security-antispam-malware-scan/" target="_blank">G2.COM</a></p>
cerber-request.php CHANGED
@@ -53,7 +53,9 @@ final class CRB_Request {
53
  return;
54
  }
55
 
56
- $site_url = cerber_get_site_url(); // Including the path to WP files and stuff
 
 
57
  $p1 = strpos( $site_url, '//' );
58
  $p2 = strpos( $site_url, '/', $p1 + 2 );
59
  if ( $p2 !== false ) {
@@ -63,7 +65,7 @@ final class CRB_Request {
63
  else {
64
  self::$site_root = $site_url;
65
  self::$sub_folder = '';
66
- }
67
 
68
  }
69
 
53
  return;
54
  }
55
 
56
+ list( self::$site_root, self::$sub_folder ) = crb_parse_site_url();
57
+
58
+ /*$site_url = cerber_get_site_url(); // Including the path to WP files and stuff
59
  $p1 = strpos( $site_url, '//' );
60
  $p2 = strpos( $site_url, '/', $p1 + 2 );
61
  if ( $p2 !== false ) {
65
  else {
66
  self::$site_root = $site_url;
67
  self::$sub_folder = '';
68
+ }*/
69
 
70
  }
71
 
cerber-scanner.php CHANGED
@@ -31,56 +31,56 @@
31
 
32
  */
33
 
34
- define( 'CERBER_PK_WP', 'wordpress' );
35
- define( 'CERBER_PK_PLUGIN', 'plugin' );
36
- define( 'CERBER_PK_THEME', 'theme' );
37
-
38
- define( 'CERBER_FT_WP', 1 );
39
- define( 'CERBER_FT_PLUGIN', 2 );
40
- define( 'CERBER_FT_THEME', 3 );
41
- define( 'CERBER_FT_ROOT', 4 );
42
- define( 'CERBER_FT_UPLOAD', 5 );
43
- define( 'CERBER_FT_LNG', 6 );
44
- define( 'CERBER_FT_MUP', 7 );
45
- define( 'CERBER_FT_CNT', 8 );
46
- define( 'CERBER_FT_CONF', 10 );
47
- define( 'CERBER_FT_DRIN', 11 );
48
- define( 'CERBER_FT_OTHER', 12 );
49
-
50
- define( 'CERBER_MAX_SECONDS', 5 );
51
- define( 'CERBER_MAX_SECONDS_CLOUD', 25 );
52
-
53
- define( 'CERBER_FOK', 1 );
54
- define( 'CERBER_VULN', 4 );
55
- define( 'CERBER_NOHASH', 5 );
56
- define( 'CERBER_IMD', 15 );
57
- define( 'CERBER_SCF', 16 );
58
- define( 'CERBER_PMC', 17 );
59
- define( 'CERBER_USF', 18 );
60
- define( 'CERBER_EXC', 20 );
61
- define( 'CERBER_DIR', 26 );
62
- define( 'CERBER_UXT', 30 );
63
- define( 'CERBER_MOD', 50 );
64
- define( 'CERBER_NEW', 51 );
65
-
66
- define( 'CERBER_FDUN', 300 );
67
- define( 'CERBER_FDLD', 301 );
68
- define( 'CERBER_FRCV', 311 );
69
-
70
- define( 'CERBER_MALWR_DETECTED', 1000 );
71
-
72
- define( 'CRB_HASH_THEME', 'hash_tm_' );
73
- define( 'CRB_HASH_PLUGIN', 'hash_pl_' );
74
- define( 'CRB_LAST_FILE', 'tmp_last_file' );
75
-
76
- define( 'CRB_SCAN_GO', '__CERBER__SECURITY_SCAN_GO__' );
77
- define( 'CRB_SCAN_STOP', '__CERBER__SECURITY_SCAN_STOP__' );
78
- define( 'CRB_SCAN_DTB', '__CERBER__SECURITY_SCAN_DATA_B' );
79
- define( 'CRB_SCAN_DTE', '__CERBER__SECURITY_SCAN_DATA_E' );
80
-
81
- define( 'CRB_SCAN_RCV_DIR', 'recovery' );
82
-
83
- define( 'CRB_SQL_CHUNK', 10000 ); // @since 8.6.4 Split queries into chunks to reduce memory consumption
84
 
85
  add_action( 'plugins_loaded', function () {
86
 
@@ -193,7 +193,7 @@ function cerber_scanner( $control, $mode ) {
193
  if ( crb_get_settings( 'scan_debug' ) ) {
194
  register_shutdown_function( function () {
195
  if ( http_response_code() != 200 ) {
196
- crb_scan_debug( 'ERROR: Unexpected software errors detected. Check the server error log.' );
197
  if ( $err = error_get_last() ) {
198
  crb_scan_debug( print_r( $err, 1 ) );
199
  }
@@ -4498,7 +4498,6 @@ function cerber_quarantine_file( $file_name, $scan_id, $move = true ) {
4498
  fwrite( $f, 'Information for restoring files.' . PHP_EOL
4499
  . 'Deletion date | Deleted file => Original file to copy to restore.' . PHP_EOL
4500
  . '-----------------------------------------------------------------'
4501
- //. PHP_EOL . `` );
4502
  . PHP_EOL );
4503
  }
4504
  else {
31
 
32
  */
33
 
34
+ const CERBER_PK_WP = 'wordpress';
35
+ const CERBER_PK_PLUGIN = 'plugin';
36
+ const CERBER_PK_THEME = 'theme';
37
+
38
+ const CERBER_FT_WP = 1;
39
+ const CERBER_FT_PLUGIN = 2;
40
+ const CERBER_FT_THEME = 3;
41
+ const CERBER_FT_ROOT = 4;
42
+ const CERBER_FT_UPLOAD = 5;
43
+ const CERBER_FT_LNG = 6;
44
+ const CERBER_FT_MUP = 7;
45
+ const CERBER_FT_CNT = 8;
46
+ const CERBER_FT_CONF = 10;
47
+ const CERBER_FT_DRIN = 11;
48
+ const CERBER_FT_OTHER = 12;
49
+
50
+ const CERBER_MAX_SECONDS = 5;
51
+ const CERBER_MAX_SECONDS_CLOUD = 25;
52
+
53
+ const CERBER_FOK = 1;
54
+ const CERBER_VULN = 4;
55
+ const CERBER_NOHASH = 5;
56
+ const CERBER_IMD = 15;
57
+ const CERBER_SCF = 16;
58
+ const CERBER_PMC = 17;
59
+ const CERBER_USF = 18;
60
+ const CERBER_EXC = 20;
61
+ const CERBER_DIR = 26;
62
+ const CERBER_UXT = 30;
63
+ const CERBER_MOD = 50;
64
+ const CERBER_NEW = 51;
65
+
66
+ const CERBER_FDUN = 300;
67
+ const CERBER_FDLD = 301;
68
+ const CERBER_FRCV = 311;
69
+
70
+ const CERBER_MALWR_DETECTED = 1000;
71
+
72
+ const CRB_HASH_THEME = 'hash_tm_';
73
+ const CRB_HASH_PLUGIN = 'hash_pl_';
74
+ const CRB_LAST_FILE = 'tmp_last_file';
75
+
76
+ const CRB_SCAN_GO = '__CERBER__SECURITY_SCAN_GO__';
77
+ const CRB_SCAN_STOP = '__CERBER__SECURITY_SCAN_STOP__';
78
+ const CRB_SCAN_DTB = '__CERBER__SECURITY_SCAN_DATA_B';
79
+ const CRB_SCAN_DTE = '__CERBER__SECURITY_SCAN_DATA_E';
80
+
81
+ const CRB_SCAN_RCV_DIR = 'recovery';
82
+
83
+ const CRB_SQL_CHUNK = 10000; // @since 8.6.4 Split queries into chunks to reduce memory consumption
84
 
85
  add_action( 'plugins_loaded', function () {
86
 
193
  if ( crb_get_settings( 'scan_debug' ) ) {
194
  register_shutdown_function( function () {
195
  if ( http_response_code() != 200 ) {
196
+ crb_scan_debug( 'ERROR: Unexpected software errors detected. Check the web server error log.' );
197
  if ( $err = error_get_last() ) {
198
  crb_scan_debug( print_r( $err, 1 ) );
199
  }
4498
  fwrite( $f, 'Information for restoring files.' . PHP_EOL
4499
  . 'Deletion date | Deleted file => Original file to copy to restore.' . PHP_EOL
4500
  . '-----------------------------------------------------------------'
 
4501
  . PHP_EOL );
4502
  }
4503
  else {
cerber-tools.php CHANGED
@@ -294,7 +294,7 @@ function cerber_show_diag(){
294
  crb_show_diag_section( 'Server Environment Variables', cerber_make_plain_table( $se ) );
295
 
296
  $buttons = '<p style="text-align: right;">
297
- <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'clear_up_the_cache' => 1 ) ), 'control', 'cerber_nonce' ) . '">Clear Up Cache</a>
298
  <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_check_nodes' => 1 ) ), 'control', 'cerber_nonce' ) . '">Recheck Status</a>
299
  </p>';
300
  crb_show_diag_section( 'Cerber Security Cloud Status', lab_status() . $buttons );
@@ -370,9 +370,9 @@ function cerber_show_lic() {
370
  <table class="form-table">
371
  <tbody>
372
  <tr>
373
- <th scope="row">License key for the PRO version</th>
374
  <td>
375
- <input name="cerber_license" value="<?php echo $lic; ?>" size="<?php echo LAB_KEY_LENGTH; ?>" maxlength="<?php echo LAB_KEY_LENGTH; ?>" type="text" class="crb-monospace" placeholder="Enter the license key here">
376
  <?php echo $valid; ?>
377
  </td>
378
  </tr>
@@ -402,7 +402,7 @@ function cerber_show_wp_diag(){
402
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
403
 
404
  if ( $c = CRB_Cache::checker() ) {
405
- $c = 'Yes | ' . cerber_date( $c ) . ' | ' . cerber_ago_time( $c );
406
 
407
  if ( $stat = CRB_Cache::get_stat( true ) ) {
408
  $c .= ' | Cerber\'s entries: ' . count( $stat[1] );
294
  crb_show_diag_section( 'Server Environment Variables', cerber_make_plain_table( $se ) );
295
 
296
  $buttons = '<p style="text-align: right;">
297
+ <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'clear_up_the_cache' => 1 ) ), 'control', 'cerber_nonce' ) . '">Clear Cache</a>
298
  <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_check_nodes' => 1 ) ), 'control', 'cerber_nonce' ) . '">Recheck Status</a>
299
  </p>';
300
  crb_show_diag_section( 'Cerber Security Cloud Status', lab_status() . $buttons );
370
  <table class="form-table">
371
  <tbody>
372
  <tr>
373
+ <th scope="row">License key</th>
374
  <td>
375
+ <input name="cerber_license" value="<?php echo $lic; ?>" size="<?php echo LAB_KEY_LENGTH; ?>" maxlength="<?php echo LAB_KEY_LENGTH; ?>" type="text" class="crb-monospace" placeholder="Enter your license key here">
376
  <?php echo $valid; ?>
377
  </td>
378
  </tr>
402
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
403
 
404
  if ( $c = CRB_Cache::checker() ) {
405
+ $c = 'Yes | ' . cerber_date( $c ) . ' (' . cerber_ago_time( $c ) . ') ';
406
 
407
  if ( $stat = CRB_Cache::get_stat( true ) ) {
408
  $c .= ' | Cerber\'s entries: ' . count( $stat[1] );
cerber-users.php CHANGED
@@ -688,7 +688,7 @@ function crb_admin_get_user_cell( $user_id = null, $base_url = '', $text = '', $
688
  foreach ( $user_data['roles'] as $role ) {
689
  $r[] = $wp_roles[ $role ]['name'];
690
  }
691
- $roles = '<span class="act-role">' . implode( ', ', $r ) . '</span>';
692
  }
693
 
694
  $lbl = ( $label ) ? '<span class="crb-us-lbl">' . $label . '</span>' : '';
@@ -972,7 +972,7 @@ class CRB_Sessions_Table extends WP_List_Table {
972
  //'ses_role' => __( 'Role', 'wp-cerber' ),
973
  'ses_started' => __( 'Created', 'wp-cerber' ),
974
  'ses_expires' => __( 'Expires', 'wp-cerber' ),
975
- 'ses_ip' => '<div class="act-icon"></div>' . __( 'IP Address', 'wp-cerber' ),
976
  'ses_host' => __( 'Host Info', 'wp-cerber' ),
977
  'ses_action' => __( 'Action', 'wp-cerber' ),
978
  );
688
  foreach ( $user_data['roles'] as $role ) {
689
  $r[] = $wp_roles[ $role ]['name'];
690
  }
691
+ $roles = '<span class="crb_act_role">' . implode( ', ', $r ) . '</span>';
692
  }
693
 
694
  $lbl = ( $label ) ? '<span class="crb-us-lbl">' . $label . '</span>' : '';
972
  //'ses_role' => __( 'Role', 'wp-cerber' ),
973
  'ses_started' => __( 'Created', 'wp-cerber' ),
974
  'ses_expires' => __( 'Expires', 'wp-cerber' ),
975
+ 'ses_ip' => '<div class="crb_act_icon"></div>' . __( 'IP Address', 'wp-cerber' ),
976
  'ses_host' => __( 'Host Info', 'wp-cerber' ),
977
  'ses_action' => __( 'Action', 'wp-cerber' ),
978
  );
changelog.txt CHANGED
@@ -1,3 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  = 8.6.6 =
2
  * New: On the user sessions page, you can now search sessions by a user name, email, and the IP address from which a user has logged in.
3
  * New: You can specify locations (URL Paths) to exclude requests from logging. They can be either exact matches or regular expressions (REGEX).
1
+ = 8.6.7 =
2
+ * New: In the professional version of WP Cerber, you can now permit user registrations for IP addresses in the White IP Access List only.
3
+ * New: All URLs in the logs are displayed in a shortened form without the website’s domain. There is no much value having see known things.
4
+ * New: A new label "IP Whitelisted" with green borders has been introduced. It is displayed in a log row on the Live Traffic if the IP address was in White IP Access List, but the appropriate setting “Use White IP Access List” was not enabled at the moment when the event was logged.
5
+ * New: If you now hover the mouse over a red square icon in the Activity or Live Traffic log, you see the reason why the IP address in the row is currently locked out.
6
+ * New: If you now hover the mouse over a green or black square Access List icon in the Activity or Live Traffic log, you see the comment you’ve previously specified for that Access List entry.
7
+ * Improved: All non-REGEX entries [in the list of prohibited usernames (logins)](https://wpcerber.com/using-list-of-prohibited-logins-to-catch-stupid-bots/) are case-insensitive now. This applies to standard Latin-based (ASCII) WordPress usernames only.
8
+ * Improved: The name of a group in the Group column on [Cerber.Hub’s](https://wpcerber.com/manage-multiple-websites/) website list is a link that takes you to the list of websites in the group.
9
+ * Improved: The launch time of the daily maintenance tasks is now set to the night-time at 02:20. If you need them to get rescheduled, you can manually delete the “cerber_daily” cron task via a plugin or deactivate/activate WP Cerber.
10
+ * Fixed: Configured [REST API restrictions](https://wpcerber.com/restrict-access-to-wordpress-rest-api/) have no effect if a WordPress is installed not in the root folder of a website (there is a path in the site URL). Affected versions: 8.6.1 and newer.
11
+ * Fixed: A bug in the logging subsystem: depending on server configuration, submitted form fields are not saved into the DB (if it is enabled in the logging settings).
12
+ * Fixed: A bug with Cerber’s admin CSS styles that were added in the previous version and hid the top pagination links on the "All posts" and "All posts" admin pages.
13
+
14
  = 8.6.6 =
15
  * New: On the user sessions page, you can now search sessions by a user name, email, and the IP address from which a user has logged in.
16
  * New: You can specify locations (URL Paths) to exclude requests from logging. They can be either exact matches or regular expressions (REGEX).
common.php CHANGED
@@ -35,12 +35,11 @@ if ( ! defined( 'WPINC' ) ) {
35
  define( 'WPINC', 'wp-includes' );
36
  }
37
 
38
- define( 'MYSQL_FETCH_OBJECT', 5 );
39
- define( 'MYSQL_FETCH_OBJECT_K', 6 );
40
- define( 'CRB_IP_NET_RANGE', '/[^a-f\d\-\.\:\*\/]+/i' );
41
- define( 'CRB_SANITIZE_ID', '[a-z\d\_\-\.\:\*\/]+' );
42
- define( 'CRB_SANITIZE_KEY', '/[^a-z_\-\d.:\/]/i' );
43
-
44
 
45
  /**
46
  * Known WP scripts
@@ -223,6 +222,35 @@ function cerber_get_login_url(){
223
  return $ret;
224
  }
225
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  /**
227
  * Always includes the path to the current WP installation
228
  *
@@ -425,8 +453,7 @@ function cerber_check_environment(){
425
  }
426
 
427
  if ( ! in_array( 'mbstring', $ex_list ) || ! function_exists( 'mb_convert_encoding' ) ) {
428
- cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' A PHP extension <b>mbstring</b> is not enabled on this website. Some plugin features will not work properly.
429
- You need to enable the PHP mbstring extension (multibyte string support) in your hosting control panel.' );
430
  }
431
 
432
  if ( cerber_get_mode() != crb_get_settings( 'boot-mode' ) ) {
@@ -486,8 +513,6 @@ function cerber_get_remote_ip() {
486
  return $remote_ip;
487
  }
488
 
489
- //$options = crb_get_settings();
490
-
491
  if ( defined( 'CERBER_IP_KEY' ) ) {
492
  $remote_ip = filter_var( $_SERVER[ CERBER_IP_KEY ], FILTER_VALIDATE_IP );
493
  }
@@ -823,22 +848,24 @@ function cerber_is_rest_url(){
823
  return true;
824
  }
825
 
826
- if ( isset( $ret ) ) {
827
- return $ret;
828
- }
829
-
830
  if ( ! $wp_rewrite ) { // see get_rest_url() in the multisite mode
831
  return false;
832
  }
833
 
834
- $ret = false;
 
 
835
 
836
- // @since 8.1
837
 
838
  $path = CRB_Request::get_request_path();
 
 
 
839
 
840
- if ( 0 === strpos( $path, '/' . rest_get_url_prefix() . '/' ) ) {
841
- if ( 0 === strpos( cerber_get_home_url() . $path , crb_get_rest_url() ) ) {
 
842
  $ret = true;
843
  }
844
  }
@@ -1081,6 +1108,10 @@ function cerber_is_rest_permitted() {
1081
  * @return bool
1082
  */
1083
  function cerber_user_has_role( $roles = array(), $user_id = null ) {
 
 
 
 
1084
  if ( ! $user_id ) {
1085
  $user = wp_get_current_user();
1086
  }
@@ -1136,8 +1167,9 @@ function crb_get_rest_path() {
1136
  }
1137
  elseif ( cerber_is_permalink_enabled() ) {
1138
  $path = CRB_Request::get_request_path();
 
1139
  $pos = strlen( crb_get_rest_url() );
1140
- $ret = substr( cerber_get_home_url() . $path, $pos ); // @since 8.1
1141
  $ret = trim( $ret, '/' );
1142
  }
1143
 
@@ -1366,6 +1398,7 @@ function cerber_get_labels( $type = 'activity' ) {
1366
 
1367
  $act[70] = __( 'Request to REST API denied', 'wp-cerber' );
1368
  $act[71] = __( 'XML-RPC request denied', 'wp-cerber' );
 
1369
  $act[72] = __( 'User creation denied', 'wp-cerber' );
1370
  $act[73] = __( 'User row update denied', 'wp-cerber' );
1371
  $act[74] = __( 'Role update denied', 'wp-cerber' );
@@ -1414,6 +1447,7 @@ function cerber_get_labels( $type = 'activity' ) {
1414
  $sts[34] = 'Unauthorized access denied';
1415
  $sts[35] = __( 'Invalid user', 'wp-cerber' );
1416
  $sts[36] = __( 'Incorrect password', 'wp-cerber' );
 
1417
 
1418
  // @since 8.6.4
1419
  $sts[500] = __( 'IP whitelisted', 'wp-cerber' );
@@ -1421,6 +1455,11 @@ function cerber_get_labels( $type = 'activity' ) {
1421
  $sts[502] = 'Query whitelisted';
1422
  $sts[503] = 'Namespace whitelisted';
1423
 
 
 
 
 
 
1424
  cerber_cache_set( 'labels', $labels );
1425
  }
1426
 
@@ -1840,132 +1879,6 @@ function cerber_check_for_newer() {
1840
  return $ret;
1841
  }
1842
 
1843
- /**
1844
- * Detects known browsers/crawlers and platform in User Agent string
1845
- *
1846
- * @param $ua
1847
- *
1848
- * @return string Sanitized browser name and platform on success
1849
- * @since 6.0
1850
- */
1851
- function cerber_detect_browser( $ua ) {
1852
- $ua = trim( $ua );
1853
-
1854
- if ( empty( $ua ) ) {
1855
- return __( 'Not specified', 'wp-cerber' );
1856
- }
1857
-
1858
- if ( preg_match( '/\(compatible\;(.+)\)/i', $ua, $matches ) ) {
1859
- $bot_info = explode( ';', $matches[1] );
1860
- foreach ( $bot_info as $item ) {
1861
- if ( stripos( $item, 'bot' )
1862
- || stripos( $item, 'crawler' )
1863
- || stripos( $item, 'spider' )
1864
- || stripos( $item, 'Yandex' )
1865
- || stripos( $item, 'Yahoo! Slurp' )
1866
- ) {
1867
- if ( strpos( $ua, 'Android' ) ) {
1868
- $item .= ' Mobile';
1869
- }
1870
- return htmlentities( $item );
1871
- }
1872
- }
1873
- }
1874
- elseif ( strpos( $ua, 'google.com' ) ) {
1875
- // Various Google bots
1876
-
1877
- $ret = '';
1878
-
1879
- if ( false !== strpos( $ua, 'Googlebot' ) ) {
1880
- if ( strpos( $ua, 'Android' ) ) {
1881
- $ret = 'Googlebot Mobile';
1882
- }
1883
- elseif ( false !== strpos( $ua, 'Mozilla' ) ) {
1884
- $ret = 'Googlebot Desktop';
1885
- }
1886
- }
1887
- elseif ( preg_match( '/AdsBot-Google-Mobile|AdsBot-Google|APIs-Google/', $ua, $matches ) ) {
1888
- $ret = $matches[0];
1889
- }
1890
-
1891
- if ( $ret ) {
1892
- return htmlentities( $ret );
1893
- }
1894
- else {
1895
- return __( 'Unknown', 'wp-cerber' );
1896
- }
1897
- }
1898
- elseif ( 0 === strpos( $ua, 'Googlebot' ) ) {
1899
- if ( preg_match( '/Googlebot-\w+/', $ua, $matches ) ) {
1900
- return $matches[0];
1901
- }
1902
- }
1903
- elseif ( 0 === strpos( $ua, 'WordPress/' ) ) {
1904
- list( $ret ) = explode( ';', $ua, 2 );
1905
- return htmlentities( $ret );
1906
- }
1907
- elseif ( 0 === strpos( $ua, 'PayPal IPN' ) ) {
1908
- return 'PayPal Payment Notification';
1909
- }
1910
- elseif (0 === strpos( $ua, 'Wget/' )){
1911
- return htmlentities( $ua );
1912
- }
1913
- elseif (0 === strpos( $ua, 'Mediapartners-Google' )){
1914
- return 'AdSense Crawler';
1915
- }
1916
-
1917
-
1918
- $browsers = array(
1919
- 'Firefox' => 'Firefox',
1920
- 'OPR' => 'Opera',
1921
- 'Opera' => 'Opera',
1922
- 'YaBrowser' => 'Yandex Browser',
1923
- 'Trident' => 'Internet Explorer',
1924
- 'IE' => 'Internet Explorer',
1925
- 'Edge' => 'Microsoft Edge',
1926
- 'Chrome' => 'Chrome',
1927
- 'Safari' => 'Safari',
1928
- 'Lynx' => 'Lynx',
1929
- );
1930
-
1931
- $systems = array( 'Android' , 'Linux', 'Windows', 'iPhone', 'iPad', 'Macintosh', 'OpenBSD', 'Unix' );
1932
-
1933
- $b = '';
1934
- foreach ( $browsers as $browser_id => $browser ) {
1935
- if ( false !== strpos( $ua, $browser_id ) ) {
1936
- $b = $browser;
1937
- break;
1938
- }
1939
- }
1940
-
1941
- $s = '';
1942
- foreach ( $systems as $system ) {
1943
- if ( false !== strpos( $ua, $system ) ) {
1944
- $s = $system;
1945
- break;
1946
- }
1947
- }
1948
-
1949
- if ($b == 'Lynx' && !$s) {
1950
- $s = 'Linux';
1951
- }
1952
-
1953
- if ( $b && $s ) {
1954
- $ret = $b . ' on ' . $s;
1955
- }
1956
- elseif ( 0 === strpos( $ua, 'python-requests' ) ) {
1957
- $ret = 'Python Script';
1958
- }
1959
- elseif ( 0 === strpos( $ua, 'ApacheBench' ) ) {
1960
- $ret = $ua;
1961
- }
1962
- else {
1963
- $ret = __( 'Unknown', 'wp-cerber' );
1964
- }
1965
-
1966
- return htmlentities( $ret );
1967
- }
1968
-
1969
  /**
1970
  * Is user agent string indicates bot (crawler)
1971
  *
@@ -2114,6 +2027,12 @@ function cerber_db_get_results( $query, $type = MYSQLI_ASSOC ) {
2114
  return $ret;
2115
  }
2116
 
 
 
 
 
 
 
2117
  function cerber_db_get_row( $query, $type = MYSQLI_ASSOC ) {
2118
 
2119
  if ( ! $result = cerber_db_query( $query ) ) {
@@ -2132,6 +2051,11 @@ function cerber_db_get_row( $query, $type = MYSQLI_ASSOC ) {
2132
  return $ret;
2133
  }
2134
 
 
 
 
 
 
2135
  function cerber_db_get_col( $query ) {
2136
 
2137
  if ( ! $result = cerber_db_query( $query ) ) {
@@ -3424,6 +3348,10 @@ final class CRB_Cache {
3424
  wp_cache_set( self::$wp_key_list, $entries, self::$wp_key_list );
3425
  }
3426
 
 
 
 
 
3427
  return array( self::$stat, $entries );
3428
  }
3429
 
35
  define( 'WPINC', 'wp-includes' );
36
  }
37
 
38
+ const MYSQL_FETCH_OBJECT = 5;
39
+ const MYSQL_FETCH_OBJECT_K = 6;
40
+ const CRB_IP_NET_RANGE = '/[^a-f\d\-\.\:\*\/]+/i';
41
+ const CRB_SANITIZE_ID = '[a-z\d\_\-\.\:\*\/]+';
42
+ const CRB_SANITIZE_KEY = '/[^a-z_\-\d.:\/]/i';
 
43
 
44
  /**
45
  * Known WP scripts
222
  return $ret;
223
  }
224
 
225
+ /**
226
+ * @since 8.6.6.1
227
+ *
228
+ * @return array
229
+ */
230
+ function crb_parse_site_url() {
231
+ static $result;
232
+
233
+ if ( isset( $result ) ) {
234
+ return $result;
235
+ }
236
+
237
+ $site_url = cerber_get_site_url();
238
+ $p1 = strpos( $site_url, '//' );
239
+ $p2 = strpos( $site_url, '/', $p1 + 2 );
240
+ if ( $p2 !== false ) {
241
+ $site_root = substr( $site_url, 0, $p2 );
242
+ $sub_folder = substr( $site_url, $p2 );
243
+ }
244
+ else {
245
+ $site_root = $site_url;
246
+ $sub_folder = '';
247
+ }
248
+
249
+ $result = array( $site_root, $sub_folder );
250
+
251
+ return $result;
252
+ }
253
+
254
  /**
255
  * Always includes the path to the current WP installation
256
  *
453
  }
454
 
455
  if ( ! in_array( 'mbstring', $ex_list ) || ! function_exists( 'mb_convert_encoding' ) ) {
456
+ cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' Required PHP extension <b>mbstring</b> is not enabled on this website. Some plugin features do work properly. Please enable the PHP mbstring extension (multibyte string support) in your hosting control panel.' );
 
457
  }
458
 
459
  if ( cerber_get_mode() != crb_get_settings( 'boot-mode' ) ) {
513
  return $remote_ip;
514
  }
515
 
 
 
516
  if ( defined( 'CERBER_IP_KEY' ) ) {
517
  $remote_ip = filter_var( $_SERVER[ CERBER_IP_KEY ], FILTER_VALIDATE_IP );
518
  }
848
  return true;
849
  }
850
 
 
 
 
 
851
  if ( ! $wp_rewrite ) { // see get_rest_url() in the multisite mode
852
  return false;
853
  }
854
 
855
+ if ( isset( $ret ) ) {
856
+ return $ret;
857
+ }
858
 
859
+ $ret = false;
860
 
861
  $path = CRB_Request::get_request_path();
862
+ list( $root, $dir ) = crb_parse_site_url();
863
+ $rest_prefix = $dir . '/' . rest_get_url_prefix() . '/';
864
+ $rp_len = strlen( $rest_prefix );
865
 
866
+ if ( 0 === strpos( substr( $path, 0, $rp_len ), $rest_prefix ) ) {
867
+ $ru_len = strlen( crb_get_rest_url() );
868
+ if ( 0 === strpos( substr( $root . $path, 0, $ru_len ), crb_get_rest_url() ) ) {
869
  $ret = true;
870
  }
871
  }
1108
  * @return bool
1109
  */
1110
  function cerber_user_has_role( $roles = array(), $user_id = null ) {
1111
+ if ( ! $roles ) {
1112
+ return false;
1113
+ }
1114
+
1115
  if ( ! $user_id ) {
1116
  $user = wp_get_current_user();
1117
  }
1167
  }
1168
  elseif ( cerber_is_permalink_enabled() ) {
1169
  $path = CRB_Request::get_request_path();
1170
+ list( $root, $dir ) = crb_parse_site_url();
1171
  $pos = strlen( crb_get_rest_url() );
1172
+ $ret = substr( $root . $path, $pos ); // @since 8.1
1173
  $ret = trim( $ret, '/' );
1174
  }
1175
 
1398
 
1399
  $act[70] = __( 'Request to REST API denied', 'wp-cerber' );
1400
  $act[71] = __( 'XML-RPC request denied', 'wp-cerber' );
1401
+
1402
  $act[72] = __( 'User creation denied', 'wp-cerber' );
1403
  $act[73] = __( 'User row update denied', 'wp-cerber' );
1404
  $act[74] = __( 'Role update denied', 'wp-cerber' );
1447
  $sts[34] = 'Unauthorized access denied';
1448
  $sts[35] = __( 'Invalid user', 'wp-cerber' );
1449
  $sts[36] = __( 'Incorrect password', 'wp-cerber' );
1450
+ $sts[37] = __( 'IP address is not allowed', 'wp-cerber' );
1451
 
1452
  // @since 8.6.4
1453
  $sts[500] = __( 'IP whitelisted', 'wp-cerber' );
1455
  $sts[502] = 'Query whitelisted';
1456
  $sts[503] = 'Namespace whitelisted';
1457
 
1458
+ // IP is in the whitelist, but "use whitelist" setting is not enabled
1459
+ $sts[510] = $sts[500]; // TI
1460
+ $sts[511] = $sts[500]; // DS
1461
+ $sts[512] = $sts[500]; // DS
1462
+
1463
  cerber_cache_set( 'labels', $labels );
1464
  }
1465
 
1879
  return $ret;
1880
  }
1881
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1882
  /**
1883
  * Is user agent string indicates bot (crawler)
1884
  *
2027
  return $ret;
2028
  }
2029
 
2030
+ /**
2031
+ * @param string $query
2032
+ * @param int $type
2033
+ *
2034
+ * @return bool|array|object
2035
+ */
2036
  function cerber_db_get_row( $query, $type = MYSQLI_ASSOC ) {
2037
 
2038
  if ( ! $result = cerber_db_query( $query ) ) {
2051
  return $ret;
2052
  }
2053
 
2054
+ /**
2055
+ * @param string $query
2056
+ *
2057
+ * @return array
2058
+ */
2059
  function cerber_db_get_col( $query ) {
2060
 
2061
  if ( ! $result = cerber_db_query( $query ) ) {
3348
  wp_cache_set( self::$wp_key_list, $entries, self::$wp_key_list );
3349
  }
3350
 
3351
+ if ( empty( $entries ) ) {
3352
+ $entries = array();
3353
+ }
3354
+
3355
  return array( self::$stat, $entries );
3356
  }
3357
 
dashboard.php CHANGED
@@ -31,11 +31,12 @@
31
  */
32
 
33
 
34
- if ( ! defined( 'WPINC' ) ) { exit; }
 
 
35
 
36
  require_once( dirname( __FILE__ ) . '/cerber-tools.php' );
37
 
38
-
39
  if ( ! is_multisite() ) {
40
  add_action( 'admin_menu', 'cerber_admin_menu' );
41
  }
@@ -1019,47 +1020,59 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1019
  $info .= $tmp;
1020
  }
1021
 
1022
- $user_cache = array();
1023
-
1024
- //if ( $rows = $wpdb->get_results( $query ) ) {
1025
  if ( $rows = cerber_db_get_results( $query, MYSQL_FETCH_OBJECT ) ) {
1026
 
1027
- $total = cerber_db_get_var( "SELECT FOUND_ROWS()" );
1028
- $tbody = '';
1029
- $roles = wp_roles()->roles;
1030
  $country = '';
1031
- $geo = lab_lab();
 
 
 
 
 
 
 
 
 
 
 
1032
 
1033
  foreach ( $rows as $row ) {
1034
 
1035
  $ip_id = cerber_get_id_ip( $row->ip );
1036
 
1037
- $activity = '<span class="crb-activity actv' . $row->activity . '">' . $labels[ $row->activity ] . '</span>';
1038
- /*
1039
- if ($row->activity == 50 ) {
1040
- $activity .= ' <b>'.htmlspecialchars($row->user_login).'</b>';
1041
- }*/
1042
 
1043
  if ( empty( $args['no_details'] ) && $row->details ) {
1044
  $details = explode( '|', $row->details );
 
1045
  if ( ! empty( $details[0] ) && isset( $status_labels[ $details[0] ] ) ) {
1046
- $activity .= ' <span class = "crb-log-status crb-status-' . $details[0] . '">' . $status_labels[ $details[0] ] . '</span>';
1047
  }
1048
- //elseif ($row->activity == 50 && $details[4]) $activity .= ' '.$details[4];
1049
 
1050
- if ( isset( $details[4] ) && ( $row->activity < 10 || $row->activity > 12 ) ) {
1051
- $activity .= '<p class="act-url">URL: ' . str_replace( array( '-', '/' ), array(
 
 
 
 
 
 
 
 
 
1052
  '<wbr>-',
1053
  '<wbr>/'
1054
- ), $details[4] ) . '</p>';
1055
  }
1056
 
1057
  }
 
1058
  $activity = '<div class="crb' . $row->activity . '">' . $activity . '</div>';
1059
 
1060
  $name = crb_admin_get_user_cell( $row->user_id, $base_url );
1061
 
1062
- //$ip = '<a href="' . $base_url . '&amp;filter_ip=' . $row->ip . '">' . $row->ip . '</a>';
1063
  $username = '<a href="' . $base_url . '&amp;filter_login=' . urlencode( $row->user_login ) . '">' . $row->user_login . '</a>';
1064
 
1065
  $ip_info = cerber_get_ip_info( $row->ip, true );
@@ -1070,24 +1083,6 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1070
  $hostname = '<img data-ip-id="' . $ip_id . '" class="crb-no-hostname" src="' . $crb_ajax_loader . '" />' . "\n";
1071
  }
1072
 
1073
- /*$tip = '';
1074
-
1075
- $acl = cerber_acl_check( $row->ip );
1076
- if ( $acl == 'W' ) {
1077
- $tip = __( 'White IP Access List', 'wp-cerber' );
1078
- }
1079
- elseif ( $acl == 'B' ) {
1080
- $tip = __( 'Black IP Access List', 'wp-cerber' );
1081
- }
1082
-
1083
- if ( cerber_block_check( $row->ip ) ) {
1084
- $block = ' color-blocked ';
1085
- $tip .= ' ' . __( 'Locked out', 'wp-cerber' );
1086
- }
1087
- else {
1088
- $block = '';
1089
- }*/
1090
-
1091
  if ( ! empty( $args['date'] ) && $args['date'] == 'ago' ) {
1092
  $date = cerber_ago_time( $row->stamp );
1093
  }
@@ -1099,12 +1094,11 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1099
  $country = '</td><td>' . crb_country_html( $row->country, $row->ip );
1100
  }
1101
 
1102
- //$tbody .= '<tr class="acrow' . $row->activity . '"><td><div class="css-table"><div><span class="act-icon ip-acl' . $acl . ' ' . $block . '" title="' . $tip . '"></span></div><div>' . $ip . '</div></div></td><td>' . $hostname . $country . '</td><td>' . $date . '</td><td class="acinfo">' . $activity . '</td><td>' . $name . '</td><td>' . $username . '</td></tr>';
1103
  $tbody .= '<tr class="acrow' . $row->activity . '"><td>' . crb_admin_ip_cell( $row->ip, $base_url . '&amp;filter_ip=' . $row->ip ) . '</td><td>' . $hostname . $country . '</td><td>' . $date . '</td><td class="acinfo">' . $activity . '</td><td>' . $name . '</td><td>' . $username . '</td></tr>';
1104
  }
1105
 
1106
  $heading = array(
1107
- '<div class="act-icon"></div>' . __( 'IP Address', 'wp-cerber' ),
1108
  __( 'Hostname', 'wp-cerber' ),
1109
  __( 'Country', 'wp-cerber' ),
1110
  __( 'Date', 'wp-cerber' ),
@@ -1132,7 +1126,7 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1132
  cerber_admin_link_add( array(
1133
  'cerber_admin_do' => 'export',
1134
  'type' => 'activity',
1135
- ), true ) . '"><i class="crb-icon crb-icon-bxs-down-arrow-circle"></i> ' . __( 'Export', 'wp-cerber' ) . '</a>';
1136
  //) ) . '"><span class="dashicons dashicons-download" style="vertical-align: middle;"></span> ' . __( 'Export', 'wp-cerber' ) . '</a>';
1137
  }
1138
  }
@@ -1337,19 +1331,26 @@ function crb_admin_ip_cell( $ip, $ip_link = '', $text = '' ) {
1337
  return $cache[ $ip ];
1338
  }
1339
 
 
 
 
1340
  $tip = '';
1341
 
1342
- $acl = cerber_acl_check( $ip );
1343
- if ( $acl == 'W' ) {
1344
- $tip = __( 'White IP Access List', 'wp-cerber' );
1345
  }
1346
- elseif ( $acl == 'B' ) {
1347
- $tip = __( 'Black IP Access List', 'wp-cerber' );
 
 
 
 
 
1348
  }
1349
 
1350
- if ( cerber_block_check( $ip ) ) {
1351
- $block = ' color-blocked ';
1352
- $tip .= ' ' . __( 'Locked out', 'wp-cerber' );
1353
  }
1354
  else {
1355
  $block = '';
@@ -1359,8 +1360,8 @@ function crb_admin_ip_cell( $ip, $ip_link = '', $text = '' ) {
1359
  $ip = '<a href="' . $ip_link . '">' . $ip . '</a>';
1360
  }
1361
 
1362
- $cache[ $ip ] = '<div class="css-table"><div><span class="act-icon ip-acl' . $acl . ' ' . $block . '" title="' . $tip . '"></span></div><div>' . $ip . $text . '</div></div>';
1363
- //$cache[ $ip ] = '<div class="css-table"><div style="display: table-row"><div style="display: table-cell"><span class="act-icon ip-acl' . $acl . ' ' . $block . '" title="' . $tip . '"></span></div><div style="display: table-cell;">' . $ip . $text . '</div></div></div>';
1364
 
1365
  return $cache[ $ip ];
1366
  }
@@ -1383,17 +1384,20 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1383
  $ip_navs .= ' <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $ip ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a>';
1384
  }
1385
 
1386
- $acl = cerber_acl_check( $ip );
 
 
 
1387
 
1388
  if ( $acl == 'W' ) {
1389
- $ip_navs .= ' <span class="crb-color-green ip-info-label">' . __( 'White IP Access List', 'wp-cerber' ) . '</span> ';
1390
  }
1391
  elseif ( $acl == 'B' ) {
1392
- $ip_navs .= ' <span class="crb-color-black ip-info-label">' . __( 'Black IP Access List', 'wp-cerber' ) . '</span> ';
1393
  }
1394
 
1395
- if ( cerber_block_check( $ip ) ) {
1396
- $ip_navs .= ' <span class="color-blocked ip-info-label">' . __( 'Locked out', 'wp-cerber' ) . '</span> ';
1397
  }
1398
 
1399
  // Filter activity by ...
@@ -1441,20 +1445,21 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1441
  if ( ! cerber_is_myip( $ip ) && ! cerber_acl_check( $ip ) ) {
1442
 
1443
  if ( $network ) {
1444
- $net_button = '<button type="submit" value="' . $network . '" name="add_acl" class="button button-primary cerber-button">';
1445
  }
1446
  else {
1447
  $net_button = '<button disabled="disabled" class="button button-secondary cerber-button">';
1448
  }
1449
- $net_button .= '<span class="dashicons-before dashicons-networking"></span> ' . __( 'Add network to the Black List', 'wp-cerber' ) . '</button> ';
1450
 
1451
- $form = '<form id="add-acl-black" action="" method="post">
 
 
1452
  <input type="hidden" name="cerber_admin_do" value="add2acl">
1453
  <input type="hidden" name="add_acl_comment" value="">
1454
  <input type="hidden" name="acl_tag" value="B">
1455
- <button type="submit" value="' . $ip . '" name="add_acl" class="button button-primary cerber-button"><span class="dashicons-before dashicons-desktop"></span> ' . __( 'Add IP to the Black List', 'wp-cerber' ) . '</button> ' .
1456
- $net_button .
1457
- cerber_nonce_field( 'control' ) .
1458
  '</form>';
1459
  }
1460
 
@@ -1486,7 +1491,7 @@ function cerber_user_extra_view( $user_id, $context = 'activity' ) {
1486
  foreach ( $u->roles as $role ) {
1487
  $roles[] = $wp_roles->roles[ $role ]['name'];
1488
  }
1489
- $roles = '<span class="act-role">' . implode( ', ', $roles ) . '</span>';
1490
  }
1491
  else {
1492
  $roles = '';
@@ -2570,11 +2575,11 @@ function crb_admin_alert_link() {
2570
 
2571
  if ( $mode == 'on' ) {
2572
  $text = __( 'Create Alert', 'wp-cerber' );
2573
- $icon = 'crb-icon-bxs-bell';
2574
  }
2575
  else {
2576
  $text = __( 'Delete Alert', 'wp-cerber' );
2577
- $icon = 'crb-icon-bxs-bell-off';
2578
  }
2579
 
2580
 
@@ -2792,27 +2797,6 @@ function cerber_admin_head() {
2792
  crb_ajax_nonce = '<?php echo $crb_ajax_nonce; ?>';
2793
  crb_ajax_loader = '<?php echo $crb_ajax_loader; ?>';
2794
  crb_lab_available = <?php echo $crb_lab_available; ?>;
2795
-
2796
- crb_admin_page = '<?php echo crb_admin_get_page(); ?>';
2797
- crb_admin_tab = '<?php echo crb_admin_get_tab(); ?>';
2798
-
2799
- crb_scan_msg_steps = <?php echo json_encode( cerber_step_desc() ); ?>;
2800
- crb_scan_msg_issues = <?php echo json_encode( cerber_get_issue_label() ); ?>;
2801
- crb_scan_msg_risks = <?php echo json_encode( cerber_get_risk_label() ); ?>;
2802
- crb_scan_msg_misc = <?php echo json_encode( array(
2803
- 'delete_file' => array(
2804
- __( 'Are you sure you want to delete selected files?', 'wp-cerber' ),
2805
- __( 'These files have been moved to the quarantine', 'wp-cerber' )
2806
- ),
2807
- 'ignore_add_file' => array(
2808
- __( 'Do you want to add selected files to the ignore list?', 'wp-cerber' ),
2809
- __( 'These files have been added to the ignore list', 'wp-cerber' ),
2810
- ),
2811
- 'file_error' => __( 'Some errors occurred', 'wp-cerber' ),
2812
- 'all_ok' => __( 'All files have been processed', 'wp-cerber' ),
2813
- ) );
2814
- ?>;
2815
-
2816
  </script>
2817
 
2818
  <?php
@@ -2830,20 +2814,46 @@ function cerber_admin_head() {
2830
  }
2831
 
2832
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2833
  <style type="text/css" media="all">
2834
  /* Thickbox styles */
2835
  #TB_title {
2836
  background-color: #0085ba !important;
2837
- color:#fff;
2838
  }
 
2839
  .tb-close-icon {
2840
- color:#fff !important;
2841
  }
 
2842
  #TB_window {
2843
  font-family: 'Roboto', sans-serif;
2844
  }
2845
 
2846
- /* Hide alien's crappy messages */
2847
  .update-nag,
2848
  #update-nag,
2849
  #setting-error-tgmpa,
@@ -3693,7 +3703,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3693
  foreach ( $u->roles as $role ) {
3694
  $r[] = $roles[ $role ]['name'];
3695
  }
3696
- $r = '<span class="act-role">' . implode( ', ', $r ) . '</span>';
3697
  }
3698
  }
3699
  else {
@@ -3738,24 +3748,43 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3738
 
3739
  $tbody = '';
3740
  $country = '';
3741
- $geo = lab_lab();
 
 
 
 
 
 
 
 
 
 
3742
 
3743
  foreach ($rows as $row) {
3744
 
3745
  // URI
3746
 
3747
- $full_uri = urldecode( $row->uri );
3748
- $full_uri = htmlentities( $full_uri );
3749
- $row_uri = $full_uri;
3750
- $truncated = false;
3751
- if ( strlen( $full_uri ) > 220 ) {
 
 
 
 
 
3752
  $truncated = true;
3753
- $row_uri = substr( $full_uri, 0, 220 );
 
 
 
3754
  }
 
 
3755
  $row_uri = str_replace( array( '-', '/', '%', '&', '=', '?', '(', ')', ),
3756
  array( '<wbr>-', '<wbr>/', '<wbr>%', '<wbr>&', '<wbr>=', '<wbr>?', '<wbr>(', ')<wbr>' ), $row_uri );
3757
- $full_uri = str_replace( array( '-', '/', '%', '&', '=', '?', '(', ')', ),
3758
- array( '<wbr>-', '<wbr>/', '<wbr>%', '<wbr>&', '<wbr>=', '<wbr>?', '<wbr>(', ')<wbr>' ), $full_uri );
3759
  if ( $truncated ) {
3760
  $row_uri .= ' <span style="color: red;">&hellip;</span>';
3761
  }
@@ -3771,8 +3800,6 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3771
  $name = '';
3772
  }
3773
 
3774
- $ip = '<a href="' . $base_url . '&filter_ip=' . $row->ip . '">' . $row->ip . '</a>';
3775
-
3776
  if ( ! empty( $row->hostname ) ) {
3777
  $hostname = $row->hostname;
3778
  }
@@ -3786,23 +3813,6 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3786
  }
3787
  }
3788
 
3789
- $tip='';
3790
-
3791
- if ( $acl[ $row->ip ] == 'W' ) {
3792
- $tip = __( 'White IP Access List', 'wp-cerber' );
3793
- }
3794
- elseif ( $acl[ $row->ip ] == 'B' ) {
3795
- $tip = __( 'Black IP Access List', 'wp-cerber' );
3796
- }
3797
-
3798
- if ( $block[ $row->ip ] ) {
3799
- $color = ' color-blocked ';
3800
- $tip .= ' ' . __( 'Locked out', 'wp-cerber' );
3801
- }
3802
- else {
3803
- $color = '';
3804
- }
3805
-
3806
  if ( ! empty( $args['date'] ) && $args['date'] == 'ago' ) {
3807
  $date = cerber_ago_time( $row->stamp );
3808
  }
@@ -3817,11 +3827,11 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3817
  $activity = '';
3818
  if ( ! empty( $events[ $row->session_id ] ) ) {
3819
  foreach ( $events[ $row->session_id ] as $a ) {
3820
- $activity .= '<p><a href="' . $base_url . '&filter_activity=' . $a->activity . '" data-no-js="1">' . $labels[ $a->activity ] . '</a>';
3821
 
3822
  $ad = explode( '|', $a->details );
3823
  if ( ! empty( $ad[0] ) && $ad[0] != 500 ) { // 500 Whitelisted
3824
- $activity .= ' &nbsp;<span class = "crb-log-status crb-status-' . $ad[0] . '">' . $status_labels[ $ad[0] ] . '</span>';
3825
  }
3826
  }
3827
  }
@@ -3849,6 +3859,9 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3849
  $more_details = array();
3850
 
3851
  if ( $truncated ) {
 
 
 
3852
  $more_details[] = array(
3853
  'Full URL',
3854
  '<span class="crb-monospace">' . $full_uri . '</span>'
@@ -3951,21 +3964,21 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3951
  $more_details[] = array( '', cerber_table_view( '$_SERVER', $details[7] ) );
3952
  }
3953
 
3954
- $php_err = '';
3955
  if ( ! empty( $row->php_errors ) ) {
3956
  $err_list = @unserialize( $row->php_errors );
3957
  if ( $err_list ) {
3958
- $err = array();
3959
- foreach ( $err_list as $e ) {
3960
- $err[] = array(
3961
- 'type' => cerber_get_err_type( $e[0] ) . ' (' . $e[0] . ')',
3962
- 'info' => $e[1],
3963
- 'file' => $e[2],
3964
- 'line' => $e[3]
3965
  );
3966
  }
3967
- $more_details[] = array( '', cerber_table_view( 'Software errors', $err ) );
3968
- $php_err = '<span class="crb-php-error">SE &nbsp;' . count( $err_list ) . '</span>';
3969
  }
3970
  }
3971
 
@@ -3991,7 +4004,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3991
  $toggle_class = 'crb-toggle';
3992
  }
3993
 
3994
- $request = '<b>' . $row_uri . '</b>' . '<p style="margin-top:1em;"><span class="crb-' . $row->request_method . '">' . $row->request_method . '</span>' . $f . $wp_type . '<span class="crb-' . $row->http_code . '"> HTTP ' . $row->http_code . ' ' . get_status_header_desc( $row->http_code ) . '</span>' . $req_status . $php_err . '<span>' . $processing . '</span> ' . $more_link . ' ' . $activity . ' </p>' . $wp_obj;
3995
 
3996
  // Decorating this table can't be done via simple CSS
3997
  if ( ! empty( $even ) ) {
@@ -4006,7 +4019,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4006
  $tbody .= '<tr class="' . $class . ' '.$toggle_class.'">
4007
  <td>' . $date . '</td>
4008
  <td class="crb-request">' . $request . '</td>
4009
- <td><div class="css-table"><div><span class="act-icon ip-acl' . $acl[ $row->ip ] . ' ' . $color . '" title="' . $tip . '"></span></div><div>' . $ip . '</div></div></td>
4010
  <td>' . $hostname . $country . '</td>
4011
  <td>' . cerber_detect_browser( $details[1] ) . '</td>
4012
  <td>' . $name . '</td></tr>';
@@ -4017,7 +4030,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4017
  $heading = array(
4018
  __( 'Date', 'wp-cerber' ),
4019
  __( 'Request', 'wp-cerber' ),
4020
- '<div class="act-icon"></div>' . __( 'IP Address', 'wp-cerber' ),
4021
  __( 'Host Info', 'wp-cerber' ),
4022
  __( 'User Agent', 'wp-cerber' ),
4023
  __( 'Local User', 'wp-cerber' ),
@@ -4083,7 +4096,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4083
  'cerber_admin_do' => 'export',
4084
  'type' => 'traffic',
4085
  ), true )
4086
- . '"><i class="crb-icon crb-icon-bxs-down-arrow-circle"></i> ' . __( 'Export', 'wp-cerber' ) . '</a>';
4087
 
4088
  $right_links = $search_button .' '. $export_button;
4089
 
@@ -4103,9 +4116,168 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4103
  $ret = '<p class="cerber-margin" style="padding: 0.5em; font-weight: bold;">Logging is currently disabled, you are viewing historical information.</p>' . $ret;
4104
  }
4105
 
4106
- if ($echo) echo $ret;
4107
- else return $ret;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4108
 
 
4109
  }
4110
 
4111
  /**
31
  */
32
 
33
 
34
+ if ( ! defined( 'WPINC' ) ) {
35
+ exit;
36
+ }
37
 
38
  require_once( dirname( __FILE__ ) . '/cerber-tools.php' );
39
 
 
40
  if ( ! is_multisite() ) {
41
  add_action( 'admin_menu', 'cerber_admin_menu' );
42
  }
1020
  $info .= $tmp;
1021
  }
1022
 
 
 
 
1023
  if ( $rows = cerber_db_get_results( $query, MYSQL_FETCH_OBJECT ) ) {
1024
 
1025
+ $total = cerber_db_get_var( "SELECT FOUND_ROWS()" );
1026
+ $tbody = '';
 
1027
  $country = '';
1028
+ $geo = lab_lab();
1029
+
1030
+ if ( ! defined( 'CERBER_FULL_URI' ) || ! CERBER_FULL_URI ) {
1031
+ $short = true;
1032
+ $site_url = cerber_get_site_url();
1033
+ $site_url = substr( $site_url, strpos( $site_url, '://' ) + 3 );
1034
+ $start = strlen( rtrim( $site_url, '/' ) );
1035
+ }
1036
+ else {
1037
+ $short = false;
1038
+ $start = 0;
1039
+ }
1040
 
1041
  foreach ( $rows as $row ) {
1042
 
1043
  $ip_id = cerber_get_id_ip( $row->ip );
1044
 
1045
+ $activity = '<span class="crb-activity actv' . $row->activity . '" title="' . $row->activity . '">' . $labels[ $row->activity ] . '</span>';
 
 
 
 
1046
 
1047
  if ( empty( $args['no_details'] ) && $row->details ) {
1048
  $details = explode( '|', $row->details );
1049
+
1050
  if ( ! empty( $details[0] ) && isset( $status_labels[ $details[0] ] ) ) {
1051
+ $activity .= ' <span class = "crb-log-status crb-status-' . $details[0] . '" title="' . $details[0] . '">' . $status_labels[ $details[0] ] . '</span>';
1052
  }
 
1053
 
1054
+ if ( ( $uri = crb_array_get( $details, 4 ) )
1055
+ && ( $row->activity < 10 || $row->activity > 12 ) ) {
1056
+
1057
+ if ( $short && 0 === strpos( $uri, $site_url ) ) {
1058
+ $ac_uri = substr( $uri, $start );
1059
+ }
1060
+ else {
1061
+ $ac_uri = $uri;
1062
+ }
1063
+
1064
+ $activity .= '<p class="crb_act_url" title="' . $uri . '">' . str_replace( array( '-', '/' ), array(
1065
  '<wbr>-',
1066
  '<wbr>/'
1067
+ ), $ac_uri ) . '</p>';
1068
  }
1069
 
1070
  }
1071
+
1072
  $activity = '<div class="crb' . $row->activity . '">' . $activity . '</div>';
1073
 
1074
  $name = crb_admin_get_user_cell( $row->user_id, $base_url );
1075
 
 
1076
  $username = '<a href="' . $base_url . '&amp;filter_login=' . urlencode( $row->user_login ) . '">' . $row->user_login . '</a>';
1077
 
1078
  $ip_info = cerber_get_ip_info( $row->ip, true );
1083
  $hostname = '<img data-ip-id="' . $ip_id . '" class="crb-no-hostname" src="' . $crb_ajax_loader . '" />' . "\n";
1084
  }
1085
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1086
  if ( ! empty( $args['date'] ) && $args['date'] == 'ago' ) {
1087
  $date = cerber_ago_time( $row->stamp );
1088
  }
1094
  $country = '</td><td>' . crb_country_html( $row->country, $row->ip );
1095
  }
1096
 
 
1097
  $tbody .= '<tr class="acrow' . $row->activity . '"><td>' . crb_admin_ip_cell( $row->ip, $base_url . '&amp;filter_ip=' . $row->ip ) . '</td><td>' . $hostname . $country . '</td><td>' . $date . '</td><td class="acinfo">' . $activity . '</td><td>' . $name . '</td><td>' . $username . '</td></tr>';
1098
  }
1099
 
1100
  $heading = array(
1101
+ '<div class="crb_act_icon"></div>' . __( 'IP Address', 'wp-cerber' ),
1102
  __( 'Hostname', 'wp-cerber' ),
1103
  __( 'Country', 'wp-cerber' ),
1104
  __( 'Date', 'wp-cerber' ),
1126
  cerber_admin_link_add( array(
1127
  'cerber_admin_do' => 'export',
1128
  'type' => 'activity',
1129
+ ), true ) . '"><i class="crb-icon crb-icon-bx-download"></i> ' . __( 'Export', 'wp-cerber' ) . '</a>';
1130
  //) ) . '"><span class="dashicons dashicons-download" style="vertical-align: middle;"></span> ' . __( 'Export', 'wp-cerber' ) . '</a>';
1131
  }
1132
  }
1331
  return $cache[ $ip ];
1332
  }
1333
 
1334
+ $row = true;
1335
+ $acl = cerber_acl_check( $ip, '', 0, $row );
1336
+
1337
  $tip = '';
1338
 
1339
+ if ( ! empty( $row->comments ) ) {
1340
+ $tip = $row->comments;
 
1341
  }
1342
+ else {
1343
+ if ( $acl == 'W' ) {
1344
+ $tip = __( 'White IP Access List', 'wp-cerber' );
1345
+ }
1346
+ elseif ( $acl == 'B' ) {
1347
+ $tip = __( 'Black IP Access List', 'wp-cerber' );
1348
+ }
1349
  }
1350
 
1351
+ if ( $b = cerber_block_check( $ip ) ) {
1352
+ $block = ' crb_color_blocked ';
1353
+ $tip = ( $tip ) ? ' / ' . $b->reason : $b->reason;
1354
  }
1355
  else {
1356
  $block = '';
1360
  $ip = '<a href="' . $ip_link . '">' . $ip . '</a>';
1361
  }
1362
 
1363
+ $tip = ( $tip ) ? htmlspecialchars( $tip ) : '';
1364
+ $cache[ $ip ] = '<div class="crb_css_table"><div><span class="crb_act_icon crb_ip_acl' . $acl . ' ' . $block . '" title="' . $tip . '"></span></div><div>' . $ip . $text . '</div></div>';
1365
 
1366
  return $cache[ $ip ];
1367
  }
1384
  $ip_navs .= ' <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $ip ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a>';
1385
  }
1386
 
1387
+ $row = true;
1388
+ $acl = cerber_acl_check( $ip, '', 0, $row );
1389
+
1390
+ $comments = ( ! empty( $row->comments ) ) ? $row->comments : '';
1391
 
1392
  if ( $acl == 'W' ) {
1393
+ $ip_navs .= ' <span class="crb_color_green crb_ip_info_label">' . __( 'White IP Access List', 'wp-cerber' ) . '</span> ' . $comments;
1394
  }
1395
  elseif ( $acl == 'B' ) {
1396
+ $ip_navs .= ' <span class="crb_color_black crb_ip_info_label">' . __( 'Black IP Access List', 'wp-cerber' ) . '</span> ' . $comments;
1397
  }
1398
 
1399
+ if ( $block = cerber_block_check( $ip ) ) {
1400
+ $ip_navs .= ' <span class="crb_color_blocked crb_ip_info_label">' . __( 'Locked out', 'wp-cerber' ) . '</span><span class="crb-log-status crb-status-' . $block->reason_id . '">' . $block->reason . '</span>';
1401
  }
1402
 
1403
  // Filter activity by ...
1445
  if ( ! cerber_is_myip( $ip ) && ! cerber_acl_check( $ip ) ) {
1446
 
1447
  if ( $network ) {
1448
+ $net_button = '<button type="submit" value="' . $network . '" name="add_acl" class="button button-secondary cerber-button">';
1449
  }
1450
  else {
1451
  $net_button = '<button disabled="disabled" class="button button-secondary cerber-button">';
1452
  }
 
1453
 
1454
+ $net_button .= __( 'Add network to the Black List', 'wp-cerber' ) . '</button> ';
1455
+
1456
+ $form = '<form id="add_acl_black" action="" method="post">
1457
  <input type="hidden" name="cerber_admin_do" value="add2acl">
1458
  <input type="hidden" name="add_acl_comment" value="">
1459
  <input type="hidden" name="acl_tag" value="B">
1460
+ <button type="submit" value="' . $ip . '" name="add_acl" class="button button-primary cerber-button">' . __( 'Add IP to the Black List', 'wp-cerber' ) . '</button>' .
1461
+ '<p>' . $net_button . '</p>' .
1462
+ cerber_nonce_field( 'control' ) .
1463
  '</form>';
1464
  }
1465
 
1491
  foreach ( $u->roles as $role ) {
1492
  $roles[] = $wp_roles->roles[ $role ]['name'];
1493
  }
1494
+ $roles = '<span class="crb_act_role">' . implode( ', ', $roles ) . '</span>';
1495
  }
1496
  else {
1497
  $roles = '';
2575
 
2576
  if ( $mode == 'on' ) {
2577
  $text = __( 'Create Alert', 'wp-cerber' );
2578
+ $icon = 'crb-icon-bx-bell';
2579
  }
2580
  else {
2581
  $text = __( 'Delete Alert', 'wp-cerber' );
2582
+ $icon = 'crb-icon-bx-bell-off';
2583
  }
2584
 
2585
 
2797
  crb_ajax_nonce = '<?php echo $crb_ajax_nonce; ?>';
2798
  crb_ajax_loader = '<?php echo $crb_ajax_loader; ?>';
2799
  crb_lab_available = <?php echo $crb_lab_available; ?>;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2800
  </script>
2801
 
2802
  <?php
2814
  }
2815
 
2816
  ?>
2817
+
2818
+ <script type="text/javascript">
2819
+ crb_admin_page = '<?php echo crb_admin_get_page(); ?>';
2820
+ crb_admin_tab = '<?php echo crb_admin_get_tab(); ?>';
2821
+ crb_user_locale = '<?php echo substr( get_user_locale(), 0, 6 ); ?>';
2822
+
2823
+ crb_scan_msg_steps = <?php echo json_encode( cerber_step_desc() ); ?>;
2824
+ crb_scan_msg_issues = <?php echo json_encode( cerber_get_issue_label() ); ?>;
2825
+ crb_scan_msg_risks = <?php echo json_encode( cerber_get_risk_label() ); ?>;
2826
+ crb_scan_msg_misc = <?php echo json_encode( array(
2827
+ 'delete_file' => array(
2828
+ __( 'Are you sure you want to delete selected files?', 'wp-cerber' ),
2829
+ __( 'These files have been moved to the quarantine', 'wp-cerber' )
2830
+ ),
2831
+ 'ignore_add_file' => array(
2832
+ __( 'Do you want to add selected files to the ignore list?', 'wp-cerber' ),
2833
+ __( 'These files have been added to the ignore list', 'wp-cerber' ),
2834
+ ),
2835
+ 'file_error' => __( 'Some errors occurred', 'wp-cerber' ),
2836
+ 'all_ok' => __( 'All files have been processed', 'wp-cerber' ),
2837
+ ) );
2838
+ ?>;
2839
+ </script>
2840
+
2841
  <style type="text/css" media="all">
2842
  /* Thickbox styles */
2843
  #TB_title {
2844
  background-color: #0085ba !important;
2845
+ color: #fff;
2846
  }
2847
+
2848
  .tb-close-icon {
2849
+ color: #fff !important;
2850
  }
2851
+
2852
  #TB_window {
2853
  font-family: 'Roboto', sans-serif;
2854
  }
2855
 
2856
+ /* Hide alien's messages on Cerber's admin pages */
2857
  .update-nag,
2858
  #update-nag,
2859
  #setting-error-tgmpa,
3703
  foreach ( $u->roles as $role ) {
3704
  $r[] = $roles[ $role ]['name'];
3705
  }
3706
+ $r = '<span class="crb_act_role">' . implode( ', ', $r ) . '</span>';
3707
  }
3708
  }
3709
  else {
3748
 
3749
  $tbody = '';
3750
  $country = '';
3751
+ $geo = lab_lab();
3752
+
3753
+ if ( ! defined( 'CERBER_FULL_URI' ) || ! CERBER_FULL_URI ) {
3754
+ $short = true;
3755
+ $site_url = cerber_get_site_url();
3756
+ $len = strlen( rtrim( $site_url, '/' ) );
3757
+ }
3758
+ else {
3759
+ $short = false;
3760
+ $len = 0;
3761
+ }
3762
 
3763
  foreach ($rows as $row) {
3764
 
3765
  // URI
3766
 
3767
+ $full_uri = urldecode( $row->uri );
3768
+
3769
+ if ( $short && 0 === strpos( $full_uri, $site_url ) ) {
3770
+ $row_uri = substr( $full_uri, $len );
3771
+ }
3772
+ else {
3773
+ $row_uri = $full_uri;
3774
+ }
3775
+
3776
+ if ( strlen( $row_uri ) > 220 ) {
3777
  $truncated = true;
3778
+ $row_uri = substr( $row_uri, 0, 220 );
3779
+ }
3780
+ else {
3781
+ $truncated = false;
3782
  }
3783
+
3784
+ $row_uri = htmlentities( $row_uri );
3785
  $row_uri = str_replace( array( '-', '/', '%', '&', '=', '?', '(', ')', ),
3786
  array( '<wbr>-', '<wbr>/', '<wbr>%', '<wbr>&', '<wbr>=', '<wbr>?', '<wbr>(', ')<wbr>' ), $row_uri );
3787
+
 
3788
  if ( $truncated ) {
3789
  $row_uri .= ' <span style="color: red;">&hellip;</span>';
3790
  }
3800
  $name = '';
3801
  }
3802
 
 
 
3803
  if ( ! empty( $row->hostname ) ) {
3804
  $hostname = $row->hostname;
3805
  }
3813
  }
3814
  }
3815
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3816
  if ( ! empty( $args['date'] ) && $args['date'] == 'ago' ) {
3817
  $date = cerber_ago_time( $row->stamp );
3818
  }
3827
  $activity = '';
3828
  if ( ! empty( $events[ $row->session_id ] ) ) {
3829
  foreach ( $events[ $row->session_id ] as $a ) {
3830
+ $activity .= '<p><a href="' . $base_url . '&filter_activity=' . $a->activity . '" title="' . $a->activity . '" data-no-js="1">' . $labels[ $a->activity ] . '</a>';
3831
 
3832
  $ad = explode( '|', $a->details );
3833
  if ( ! empty( $ad[0] ) && $ad[0] != 500 ) { // 500 Whitelisted
3834
+ $activity .= ' &nbsp;<span class = "crb-log-status crb-status-' . $ad[0] . '" title="' . $ad[0] . '">' . $status_labels[ $ad[0] ] . '</span>';
3835
  }
3836
  }
3837
  }
3859
  $more_details = array();
3860
 
3861
  if ( $truncated ) {
3862
+ $full_uri = htmlentities( $full_uri );
3863
+ $full_uri = str_replace( array( '-', '/', '%', '&', '=', '?', '(', ')', ),
3864
+ array( '<wbr>-', '<wbr>/', '<wbr>%', '<wbr>&', '<wbr>=', '<wbr>?', '<wbr>(', ')<wbr>' ), $full_uri );
3865
  $more_details[] = array(
3866
  'Full URL',
3867
  '<span class="crb-monospace">' . $full_uri . '</span>'
3964
  $more_details[] = array( '', cerber_table_view( '$_SERVER', $details[7] ) );
3965
  }
3966
 
3967
+ $php_errors = '';
3968
  if ( ! empty( $row->php_errors ) ) {
3969
  $err_list = @unserialize( $row->php_errors );
3970
  if ( $err_list ) {
3971
+ $errors = array();
3972
+ foreach ( $err_list as $err ) {
3973
+ $errors[] = array(
3974
+ 'type' => cerber_get_err_type( $err[0] ) . ' (' . $err[0] . ')',
3975
+ 'info' => $err[1],
3976
+ 'file' => $err[2],
3977
+ 'line' => $err[3]
3978
  );
3979
  }
3980
+ $more_details[] = array( '', cerber_table_view( 'Software errors', $errors ) );
3981
+ $php_errors = '<span class="crb-php-error">SE &nbsp;' . count( $err_list ) . '</span>';
3982
  }
3983
  }
3984
 
4004
  $toggle_class = 'crb-toggle';
4005
  }
4006
 
4007
+ $request = '<b>' . $row_uri . '</b>' . '<p style="margin-top:1em;"><span class="crb-' . $row->request_method . '">' . $row->request_method . '</span>' . $f . $wp_type . '<span class="crb-' . $row->http_code . '"> HTTP ' . $row->http_code . ' ' . get_status_header_desc( $row->http_code ) . '</span>' . $req_status . $php_errors . '<span>' . $processing . '</span> ' . $more_link . ' ' . $activity . ' </p>' . $wp_obj;
4008
 
4009
  // Decorating this table can't be done via simple CSS
4010
  if ( ! empty( $even ) ) {
4019
  $tbody .= '<tr class="' . $class . ' '.$toggle_class.'">
4020
  <td>' . $date . '</td>
4021
  <td class="crb-request">' . $request . '</td>
4022
+ <td>' . crb_admin_ip_cell( $row->ip, $base_url . '&amp;filter_ip=' . $row->ip ) . '</td>
4023
  <td>' . $hostname . $country . '</td>
4024
  <td>' . cerber_detect_browser( $details[1] ) . '</td>
4025
  <td>' . $name . '</td></tr>';
4030
  $heading = array(
4031
  __( 'Date', 'wp-cerber' ),
4032
  __( 'Request', 'wp-cerber' ),
4033
+ '<div class="crb_act_icon"></div>' . __( 'IP Address', 'wp-cerber' ),
4034
  __( 'Host Info', 'wp-cerber' ),
4035
  __( 'User Agent', 'wp-cerber' ),
4036
  __( 'Local User', 'wp-cerber' ),
4096
  'cerber_admin_do' => 'export',
4097
  'type' => 'traffic',
4098
  ), true )
4099
+ . '"><i class="crb-icon crb-icon-bx-download"></i> ' . __( 'Export', 'wp-cerber' ) . '</a>';
4100
 
4101
  $right_links = $search_button .' '. $export_button;
4102
 
4116
  $ret = '<p class="cerber-margin" style="padding: 0.5em; font-weight: bold;">Logging is currently disabled, you are viewing historical information.</p>' . $ret;
4117
  }
4118
 
4119
+ if ( $echo ) {
4120
+ echo $ret;
4121
+ }
4122
+ else {
4123
+ return $ret;
4124
+ }
4125
+
4126
+ }
4127
+
4128
+ /**
4129
+ * Detects known browsers/crawlers and platform in User Agent string
4130
+ *
4131
+ * @param $ua
4132
+ *
4133
+ * @return string Sanitized browser name and platform on success
4134
+ * @since 6.0
4135
+ */
4136
+ function cerber_detect_browser( $ua ) {
4137
+ $ua = trim( $ua );
4138
+
4139
+ if ( empty( $ua ) ) {
4140
+ return __( 'Not specified', 'wp-cerber' );
4141
+ }
4142
+
4143
+ if ( preg_match( '/\(compatible\;(.+)\)/i', $ua, $matches ) ) {
4144
+ $bot_info = explode( ';', $matches[1] );
4145
+ foreach ( $bot_info as $item ) {
4146
+ if ( stripos( $item, 'bot' )
4147
+ || stripos( $item, 'crawler' )
4148
+ || stripos( $item, 'spider' )
4149
+ || stripos( $item, 'Yandex' )
4150
+ || stripos( $item, 'Yahoo! Slurp' )
4151
+ ) {
4152
+ if ( strpos( $ua, 'Android' ) ) {
4153
+ $item .= ' Mobile';
4154
+ }
4155
+ return htmlentities( $item );
4156
+ }
4157
+ }
4158
+ if ( strpos( $ua, 'Google-Read-Aloud' ) ) {
4159
+ return 'Google Read Aloud';
4160
+ }
4161
+ }
4162
+ elseif ( strpos( $ua, 'google.com' ) || strpos( $ua, 'Google' ) ) {
4163
+ // Various Google bots
4164
+
4165
+ $ret = '';
4166
+
4167
+ if ( false !== strpos( $ua, 'Googlebot' ) ) {
4168
+ if ( strpos( $ua, 'Android' ) ) {
4169
+ $ret = 'Googlebot Mobile';
4170
+ }
4171
+ elseif ( false !== strpos( $ua, 'Mozilla' ) ) {
4172
+ $ret = 'Googlebot Desktop';
4173
+ }
4174
+ }
4175
+ elseif ( preg_match( '/AdsBot-Google-Mobile|AdsBot-Google|APIs-Google|FeedFetcher-Google/', $ua, $matches ) ) {
4176
+ $ret = $matches[0];
4177
+ }
4178
+ elseif ( 0 === strpos( $ua, 'Googlebot' ) ) {
4179
+ if ( preg_match( '/Googlebot-\w+/', $ua, $matches ) ) {
4180
+ $ret = $matches[0];
4181
+ }
4182
+ }
4183
+ elseif ( 0 === strpos( $ua, 'Mediapartners-Google' ) ) {
4184
+ return 'AdSense Crawler';
4185
+ }
4186
+ elseif ( 0 === strpos( $ua, 'AdsBot-Google-Mobile-Apps' ) ) {
4187
+ return 'Mobile Apps Android';
4188
+ }
4189
+ elseif ( strpos( $ua, 'DuplexWeb-Google' ) ) {
4190
+ return 'Duplex on the Web by Google';
4191
+ }
4192
+ elseif ( strpos( $ua, 'Google Favicon' ) ) {
4193
+ return 'Google Favicon';
4194
+ }
4195
+
4196
+ if ( $ret ) {
4197
+ return htmlentities( $ret );
4198
+ }
4199
+ else {
4200
+ return __( 'Unknown Google\'s bot', 'wp-cerber' );
4201
+ }
4202
+ }
4203
+ /*elseif ( 0 === strpos( $ua, 'Googlebot' ) ) {
4204
+ if ( preg_match( '/Googlebot-\w+/', $ua, $matches ) ) {
4205
+ return $matches[0];
4206
+ }
4207
+ }*/
4208
+ elseif ( 0 === strpos( $ua, 'WordPress/' ) ) {
4209
+ list( $ret ) = explode( ';', $ua, 2 );
4210
+ return htmlentities( $ret );
4211
+ }
4212
+ elseif ( 0 === strpos( $ua, 'PayPal IPN' ) ) {
4213
+ return 'PayPal Payment Notification';
4214
+ }
4215
+ elseif (0 === strpos( $ua, 'Wget/' )){
4216
+ return htmlentities( $ua );
4217
+ }
4218
+ elseif ( strpos( $ua, 'googleweblight' )){
4219
+ return 'Web Light by Google';
4220
+ }
4221
+
4222
+ $browsers = array(
4223
+ 'Firefox/' => 'Firefox',
4224
+ 'OPR/' => 'Opera',
4225
+ 'Opera/' => 'Opera',
4226
+ 'YaBrowser/' => 'Yandex Browser',
4227
+ 'Trident/' => 'Internet Explorer',
4228
+ 'IE/' => 'Internet Explorer',
4229
+ 'Edge/' => 'Microsoft Edge',
4230
+ 'Edg/' => 'Microsoft Edge',
4231
+ 'Chrome/' => 'Chrome',
4232
+ 'Safari/' => 'Safari',
4233
+ 'Lynx/' => 'Lynx',
4234
+ );
4235
+
4236
+ $systems = array( 'Android' , 'Linux', 'Windows', 'iPhone', 'iPad', 'Macintosh', 'OpenBSD', 'Unix' );
4237
+
4238
+ $browser = '';
4239
+ foreach ( $browsers as $browser_id => $browser_name ) {
4240
+ if ( false !== strpos( $ua, $browser_id ) ) {
4241
+ $browser = $browser_name;
4242
+ break;
4243
+ }
4244
+ }
4245
+
4246
+ $system = '';
4247
+ foreach ( $systems as $system_id ) {
4248
+ if ( false !== strpos( $ua, $system_id ) ) {
4249
+ $system = $system_id;
4250
+ break;
4251
+ }
4252
+ }
4253
+
4254
+ if ( $browser == 'Lynx' && ! $system ) {
4255
+ $system = 'Linux';
4256
+ }
4257
+ elseif ( $system == 'Macintosh' ) {
4258
+ $system = 'Mac';
4259
+ }
4260
+
4261
+ if ( $system == 'Android' ) {
4262
+ if ( preg_match( '/(Android\s+\d+);/', $ua, $matches ) ) {
4263
+ $system = $matches[1];
4264
+ }
4265
+ }
4266
+
4267
+ if ( $browser && $system ) {
4268
+ $ret = $browser . ' on ' . $system;
4269
+ }
4270
+ elseif ( 0 === strpos( $ua, 'python-requests' ) ) {
4271
+ $ret = 'Python Script';
4272
+ }
4273
+ elseif ( 0 === strpos( $ua, 'ApacheBench' ) ) {
4274
+ $ret = $ua;
4275
+ }
4276
+ else {
4277
+ $ret = __( 'Unknown', 'wp-cerber' );
4278
+ }
4279
 
4280
+ return htmlentities( $ret );
4281
  }
4282
 
4283
  /**
languages/wp-cerber-nl_NL.mo CHANGED
Binary file
languages/wp-cerber-nl_NL.po CHANGED
@@ -530,7 +530,7 @@ msgid "Disable REST API"
530
  msgstr "REST API uitschakelen"
531
 
532
  #: ../admin/cerber-settings.php:777 ../admin/cerber-settings.php:789 ..
533
- #: /admin/cerber-settings.php:949
534
  msgid "<strong>ERROR</strong>: please enter a valid email address."
535
  msgstr "<strong>LET OP</strong>: voer een geldig e-mailadres in."
536
 
@@ -564,19 +564,19 @@ msgid "Attention! Citadel mode is now active. Nobody is able to log in."
564
  msgstr "Let op! Citadelstand is actief; niemand kan inloggen."
565
 
566
  #: ../dashboard.php:433 ../dashboard.php:3700 ../whois.php:222 ../whois.php:253 ..
567
- #: /common.php:1489 ../common.php:1895 ../common.php:1963 ../nexus/cerber-slave-
568
  #: list.php:332
569
  msgid "Unknown"
570
  msgstr "Onbekend"
571
 
572
  #: ../common.php:339 ../common.php:417 ../common.php:422 ../common.php:428 ..
573
- #: /common.php:433 ../admin/cerber-settings.php:653 ../admin/cerber-settings.php:
574
  #: 673 ../admin/cerber-settings.php:753 ../admin/cerber-admin.php:858 ../cerber-
575
  #: load.php:649 ../cerber-load.php:661 ../cerber-load.php:668 ../cerber-load.php:
576
  #: 1008 ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1560 ..
577
- #: /cerber-load.php:1567 ../cerber-load.php:1574 ../cerber-load.php:1580 ..
578
- #: /cerber-load.php:1587 ../cerber-load.php:1752 ../cerber-load.php:1889 ..
579
- #: /nexus/cerber-nexus-slave.php:204 ../nexus/cerber-nexus-slave.php:215
580
  msgid "ERROR:"
581
  msgstr "FOUT:"
582
 
@@ -937,7 +937,7 @@ msgid "Lockouts occurred"
937
  msgstr "Uitsluitingen"
938
 
939
  #: ../cerber-load.php:1550 ../cerber-load.php:1556 ../cerber-load.php:1581 ..
940
- #: /cerber-load.php:1588
941
  msgid "You are not allowed to register."
942
  msgstr "Je mag niet aanmelden."
943
 
@@ -1532,7 +1532,7 @@ msgstr "Site-integriteit"
1532
 
1533
  #: ../dashboard.php:1790 ../dashboard.php:1792 ../cerber-users.php:20 ../cerber-
1534
  #: users.php:446 ../settings.php:721 ../settings.php:749 ../settings.php:873 ..
1535
- #: /settings.php:882 ../settings.php:1225 ../cerber-scanner.php:1493
1536
  msgid "Disabled"
1537
  msgstr "Uitgeschakeld"
1538
 
@@ -2558,7 +2558,7 @@ msgid "You are here:"
2558
  msgstr "Je bent hier:"
2559
 
2560
  #: ../nexus/cerber-nexus-master.php:1253 ../nexus/cerber-nexus.php:92 ..
2561
- #: /nexus/cerber-nexus.php:102
2562
  msgid "My Websites"
2563
  msgstr "Mijn Websites"
2564
 
@@ -3699,46 +3699,46 @@ msgstr "Mijn verzoeken"
3699
 
3700
  #: ../dashboard.php:3416
3701
  msgid "Log into the website"
3702
- msgstr ""
3703
 
3704
  #. Name of the plugin
3705
  #:
3706
  msgid "WP Cerber Security, Anti-spam & Malware Scan"
3707
- msgstr ""
3708
 
3709
  #: ../common.php:1363 ../common.php:1472
3710
  msgid "Probing for vulnerable code"
3711
- msgstr ""
3712
 
3713
  #: ../cerber-load.php:5268
3714
  msgid "Your IP address %s has been added to the White IP Access List"
3715
- msgstr ""
3716
 
3717
  #: ../cerber-users.php:1022
3718
  msgid "Search for IP address"
3719
- msgstr ""
3720
 
3721
  #: ../settings.php:771
3722
  msgid "Minimal"
3723
- msgstr ""
3724
 
3725
  #: ../settings.php:777
3726
  msgid "Do not log known crawlers"
3727
- msgstr ""
3728
 
3729
  #: ../settings.php:781
3730
  msgid "Do not log these locations"
3731
- msgstr ""
3732
 
3733
  #: ../settings.php:785
3734
  msgid "Specify URL paths to exclude requests from logging. One item per line."
3735
- msgstr ""
3736
 
3737
  #: ../settings.php:788
3738
  msgid "Do not log these User-Agents"
3739
- msgstr ""
3740
 
3741
  #: ../settings.php:792
3742
  msgid "Specify User-Agents to exclude requests from logging. One item per line."
3743
- msgstr ""
3744
 
530
  msgstr "REST API uitschakelen"
531
 
532
  #: ../admin/cerber-settings.php:777 ../admin/cerber-settings.php:789 ..
533
+ #: admin/cerber-settings.php:949
534
  msgid "<strong>ERROR</strong>: please enter a valid email address."
535
  msgstr "<strong>LET OP</strong>: voer een geldig e-mailadres in."
536
 
564
  msgstr "Let op! Citadelstand is actief; niemand kan inloggen."
565
 
566
  #: ../dashboard.php:433 ../dashboard.php:3700 ../whois.php:222 ../whois.php:253 ..
567
+ #: common.php:1489 ../common.php:1895 ../common.php:1963 ../nexus/cerber-slave-
568
  #: list.php:332
569
  msgid "Unknown"
570
  msgstr "Onbekend"
571
 
572
  #: ../common.php:339 ../common.php:417 ../common.php:422 ../common.php:428 ..
573
+ #: common.php:433 ../admin/cerber-settings.php:653 ../admin/cerber-settings.php:
574
  #: 673 ../admin/cerber-settings.php:753 ../admin/cerber-admin.php:858 ../cerber-
575
  #: load.php:649 ../cerber-load.php:661 ../cerber-load.php:668 ../cerber-load.php:
576
  #: 1008 ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1560 ..
577
+ #: cerber-load.php:1567 ../cerber-load.php:1574 ../cerber-load.php:1580 ..
578
+ #: cerber-load.php:1587 ../cerber-load.php:1752 ../cerber-load.php:1889 ..
579
+ #: nexus/cerber-nexus-slave.php:204 ../nexus/cerber-nexus-slave.php:215
580
  msgid "ERROR:"
581
  msgstr "FOUT:"
582
 
937
  msgstr "Uitsluitingen"
938
 
939
  #: ../cerber-load.php:1550 ../cerber-load.php:1556 ../cerber-load.php:1581 ..
940
+ #: cerber-load.php:1588
941
  msgid "You are not allowed to register."
942
  msgstr "Je mag niet aanmelden."
943
 
1532
 
1533
  #: ../dashboard.php:1790 ../dashboard.php:1792 ../cerber-users.php:20 ../cerber-
1534
  #: users.php:446 ../settings.php:721 ../settings.php:749 ../settings.php:873 ..
1535
+ #: settings.php:882 ../settings.php:1225 ../cerber-scanner.php:1493
1536
  msgid "Disabled"
1537
  msgstr "Uitgeschakeld"
1538
 
2558
  msgstr "Je bent hier:"
2559
 
2560
  #: ../nexus/cerber-nexus-master.php:1253 ../nexus/cerber-nexus.php:92 ..
2561
+ #: nexus/cerber-nexus.php:102
2562
  msgid "My Websites"
2563
  msgstr "Mijn Websites"
2564
 
3699
 
3700
  #: ../dashboard.php:3416
3701
  msgid "Log into the website"
3702
+ msgstr "Bij de website inloggen"
3703
 
3704
  #. Name of the plugin
3705
  #:
3706
  msgid "WP Cerber Security, Anti-spam & Malware Scan"
3707
+ msgstr "WP Cerber Security, Anti-spam & Malware Scan"
3708
 
3709
  #: ../common.php:1363 ../common.php:1472
3710
  msgid "Probing for vulnerable code"
3711
+ msgstr "Op zoek naar kwetsbare code"
3712
 
3713
  #: ../cerber-load.php:5268
3714
  msgid "Your IP address %s has been added to the White IP Access List"
3715
+ msgstr "Je IP-adres %s is toegevoegd aan de Lijst Toegestane Adressen"
3716
 
3717
  #: ../cerber-users.php:1022
3718
  msgid "Search for IP address"
3719
+ msgstr "IP-adres zoeken"
3720
 
3721
  #: ../settings.php:771
3722
  msgid "Minimal"
3723
+ msgstr "Minimaal"
3724
 
3725
  #: ../settings.php:777
3726
  msgid "Do not log known crawlers"
3727
+ msgstr "Log bekende crawlers niet"
3728
 
3729
  #: ../settings.php:781
3730
  msgid "Do not log these locations"
3731
+ msgstr "Log deze locaties niet"
3732
 
3733
  #: ../settings.php:785
3734
  msgid "Specify URL paths to exclude requests from logging. One item per line."
3735
+ msgstr "Geef aan welke url-paden niet gelogd worden. Eén per regel."
3736
 
3737
  #: ../settings.php:788
3738
  msgid "Do not log these User-Agents"
3739
+ msgstr "Log deze 'user-agents' niet"
3740
 
3741
  #: ../settings.php:792
3742
  msgid "Specify User-Agents to exclude requests from logging. One item per line."
3743
+ msgstr "Geef aan welke 'user-agents' niet gelogd worden. Eén per regel."
3744
 
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 Jul 22 2020 11:06:23 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"
@@ -24,1296 +24,1228 @@ msgstr ""
24
  "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
25
  "X-Generator: Loco - https://localise.biz/"
26
 
27
- #: ../dashboard.php:54
28
- msgid "Cerber Dashboard"
29
  msgstr ""
30
 
31
- #: ../dashboard.php:54 ../dashboard.php:1803 ../dashboard.php:2686 ../dashboard.
32
- #: php:4603
33
- msgid "Dashboard"
34
  msgstr ""
35
 
36
- #: ../dashboard.php:56
37
- msgid "Cerber Traffic Inspector"
 
 
 
 
 
38
  msgstr ""
39
 
40
- #: ../dashboard.php:56 ../dashboard.php:1766 ../dashboard.php:4674
41
- msgid "Traffic Inspector"
42
  msgstr ""
43
 
44
- #: ../dashboard.php:60
45
- msgid "Cerber Data Shield Policies"
46
  msgstr ""
47
 
48
- #: ../dashboard.php:60
49
- msgid "Data Shield"
50
  msgstr ""
51
 
52
- #: ../dashboard.php:61
53
- msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
- #: ../dashboard.php:61 ../dashboard.php:4720
57
- msgid "Security Rules"
58
  msgstr ""
59
 
60
- #: ../dashboard.php:64
61
- msgid "Cerber User Security"
62
  msgstr ""
63
 
64
- #: ../dashboard.php:64 ../dashboard.php:4700
65
- msgid "User Policies"
66
  msgstr ""
67
 
68
- #: ../dashboard.php:67 ../dashboard.php:4735
69
- msgid "Site Integrity"
70
  msgstr ""
71
 
72
- #: ../dashboard.php:71
73
- msgid "Cerber anti-spam settings"
74
  msgstr ""
75
 
76
- #: ../dashboard.php:71 ../settings.php:1152
77
- msgid "Anti-spam"
 
 
 
78
  msgstr ""
79
 
80
- #: ../dashboard.php:79 ../dashboard.php:79 ../cerber-addons.php:289
81
- msgid "Add-ons"
82
  msgstr ""
83
 
84
- #: ../dashboard.php:82
85
- msgid "Cerber tools"
86
- msgstr ""
 
 
 
87
 
88
- #: ../dashboard.php:82 ../dashboard.php:4789
89
- msgid "Tools"
 
 
 
 
 
 
 
 
90
  msgstr ""
91
 
92
- #: ../dashboard.php:190 ../dashboard.php:308
93
- msgid "Remove"
 
 
94
  msgstr ""
95
 
96
- #: ../dashboard.php:195 ../dashboard.php:845 ../dashboard.php:1107 ../dashboard.
97
- #: php:4020 ../cerber-users.php:975
98
- msgid "IP Address"
 
99
  msgstr ""
100
 
101
- #: ../dashboard.php:196 ../dashboard.php:1108
102
- msgid "Hostname"
 
 
 
103
  msgstr ""
104
 
105
- #: ../dashboard.php:197 ../dashboard.php:1109
106
- msgid "Country"
 
107
  msgstr ""
108
 
109
- #: ../dashboard.php:198 ../cerber-users.php:974
110
- msgid "Expires"
111
  msgstr ""
112
 
113
- #: ../dashboard.php:199 ../cerber-load.php:4224
114
- msgid "Reason"
115
  msgstr ""
116
 
117
- #: ../dashboard.php:200 ../admin/cerber-admin.php:757 ../admin/cerber-admin.php:
118
- #: 912 ../cerber-users.php:977
119
- msgid "Action"
120
  msgstr ""
121
 
122
- #: ../dashboard.php:216
123
- #, php-format
124
- msgid "Showing last %d records from %d"
125
  msgstr ""
126
 
127
- #: ../dashboard.php:218
128
- msgid "Hint"
129
  msgstr ""
130
 
131
- #: ../dashboard.php:218
132
- msgid "To view activity, click on the IP"
133
  msgstr ""
134
 
135
- #: ../dashboard.php:222
136
- msgid "No lockouts at the moment. The sky is clear."
137
  msgstr ""
138
 
139
- #: ../dashboard.php:254 ../dashboard.php:1344 ../dashboard.php:1389 ../dashboard.
140
- #: php:1761 ../dashboard.php:3792 ../cerber-tools.php:69
141
- msgid "White IP Access List"
142
  msgstr ""
143
 
144
- #: ../dashboard.php:257 ../dashboard.php:1347 ../dashboard.php:1392 ../dashboard.
145
- #: php:1762 ../dashboard.php:3795 ../cerber-tools.php:70
146
- msgid "Black IP Access List"
147
  msgstr ""
148
 
149
- #: ../dashboard.php:264
150
- msgid "Your IP"
151
  msgstr ""
152
 
153
- #: ../dashboard.php:304 ../dashboard.php:1383 ../dashboard.php:1435 ../dashboard.
154
- #: php:1575
155
- msgid "Check for activities"
156
  msgstr ""
157
 
158
- #: ../dashboard.php:314
159
- msgid "List is empty"
160
  msgstr ""
161
 
162
- #: ../dashboard.php:320
163
- msgid "IP address, range, wildcard, or CIDR"
164
  msgstr ""
165
 
166
- #: ../dashboard.php:321
167
- msgid "Add Entry"
 
168
  msgstr ""
169
 
170
- #: ../dashboard.php:322
171
- msgid "Optional comment for this entry"
172
  msgstr ""
173
 
174
- #: ../dashboard.php:344
175
- msgid "You cannot add your IP address or network"
176
  msgstr ""
177
 
178
- #: ../dashboard.php:348
179
- #, php-format
180
- msgid "IP address %s has been added to Black IP Access List"
181
  msgstr ""
182
 
183
- #: ../dashboard.php:351
184
- #, php-format
185
- msgid "IP address %s has been added to White IP Access List"
186
  msgstr ""
187
 
188
- #: ../dashboard.php:433 ../dashboard.php:3700 ../whois.php:222 ../whois.php:253 ..
189
- #: /common.php:1489 ../common.php:1895 ../common.php:1963 ../nexus/cerber-slave-
190
- #: list.php:332
191
- msgid "Unknown"
192
  msgstr ""
193
 
194
- #: ../dashboard.php:513
195
- msgid "unknown"
 
196
  msgstr ""
197
 
198
- #: ../dashboard.php:575
199
- #, php-format
200
- msgid "Lockout for %s was removed"
201
  msgstr ""
202
 
203
- #: ../dashboard.php:583
204
- msgid "Email has been sent to"
205
  msgstr ""
206
 
207
- #: ../dashboard.php:586
208
- msgid "Unable to send email to"
209
  msgstr ""
210
 
211
- #: ../dashboard.php:652
212
- msgid "Default settings have been loaded"
213
  msgstr ""
214
 
215
- #: ../dashboard.php:846 ../dashboard.php:1110 ../dashboard.php:3567 ../dashboard.
216
- #: php:4018
217
- msgid "Date"
218
  msgstr ""
219
 
220
- #: ../dashboard.php:847 ../dashboard.php:1111
221
- msgid "Event"
222
  msgstr ""
223
 
224
- #: ../dashboard.php:848
225
- msgid "Additional Details"
226
  msgstr ""
227
 
228
- #: ../dashboard.php:849 ../dashboard.php:1112 ../dashboard.php:4023
229
- msgid "Local User"
230
  msgstr ""
231
 
232
- #: ../dashboard.php:850
233
- msgid "User login"
234
  msgstr ""
235
 
236
- #: ../dashboard.php:851 ../dashboard.php:3572
237
- msgid "User ID"
238
  msgstr ""
239
 
240
- #: ../dashboard.php:852 ../dashboard.php:1113
241
- msgid "Username"
242
  msgstr ""
243
 
244
- #: ../dashboard.php:958 ../dashboard.php:2365
245
- msgid "View all"
246
  msgstr ""
247
 
248
- #: ../dashboard.php:969
249
- msgid "New users"
250
  msgstr ""
251
 
252
- #: ../dashboard.php:975 ../dashboard.php:4049
253
- msgid "Suspicious activity"
254
  msgstr ""
255
 
256
- #: ../dashboard.php:977 ../common.php:1333
257
- msgid "IP blocked"
258
  msgstr ""
259
 
260
- #: ../dashboard.php:979 ../dashboard.php:1759 ../dashboard.php:4051 ../settings.
261
- #: php:399 ../settings.php:1071
262
- msgid "Logged in users"
263
  msgstr ""
264
 
265
- #: ../dashboard.php:980 ../dashboard.php:4052
266
- msgid "Not logged in visitors"
 
267
  msgstr ""
268
 
269
- #: ../dashboard.php:982
270
- msgid "My activity"
271
  msgstr ""
272
 
273
- #: ../dashboard.php:983 ../dashboard.php:4062
274
- msgid "My IP"
275
  msgstr ""
276
 
277
- #: ../dashboard.php:1135 ../dashboard.php:4086
278
- msgid "Export"
279
  msgstr ""
280
 
281
- #: ../dashboard.php:1140
282
- msgid "No activity has been logged."
 
283
  msgstr ""
284
 
285
- #: ../dashboard.php:1150 ../cerber-users.php:1019
286
- msgid "Filter by registered user"
287
  msgstr ""
288
 
289
- #: ../dashboard.php:1151
290
- msgid "Search for IP or username"
291
  msgstr ""
292
 
293
- #: ../dashboard.php:1154
294
- msgid "Request ID"
295
  msgstr ""
296
 
297
- #: ../dashboard.php:1155
298
- msgid "Search in URL"
299
  msgstr ""
300
 
301
- #: ../dashboard.php:1162
302
- msgid "Filter"
303
  msgstr ""
304
 
305
- #: ../dashboard.php:1352 ../dashboard.php:1396 ../dashboard.php:3800 ../common.
306
- #: php:1391
307
- msgid "Locked out"
308
  msgstr ""
309
 
310
- #: ../dashboard.php:1428
311
- msgid "Abuse email:"
 
312
  msgstr ""
313
 
314
- #: ../dashboard.php:1434
315
- msgid "Network:"
316
  msgstr ""
317
 
318
- #: ../dashboard.php:1449
319
- msgid "Add network to the Black List"
 
320
  msgstr ""
321
 
322
- #: ../dashboard.php:1455
323
- msgid "Add IP to the Black List"
324
  msgstr ""
325
 
326
- #: ../dashboard.php:1523 ../dashboard.php:1613
327
- msgid "Registered"
328
  msgstr ""
329
 
330
- #: ../dashboard.php:1535
331
- msgid "Activated"
332
  msgstr ""
333
 
334
- #: ../dashboard.php:1555
335
- msgid "Last seen"
336
  msgstr ""
337
 
338
- #: ../dashboard.php:1559
339
- msgid "Active sessions"
340
  msgstr ""
341
 
342
- #: ../dashboard.php:1610
343
- msgid "Comments"
344
  msgstr ""
345
 
346
- #: ../dashboard.php:1611
347
- msgid "Last login"
348
  msgstr ""
349
 
350
- #: ../dashboard.php:1612
351
- msgid "Failed login attempts"
352
  msgstr ""
353
 
354
- #: ../dashboard.php:1644 ../dashboard.php:1735 ../dashboard.php:1784 ../common.
355
- #: php:1627 ../nexus/cerber-slave-list.php:346
356
- msgid "Never"
357
  msgstr ""
358
 
359
- #: ../dashboard.php:1683 ../cerber-users.php:52 ../cerber-users.php:1130
360
- msgid "You"
361
  msgstr ""
362
 
363
- #: ../dashboard.php:1701
364
- msgid "Cerber Quick View"
365
  msgstr ""
366
 
367
- #: ../dashboard.php:1740 ../dashboard.php:1770
368
- msgid "active"
369
  msgstr ""
370
 
371
- #: ../dashboard.php:1740
372
- msgid "deactivate"
373
  msgstr ""
374
 
375
- #: ../dashboard.php:1744
376
- msgid "not active"
377
  msgstr ""
378
 
379
- #: ../dashboard.php:1747 ../dashboard.php:1765
380
- msgid "disabled"
381
  msgstr ""
382
 
383
- #: ../dashboard.php:1753
384
- msgid "failed attempts"
385
  msgstr ""
386
 
387
- #: ../dashboard.php:1753 ../dashboard.php:1754
388
- msgid "in 24 hours"
389
  msgstr ""
390
 
391
- #: ../dashboard.php:1753 ../dashboard.php:1754
392
- msgid "view all"
393
  msgstr ""
394
 
395
- #: ../dashboard.php:1754
396
- msgid "lockouts"
397
  msgstr ""
398
 
399
- #: ../dashboard.php:1756
400
- msgid "Lockouts at the moment"
401
  msgstr ""
402
 
403
- #: ../dashboard.php:1757
404
- msgid "Last lockout"
405
  msgstr ""
406
 
407
- #: ../dashboard.php:1759
408
- msgid "user"
409
- msgid_plural "users"
410
- msgstr[0] ""
411
- msgstr[1] ""
412
-
413
- #: ../dashboard.php:1761 ../dashboard.php:1762 ../dashboard.php:2664
414
- msgid "entry"
415
- msgid_plural "entries"
416
- msgstr[0] ""
417
- msgstr[1] ""
418
 
419
- #: ../dashboard.php:1763 ../settings.php:243
420
- msgid "Citadel mode"
421
  msgstr ""
422
 
423
- #: ../dashboard.php:1765
424
- msgid "enabled"
425
  msgstr ""
426
 
427
- #: ../dashboard.php:1770
428
- msgid "no connection"
429
  msgstr ""
430
 
431
- #: ../dashboard.php:1787
432
- msgctxt "Example: Last malware scan: 23 Jan 2018"
433
- msgid "Last malware scan"
434
  msgstr ""
435
 
436
- #: ../dashboard.php:1790 ../dashboard.php:1792 ../cerber-users.php:20 ../cerber-
437
- #: users.php:446 ../settings.php:721 ../settings.php:749 ../settings.php:873 ..
438
- #: /settings.php:882 ../settings.php:1225 ../cerber-scanner.php:1493
439
  msgid "Disabled"
440
  msgstr ""
441
 
442
- #: ../dashboard.php:1791 ../cerber-scanner.php:938
443
- msgid "Quick Scan"
444
  msgstr ""
445
 
446
- #: ../dashboard.php:1793 ../cerber-scanner.php:938
447
- msgid "Full Scan"
448
  msgstr ""
449
 
450
- #: ../dashboard.php:1804 ../dashboard.php:2351 ../dashboard.php:4604 ../cerber-
451
- #: load.php:4965 ../cerber-users.php:1163 ../settings.php:276
452
- msgid "Activity"
453
  msgstr ""
454
 
455
- #: ../dashboard.php:1805 ../cerber-users.php:1164
456
- msgid "Traffic"
457
  msgstr ""
458
 
459
- #: ../dashboard.php:1806
460
- msgid "Integrity"
 
 
 
461
  msgstr ""
462
 
463
- #: ../dashboard.php:1809
464
- msgid "A new version is available"
 
 
465
  msgstr ""
466
 
467
- #: ../dashboard.php:2169 ../settings.php:230
468
- msgid "My site is behind a reverse proxy"
 
 
 
 
469
  msgstr ""
470
 
471
- #: ../dashboard.php:2345
472
- msgid "in the last 24 hours"
473
  msgstr ""
474
 
475
- #: ../dashboard.php:2368
476
- msgid "Recently locked out IP addresses"
477
  msgstr ""
478
 
479
- #: ../dashboard.php:2479
480
- msgid "Attention! Citadel mode is now active. Nobody is able to log in."
 
 
 
 
481
  msgstr ""
482
 
483
- #: ../dashboard.php:2480
484
- msgid "Deactivate"
 
 
 
485
  msgstr ""
486
 
487
- #: ../dashboard.php:2481 ../dashboard.php:2885
488
- msgid "View Activity"
489
  msgstr ""
490
 
491
- #: ../dashboard.php:2496
492
- msgid "Settings saved"
493
  msgstr ""
494
 
495
- #: ../dashboard.php:2572
496
- msgid "Create Alert"
497
  msgstr ""
498
 
499
- #: ../dashboard.php:2576
500
- msgid "Delete Alert"
501
  msgstr ""
502
 
503
- #: ../dashboard.php:2609
504
- msgid "The alert has been created"
505
  msgstr ""
506
 
507
- #: ../dashboard.php:2613
508
- msgid "The alert has been deleted"
509
  msgstr ""
510
 
511
- #: ../dashboard.php:2687
512
- msgid "Main settings"
513
  msgstr ""
514
 
515
- #: ../dashboard.php:2804
516
- msgid "Are you sure you want to delete selected files?"
517
  msgstr ""
518
 
519
- #: ../dashboard.php:2805
520
- msgid "These files have been moved to the quarantine"
521
  msgstr ""
522
 
523
- #: ../dashboard.php:2808
524
- msgid "Do you want to add selected files to the ignore list?"
525
  msgstr ""
526
 
527
- #: ../dashboard.php:2809
528
- msgid "These files have been added to the ignore list"
529
  msgstr ""
530
 
531
- #: ../dashboard.php:2811
532
- msgid "Some errors occurred"
533
  msgstr ""
534
 
535
- #: ../dashboard.php:2812
536
- msgid "All files have been processed"
537
  msgstr ""
538
 
539
- #: ../dashboard.php:2887 ../dashboard.php:4605
540
- msgid "Sessions"
541
  msgstr ""
542
 
543
- #: ../dashboard.php:3152 ../admin/cerber-settings.php:628
544
- msgid "Save Changes"
545
  msgstr ""
546
 
547
- #: ../dashboard.php:3224
548
- msgid "Role-based rules are configured"
549
  msgstr ""
550
 
551
- #: ../dashboard.php:3274
552
- msgid "Start typing here to find a country"
553
  msgstr ""
554
 
555
- #: ../dashboard.php:3281
556
- msgid "Save all rules"
557
  msgstr ""
558
 
559
- #: ../dashboard.php:3294
560
- #, php-format
561
- msgid "Permitted for one country"
562
- msgid_plural "Permitted for %d countries"
563
- msgstr[0] ""
564
- msgstr[1] ""
565
-
566
- #: ../dashboard.php:3297
567
- #, php-format
568
- msgid "Not permitted for one country"
569
- msgid_plural "Not permitted for %d countries"
570
- msgstr[0] ""
571
- msgstr[1] ""
572
 
573
- #: ../dashboard.php:3305
574
- msgid "No rule"
575
  msgstr ""
576
 
577
- #: ../dashboard.php:3306
578
- msgid "Any country is permitted"
579
  msgstr ""
580
 
581
- #: ../dashboard.php:3389
582
- msgid "Click on a country name to add it to the list of selected countries"
583
  msgstr ""
584
 
585
- #: ../dashboard.php:3393
586
- #, php-format
587
- msgctxt "to is a marker of infinitive, e.g. \"to use it\""
588
- msgid "Selected countries are permitted to %s, other countries are not permitted to"
589
  msgstr ""
590
 
591
- #: ../dashboard.php:3396
592
- #, php-format
593
- msgctxt "to is a marker of infinitive, e.g. \"to use it\""
594
- msgid "Selected countries are not permitted to %s, other countries are permitted to"
595
  msgstr ""
596
 
597
- #: ../dashboard.php:3416
598
- msgid "Log into the website"
599
  msgstr ""
600
 
601
- #: ../dashboard.php:3418
602
- msgid "All Users"
603
  msgstr ""
604
 
605
- #: ../dashboard.php:3420
606
- msgid "Register on the website"
607
  msgstr ""
608
 
609
- #: ../dashboard.php:3421
610
- msgid "Submit forms"
 
 
611
  msgstr ""
612
 
613
- #: ../dashboard.php:3422
614
- msgid "Post comments"
615
  msgstr ""
616
 
617
- #: ../dashboard.php:3423
618
- msgid "Use XML-RPC"
 
619
  msgstr ""
620
 
621
- #: ../dashboard.php:3424
622
- msgid "Use REST API"
623
  msgstr ""
624
 
625
- #: ../dashboard.php:3466
626
- msgid "Security rules have been updated"
627
  msgstr ""
628
 
629
- #: ../dashboard.php:3566
630
- msgid "IP address"
631
  msgstr ""
632
 
633
- #: ../dashboard.php:3573
634
- msgid "Page generation time"
 
 
635
  msgstr ""
636
 
637
- #: ../dashboard.php:4019
638
- msgid "Request"
639
  msgstr ""
640
 
641
- #: ../dashboard.php:4021 ../cerber-users.php:976
642
- msgid "Host Info"
 
643
  msgstr ""
644
 
645
- #: ../dashboard.php:4022
646
- msgid "User Agent"
647
  msgstr ""
648
 
649
- #: ../dashboard.php:4039
650
- msgid "No requests have been logged."
651
  msgstr ""
652
 
653
- #: ../dashboard.php:4047
654
- msgid "All requests"
655
  msgstr ""
656
 
657
- #: ../dashboard.php:4050
658
- msgid "Errors"
 
 
659
  msgstr ""
660
 
661
- #: ../dashboard.php:4055
662
- msgid "Form submissions"
663
  msgstr ""
664
 
665
- #: ../dashboard.php:4057
666
- msgid "Page Not Found"
667
  msgstr ""
668
 
669
- #: ../dashboard.php:4061
670
- msgid "My requests"
 
671
  msgstr ""
672
 
673
- #: ../dashboard.php:4069
674
- msgid "Longer than"
 
675
  msgstr ""
676
 
677
- #: ../dashboard.php:4079
678
- msgid "Advanced Search"
 
679
  msgstr ""
680
 
681
- #: ../dashboard.php:4092
682
- msgid "Refresh"
683
  msgstr ""
684
 
685
- #: ../dashboard.php:4606
686
- msgid "Lockouts"
687
  msgstr ""
688
 
689
- #: ../dashboard.php:4607
690
- msgid "Main Settings"
691
  msgstr ""
692
 
693
- #: ../dashboard.php:4608 ../cerber-tools.php:38 ../cerber-tools.php:49
694
- msgid "Access Lists"
695
  msgstr ""
696
 
697
- #: ../dashboard.php:4609
698
- msgid "Hardening"
699
  msgstr ""
700
 
701
- #: ../dashboard.php:4611 ../settings.php:264
702
- msgid "Notifications"
703
  msgstr ""
704
 
705
- #: ../dashboard.php:4654
706
- msgid "Anti-spam and bot detection settings"
707
  msgstr ""
708
 
709
- #: ../dashboard.php:4656
710
- msgid "Anti-spam engine"
 
 
 
 
711
  msgstr ""
712
 
713
- #: ../dashboard.php:4676
714
- msgid "Live Traffic"
715
  msgstr ""
716
 
717
- #: ../dashboard.php:4677 ../dashboard.php:4738 ../cerber-tools.php:37 ../cerber-
718
- #: tools.php:48 ../nexus/cerber-nexus.php:93
719
- msgid "Settings"
720
  msgstr ""
721
 
722
- #: ../dashboard.php:4690
723
- msgid "Data Shield Policies"
 
724
  msgstr ""
725
 
726
- #: ../dashboard.php:4692
727
- msgid "Accounts & Roles"
728
  msgstr ""
729
 
730
- #: ../dashboard.php:4693
731
- msgid "Site Settings"
732
  msgstr ""
733
 
734
- #: ../dashboard.php:4702
735
- msgid "Role-based"
736
  msgstr ""
737
 
738
- #: ../dashboard.php:4703
739
- msgid "Global"
740
  msgstr ""
741
 
742
- #: ../dashboard.php:4722
743
- msgid "Countries"
744
  msgstr ""
745
 
746
- #: ../dashboard.php:4737
747
- msgid "Security Scanner"
748
  msgstr ""
749
 
750
- #: ../dashboard.php:4739
751
- msgid "Scheduling"
752
  msgstr ""
753
 
754
- #: ../dashboard.php:4740
755
- msgid "Cleaning up"
756
  msgstr ""
757
 
758
- #: ../dashboard.php:4741
759
- msgid "Ignore List"
760
  msgstr ""
761
 
762
- #: ../dashboard.php:4742
763
- msgid "Quarantine"
764
  msgstr ""
765
 
766
- #: ../dashboard.php:4743
767
- msgid "Analytics"
768
  msgstr ""
769
 
770
- #: ../dashboard.php:4792
771
- msgid "Manage Settings"
772
  msgstr ""
773
 
774
- #: ../dashboard.php:4793
775
- msgid "Diagnostic"
776
  msgstr ""
777
 
778
- #: ../dashboard.php:4794
779
- msgid "Diagnostic Log"
780
  msgstr ""
781
 
782
- #: ../dashboard.php:4795
783
- msgid "Changelog"
784
  msgstr ""
785
 
786
- #: ../dashboard.php:4796
787
- msgid "License"
788
  msgstr ""
789
 
790
- #: ../dashboard.php:4897
791
- msgid "Help"
792
  msgstr ""
793
 
794
- #: ../dashboard.php:4946
795
- msgid "Incorrect IP address or IP range"
796
  msgstr ""
797
 
798
- #: ../dashboard.php:4950
799
- msgid "The IP address you are trying to add is already in the list"
800
  msgstr ""
801
 
802
- #: ../dashboard.php:5085
803
- msgid "These features are available in a professional version of the plugin."
804
  msgstr ""
805
 
806
- #: ../dashboard.php:5086
807
- msgid "Know more about all advantages at"
 
 
808
  msgstr ""
809
 
810
- #: ../dashboard.php:5100 ../admin/cerber-admin.php:721 ../admin/cerber-admin.php:
811
- #: 888 ../cerber-tools.php:59
812
- msgid "Are you sure?"
 
 
 
 
 
 
813
  msgstr ""
814
 
815
- #: ../dashboard.php:5121
816
- msgid "Log In"
 
817
  msgstr ""
818
 
819
- #: ../dashboard.php:5122
820
- msgid "Log Out"
821
  msgstr ""
822
 
823
- #: ../dashboard.php:5123
824
- msgid "Register"
825
  msgstr ""
826
 
827
- #: ../dashboard.php:5126
828
- msgid "WooCommerce Log In"
 
829
  msgstr ""
830
 
831
- #: ../dashboard.php:5127
832
- msgid "WooCommerce Log Out"
833
  msgstr ""
834
 
835
- #: ../dashboard.php:5166 ../dashboard.php:5167
836
- msgid "Add to menu"
837
  msgstr ""
838
 
839
- #. Name of the plugin
840
- msgid "WP Cerber Security, Anti-spam & Malware Scan"
841
  msgstr ""
842
 
843
- #. URI of the plugin
844
- msgid "https://wpcerber.com"
845
  msgstr ""
846
 
847
- #. Description of the plugin
848
- msgid ""
849
- "Defends WordPress against hacker attacks, spam, trojans, and viruses. "
850
- "Malware scanner and integrity checker. Hardening WordPress with a set of "
851
- "comprehensive security algorithms. Spam protection with a sophisticated bot "
852
- "detection engine and reCAPTCHA. Tracks user and intruder activity with "
853
- "powerful email, mobile and desktop notifications."
854
  msgstr ""
855
 
856
- #. Author of the plugin
857
- msgid "Cerber Tech Inc."
858
  msgstr ""
859
 
860
- #: ../common.php:210
861
- msgid "Check for requests"
862
  msgstr ""
863
 
864
- #: ../common.php:279
865
- msgid "Malicious activities mitigated"
866
  msgstr ""
867
 
868
- #: ../common.php:282
869
- msgid "Spam comments denied"
870
  msgstr ""
871
 
872
- #: ../common.php:283
873
- msgid "Spam form submissions denied"
874
  msgstr ""
875
 
876
- #: ../common.php:284
877
- msgid "Malicious IP addresses detected"
878
  msgstr ""
879
 
880
- #: ../common.php:285
881
- msgid "Lockouts occurred"
882
  msgstr ""
883
 
884
- #: ../common.php:339 ../common.php:417 ../common.php:422 ../common.php:428 ..
885
- #: /common.php:433 ../admin/cerber-settings.php:653 ../admin/cerber-settings.php:
886
- #: 673 ../admin/cerber-settings.php:753 ../admin/cerber-admin.php:858 ../cerber-
887
- #: load.php:649 ../cerber-load.php:661 ../cerber-load.php:668 ../cerber-load.php:
888
- #: 1008 ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1560 ..
889
- #: /cerber-load.php:1567 ../cerber-load.php:1574 ../cerber-load.php:1580 ..
890
- #: /cerber-load.php:1587 ../cerber-load.php:1752 ../cerber-load.php:1889 ..
891
- #: /nexus/cerber-nexus-slave.php:204 ../nexus/cerber-nexus-slave.php:215
892
- msgid "ERROR:"
893
  msgstr ""
894
 
895
- #: ../common.php:1325
896
- msgid "User created"
897
  msgstr ""
898
 
899
- #: ../common.php:1326
900
- msgid "User registered"
901
  msgstr ""
902
 
903
- #: ../common.php:1327
904
- msgid "User deleted"
905
  msgstr ""
906
 
907
- #: ../common.php:1328
908
- msgid "Logged in"
909
  msgstr ""
910
 
911
- #: ../common.php:1329
912
- msgid "Logged out"
913
  msgstr ""
914
 
915
- #: ../common.php:1330
916
- msgid "Login failed"
917
  msgstr ""
918
 
919
- #: ../common.php:1334
920
- msgid "IP subnet blocked"
921
  msgstr ""
922
 
923
- #: ../common.php:1337
924
- msgid "Citadel activated!"
 
925
  msgstr ""
926
 
927
- #: ../common.php:1338
928
- msgid "Spam comment denied"
929
  msgstr ""
930
 
931
- #: ../common.php:1339
932
- msgid "Spam form submission denied"
 
933
  msgstr ""
934
 
935
- #: ../common.php:1340
936
- msgid "Form submission denied"
937
  msgstr ""
938
 
939
- #: ../common.php:1341
940
- msgid "Comment denied"
941
  msgstr ""
942
 
943
- #: ../common.php:1350
944
- msgid "Password changed"
945
  msgstr ""
946
 
947
- #: ../common.php:1351
948
- msgid "Password reset requested"
949
  msgstr ""
950
 
951
- #: ../common.php:1353
952
- msgid "reCAPTCHA verification failed"
953
  msgstr ""
954
 
955
- #: ../common.php:1354
956
- msgid "reCAPTCHA settings are incorrect"
957
  msgstr ""
958
 
959
- #: ../common.php:1355
960
- msgid "Request to the Google reCAPTCHA service failed"
961
  msgstr ""
962
 
963
- #: ../common.php:1357 ../common.php:1466
964
- msgid "Attempt to access prohibited URL"
965
  msgstr ""
966
 
967
- #: ../common.php:1358 ../common.php:1467
968
- msgid "Attempt to log in with non-existing username"
969
  msgstr ""
970
 
971
- #: ../common.php:1359 ../common.php:1468
972
- msgid "Attempt to log in with prohibited username"
973
  msgstr ""
974
 
975
- #: ../common.php:1361
976
- msgid "Attempt to log in denied"
 
 
977
  msgstr ""
978
 
979
- #: ../common.php:1362
980
- msgid "Attempt to register denied"
981
  msgstr ""
982
 
983
- #: ../common.php:1363 ../common.php:1472
984
- msgid "Probing for vulnerable code"
985
  msgstr ""
986
 
987
- #: ../common.php:1364
988
- msgid "Attempt to upload malicious file denied"
989
  msgstr ""
990
 
991
- #: ../common.php:1365
992
- msgid "File upload denied"
993
  msgstr ""
994
 
995
- #: ../common.php:1367
996
- msgid "Request to REST API denied"
997
  msgstr ""
998
 
999
- #: ../common.php:1368
1000
- msgid "XML-RPC request denied"
1001
  msgstr ""
1002
 
1003
- #: ../common.php:1369
1004
- msgid "User creation denied"
1005
  msgstr ""
1006
 
1007
- #: ../common.php:1370
1008
- msgid "User row update denied"
1009
  msgstr ""
1010
 
1011
- #: ../common.php:1371
1012
- msgid "Role update denied"
1013
  msgstr ""
1014
 
1015
- #: ../common.php:1372
1016
- msgid "Setting update denied"
1017
  msgstr ""
1018
 
1019
- #: ../common.php:1373
1020
- msgid "User metadata update denied"
1021
  msgstr ""
1022
 
1023
- #: ../common.php:1375
1024
- msgid "Malicious request denied"
1025
  msgstr ""
1026
 
1027
- #: ../common.php:1378
1028
- msgid "User activated"
1029
  msgstr ""
1030
 
1031
- #: ../common.php:1381
1032
- msgid "Invalid master credentials"
1033
  msgstr ""
1034
 
1035
- #: ../common.php:1389
1036
- msgid "Bot detected"
1037
  msgstr ""
1038
 
1039
- #: ../common.php:1390
1040
- msgid "Citadel mode is active"
 
 
1041
  msgstr ""
1042
 
1043
- #: ../common.php:1392
1044
- msgid "IP address is locked out"
1045
  msgstr ""
1046
 
1047
- #: ../common.php:1393
1048
- msgid "IP blacklisted"
1049
  msgstr ""
1050
 
1051
- #: ../common.php:1394
1052
- msgid "Malicious activity detected"
1053
  msgstr ""
1054
 
1055
- #: ../common.php:1395
1056
- msgid "Blocked by country rule"
1057
  msgstr ""
1058
 
1059
- #: ../common.php:1396
1060
- msgid "Limit reached"
1061
  msgstr ""
1062
 
1063
- #: ../common.php:1397
1064
- msgid "Multiple suspicious activities"
1065
  msgstr ""
1066
 
1067
- #: ../common.php:1398
1068
- msgid "Denied"
1069
  msgstr ""
1070
 
1071
- #: ../common.php:1400
1072
- msgid "Suspicious number of fields"
1073
  msgstr ""
1074
 
1075
- #: ../common.php:1401
1076
- msgid "Suspicious number of nested values"
1077
  msgstr ""
1078
 
1079
- #: ../common.php:1402 ../common.php:1473
1080
- msgid "Malicious code detected"
1081
  msgstr ""
1082
 
1083
- #: ../common.php:1403
1084
- msgid "Suspicious SQL code detected"
1085
  msgstr ""
1086
 
1087
- #: ../common.php:1404
1088
- msgid "Suspicious JavaScript code detected"
1089
  msgstr ""
1090
 
1091
- #: ../common.php:1405
1092
- msgid "Blocked by administrator"
1093
  msgstr ""
1094
 
1095
- #: ../common.php:1406
1096
- msgid "Site policy enforcement"
1097
  msgstr ""
1098
 
1099
- #: ../common.php:1407
1100
- msgid "2FA code verified"
1101
  msgstr ""
1102
 
1103
- #: ../common.php:1408
1104
- msgid "Initiated by the user"
1105
  msgstr ""
1106
 
1107
- #: ../common.php:1411
1108
- msgid "Email address is prohibited"
1109
- msgstr ""
1110
-
1111
- #: ../common.php:1413
1112
- msgid "Permission denied"
1113
- msgstr ""
1114
-
1115
- #: ../common.php:1415
1116
- msgid "Invalid user"
1117
  msgstr ""
1118
 
1119
- #: ../common.php:1416
1120
- msgid "Incorrect password"
1121
  msgstr ""
1122
 
1123
- #: ../common.php:1419
1124
- msgid "IP whitelisted"
1125
  msgstr ""
1126
 
1127
- #: ../common.php:1464
1128
- msgid "Limit on login attempts is reached"
1129
  msgstr ""
1130
 
1131
- #: ../common.php:1465
1132
- msgid "Attempt to access"
1133
  msgstr ""
1134
 
1135
- #: ../common.php:1469
1136
- msgid "Limit on failed reCAPTCHA verifications is reached"
1137
  msgstr ""
1138
 
1139
- #: ../common.php:1470
1140
- msgid "Bot activity is detected"
1141
  msgstr ""
1142
 
1143
- #: ../common.php:1471
1144
- msgid "Multiple suspicious activities were detected"
1145
  msgstr ""
1146
 
1147
- #: ../common.php:1474
1148
- msgid "Attempt to upload a file with malicious code"
1149
  msgstr ""
1150
 
1151
- #: ../common.php:1476
1152
- msgid "Multiple erroneous requests"
1153
  msgstr ""
1154
 
1155
- #: ../common.php:1477
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:1615
1161
  #, php-format
1162
- msgid "%s sec"
1163
- msgid_plural "%s secs"
1164
  msgstr[0] ""
1165
  msgstr[1] ""
1166
 
1167
- #: ../common.php:1622
1168
- #, php-format
1169
- msgid "%s ago"
1170
- msgstr ""
1171
-
1172
- #: ../common.php:1622
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:1729
1179
- msgid "Bytes"
1180
- msgstr ""
1181
-
1182
- #: ../common.php:1835
1183
- #, php-format
1184
- msgid "A new version of %s is available. Please install it."
1185
- msgstr ""
1186
-
1187
- #: ../common.php:1855
1188
- msgid "Not specified"
1189
- msgstr ""
1190
-
1191
- #: ../common.php:2780
1192
- msgid "Unable to create the directory"
1193
- msgstr ""
1194
-
1195
- #: ../common.php:2785
1196
- msgid "Destination folder access denied"
1197
- msgstr ""
1198
-
1199
- #: ../common.php:2788
1200
- msgid "File not found"
1201
- msgstr ""
1202
-
1203
- #: ../common.php:2791
1204
- msgid "Unable to copy the file"
1205
- msgstr ""
1206
-
1207
- #: ../common.php:2797
1208
- msgid "Unable to delete the file"
1209
- msgstr ""
1210
-
1211
- #. Description of the plugin
1212
- msgid ""
1213
- "This is a standard boot module for WP Cerber Security & Antispam plugin. It "
1214
- "was installed when you set the plugin initialization mode to Standard. Know "
1215
- "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1216
- msgstr ""
1217
-
1218
- #: ../admin/cerber-settings.php:100 ../admin/cerber-settings.php:270 ../cerber-
1219
- #: lab.php:839
1220
- msgid "Know more"
1221
- msgstr ""
1222
-
1223
- #: ../admin/cerber-settings.php:352
1224
- #, php-format
1225
- msgid "%s retries are allowed within %s minutes"
1226
- msgstr ""
1227
-
1228
- #: ../admin/cerber-settings.php:358
1229
- #, php-format
1230
- msgid "%s registrations are allowed within %s minutes from one IP address"
1231
- msgstr ""
1232
-
1233
- #: ../admin/cerber-settings.php:364
1234
- #, php-format
1235
- msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1236
- msgstr ""
1237
-
1238
- #: ../admin/cerber-settings.php:372
1239
- msgid "Notify admin if the number of active lockouts above"
1240
- msgstr ""
1241
-
1242
- #: ../admin/cerber-settings.php:377 ../settings.php:270
1243
- msgid "Click to send test"
1244
- msgstr ""
1245
-
1246
- #: ../admin/cerber-settings.php:381
1247
- #, php-format
1248
- msgid "Enable after %s failed login attempts in the last %s minutes"
1249
- msgstr ""
1250
-
1251
- #: ../admin/cerber-settings.php:517
1252
- msgid "Select one or more roles"
1253
- msgstr ""
1254
-
1255
- #: ../admin/cerber-settings.php:541
1256
- msgid "Sunday"
1257
  msgstr ""
1258
 
1259
- #: ../admin/cerber-settings.php:542
1260
- msgid "Monday"
1261
  msgstr ""
1262
 
1263
- #: ../admin/cerber-settings.php:543
1264
- msgid "Tuesday"
1265
  msgstr ""
1266
 
1267
- #: ../admin/cerber-settings.php:544
1268
- msgid "Wednesday"
 
1269
  msgstr ""
1270
 
1271
- #: ../admin/cerber-settings.php:545
1272
- msgid "Thursday"
1273
  msgstr ""
1274
 
1275
- #: ../admin/cerber-settings.php:546
1276
- msgid "Friday"
 
1277
  msgstr ""
1278
 
1279
- #: ../admin/cerber-settings.php:547
1280
- msgid "Saturday"
1281
  msgstr ""
1282
 
1283
- #: ../admin/cerber-settings.php:557
1284
- msgctxt "preposition of time like: at 11:00"
1285
- msgid "at"
1286
  msgstr ""
1287
 
1288
- #: ../admin/cerber-settings.php:576
1289
- msgid "Click to send now"
1290
  msgstr ""
1291
 
1292
- #: ../admin/cerber-settings.php:654
1293
- msgid "Plugin initialization mode has not been changed"
1294
  msgstr ""
1295
 
1296
- #: ../admin/cerber-settings.php:681 ../admin/cerber-settings.php:682
1297
- msgid "Attention! You have changed the login URL! The new login URL is"
1298
  msgstr ""
1299
 
1300
- #: ../admin/cerber-settings.php:683 ../admin/cerber-settings.php:684
1301
- msgid ""
1302
- "If you use a caching plugin, you have to add your new login URL to the list "
1303
- "of pages not to cache."
1304
  msgstr ""
1305
 
1306
- #: ../admin/cerber-settings.php:777 ../admin/cerber-settings.php:789 ..
1307
- #: /admin/cerber-settings.php:949
1308
- msgid "<strong>ERROR</strong>: please enter a valid email address."
1309
  msgstr ""
1310
 
1311
- #: ../admin/cerber-settings.php:955
1312
- msgid "The schedule has been updated"
1313
  msgstr ""
1314
 
1315
- #: ../admin/cerber-settings.php:958
1316
- msgid "Unable to update the schedule"
1317
  msgstr ""
1318
 
1319
  #: ../admin/cerber-admin.php:43
@@ -1324,7 +1256,7 @@ msgstr ""
1324
  msgid "Finished"
1325
  msgstr ""
1326
 
1327
- #: ../admin/cerber-admin.php:51 ../settings.php:258
1328
  msgid "Duration"
1329
  msgstr ""
1330
 
@@ -1332,10 +1264,6 @@ msgstr ""
1332
  msgid "Performance"
1333
  msgstr ""
1334
 
1335
- #: ../admin/cerber-admin.php:67 ../nexus/cerber-slave-list.php:339
1336
- msgid "Vulnerabilities"
1337
- msgstr ""
1338
-
1339
  #: ../admin/cerber-admin.php:71
1340
  msgid "New files"
1341
  msgstr ""
@@ -1344,10 +1272,6 @@ msgstr ""
1344
  msgid "Changed files"
1345
  msgstr ""
1346
 
1347
- #: ../admin/cerber-admin.php:79 ../cerber-scanner.php:1457
1348
- msgid "Checksum mismatch"
1349
- msgstr ""
1350
-
1351
  #: ../admin/cerber-admin.php:83
1352
  msgid "Unwanted extensions"
1353
  msgstr ""
@@ -1356,7 +1280,7 @@ msgstr ""
1356
  msgid "Unattended files"
1357
  msgstr ""
1358
 
1359
- #: ../admin/cerber-admin.php:96 ../admin/cerber-admin.php:752
1360
  msgid "Scanned"
1361
  msgstr ""
1362
 
@@ -1368,10 +1292,6 @@ msgstr ""
1368
  msgid "Critical issues"
1369
  msgstr ""
1370
 
1371
- #: ../admin/cerber-admin.php:103 ../cerber-scanner.php:4818
1372
- msgid "Issues total"
1373
- msgstr ""
1374
-
1375
  #: ../admin/cerber-admin.php:164
1376
  msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1377
  msgstr ""
@@ -1422,2470 +1342,2567 @@ msgid ""
1422
  "malware."
1423
  msgstr ""
1424
 
1425
- #: ../admin/cerber-admin.php:246 ../cerber-tools.php:45
1426
- #, php-format
1427
- msgid "Maximum upload file size: %s."
1428
- msgstr ""
1429
-
1430
- #: ../admin/cerber-admin.php:249 ../cerber-tools.php:50
1431
- msgid "Upload file"
1432
- msgstr ""
1433
-
1434
- #: ../admin/cerber-admin.php:344
1435
  msgid ""
1436
  "File access error. Possibly scan results are outdated. Please run Quick or "
1437
  "Full Scan."
1438
  msgstr ""
1439
 
1440
- #: ../admin/cerber-admin.php:696
1441
  msgid "There are no files in the quarantine at the moment."
1442
  msgstr ""
1443
 
1444
- #: ../admin/cerber-admin.php:713
1445
  msgid "No files match the specified filter."
1446
  msgstr ""
1447
 
1448
- #: ../admin/cerber-admin.php:713
1449
  msgid "Click here to see the full list of files"
1450
  msgstr ""
1451
 
1452
- #: ../admin/cerber-admin.php:731
1453
  msgid "Delete permanently"
1454
  msgstr ""
1455
 
1456
- #: ../admin/cerber-admin.php:734
1457
  msgid "Restore"
1458
  msgstr ""
1459
 
1460
- #: ../admin/cerber-admin.php:753
1461
  msgid "Quarantined"
1462
  msgstr ""
1463
 
1464
- #: ../admin/cerber-admin.php:754
1465
  msgid "Automatic deletion"
1466
  msgstr ""
1467
 
1468
- #: ../admin/cerber-admin.php:755 ../admin/cerber-admin.php:910 ../admin/cerber-
1469
- #: admin.php:1318
1470
  msgid "Size"
1471
  msgstr ""
1472
 
1473
- #: ../admin/cerber-admin.php:756 ../admin/cerber-admin.php:911
1474
  msgid "File"
1475
  msgstr ""
1476
 
1477
- #: ../admin/cerber-admin.php:767
1478
  msgid "All scans"
1479
  msgstr ""
1480
 
1481
- #: ../admin/cerber-admin.php:829
1482
  msgid "The file has been deleted permanently."
1483
  msgstr ""
1484
 
1485
- #: ../admin/cerber-admin.php:844
1486
  msgid "The file has been restored to its original location."
1487
  msgstr ""
1488
 
1489
- #: ../admin/cerber-admin.php:868
1490
  msgid "Apply"
1491
  msgstr ""
1492
 
1493
- #: ../admin/cerber-admin.php:869 ../admin/cerber-admin.php:896
1494
  msgid "Remove from the list"
1495
  msgstr ""
1496
 
1497
- #: ../admin/cerber-admin.php:870
1498
  msgid "User Insights"
1499
  msgstr ""
1500
 
1501
- #: ../admin/cerber-admin.php:871
1502
  msgid "Traffic Insights"
1503
  msgstr ""
1504
 
1505
- #: ../admin/cerber-admin.php:872
1506
  msgid "Activity Insights"
1507
  msgstr ""
1508
 
1509
- #: ../admin/cerber-admin.php:874
1510
  msgid "The list is empty."
1511
  msgstr ""
1512
 
1513
- #: ../admin/cerber-admin.php:908
1514
  msgid "Added"
1515
  msgstr ""
1516
 
1517
- #: ../admin/cerber-admin.php:909 ../admin/cerber-admin.php:1319
1518
  msgid "Modified"
1519
  msgstr ""
1520
 
1521
- #: ../admin/cerber-admin.php:983
1522
  msgid "Files without extension"
1523
  msgstr ""
1524
 
1525
- #: ../admin/cerber-admin.php:984
1526
  msgid "Back to list"
1527
  msgstr ""
1528
 
1529
- #: ../admin/cerber-admin.php:1044
1530
  msgid "Brief summary"
1531
  msgstr ""
1532
 
1533
- #: ../admin/cerber-admin.php:1095
1534
  msgid "Folder"
1535
  msgstr ""
1536
 
1537
- #: ../admin/cerber-admin.php:1096
1538
  msgid "Path"
1539
  msgstr ""
1540
 
1541
- #: ../admin/cerber-admin.php:1097 ../admin/cerber-admin.php:1191
1542
  msgid "Files"
1543
  msgstr ""
1544
 
1545
- #: ../admin/cerber-admin.php:1098 ../admin/cerber-admin.php:1192
1546
  msgid "Space Occupied"
1547
  msgstr ""
1548
 
1549
- #: ../admin/cerber-admin.php:1162
1550
  msgid "No extension"
1551
  msgstr ""
1552
 
1553
- #: ../admin/cerber-admin.php:1187
1554
  msgid "File extensions statistics"
1555
  msgstr ""
1556
 
1557
- #: ../admin/cerber-admin.php:1190
1558
  msgid "Extension"
1559
  msgstr ""
1560
 
1561
- #: ../admin/cerber-admin.php:1193
1562
  msgid "Smallest"
1563
  msgstr ""
1564
 
1565
- #: ../admin/cerber-admin.php:1194
1566
  msgid "Largest"
1567
  msgstr ""
1568
 
1569
- #: ../admin/cerber-admin.php:1195
1570
  msgid "Average Size"
1571
  msgstr ""
1572
 
1573
- #: ../admin/cerber-admin.php:1196
1574
  msgid "Oldest"
1575
  msgstr ""
1576
 
1577
- #: ../admin/cerber-admin.php:1197
1578
  msgid "Newest"
1579
  msgstr ""
1580
 
1581
- #: ../admin/cerber-admin.php:1213
1582
  msgid "Top 10 largest files"
1583
  msgstr ""
1584
 
1585
- #: ../admin/cerber-admin.php:1317
1586
  msgid "File Name"
1587
  msgstr ""
1588
 
1589
- #: ../cerber-lab.php:835
1590
- msgid "Want to make WP Cerber even more powerful?"
 
1591
  msgstr ""
1592
 
1593
- #: ../cerber-lab.php:836
1594
- msgid ""
1595
- "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
1596
- "This helps the plugin team to develop new algorithms for WP Cerber that will "
1597
- "defend WordPress against new threats and botnets that are appearing "
1598
- "everyday. You can disable the sending in the plugin settings at any time."
1599
  msgstr ""
1600
 
1601
- #: ../cerber-lab.php:837
1602
- msgid "OK, nail them all"
 
1603
  msgstr ""
1604
 
1605
- #: ../cerber-lab.php:838
1606
- msgid "NO, maybe later"
1607
  msgstr ""
1608
 
1609
- #: ../cerber-load.php:341
1610
- msgid "You are not allowed to log in. Ask your administrator for assistance."
1611
  msgstr ""
1612
 
1613
- #: ../cerber-load.php:347
1614
  #, php-format
1615
- msgid ""
1616
- "You have exceeded the number of allowed login attempts. Please try again in "
1617
- "%d minutes."
1618
  msgstr ""
1619
 
1620
- #: ../cerber-load.php:351
1621
- msgid "You are not allowed to log in"
1622
  msgstr ""
1623
 
1624
- #: ../cerber-load.php:366
1625
- #, php-format
1626
- msgid "You have only one attempt remaining."
1627
- msgid_plural "You have %d attempts remaining."
1628
- msgstr[0] ""
1629
- msgstr[1] ""
1630
-
1631
- #: ../cerber-load.php:678
1632
- msgid ""
1633
- "Human verification failed. Please click the square box in the reCAPTCHA "
1634
- "block below."
1635
  msgstr ""
1636
 
1637
- #: ../cerber-load.php:808
1638
- msgid ""
1639
- "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1640
- "contacts here: https://wpcerber.com/contact/"
1641
  msgstr ""
1642
 
1643
- #: ../cerber-load.php:1117
1644
- #, php-format
1645
- msgid ""
1646
- "<strong>ERROR</strong>: The password you entered for the username %s is "
1647
- "incorrect."
1648
  msgstr ""
1649
 
1650
- #: ../cerber-load.php:1550 ../cerber-load.php:1556 ../cerber-load.php:1581 ..
1651
- #: /cerber-load.php:1588
1652
- msgid "You are not allowed to register."
1653
  msgstr ""
1654
 
1655
- #: ../cerber-load.php:1568
1656
- msgid "Username is not allowed. Please choose another one."
1657
  msgstr ""
1658
 
1659
- #: ../cerber-load.php:1575
1660
- msgid "Email address is not permitted."
1661
- msgstr ""
1662
-
1663
- #: ../cerber-load.php:1575
1664
- msgid "Please choose another one."
1665
- msgstr ""
1666
-
1667
- #: ../cerber-load.php:1889
1668
- msgid "Sorry, human verification failed."
1669
  msgstr ""
1670
 
1671
- #: ../cerber-load.php:4049
1672
- msgid "We're sorry, you are not allowed to proceed"
1673
  msgstr ""
1674
 
1675
- #: ../cerber-load.php:4165
1676
- msgid "WP Cerber notify"
 
1677
  msgstr ""
1678
 
1679
- #: ../cerber-load.php:4189
1680
- msgid "Citadel mode is activated"
1681
  msgstr ""
1682
 
1683
- #: ../cerber-load.php:4191
1684
- #, php-format
1685
- msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1686
  msgstr ""
1687
 
1688
- #: ../cerber-load.php:4192
1689
- #, php-format
1690
- msgid "Last failed attempt was at %s from IP %s with user login: %s."
1691
  msgstr ""
1692
 
1693
- #: ../cerber-load.php:4193 ../cerber-load.php:5006
1694
- msgid "View activity in dashboard"
1695
  msgstr ""
1696
 
1697
- #: ../cerber-load.php:4217
1698
- msgid "unspecified"
 
 
1699
  msgstr ""
1700
 
1701
- #: ../cerber-load.php:4220
1702
- msgid "Number of lockouts is increasing"
 
1703
  msgstr ""
1704
 
1705
- #: ../cerber-load.php:4222
1706
- msgid "Number of active lockouts"
1707
  msgstr ""
1708
 
1709
- #: ../cerber-load.php:4223
1710
- #, php-format
1711
- msgid "Last lockout was added: %s for IP %s"
1712
  msgstr ""
1713
 
1714
- #: ../cerber-load.php:4225
1715
- msgid "View activity for this IP"
 
 
 
1716
  msgstr ""
1717
 
1718
- #: ../cerber-load.php:4226
1719
- msgid "View lockouts in dashboard"
1720
  msgstr ""
1721
 
1722
- #: ../cerber-load.php:4229 ../cerber-load.php:4231
1723
- msgid "A new version of WP Cerber is available to install"
 
1724
  msgstr ""
1725
 
1726
- #: ../cerber-load.php:4230
1727
- msgid "Hi!"
1728
  msgstr ""
1729
 
1730
- #: ../cerber-load.php:4233 ../cerber-load.php:4244 ../nexus/cerber-slave-list.php:
1731
- #: 44
1732
- msgid "Website"
1733
  msgstr ""
1734
 
1735
- #: ../cerber-load.php:4236 ../cerber-load.php:4237
1736
- msgid "The WP Cerber security plugin has been deactivated"
1737
  msgstr ""
1738
 
1739
- #: ../cerber-load.php:4239
1740
- msgid "Not logged in"
1741
  msgstr ""
1742
 
1743
- #: ../cerber-load.php:4245
1744
- msgid "By user"
1745
  msgstr ""
1746
 
1747
- #: ../cerber-load.php:4246
1748
- msgid "From IP address"
1749
  msgstr ""
1750
 
1751
- #: ../cerber-load.php:4249
1752
- msgid "From country"
1753
  msgstr ""
1754
 
1755
- #: ../cerber-load.php:4253
1756
- msgid "The WP Cerber security plugin is now active"
1757
  msgstr ""
1758
 
1759
- #: ../cerber-load.php:4254 ../cerber-load.php:5284
1760
- msgid "WP Cerber is now active and has started protecting your site"
1761
  msgstr ""
1762
 
1763
- #: ../cerber-load.php:4256 ../cerber-load.php:5288
1764
- msgid "Getting Started Guide"
1765
  msgstr ""
1766
 
1767
- #: ../cerber-load.php:4265
1768
- msgid "New Custom login URL"
1769
  msgstr ""
1770
 
1771
- #: ../cerber-load.php:4269 ../cerber-load.php:4270
1772
- msgid "A new activity has been recorded"
1773
  msgstr ""
1774
 
1775
- #: ../cerber-load.php:4275
1776
- msgid "Weekly report"
1777
  msgstr ""
1778
 
1779
- #: ../cerber-load.php:4278 ../cerber-load.php:4288
1780
- msgid "To change reporting settings visit"
1781
  msgstr ""
1782
 
1783
- #: ../cerber-load.php:4285
1784
- msgid "Scanner Report"
1785
  msgstr ""
1786
 
1787
- #: ../cerber-load.php:4314
1788
- msgid "Your login page:"
1789
  msgstr ""
1790
 
1791
- #: ../cerber-load.php:4319
1792
- msgid "Your license is valid until"
 
1793
  msgstr ""
1794
 
1795
- #: ../cerber-load.php:4322
1796
- msgid "This message was sent by"
1797
  msgstr ""
1798
 
1799
- #: ../cerber-load.php:4343
1800
- #, php-format
1801
- msgid "Your last sign-in was %s from %s"
1802
  msgstr ""
1803
 
1804
- #: ../cerber-load.php:4413
1805
- msgid "Weekly Report"
1806
  msgstr ""
1807
 
1808
- #: ../cerber-load.php:4425
1809
- msgid "Activity details"
1810
  msgstr ""
1811
 
1812
- #: ../cerber-load.php:4439
1813
- msgid "Attempts to log in with non-existing usernames"
 
1814
  msgstr ""
1815
 
1816
- #: ../cerber-load.php:4974
1817
- msgid "IP"
1818
  msgstr ""
1819
 
1820
- #: ../cerber-load.php:4978 ../cerber-users.php:971
1821
- msgid "User"
1822
  msgstr ""
1823
 
1824
- #: ../cerber-load.php:4982
1825
- msgid "Username used"
1826
  msgstr ""
1827
 
1828
- #: ../cerber-load.php:4986
1829
- msgid "Search string"
1830
  msgstr ""
1831
 
1832
- #: ../cerber-load.php:5007
1833
- msgid "To delete the alert, click here"
1834
  msgstr ""
1835
 
1836
- #: ../cerber-load.php:5225
1837
  #, php-format
1838
- msgid "The WP Cerber requires PHP %s or higher. You are running"
1839
  msgstr ""
1840
 
1841
- #: ../cerber-load.php:5229
1842
  #, php-format
1843
- msgid "The WP Cerber requires WordPress %s or higher. You are running"
1844
  msgstr ""
1845
 
1846
- #: ../cerber-load.php:5239
1847
- msgid "Can't activate WP Cerber due to a database error."
1848
  msgstr ""
1849
 
1850
- #: ../cerber-load.php:5268
1851
  #, php-format
1852
- msgid "Your IP address %s has been added to the White IP Access List"
1853
  msgstr ""
1854
 
1855
- #: ../cerber-load.php:5281 ../nexus/cerber-nexus.php:64
1856
- msgid "Enable slave mode"
1857
  msgstr ""
1858
 
1859
- #: ../cerber-load.php:5297
1860
- msgid "Import settings"
1861
  msgstr ""
1862
 
1863
- #: ../cerber-load.php:7176
1864
- msgid "Awesome!"
1865
  msgstr ""
1866
 
1867
- #: ../cerber-users.php:10 ../cerber-users.php:439
1868
- msgid "Two-Factor Authentication"
 
1869
  msgstr ""
1870
 
1871
- #: ../cerber-users.php:18
1872
- msgid "Determined by user role policies"
1873
  msgstr ""
1874
 
1875
- #: ../cerber-users.php:19 ../cerber-users.php:447
1876
- msgid "Always enabled"
1877
  msgstr ""
1878
 
1879
- #: ../cerber-users.php:39
1880
- msgid "Block User"
1881
  msgstr ""
1882
 
1883
- #: ../cerber-users.php:43 ../cerber-users.php:49
1884
- msgid "User is not permitted to log into the website"
1885
  msgstr ""
1886
 
1887
- #: ../cerber-users.php:58
1888
- #, php-format
1889
- msgctxt "e.g. blocked by John at 11:00"
1890
- msgid "blocked by %s at %s"
1891
  msgstr ""
1892
 
1893
- #: ../cerber-users.php:68 ../settings.php:534
1894
- msgid "User Message"
1895
  msgstr ""
1896
 
1897
- #: ../cerber-users.php:70
1898
- msgid "An optional message for this user"
1899
  msgstr ""
1900
 
1901
- #: ../cerber-users.php:75
1902
- msgid "Admin Note"
1903
  msgstr ""
1904
 
1905
- #: ../cerber-users.php:86
1906
- msgid "2FA PIN Code"
1907
  msgstr ""
1908
 
1909
- #: ../cerber-users.php:101
1910
- msgid "Two-Factor Authentication Email"
1911
  msgstr ""
1912
 
1913
- #: ../cerber-users.php:181
1914
- msgid "Blocked Users"
 
1915
  msgstr ""
1916
 
1917
- #: ../cerber-users.php:213
1918
- msgid "Block"
1919
  msgstr ""
1920
 
1921
- #: ../cerber-users.php:288
1922
- msgid "Save All Changes"
1923
  msgstr ""
1924
 
1925
- #: ../cerber-users.php:401
1926
- msgid "Block access to WordPress Dashboard"
1927
  msgstr ""
1928
 
1929
- #: ../cerber-users.php:406
1930
- msgid "Hide Toolbar when viewing site"
1931
  msgstr ""
1932
 
1933
- #: ../cerber-users.php:412
1934
- msgid "Redirection rules"
1935
  msgstr ""
1936
 
1937
- #: ../cerber-users.php:416
1938
- msgid "Redirect user after login"
1939
  msgstr ""
1940
 
1941
- #: ../cerber-users.php:421
1942
- msgid "Redirect user after logout"
1943
  msgstr ""
1944
 
1945
- #: ../cerber-users.php:432 ../settings.php:583
1946
- msgid "User session expiration time"
1947
  msgstr ""
1948
 
1949
- #: ../cerber-users.php:443
1950
- msgid "Two-factor authentication"
1951
  msgstr ""
1952
 
1953
- #: ../cerber-users.php:448
1954
- msgid "Advanced mode"
1955
  msgstr ""
1956
 
1957
- #: ../cerber-users.php:452
1958
- msgid "Enforce two-factor authentication if any of the following conditions is true"
1959
  msgstr ""
1960
 
1961
- #: ../cerber-users.php:458
1962
- msgid "Login from a different country"
1963
  msgstr ""
1964
 
1965
- #: ../cerber-users.php:464
1966
- msgid "Login from a different network Class C"
1967
  msgstr ""
1968
 
1969
- #: ../cerber-users.php:470
1970
- msgid "Login from a different IP address"
1971
  msgstr ""
1972
 
1973
- #: ../cerber-users.php:476
1974
- msgid "Using a different browser or device"
1975
  msgstr ""
1976
 
1977
- #: ../cerber-users.php:482
1978
- msgid "Enforce two-factor authentication with fixed intervals"
1979
  msgstr ""
1980
 
1981
- #: ../cerber-users.php:488
1982
- msgid "Regular time intervals (days)"
1983
  msgstr ""
1984
 
1985
- #: ../cerber-users.php:490
1986
- msgid "days interval"
1987
  msgstr ""
1988
 
1989
- #: ../cerber-users.php:495
1990
- msgid "Fixed number of logins"
1991
  msgstr ""
1992
 
1993
- #: ../cerber-users.php:497
1994
- msgid "number of logins"
1995
  msgstr ""
1996
 
1997
- #: ../cerber-users.php:541
1998
- msgid "Policies have been updated"
1999
  msgstr ""
2000
 
2001
- #: ../cerber-users.php:613
2002
- #, php-format
2003
- msgid "Session has been terminated"
2004
- msgid_plural "%s sessions have been terminated"
2005
- msgstr[0] ""
2006
- msgstr[1] ""
2007
 
2008
- #: ../cerber-users.php:944
2009
- msgid "WP Cerber Personal Data Eraser"
2010
  msgstr ""
2011
 
2012
- #: ../cerber-users.php:973
2013
- msgid "Created"
2014
  msgstr ""
2015
 
2016
- #: ../cerber-users.php:994
2017
- msgid "Terminate session"
2018
  msgstr ""
2019
 
2020
- #: ../cerber-users.php:995
2021
- msgid "Block user"
2022
  msgstr ""
2023
 
2024
- #: ../cerber-users.php:1022
2025
- msgid "Search for IP address"
2026
  msgstr ""
2027
 
2028
- #: ../cerber-users.php:1085 ../nexus/cerber-slave-list.php:246
2029
- msgid "Search results for:"
2030
  msgstr ""
2031
 
2032
- #: ../cerber-users.php:1127
2033
- msgid "Profile"
2034
  msgstr ""
2035
 
2036
- #: ../cerber-users.php:1140
2037
- msgid "All Logins"
2038
  msgstr ""
2039
 
2040
- #: ../cerber-users.php:1141
2041
- msgid "User Activity"
2042
  msgstr ""
2043
 
2044
- #: ../cerber-users.php:1187
2045
- msgid "Terminate"
2046
  msgstr ""
2047
 
2048
- #: ../settings.php:113
2049
- msgid "All connected devices"
2050
- msgstr ""
 
 
2051
 
2052
- #: ../settings.php:116
2053
- msgid "No devices found"
2054
- msgstr ""
 
 
2055
 
2056
- #: ../settings.php:120
2057
- msgid "Not available"
2058
  msgstr ""
2059
 
2060
- #: ../settings.php:126
2061
- msgid ""
2062
- "Please enable Permalinks to use this feature. Set Permalink Settings to "
2063
- "something other than Default."
2064
  msgstr ""
2065
 
2066
- #: ../settings.php:129
2067
- msgid "Be careful about enabling these options."
2068
  msgstr ""
2069
 
2070
- #: ../settings.php:129
2071
- msgid "If you forget your Custom login URL, you will be unable to log in."
 
2072
  msgstr ""
2073
 
2074
- #: ../settings.php:132
2075
- msgid "These restrictions do not apply to IP addresses in the White IP Access List"
2076
  msgstr ""
2077
 
2078
- #: ../settings.php:136
2079
- msgid "Plugin initialization"
2080
  msgstr ""
2081
 
2082
- #: ../settings.php:139
2083
- msgid "Load security engine"
2084
  msgstr ""
2085
 
2086
- #: ../settings.php:142
2087
- msgid "Legacy mode"
2088
  msgstr ""
2089
 
2090
- #: ../settings.php:143
2091
- msgid "Standard mode"
2092
  msgstr ""
2093
 
2094
- #: ../settings.php:149
2095
- msgid "Limit login attempts"
2096
  msgstr ""
2097
 
2098
- #: ../settings.php:152
2099
- msgid "Limit"
2100
  msgstr ""
2101
 
2102
- #: ../settings.php:157
2103
- msgid "Lockout duration"
2104
  msgstr ""
2105
 
2106
- #: ../settings.php:158 ../settings.php:259
2107
- msgid "minutes"
2108
  msgstr ""
2109
 
2110
- #: ../settings.php:161
2111
- msgid "Aggressive lockout"
2112
  msgstr ""
2113
 
2114
- #: ../settings.php:165 ../settings.php:527 ../settings.php:727
2115
- msgid "Use White IP Access List"
2116
  msgstr ""
2117
 
2118
- #: ../settings.php:166
2119
- msgid "Apply limit login rules to IP addresses in the White IP Access List"
2120
  msgstr ""
2121
 
2122
- #: ../settings.php:172
2123
- msgid "Proactive security rules"
2124
  msgstr ""
2125
 
2126
- #: ../settings.php:173
2127
- msgid "Make your protection smarter!"
2128
  msgstr ""
2129
 
2130
- #: ../settings.php:176
2131
- msgid "Block subnet"
2132
  msgstr ""
2133
 
2134
- #: ../settings.php:177
2135
- msgid "Always block entire subnet Class C of intruders IP"
2136
  msgstr ""
2137
 
2138
- #: ../settings.php:181
2139
- msgid "Non-existing users"
2140
  msgstr ""
2141
 
2142
- #: ../settings.php:182
2143
- msgid "Immediately block IP when attempting to log in with a non-existing username"
2144
  msgstr ""
2145
 
2146
- #: ../settings.php:186
2147
- msgid "Disable dashboard redirection"
2148
  msgstr ""
2149
 
2150
- #: ../settings.php:187
2151
- msgid ""
2152
- "Disable automatic redirection to the login page when /wp-admin/ is requested "
2153
- "by an unauthorized request"
2154
  msgstr ""
2155
 
2156
- #: ../settings.php:191
2157
- msgid "Request wp-login.php"
2158
  msgstr ""
2159
 
2160
- #: ../settings.php:192
2161
- msgid "Immediately block IP after any request to wp-login.php"
2162
  msgstr ""
2163
 
2164
- #: ../settings.php:196
2165
- msgid "Display 404 page"
2166
  msgstr ""
2167
 
2168
- #: ../settings.php:199
2169
- msgid "Use 404 template from the active theme"
2170
  msgstr ""
2171
 
2172
- #: ../settings.php:200
2173
- msgid "Display simple 404 page"
2174
- msgstr ""
 
 
 
2175
 
2176
- #: ../settings.php:207
2177
- msgid "Custom login page"
2178
- msgstr ""
 
 
 
2179
 
2180
- #: ../settings.php:211
2181
- msgid "Custom login URL"
2182
  msgstr ""
2183
 
2184
- #: ../settings.php:212
2185
- msgid "must not overlap with the existing pages or posts slug"
2186
  msgstr ""
2187
 
2188
- #: ../settings.php:214
2189
- msgid ""
2190
- "Custom login URL may contain Latin alphanumeric characters, dashes and "
2191
- "underscores only"
2192
  msgstr ""
2193
 
2194
- #: ../settings.php:219
2195
- msgid "Disable wp-login.php"
 
 
2196
  msgstr ""
2197
 
2198
- #: ../settings.php:220
2199
- msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
 
 
2200
  msgstr ""
2201
 
2202
- #: ../settings.php:226
2203
- msgid "Site-specific settings"
2204
  msgstr ""
2205
 
2206
- #: ../settings.php:229
2207
- msgid "Site connection"
2208
  msgstr ""
2209
 
2210
- #: ../settings.php:234
2211
- msgid "Prefix for plugin cookies"
2212
  msgstr ""
2213
 
2214
- #: ../settings.php:235
2215
- msgid "Prefix may contain only Latin alphanumeric characters and underscores"
2216
  msgstr ""
2217
 
2218
- #: ../settings.php:244
2219
- msgid ""
2220
- "In the Citadel mode nobody is able to log in except IPs from the White IP "
2221
- "Access List. Active user sessions will not be affected."
2222
  msgstr ""
2223
 
2224
- #: ../settings.php:247
2225
- msgid "Enable authentication log monitoring"
2226
  msgstr ""
2227
 
2228
- #: ../settings.php:253
2229
- msgid "Threshold"
2230
  msgstr ""
2231
 
2232
- #: ../settings.php:266
2233
- msgid "Send notification to admin email"
2234
  msgstr ""
2235
 
2236
- #: ../settings.php:279 ../settings.php:829
2237
- msgid "Keep log records of not logged in visitors for"
2238
  msgstr ""
2239
 
2240
- #: ../settings.php:280 ../settings.php:286 ../settings.php:830 ../settings.php:
2241
- #: 836 ../settings.php:907 ../settings.php:1098
2242
- msgid "days"
2243
  msgstr ""
2244
 
2245
- #: ../settings.php:285 ../settings.php:835
2246
- msgid "Keep log records of logged in users for"
2247
  msgstr ""
2248
 
2249
- #: ../settings.php:291
2250
- msgid "Cerber Lab connection"
2251
  msgstr ""
2252
 
2253
- #: ../settings.php:292
2254
- msgid "Send malicious IP addresses to the Cerber Lab"
2255
  msgstr ""
2256
 
2257
- #: ../settings.php:297
2258
- msgid "Cerber Lab protocol"
2259
  msgstr ""
2260
 
2261
- #: ../settings.php:305
2262
- msgid "Use file"
2263
  msgstr ""
2264
 
2265
- #: ../settings.php:306
2266
- msgid "Write failed login attempts to the file"
2267
  msgstr ""
2268
 
2269
- #: ../settings.php:312
2270
- msgid "Preferences"
2271
  msgstr ""
2272
 
2273
- #: ../settings.php:315
2274
- msgid "Drill down IP"
2275
  msgstr ""
2276
 
2277
- #: ../settings.php:316
2278
- msgid "Retrieve extra WHOIS information for IP"
2279
  msgstr ""
2280
 
2281
- #: ../settings.php:320
2282
- msgid "Date format"
2283
  msgstr ""
2284
 
2285
- #: ../settings.php:321
2286
- #, php-format
2287
- msgid "if empty, the default format %s will be used"
2288
  msgstr ""
2289
 
2290
- #: ../settings.php:327
2291
- msgid "Date format for CSV export"
2292
  msgstr ""
2293
 
2294
- #: ../settings.php:328
2295
- msgid "Use ISO 8601 date format for CSV export files"
2296
  msgstr ""
2297
 
2298
- #: ../settings.php:332
2299
- msgid "Use English"
2300
  msgstr ""
2301
 
2302
- #: ../settings.php:333
2303
- msgid "Use English for admin interface"
2304
  msgstr ""
2305
 
2306
- #: ../settings.php:337
2307
- msgid "My IP address"
2308
  msgstr ""
2309
 
2310
- #: ../settings.php:338
2311
- msgid "Do not add my IP address to the White IP Access List upon plugin activation"
2312
  msgstr ""
2313
 
2314
- #: ../settings.php:349
2315
- msgid "Hardening WordPress"
2316
  msgstr ""
2317
 
2318
- #: ../settings.php:353 ../settings.php:389
2319
- msgid "Stop user enumeration"
2320
  msgstr ""
2321
 
2322
- #: ../settings.php:354
2323
- msgid "Block access to user pages like /?author=n"
2324
  msgstr ""
2325
 
2326
- #: ../settings.php:358
2327
- msgid "Protect admin scripts"
2328
  msgstr ""
2329
 
2330
- #: ../settings.php:359
2331
- msgid "Block unauthorized access to load-scripts.php and load-styles.php"
2332
  msgstr ""
2333
 
2334
- #: ../settings.php:363
2335
- msgid "Disable PHP in uploads"
2336
  msgstr ""
2337
 
2338
- #: ../settings.php:364
2339
- msgid "Block execution of PHP scripts in the WordPress media folder"
2340
  msgstr ""
2341
 
2342
- #: ../settings.php:368
2343
- msgid "Disable PHP error displaying"
2344
  msgstr ""
2345
 
2346
- #: ../settings.php:372
2347
- msgid "Disable XML-RPC"
2348
  msgstr ""
2349
 
2350
- #: ../settings.php:373
2351
- msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
2352
  msgstr ""
2353
 
2354
- #: ../settings.php:377
2355
- msgid "Disable feeds"
2356
  msgstr ""
2357
 
2358
- #: ../settings.php:378
2359
- msgid "Block access to the RSS, Atom and RDF feeds"
2360
  msgstr ""
2361
 
2362
- #: ../settings.php:384
2363
- msgid "Access to WordPress REST API"
2364
  msgstr ""
2365
 
2366
- #: ../settings.php:385
2367
- msgid ""
2368
- "Restrict or completely block access to the WordPress REST API according to "
2369
- "your needs"
2370
  msgstr ""
2371
 
2372
- #: ../settings.php:390
2373
- msgid "Block access to users' data via REST API"
2374
  msgstr ""
2375
 
2376
- #: ../settings.php:394
2377
- msgid "Disable REST API"
2378
  msgstr ""
2379
 
2380
- #: ../settings.php:395
2381
- msgid "Block access to WordPress REST API except any of the following"
2382
  msgstr ""
2383
 
2384
- #: ../settings.php:400
2385
- msgid "Allow REST API for logged in users"
2386
  msgstr ""
2387
 
2388
- #: ../settings.php:405
2389
- msgid "Allow REST API for these roles"
2390
  msgstr ""
2391
 
2392
- #: ../settings.php:410
2393
- msgid "Allow these namespaces"
2394
  msgstr ""
2395
 
2396
- #: ../settings.php:414
2397
- msgid ""
2398
- "Specify REST API namespaces to be allowed if REST API is disabled. One "
2399
- "string per line."
2400
  msgstr ""
2401
 
2402
- #: ../settings.php:422
2403
- msgid "Protect user accounts"
2404
  msgstr ""
2405
 
2406
- #: ../settings.php:427
2407
- msgid ""
2408
- "Restrict user account creation and user management with the following "
2409
- "policies"
2410
  msgstr ""
2411
 
2412
- #: ../settings.php:433
2413
- msgid "User registrations are limited to these roles"
2414
  msgstr ""
2415
 
2416
- #: ../settings.php:439
2417
- msgid "Users with these roles are permitted to create new accounts"
2418
  msgstr ""
2419
 
2420
- #: ../settings.php:444
2421
- msgid "Users with these roles are permitted to change sensitive user data"
2422
  msgstr ""
2423
 
2424
- #: ../settings.php:449 ../settings.php:477 ../settings.php:506
2425
- msgid "Do not apply these policies to the IP addresses in the White IP Access List"
2426
  msgstr ""
2427
 
2428
- #: ../settings.php:457
2429
- msgid "Protect user roles"
2430
  msgstr ""
2431
 
2432
- #: ../settings.php:461
2433
- msgid "Restrict roles and capabilities management with the following policies"
2434
  msgstr ""
2435
 
2436
- #: ../settings.php:467
2437
- msgid "Users with these roles are permitted to add new roles"
2438
  msgstr ""
2439
 
2440
- #: ../settings.php:472
2441
- msgid "Users with these roles are permitted to change role capabilities"
2442
  msgstr ""
2443
 
2444
- #: ../settings.php:485
2445
- msgid "Protect site settings"
2446
  msgstr ""
2447
 
2448
- #: ../settings.php:489
2449
- msgid "Restrict updating site settings with the following policies"
2450
  msgstr ""
2451
 
2452
- #: ../settings.php:495
2453
- msgid "Users with these roles are permitted to change protected settings"
2454
  msgstr ""
2455
 
2456
- #: ../settings.php:500
2457
- msgid "Protected settings"
2458
  msgstr ""
2459
 
2460
- #: ../settings.php:520
2461
- msgid "Authorized users only"
2462
  msgstr ""
2463
 
2464
- #: ../settings.php:521
2465
- msgid "Only registered and logged in website users have access to the website"
2466
  msgstr ""
2467
 
2468
- #: ../settings.php:528
2469
- msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2470
  msgstr ""
2471
 
2472
- #: ../settings.php:538 ../settings.php:1470
2473
- msgid "Only registered and logged in users are allowed to view this website"
2474
  msgstr ""
2475
 
2476
- #: ../settings.php:543
2477
- msgid "Redirect to URL"
2478
  msgstr ""
2479
 
2480
- #: ../settings.php:552
2481
- msgid "Registration limit"
2482
  msgstr ""
2483
 
2484
- #: ../settings.php:558
2485
- msgid "Restrict email addresses"
2486
  msgstr ""
2487
 
2488
- #: ../settings.php:561
2489
- msgid "No restrictions"
2490
  msgstr ""
2491
 
2492
- #: ../settings.php:562
2493
- msgid "Deny all email addresses that match the following"
2494
  msgstr ""
2495
 
2496
- #: ../settings.php:563
2497
- msgid "Permit only email addresses that match the following"
2498
  msgstr ""
2499
 
2500
- #: ../settings.php:568
2501
- msgid ""
2502
- "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
2503
- "items."
2504
  msgstr ""
2505
 
2506
- #: ../settings.php:568 ../settings.php:576
2507
- msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2508
  msgstr ""
2509
 
2510
- #: ../settings.php:575
2511
- msgid "Prohibited usernames"
2512
  msgstr ""
2513
 
2514
- #: ../settings.php:576
2515
- msgid ""
2516
- "Usernames from this list are not allowed to log in or register. Any IP "
2517
- "address, have tried to use any of these usernames, will be immediately "
2518
- "blocked. Use comma to separate logins."
2519
  msgstr ""
2520
 
2521
- #: ../settings.php:584
2522
- msgid "minutes (leave empty to use the default WordPress value)"
2523
  msgstr ""
2524
 
2525
- #: ../settings.php:590
2526
- msgid "Sort users in dashboard"
2527
  msgstr ""
2528
 
2529
- #: ../settings.php:591
2530
- msgid "by date of registration"
2531
  msgstr ""
2532
 
2533
- #: ../settings.php:599
2534
- msgid "Personal Data"
2535
  msgstr ""
2536
 
2537
- #: ../settings.php:601
2538
- msgid ""
2539
- "These features help your organization to be in compliance with personal data "
2540
- "protection laws"
2541
  msgstr ""
2542
 
2543
- #: ../settings.php:605
2544
- msgid "Enable data erase"
2545
  msgstr ""
2546
 
2547
- #: ../settings.php:612
2548
- msgid "Terminate user sessions"
2549
  msgstr ""
2550
 
2551
- #: ../settings.php:613
2552
- msgid "Delete user sessions data when user data is erased"
2553
  msgstr ""
2554
 
2555
- #: ../settings.php:619
2556
- msgid "Enable data export"
2557
  msgstr ""
2558
 
2559
- #: ../settings.php:626
2560
- msgid "Include activity log events"
2561
  msgstr ""
2562
 
2563
- #: ../settings.php:632
2564
- msgid "Include traffic log entries"
2565
  msgstr ""
2566
 
2567
- #: ../settings.php:635
2568
- msgid "Request URL"
2569
  msgstr ""
2570
 
2571
- #: ../settings.php:636
2572
- msgid "Form fields data"
2573
  msgstr ""
2574
 
2575
- #: ../settings.php:637
2576
- msgid "Cookies"
2577
  msgstr ""
2578
 
2579
- #: ../settings.php:645
2580
- msgid "Email notifications"
2581
  msgstr ""
2582
 
2583
- #: ../settings.php:650
2584
- msgid "Lockout notifications"
2585
  msgstr ""
2586
 
2587
- #: ../settings.php:654 ../settings.php:701 ../settings.php:962
2588
- msgid "Email Address"
2589
  msgstr ""
2590
 
2591
- #: ../settings.php:655 ../settings.php:703 ../settings.php:801 ../settings.php:964
2592
- msgid "Use comma to specify multiple values"
2593
  msgstr ""
2594
 
2595
- #: ../settings.php:659
2596
- #, php-format
2597
- msgid "if empty, the website administrator email %s will be used"
2598
  msgstr ""
2599
 
2600
- #: ../settings.php:662
2601
- msgid "Notification limit"
2602
  msgstr ""
2603
 
2604
- #: ../settings.php:663
2605
- msgid "notifications are allowed per hour (0 means unlimited)"
2606
  msgstr ""
2607
 
2608
- #: ../settings.php:667
2609
- msgid "New version is available"
2610
  msgstr ""
2611
 
2612
- #: ../settings.php:673
2613
- msgid "Push notifications"
2614
  msgstr ""
2615
 
2616
- #: ../settings.php:674
2617
- msgid "Get notified instantly with mobile and desktop notifications"
2618
  msgstr ""
2619
 
2620
- #: ../settings.php:678
2621
- msgid "Pushbullet access token"
2622
  msgstr ""
2623
 
2624
- #: ../settings.php:681
2625
- msgid "Pushbullet device"
2626
  msgstr ""
2627
 
2628
- #: ../settings.php:688
2629
- msgid "Weekly reports"
2630
  msgstr ""
2631
 
2632
- #: ../settings.php:689
2633
- msgid ""
2634
- "Weekly report is a summary of all activities and suspicious events occurred "
2635
- "during the last seven days"
2636
  msgstr ""
2637
 
2638
- #: ../settings.php:692
2639
- msgid "Enable reporting"
2640
  msgstr ""
2641
 
2642
- #: ../settings.php:696
2643
- msgid "Send reports on"
2644
  msgstr ""
2645
 
2646
- #: ../settings.php:702 ../settings.php:963
2647
- msgid "if empty, the email addresses from the notification settings will be used"
2648
  msgstr ""
2649
 
2650
- #: ../settings.php:713
2651
- msgid "Traffic Inspection"
2652
  msgstr ""
2653
 
2654
- #: ../settings.php:714
2655
- msgid ""
2656
- "Traffic Inspector is a context-aware web application firewall (WAF) that "
2657
- "protects your website by recognizing and denying malicious HTTP requests"
2658
  msgstr ""
2659
 
2660
- #: ../settings.php:718
2661
- msgid "Enable traffic inspection"
2662
  msgstr ""
2663
 
2664
- #: ../settings.php:722 ../settings.php:750
2665
- msgid "Maximum compatibility"
2666
  msgstr ""
2667
 
2668
- #: ../settings.php:723 ../settings.php:751
2669
- msgid "Maximum security"
2670
  msgstr ""
2671
 
2672
- #: ../settings.php:731
2673
- msgid "Request whitelist"
2674
  msgstr ""
2675
 
2676
- #: ../settings.php:735
2677
- msgid ""
2678
- "Enter a request URI to exclude the request from inspection. One item per "
2679
- "line."
2680
  msgstr ""
2681
 
2682
- #: ../settings.php:735 ../settings.php:785
2683
- msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2684
  msgstr ""
2685
 
2686
- #: ../settings.php:741
2687
- msgid "Erroneous Request Shielding"
2688
  msgstr ""
2689
 
2690
- #: ../settings.php:743
2691
- msgid ""
2692
- "Block IP addresses that send excessive requests for non-existing pages or "
2693
- "scan website for security breaches"
2694
  msgstr ""
2695
 
2696
- #: ../settings.php:746
2697
- msgid "Enable error shielding"
2698
  msgstr ""
2699
 
2700
- #: ../settings.php:755
2701
- msgid "Ignore logged in users"
2702
  msgstr ""
2703
 
2704
- #: ../settings.php:762
2705
- msgid "Traffic Logging"
2706
  msgstr ""
2707
 
2708
- #: ../settings.php:763
2709
- msgid ""
2710
- "Enable optional traffic logging if you need to monitor suspicious and "
2711
- "malicious activity or solve security issues"
2712
  msgstr ""
2713
 
2714
- #: ../settings.php:767
2715
- msgid "Logging mode"
2716
  msgstr ""
2717
 
2718
- #: ../settings.php:770
2719
- msgid "Logging disabled"
2720
  msgstr ""
2721
 
2722
- #: ../settings.php:771
2723
- msgid "Minimal"
2724
  msgstr ""
2725
 
2726
- #: ../settings.php:772
2727
- msgid "Smart"
2728
  msgstr ""
2729
 
2730
- #: ../settings.php:773
2731
- msgid "All traffic"
2732
  msgstr ""
2733
 
2734
- #: ../settings.php:777
2735
- msgid "Do not log known crawlers"
2736
  msgstr ""
2737
 
2738
- #: ../settings.php:781
2739
- msgid "Do not log these locations"
2740
  msgstr ""
2741
 
2742
- #: ../settings.php:785
2743
- msgid "Specify URL paths to exclude requests from logging. One item per line."
2744
  msgstr ""
2745
 
2746
- #: ../settings.php:788
2747
- msgid "Do not log these User-Agents"
2748
  msgstr ""
2749
 
2750
- #: ../settings.php:792
2751
- msgid "Specify User-Agents to exclude requests from logging. One item per line."
2752
  msgstr ""
2753
 
2754
- #: ../settings.php:795
2755
- msgid "Save request fields"
2756
- msgstr ""
 
 
 
 
2757
 
2758
- #: ../settings.php:799
2759
- msgid "Mask these form fields"
 
2760
  msgstr ""
2761
 
2762
- #: ../settings.php:806
2763
- msgid "Save request headers"
 
 
2764
  msgstr ""
2765
 
2766
- #: ../settings.php:811
2767
- msgid "Save $_SERVER"
2768
  msgstr ""
2769
 
2770
- #: ../settings.php:815
2771
- msgid "Save request cookies"
 
2772
  msgstr ""
2773
 
2774
- #: ../settings.php:819
2775
- msgid "Save software errors"
2776
  msgstr ""
2777
 
2778
- #: ../settings.php:823
2779
- msgid "Page generation time threshold"
2780
  msgstr ""
2781
 
2782
- #: ../settings.php:824
2783
- msgid "milliseconds"
2784
  msgstr ""
2785
 
2786
- #: ../settings.php:844
2787
- msgid "Scanner settings"
2788
  msgstr ""
2789
 
2790
- #: ../settings.php:845
2791
- msgid ""
2792
- "The scanner monitors file changes, verifies the integrity of WordPress, "
2793
- "plugins, and themes, and detects malware"
2794
  msgstr ""
2795
 
2796
- #: ../settings.php:849
2797
- msgid "Custom signatures"
2798
  msgstr ""
2799
 
2800
- #: ../settings.php:853
2801
- msgid ""
2802
- "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2803
- "pattern, enclose a whole line in two braces."
2804
  msgstr ""
2805
 
2806
- #: ../settings.php:856
2807
- msgid "Unwanted file extensions"
2808
  msgstr ""
2809
 
2810
- #: ../settings.php:860
2811
  msgid ""
2812
- "Specify file extensions to search for. Full scan only. Use comma to separate "
2813
- "items."
2814
  msgstr ""
2815
 
2816
- #: ../settings.php:863
2817
- msgid "Directories to exclude"
2818
  msgstr ""
2819
 
2820
- #: ../settings.php:867
2821
- msgid "Specify directories to exclude from scanning. One directory per line."
2822
  msgstr ""
2823
 
2824
- #: ../settings.php:870
2825
- msgid "Monitor new files"
2826
  msgstr ""
2827
 
2828
- #: ../settings.php:874 ../settings.php:883
2829
- msgid "Executable files"
2830
  msgstr ""
2831
 
2832
- #: ../settings.php:875 ../settings.php:884
2833
- msgid "All files"
2834
  msgstr ""
2835
 
2836
- #: ../settings.php:879
2837
- msgid "Monitor modified files"
2838
  msgstr ""
2839
 
2840
- #: ../settings.php:888
2841
- msgid "Change file permissions when necessary"
2842
  msgstr ""
2843
 
2844
- #: ../settings.php:892
2845
- msgid "Scan temporary directory"
2846
  msgstr ""
2847
 
2848
- #: ../settings.php:896
2849
- msgid "Scan session directory"
2850
  msgstr ""
2851
 
2852
- #: ../settings.php:900 ../settings.php:1203 ../settings.php:1231
2853
- msgid "Enable diagnostic logging"
2854
  msgstr ""
2855
 
2856
- #: ../settings.php:905
2857
- msgid "Delete quarantined files after"
2858
  msgstr ""
2859
 
2860
- #: ../settings.php:914
2861
- msgid "Automated recurring scan schedule"
2862
  msgstr ""
2863
 
2864
- #: ../settings.php:915
2865
- msgid ""
2866
- "The scanner automatically scans the website, removes malware and sends email "
2867
- "reports with the results of a scan"
2868
  msgstr ""
2869
 
2870
- #: ../settings.php:919
2871
- msgid "Launch Quick Scan"
2872
  msgstr ""
2873
 
2874
- #: ../settings.php:924
2875
- msgid "Launch Full Scan"
2876
  msgstr ""
2877
 
2878
- #: ../settings.php:931
2879
- msgid "Scan results reporting"
2880
  msgstr ""
2881
 
2882
- #: ../settings.php:932
2883
- msgid ""
2884
- "Configure what issues to include in the email report and the condition for "
2885
- "sending reports"
2886
  msgstr ""
2887
 
2888
- #: ../settings.php:936
2889
- msgid "Report an issue if any of the following is true"
2890
  msgstr ""
2891
 
2892
- #: ../settings.php:939 ../settings.php:985
2893
- msgid "Low severity"
2894
  msgstr ""
2895
 
2896
- #: ../settings.php:940 ../settings.php:986
2897
- msgid "Medium severity"
2898
  msgstr ""
2899
 
2900
- #: ../settings.php:941 ../settings.php:987
2901
- msgid "High severity"
2902
  msgstr ""
2903
 
2904
- #: ../settings.php:945
2905
- msgid "Send email report"
 
 
2906
  msgstr ""
2907
 
2908
- #: ../settings.php:948
2909
- msgid "After every scan"
2910
  msgstr ""
2911
 
2912
- #: ../settings.php:949
2913
- msgid "If any changes in scan results occurred"
2914
  msgstr ""
2915
 
2916
- #: ../settings.php:950
2917
- msgid "If new issues found"
2918
  msgstr ""
2919
 
2920
- #: ../settings.php:954
2921
- msgid "Include file sizes"
2922
  msgstr ""
2923
 
2924
- #: ../settings.php:958
2925
- msgid "Include scan errors"
2926
  msgstr ""
2927
 
2928
- #: ../settings.php:973
2929
- msgid "Automatic cleanup of malware and suspicious files"
2930
  msgstr ""
2931
 
2932
- #: ../settings.php:974
2933
- msgid ""
2934
- "These policies are automatically enforced at the end of every scheduled scan "
2935
- "based on its results. All affected files are moved to the quarantine"
2936
  msgstr ""
2937
 
2938
- #: ../settings.php:978
2939
- msgid "Delete unattended files"
2940
  msgstr ""
2941
 
2942
- #: ../settings.php:982
2943
- msgid "Files in the uploads folder"
 
 
2944
  msgstr ""
2945
 
2946
- #: ../settings.php:991
2947
- msgid "Files with unwanted extensions"
2948
  msgstr ""
2949
 
2950
- #: ../settings.php:997
2951
- msgid "Automatic recovery of modified and infected files"
2952
  msgstr ""
2953
 
2954
- #: ../settings.php:1000
2955
- msgid "Recover WordPress files"
2956
  msgstr ""
2957
 
2958
- #: ../settings.php:1004
2959
- msgid "Recover plugins files"
2960
  msgstr ""
2961
 
2962
- #: ../settings.php:1010
2963
- msgid "Exclusions"
2964
  msgstr ""
2965
 
2966
- #: ../settings.php:1011
2967
- msgid "These files will never be deleted during automatic cleanup."
2968
  msgstr ""
2969
 
2970
- #: ../settings.php:1014
2971
- msgid "Files in the temporary directory"
 
 
2972
  msgstr ""
2973
 
2974
- #: ../settings.php:1018
2975
- msgid "Files in the sessions directory"
2976
  msgstr ""
2977
 
2978
- #: ../settings.php:1022
2979
- msgid "Files in these directories"
2980
  msgstr ""
2981
 
2982
- #: ../settings.php:1026
2983
- msgid "Use absolute paths. One item per line."
2984
  msgstr ""
2985
 
2986
- #: ../settings.php:1029
2987
- msgid "Files with these extensions"
2988
  msgstr ""
2989
 
2990
- #: ../settings.php:1033
2991
- msgid "Use comma to separate items."
 
2992
  msgstr ""
2993
 
2994
- #: ../settings.php:1040
2995
- msgid "Cerber anti-spam engine"
2996
  msgstr ""
2997
 
2998
- #: ../settings.php:1041
2999
- msgid "Spam protection for comment, registration and contact forms on a website"
3000
  msgstr ""
3001
 
3002
- #: ../settings.php:1045
3003
- msgid "Comment form"
3004
  msgstr ""
3005
 
3006
- #: ../settings.php:1046
3007
- msgid "Protect comment form with bot detection engine"
3008
  msgstr ""
3009
 
3010
- #: ../settings.php:1050 ../settings.php:1122
3011
- msgid "Registration form"
3012
  msgstr ""
3013
 
3014
- #: ../settings.php:1051
3015
- msgid "Protect registration form with bot detection engine"
3016
  msgstr ""
3017
 
3018
- #: ../settings.php:1055
3019
- msgid "Other forms"
3020
  msgstr ""
3021
 
3022
- #: ../settings.php:1056
3023
- msgid "Protect all forms on the website with bot detection engine"
3024
  msgstr ""
3025
 
3026
- #: ../settings.php:1062
3027
- msgid "Adjust anti-spam engine"
3028
  msgstr ""
3029
 
3030
- #: ../settings.php:1063
3031
- msgid ""
3032
- "These settings enable you to fine-tune the behavior of anti-spam algorithms "
3033
- "and avoid false positives"
3034
  msgstr ""
3035
 
3036
- #: ../settings.php:1066
3037
- msgid "Safe mode"
 
3038
  msgstr ""
3039
 
3040
- #: ../settings.php:1067
3041
- msgid "Use less restrictive policies (allow AJAX)"
3042
  msgstr ""
3043
 
3044
- #: ../settings.php:1072
3045
- msgid "Disable bot detection engine for logged in users"
3046
  msgstr ""
3047
 
3048
- #: ../settings.php:1076
3049
- msgid "Query whitelist"
3050
  msgstr ""
3051
 
3052
- #: ../settings.php:1077
3053
- msgid ""
3054
- "Enter a part of query string or query path to exclude a request from "
3055
- "inspection by the engine. One item per line."
3056
  msgstr ""
3057
 
3058
- #: ../settings.php:1086
3059
- msgid "Comment processing"
3060
  msgstr ""
3061
 
3062
- #: ../settings.php:1087
3063
- msgid "How the plugin processes comments submitted through the standard comment form"
3064
  msgstr ""
3065
 
3066
- #: ../settings.php:1090
3067
- msgid "If a spam comment detected"
3068
  msgstr ""
3069
 
3070
- #: ../settings.php:1092
3071
- msgid "Deny it completely"
3072
  msgstr ""
3073
 
3074
- #: ../settings.php:1092
3075
- msgid "Mark it as spam"
3076
  msgstr ""
3077
 
3078
- #: ../settings.php:1095
3079
- msgid "Trash spam comments"
3080
  msgstr ""
3081
 
3082
- #: ../settings.php:1097
3083
- msgid "Move spam comments to trash after"
3084
  msgstr ""
3085
 
3086
- #: ../settings.php:1104
3087
- msgid "reCAPTCHA settings"
3088
  msgstr ""
3089
 
3090
- #: ../settings.php:1105
3091
- msgid ""
3092
- "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
3093
- "key on the Google website"
3094
  msgstr ""
3095
 
3096
- #: ../settings.php:1109
3097
- msgid "Site key"
3098
  msgstr ""
3099
 
3100
- #: ../settings.php:1113
3101
- msgid "Secret key"
3102
  msgstr ""
3103
 
3104
- #: ../settings.php:1117
3105
- msgid "Invisible reCAPTCHA"
3106
  msgstr ""
3107
 
3108
- #: ../settings.php:1118
3109
- msgid "Enable invisible reCAPTCHA"
3110
  msgstr ""
3111
 
3112
- #: ../settings.php:1118
3113
- msgid ""
3114
- "(do not enable it unless you get and enter the Site and Secret keys for the "
3115
- "invisible version)"
3116
  msgstr ""
3117
 
3118
- #: ../settings.php:1123
3119
- msgid "Enable reCAPTCHA for WordPress registration form"
3120
  msgstr ""
3121
 
3122
- #: ../settings.php:1128
3123
- msgid "Enable reCAPTCHA for WooCommerce registration form"
 
 
3124
  msgstr ""
3125
 
3126
- #: ../settings.php:1132
3127
- msgid "Lost password form"
3128
  msgstr ""
3129
 
3130
- #: ../settings.php:1133
3131
- msgid "Enable reCAPTCHA for WordPress lost password form"
3132
  msgstr ""
3133
 
3134
- #: ../settings.php:1138
3135
- msgid "Enable reCAPTCHA for WooCommerce lost password form"
3136
  msgstr ""
3137
 
3138
- #: ../settings.php:1142
3139
- msgid "Login form"
3140
  msgstr ""
3141
 
3142
- #: ../settings.php:1143
3143
- msgid "Enable reCAPTCHA for WordPress login form"
3144
  msgstr ""
3145
 
3146
- #: ../settings.php:1148
3147
- msgid "Enable reCAPTCHA for WooCommerce login form"
3148
  msgstr ""
3149
 
3150
- #: ../settings.php:1153
3151
- msgid "Enable reCAPTCHA for WordPress comment form"
 
 
3152
  msgstr ""
3153
 
3154
- #: ../settings.php:1158
3155
- msgid "Disable reCAPTCHA for logged in users"
3156
  msgstr ""
3157
 
3158
- #: ../settings.php:1162
3159
- msgid "Limit attempts"
 
 
3160
  msgstr ""
3161
 
3162
- #: ../settings.php:1163
3163
- #, php-format
3164
- msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
3165
  msgstr ""
3166
 
3167
- #: ../settings.php:1170
3168
- msgid "Master settings"
3169
  msgstr ""
3170
 
3171
- #: ../settings.php:1178
3172
- msgid "Return to the website list"
3173
  msgstr ""
3174
 
3175
- #: ../settings.php:1182
3176
- msgid "Show \"Switched to\" notification"
3177
  msgstr ""
3178
 
3179
- #: ../settings.php:1186
3180
- msgid "Add @ site to the page title"
3181
  msgstr ""
3182
 
3183
- #: ../settings.php:1190
3184
- msgid "Use master language"
3185
  msgstr ""
3186
 
3187
- #: ../settings.php:1214
3188
- msgid "Limit access by IP address"
3189
  msgstr ""
3190
 
3191
- #: ../settings.php:1220
3192
- msgid "Access to this website"
3193
  msgstr ""
3194
 
3195
- #: ../settings.php:1223
3196
- msgid "Full access mode"
3197
  msgstr ""
3198
 
3199
- #: ../settings.php:1224
3200
- msgid "Read-only mode"
3201
  msgstr ""
3202
 
3203
- #: ../settings.php:1245
3204
- msgid "The full access mode requires the PRO version of WP Cerber"
3205
  msgstr ""
3206
 
3207
- #: ../settings.php:1313
3208
- msgid "Any activity"
3209
  msgstr ""
3210
 
3211
- #: ../cerber-ds.php:787
3212
- msgid "Administration Email Address"
3213
  msgstr ""
3214
 
3215
- #: ../cerber-ds.php:788
3216
- msgid "New User Default Role"
3217
  msgstr ""
3218
 
3219
- #: ../cerber-ds.php:789
3220
- msgid "Site Address (URL)"
3221
  msgstr ""
3222
 
3223
- #: ../cerber-ds.php:790
3224
- msgid "WordPress Address (URL)"
3225
  msgstr ""
3226
 
3227
- #: ../cerber-ds.php:791
3228
- msgid "Anyone can register"
3229
  msgstr ""
3230
 
3231
- #: ../cerber-ds.php:792
3232
- msgid "Active Plugins"
 
 
3233
  msgstr ""
3234
 
3235
- #: ../cerber-ds.php:793
3236
- msgid "Active Theme"
3237
  msgstr ""
3238
 
3239
- #: ../cerber-2fa.php:352
3240
- msgid ""
3241
- "This verification PIN code is expired. We have just sent a new one to your "
3242
- "email."
3243
  msgstr ""
3244
 
3245
- #: ../cerber-2fa.php:355
3246
- msgid "You have entered an incorrect verification PIN code"
3247
  msgstr ""
3248
 
3249
- #: ../cerber-2fa.php:402 ../cerber-2fa.php:486
3250
- msgid "Please verify that it’s you"
3251
  msgstr ""
3252
 
3253
- #: ../cerber-2fa.php:489
3254
- msgid "Please use the following verification PIN code to confirm your identity"
3255
  msgstr ""
3256
 
3257
- #: ../cerber-2fa.php:489
3258
- #, php-format
3259
- msgid "The code is valid for %s minutes."
3260
  msgstr ""
3261
 
3262
- #: ../cerber-2fa.php:514
3263
- msgid "Here are the details of the sign-in attempt"
 
 
3264
  msgstr ""
3265
 
3266
- #: ../cerber-2fa.php:563
3267
- msgid "expires"
3268
  msgstr ""
3269
 
3270
- #: ../cerber-2fa.php:580
3271
- msgid "only digits are allowed"
3272
  msgstr ""
3273
 
3274
- #: ../cerber-2fa.php:583
3275
- msgid "We've sent a verification PIN code to your email"
 
 
 
3276
  msgstr ""
3277
 
3278
- #: ../cerber-2fa.php:584
3279
- msgid "Enter the code from the email in the field below."
3280
  msgstr ""
3281
 
3282
- #: ../cerber-2fa.php:586
3283
- msgid "Try again"
3284
  msgstr ""
3285
 
3286
- #: ../cerber-2fa.php:587
3287
- msgid "Cancel"
3288
  msgstr ""
3289
 
3290
- #: ../cerber-2fa.php:588
3291
- msgid "Did not receive an email?"
3292
  msgstr ""
3293
 
3294
- #: ../cerber-2fa.php:588
3295
- msgid "or"
 
 
3296
  msgstr ""
3297
 
3298
- #: ../cerber-2fa.php:594
3299
- msgid "Verify it's you"
3300
  msgstr ""
3301
 
3302
- #: ../cerber-2fa.php:599
3303
- msgid "Verify"
3304
  msgstr ""
3305
 
3306
- #: ../cerber-tools.php:34
3307
- msgid "Export settings to the file"
3308
  msgstr ""
3309
 
3310
- #: ../cerber-tools.php:35
3311
- msgid ""
3312
- "When you click the button below you will get a configuration file, which you "
3313
- "can upload on another site."
3314
  msgstr ""
3315
 
3316
- #: ../cerber-tools.php:36
3317
- msgid "What do you want to export?"
3318
  msgstr ""
3319
 
3320
- #: ../cerber-tools.php:39
3321
- msgid "Download file"
3322
  msgstr ""
3323
 
3324
- #: ../cerber-tools.php:43
3325
- msgid "Import settings from the file"
3326
  msgstr ""
3327
 
3328
- #: ../cerber-tools.php:44
3329
- msgid ""
3330
- "When you click the button below, file will be uploaded and all existing "
3331
- "settings will be overridden."
3332
  msgstr ""
3333
 
3334
- #: ../cerber-tools.php:45
3335
- msgid "Select file to import."
3336
  msgstr ""
3337
 
3338
- #: ../cerber-tools.php:48
3339
- msgid "What do you want to import?"
3340
  msgstr ""
3341
 
3342
- #: ../cerber-tools.php:52
3343
- msgid "Load the default plugin settings"
3344
  msgstr ""
3345
 
3346
- #: ../cerber-tools.php:53
3347
- msgid ""
3348
- "When you click the button below, the default WP Cerber settings will be "
3349
- "loaded. The Custom login URL and Access Lists will not be changed."
3350
  msgstr ""
3351
 
3352
- #: ../cerber-tools.php:54
3353
- msgid "To get the most out of WP Cerber, follow these steps:"
3354
  msgstr ""
3355
 
3356
- #: ../cerber-tools.php:57
3357
- msgid "Load default settings"
 
3358
  msgstr ""
3359
 
3360
- #: ../cerber-tools.php:72
3361
- msgid "Load entries"
3362
  msgstr ""
3363
 
3364
- #: ../cerber-tools.php:189
3365
- msgid "No file was uploaded or file is corrupted"
3366
  msgstr ""
3367
 
3368
- #: ../cerber-tools.php:228
3369
- msgid "A database error occurred while importing access list entries"
3370
  msgstr ""
3371
 
3372
- #: ../cerber-tools.php:236
3373
- msgid "Settings has imported successfully from"
3374
  msgstr ""
3375
 
3376
- #: ../cerber-tools.php:243
3377
- msgid "Error while parsing file"
3378
  msgstr ""
3379
 
3380
- #: ../cerber-tools.php:320
3381
- msgid "Unsubscribe"
3382
  msgstr ""
3383
 
3384
- #: ../nexus/cerber-slave-list.php:47
3385
- msgid "WordPress"
3386
  msgstr ""
3387
 
3388
- #: ../nexus/cerber-slave-list.php:50
3389
- msgid "Updates"
3390
  msgstr ""
3391
 
3392
- #: ../nexus/cerber-slave-list.php:51
3393
- msgid "Malware Scan"
 
 
3394
  msgstr ""
3395
 
3396
- #: ../nexus/cerber-slave-list.php:52
3397
- msgid "Server"
3398
  msgstr ""
3399
 
3400
- #: ../nexus/cerber-slave-list.php:53
3401
- msgid "Server Country"
3402
  msgstr ""
3403
 
3404
- #: ../nexus/cerber-slave-list.php:54 ../nexus/cerber-nexus-master.php:126
3405
- msgid "Group"
3406
  msgstr ""
3407
 
3408
- #: ../nexus/cerber-slave-list.php:55
3409
- msgid "Owner"
3410
  msgstr ""
3411
 
3412
- #: ../nexus/cerber-slave-list.php:56 ../nexus/cerber-nexus-master.php:140
3413
- msgid "Notes"
 
 
3414
  msgstr ""
3415
 
3416
- #: ../nexus/cerber-slave-list.php:117
3417
- msgid "Upgrade WP Cerber"
3418
  msgstr ""
3419
 
3420
- #: ../nexus/cerber-slave-list.php:118
3421
- msgid "Upgrade all active plugins"
3422
  msgstr ""
3423
 
3424
- #: ../nexus/cerber-slave-list.php:119
3425
- msgid "Delete website"
3426
  msgstr ""
3427
 
3428
- #: ../nexus/cerber-slave-list.php:135
3429
- msgid "All groups"
3430
  msgstr ""
3431
 
3432
- #: ../nexus/cerber-slave-list.php:145
3433
- msgid "All servers"
 
 
3434
  msgstr ""
3435
 
3436
- #: ../nexus/cerber-slave-list.php:152
3437
- msgid "All countries"
3438
  msgstr ""
3439
 
3440
- #: ../nexus/cerber-slave-list.php:161
3441
- msgid "Add a slave website"
3442
  msgstr ""
3443
 
3444
- #: ../nexus/cerber-slave-list.php:281
3445
- msgid "Edit"
 
 
3446
  msgstr ""
3447
 
3448
- #: ../nexus/cerber-slave-list.php:287
3449
- msgid "Switch to"
3450
  msgstr ""
3451
 
3452
- #: ../nexus/cerber-slave-list.php:415
3453
- msgid "No websites configured."
3454
  msgstr ""
3455
 
3456
- #: ../nexus/cerber-slave-list.php:415
3457
- msgid "Add a new one"
3458
  msgstr ""
3459
 
3460
- #: ../nexus/cerber-slave-list.php:415
3461
- msgid "Disable master mode"
 
 
3462
  msgstr ""
3463
 
3464
- #: ../nexus/cerber-nexus-master.php:66
3465
- msgid "Show homepage in the Website column"
3466
  msgstr ""
3467
 
3468
- #: ../nexus/cerber-nexus-master.php:68
3469
- msgid "Hide server IP address"
3470
  msgstr ""
3471
 
3472
- #: ../nexus/cerber-nexus-master.php:95
3473
- msgid "Select an existing group or enter a new one to add it"
3474
  msgstr ""
3475
 
3476
- #: ../nexus/cerber-nexus-master.php:103
3477
- msgid "Website Properties"
3478
  msgstr ""
3479
 
3480
- #: ../nexus/cerber-nexus-master.php:113
3481
- msgid "Website URL"
3482
  msgstr ""
3483
 
3484
- #: ../nexus/cerber-nexus-master.php:118
3485
- msgid "Display as"
3486
  msgstr ""
3487
 
3488
- #: ../nexus/cerber-nexus-master.php:148
3489
- msgid "Website Owner"
3490
  msgstr ""
3491
 
3492
- #: ../nexus/cerber-nexus-master.php:152
3493
- msgid "First Name"
3494
  msgstr ""
3495
 
3496
- #: ../nexus/cerber-nexus-master.php:156
3497
- msgid "Last Name"
3498
  msgstr ""
3499
 
3500
- #: ../nexus/cerber-nexus-master.php:160
3501
- msgid "Email"
3502
  msgstr ""
3503
 
3504
- #: ../nexus/cerber-nexus-master.php:164
3505
- msgid "Phone"
3506
  msgstr ""
3507
 
3508
- #: ../nexus/cerber-nexus-master.php:168
3509
- msgid "Company"
3510
  msgstr ""
3511
 
3512
- #: ../nexus/cerber-nexus-master.php:172
3513
- msgid "Address"
3514
  msgstr ""
3515
 
3516
- #: ../nexus/cerber-nexus-master.php:285
3517
- msgid "Security access token is invalid"
3518
  msgstr ""
3519
 
3520
- #: ../nexus/cerber-nexus-master.php:315
3521
- msgid "The website you are trying to add is already in the list"
3522
  msgstr ""
3523
 
3524
- #: ../nexus/cerber-nexus-master.php:324
3525
- msgid "The website has been added successfully"
3526
  msgstr ""
3527
 
3528
- #: ../nexus/cerber-nexus-master.php:325
3529
- msgid "Click to edit"
3530
  msgstr ""
3531
 
3532
- #: ../nexus/cerber-nexus-master.php:326
3533
- msgid "Switch to the Dashboard"
3534
  msgstr ""
3535
 
3536
- #: ../nexus/cerber-nexus-master.php:329
 
 
 
 
3537
  msgid ""
3538
- "Keep in mind: You have added the website that does not support SSL "
3539
- "encryption. This may lead to data leakage."
3540
  msgstr ""
3541
 
3542
- #: ../nexus/cerber-nexus-master.php:448
3543
- #, php-format
3544
- msgid "Website has been deleted"
3545
- msgid_plural "%s websites have been deleted"
3546
- msgstr[0] ""
3547
- msgstr[1] ""
3548
 
3549
- #: ../nexus/cerber-nexus-master.php:692
3550
- msgid "Invalid response from the slave website"
 
 
3551
  msgstr ""
3552
 
3553
- #: ../nexus/cerber-nexus-master.php:1024
3554
- #, php-format
3555
- msgid "You have switched to %s"
3556
  msgstr ""
3557
 
3558
- #: ../nexus/cerber-nexus-master.php:1034
3559
- msgid "You have switched back to the master website"
 
 
3560
  msgstr ""
3561
 
3562
- #: ../nexus/cerber-nexus-master.php:1250
3563
- msgid "You are here:"
3564
  msgstr ""
3565
 
3566
- #: ../nexus/cerber-nexus-master.php:1253 ../nexus/cerber-nexus.php:92 ..
3567
- #: /nexus/cerber-nexus.php:102
3568
- msgid "My Websites"
3569
  msgstr ""
3570
 
3571
- #: ../nexus/cerber-nexus-master.php:1268
3572
- msgid "Visit Site"
3573
  msgstr ""
3574
 
3575
- #: ../nexus/cerber-nexus-master.php:1334
3576
- msgid "Are you sure you want to delete selected websites?"
3577
  msgstr ""
3578
 
3579
- #: ../nexus/cerber-nexus-master.php:1378
3580
- msgid "A newer version is available"
3581
  msgstr ""
3582
 
3583
- #: ../nexus/cerber-nexus-master.php:1400 ../nexus/cerber-nexus-master.php:1408
3584
- msgid "Active plugins and updates on"
3585
  msgstr ""
3586
 
3587
- #: ../nexus/cerber-nexus-slave.php:436
3588
- msgid "Settings updated"
3589
  msgstr ""
3590
 
3591
- #: ../nexus/cerber-nexus.php:65
3592
- msgid "This website can be managed from a master website"
3593
  msgstr ""
3594
 
3595
- #: ../nexus/cerber-nexus.php:68
3596
- msgid "Enable master mode"
3597
  msgstr ""
3598
 
3599
- #: ../nexus/cerber-nexus.php:69
3600
- msgid "Configure this website as a master to manage other website"
3601
  msgstr ""
3602
 
3603
- #: ../nexus/cerber-nexus.php:74
3604
- msgid "To proceed, please select the mode for this website"
3605
  msgstr ""
3606
 
3607
- #: ../nexus/cerber-nexus.php:98 ../nexus/cerber-nexus.php:102
3608
- msgid "Slave Settings"
3609
  msgstr ""
3610
 
3611
- #: ../nexus/cerber-nexus.php:144
3612
- msgid "Secret Access Token"
 
 
3613
  msgstr ""
3614
 
3615
- #: ../nexus/cerber-nexus.php:146
 
 
 
 
 
 
 
 
 
 
 
 
3616
  msgid ""
3617
- "The token is unique to this website. Keep it secret. Install the token on a "
3618
- "master website to grant access to this website."
3619
  msgstr ""
3620
 
3621
- #: ../nexus/cerber-nexus.php:148
3622
- msgid "Are you sure? This permanently invalidates the token."
3623
  msgstr ""
3624
 
3625
- #: ../nexus/cerber-nexus.php:149
3626
- msgid "To revoke the token and disable remote management, click here:"
3627
  msgstr ""
3628
 
3629
- #: ../nexus/cerber-nexus.php:149
3630
- msgid "Disable slave mode"
3631
  msgstr ""
3632
 
3633
- #: ../nexus/cerber-nexus.php:264
3634
- msgid "This website is set as master."
3635
  msgstr ""
3636
 
3637
- #: ../nexus/cerber-nexus.php:265
3638
- msgid "Add slave websites by using access tokens."
3639
  msgstr ""
3640
 
3641
- #: ../nexus/cerber-nexus.php:268
3642
- msgid "This website is set as slave."
3643
  msgstr ""
3644
 
3645
- #: ../nexus/cerber-nexus.php:269
3646
- msgid "Install the access token on the master website."
3647
  msgstr ""
3648
 
3649
- #: ../cerber-scanner.php:1439
3650
- msgid "Verified"
3651
  msgstr ""
3652
 
3653
- #: ../cerber-scanner.php:1445
3654
- msgid "Vulnerability found"
3655
  msgstr ""
3656
 
3657
- #: ../cerber-scanner.php:1446
3658
- msgid "Integrity data not found"
3659
  msgstr ""
3660
 
3661
- #: ../cerber-scanner.php:1447
3662
- msgid "Unable to check the integrity of the plugin due to a network error"
3663
  msgstr ""
3664
 
3665
- #: ../cerber-scanner.php:1448
3666
- msgid "Unable to check the integrity of WordPress files due to a network error"
 
 
3667
  msgstr ""
3668
 
3669
- #: ../cerber-scanner.php:1449
3670
- msgid "Unable to check the integrity of the theme due to a network error"
3671
  msgstr ""
3672
 
3673
- #: ../cerber-scanner.php:1450
3674
- msgid "Unable to check the integrity due to a DB error"
3675
  msgstr ""
3676
 
3677
- #: ../cerber-scanner.php:1452
3678
- msgid "Local file doesn't exist"
3679
  msgstr ""
3680
 
3681
- #: ../cerber-scanner.php:1454
3682
- msgid "Unable to process file"
3683
  msgstr ""
3684
 
3685
- #: ../cerber-scanner.php:1455 ../cerber-scanner.php:4645
3686
- msgid "Unable to open file"
3687
  msgstr ""
3688
 
3689
- #: ../cerber-scanner.php:1460
3690
- msgid "Suspicious code found"
3691
  msgstr ""
3692
 
3693
- #: ../cerber-scanner.php:1461
3694
- msgid "Malicious code found"
3695
  msgstr ""
3696
 
3697
- #: ../cerber-scanner.php:1462
3698
- msgid "Unattended suspicious file"
3699
  msgstr ""
3700
 
3701
- #: ../cerber-scanner.php:1463
3702
- msgid "Executable code found"
3703
  msgstr ""
3704
 
3705
- #: ../cerber-scanner.php:1466 ../cerber-scanner.php:2706
3706
- msgid "Suspicious directives found"
3707
  msgstr ""
3708
 
3709
- #: ../cerber-scanner.php:1467
3710
- msgid "Unwanted file extension"
3711
  msgstr ""
3712
 
3713
- #: ../cerber-scanner.php:1469
3714
- msgid "Content has been modified"
3715
  msgstr ""
3716
 
3717
- #: ../cerber-scanner.php:1470
3718
- msgid "New file"
3719
  msgstr ""
3720
 
3721
- #: ../cerber-scanner.php:1472
3722
- msgid "Unable to delete"
3723
  msgstr ""
3724
 
3725
- #: ../cerber-scanner.php:1473
3726
- msgid "File deleted"
3727
  msgstr ""
3728
 
3729
- #: ../cerber-scanner.php:1474
3730
- msgid "File recovered"
3731
  msgstr ""
3732
 
3733
- #: ../cerber-scanner.php:1494
3734
- msgid "Every hour"
3735
  msgstr ""
3736
 
3737
- #: ../cerber-scanner.php:1495
3738
- msgid "Every 3 hours"
3739
  msgstr ""
3740
 
3741
- #: ../cerber-scanner.php:1496
3742
- msgid "Every 6 hours"
3743
  msgstr ""
3744
 
3745
- #: ../cerber-scanner.php:2526
3746
- msgid "Custom signature found"
3747
  msgstr ""
3748
 
3749
- #: ../cerber-scanner.php:2701
 
 
 
 
 
 
 
 
 
 
 
 
3750
  msgid ""
3751
- "This file contains executable code and may contain obfuscated malware. If "
3752
- "this file is a part of a theme or a plugin, it must be located in the theme "
3753
- "or the plugin folder. No exception, no excuses."
3754
  msgstr ""
3755
 
3756
- #: ../cerber-scanner.php:2702
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3757
  msgid ""
3758
- "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
3759
- "does not belong to any known part of the website and should not be here."
3760
  msgstr ""
3761
 
3762
- #: ../cerber-scanner.php:2703
3763
- #, php-format
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3764
  msgid ""
3765
- "It may remain after upgrading to a newer version of %s. It also may be a "
3766
- "piece of obfuscated malware. In a rare case it might be a part of a custom-"
3767
- "made (bespoke) plugin or theme."
3768
  msgstr ""
3769
 
3770
- #: ../cerber-scanner.php:2704
3771
- msgid "Suspicious code instruction found"
3772
  msgstr ""
3773
 
3774
- #: ../cerber-scanner.php:2705
3775
- msgid "Suspicious code signatures found"
3776
  msgstr ""
3777
 
3778
- #: ../cerber-scanner.php:2707
 
 
 
 
 
 
 
 
3779
  msgid ""
3780
- "The contents of the file have been changed and do not match what exists in "
3781
- "the official WordPress repository or a reference file you have uploaded "
3782
- "earlier. The file may have been altered by malware, infected by a virus or "
3783
- "has been tampered with."
3784
  msgstr ""
3785
 
3786
- #: ../cerber-scanner.php:2708
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3787
  #, php-format
3788
- msgid ""
3789
- "To solve this issue you have to reinstall %s or update it to the latest "
3790
- "version."
3791
  msgstr ""
3792
 
3793
- #: ../cerber-scanner.php:2709
3794
- msgid "Please upload a reference ZIP archive"
3795
  msgstr ""
3796
 
3797
- #: ../cerber-scanner.php:2710
3798
- msgid "Resolve issue"
3799
  msgstr ""
3800
 
3801
- #: ../cerber-scanner.php:3757
3802
- msgid "Preparing for the scan"
3803
  msgstr ""
3804
 
3805
- #: ../cerber-scanner.php:3758
3806
- msgid "Scanning folders for files"
3807
  msgstr ""
3808
 
3809
- #: ../cerber-scanner.php:3759
3810
- msgid "Scanning the upload folder for files"
3811
  msgstr ""
3812
 
3813
- #: ../cerber-scanner.php:3760
3814
- msgid "Scanning the temp folder for files"
3815
  msgstr ""
3816
 
3817
- #: ../cerber-scanner.php:3761
3818
- msgid "Scanning the session folder for files"
3819
  msgstr ""
3820
 
3821
- #: ../cerber-scanner.php:3762
3822
- msgid "Parsing the list of files"
3823
  msgstr ""
3824
 
3825
- #: ../cerber-scanner.php:3763
3826
- msgid "Checking for new and modified files"
3827
  msgstr ""
3828
 
3829
- #: ../cerber-scanner.php:3764
3830
- msgid "Verifying the integrity of WordPress"
3831
  msgstr ""
3832
 
3833
- #: ../cerber-scanner.php:3765
3834
- msgid "Recovering WordPress files"
3835
  msgstr ""
3836
 
3837
- #: ../cerber-scanner.php:3766
3838
- msgid "Verifying the integrity of the plugins"
 
 
3839
  msgstr ""
3840
 
3841
- #: ../cerber-scanner.php:3767
3842
- msgid "Recovering plugins files"
3843
  msgstr ""
3844
 
3845
- #: ../cerber-scanner.php:3768
3846
- msgid "Verifying the integrity of the themes"
3847
  msgstr ""
3848
 
3849
- #: ../cerber-scanner.php:3769
3850
- msgid "Searching for malicious code"
3851
  msgstr ""
3852
 
3853
- #: ../cerber-scanner.php:3770
3854
- msgid "Finalizing the scan"
 
3855
  msgstr ""
3856
 
3857
- #: ../cerber-scanner.php:4774
3858
- msgid "Full Scan Report"
3859
  msgstr ""
3860
 
3861
- #: ../cerber-scanner.php:4774
3862
- msgid "Quick Scan Report"
3863
  msgstr ""
3864
 
3865
- #: ../cerber-scanner.php:4787
3866
- msgid "Files scanned"
3867
  msgstr ""
3868
 
3869
- #: ../cerber-scanner.php:4872
3870
- msgid "Deleted"
3871
  msgstr ""
3872
 
3873
- #: ../cerber-scanner.php:4876
3874
- msgid "Recovered"
3875
  msgstr ""
3876
 
3877
- #: ../cerber-scanner.php:4925
3878
- msgid "Automatically moved to quarantine"
3879
  msgstr ""
3880
 
3881
- #: ../cerber-scanner.php:4926
3882
- msgid "Automatically deleted"
3883
  msgstr ""
3884
 
3885
- #: ../cerber-scanner.php:4929
3886
- msgid "Automatically recovered"
3887
  msgstr ""
3888
 
3889
- #: ../cerber-scanner.php:4941
3890
- msgid "To view full report visit"
 
 
 
 
 
 
 
 
3891
  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 Aug 12 2020 13:22:49 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"
24
  "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
25
  "X-Generator: Loco - https://localise.biz/"
26
 
27
+ #. Name of the plugin
28
+ msgid "WP Cerber Security, Anti-spam & Malware Scan"
29
  msgstr ""
30
 
31
+ #. URI of the plugin
32
+ msgid "https://wpcerber.com"
 
33
  msgstr ""
34
 
35
+ #. Description of the plugin
36
+ msgid ""
37
+ "Defends WordPress against hacker attacks, spam, trojans, and viruses. "
38
+ "Malware scanner and integrity checker. Hardening WordPress with a set of "
39
+ "comprehensive security algorithms. Spam protection with a sophisticated bot "
40
+ "detection engine and reCAPTCHA. Tracks user and intruder activity with "
41
+ "powerful email, mobile and desktop notifications."
42
  msgstr ""
43
 
44
+ #. Author of the plugin
45
+ msgid "Cerber Tech Inc."
46
  msgstr ""
47
 
48
+ #: ../cerber-ds.php:800
49
+ msgid "Administration Email Address"
50
  msgstr ""
51
 
52
+ #: ../cerber-ds.php:801
53
+ msgid "New User Default Role"
54
  msgstr ""
55
 
56
+ #: ../cerber-ds.php:802
57
+ msgid "Site Address (URL)"
58
  msgstr ""
59
 
60
+ #: ../cerber-ds.php:803
61
+ msgid "WordPress Address (URL)"
62
  msgstr ""
63
 
64
+ #: ../cerber-ds.php:804
65
+ msgid "Anyone can register"
66
  msgstr ""
67
 
68
+ #: ../cerber-ds.php:805
69
+ msgid "Active Plugins"
70
  msgstr ""
71
 
72
+ #: ../cerber-ds.php:806
73
+ msgid "Active Theme"
74
  msgstr ""
75
 
76
+ #: ../cerber-load.php:336
77
+ msgid "You are not allowed to log in. Ask your administrator for assistance."
78
  msgstr ""
79
 
80
+ #: ../cerber-load.php:342
81
+ #, php-format
82
+ msgid ""
83
+ "You have exceeded the number of allowed login attempts. Please try again in "
84
+ "%d minutes."
85
  msgstr ""
86
 
87
+ #: ../cerber-load.php:346
88
+ msgid "You are not allowed to log in"
89
  msgstr ""
90
 
91
+ #: ../cerber-load.php:361
92
+ #, php-format
93
+ msgid "You have only one attempt remaining."
94
+ msgid_plural "You have %d attempts remaining."
95
+ msgstr[0] ""
96
+ msgstr[1] ""
97
 
98
+ #: ../cerber-load.php:635 ../cerber-load.php:647 ../cerber-load.php:654 ../cerber-
99
+ #: load.php:996 ../cerber-load.php:1535 ../cerber-load.php:1542 ../cerber-load.
100
+ #: php:1548 ../cerber-load.php:1553 ../cerber-load.php:1560 ../cerber-load.php:
101
+ #: 1567 ../cerber-load.php:1573 ../cerber-load.php:1580 ../cerber-load.php:1751 ..
102
+ #: /cerber-load.php:1888 ../nexus/cerber-nexus-slave.php:204 ../nexus/cerber-
103
+ #: nexus-slave.php:215 ../admin/cerber-admin.php:866 ../admin/cerber-settings.php:
104
+ #: 653 ../admin/cerber-settings.php:673 ../admin/cerber-settings.php:753 ..
105
+ #: /common.php:367 ../common.php:445 ../common.php:450 ../common.php:456 ..
106
+ #: /common.php:460
107
+ msgid "ERROR:"
108
  msgstr ""
109
 
110
+ #: ../cerber-load.php:664
111
+ msgid ""
112
+ "Human verification failed. Please click the square box in the reCAPTCHA "
113
+ "block below."
114
  msgstr ""
115
 
116
+ #: ../cerber-load.php:794
117
+ msgid ""
118
+ "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
119
+ "contacts here: https://wpcerber.com/contact/"
120
  msgstr ""
121
 
122
+ #: ../cerber-load.php:1105
123
+ #, php-format
124
+ msgid ""
125
+ "<strong>ERROR</strong>: The password you entered for the username %s is "
126
+ "incorrect."
127
  msgstr ""
128
 
129
+ #: ../cerber-load.php:1535 ../cerber-load.php:1543 ../cerber-load.php:1549 ..
130
+ #: /cerber-load.php:1574 ../cerber-load.php:1581
131
+ msgid "You are not allowed to register."
132
  msgstr ""
133
 
134
+ #: ../cerber-load.php:1561
135
+ msgid "Username is not allowed. Please choose another one."
136
  msgstr ""
137
 
138
+ #: ../cerber-load.php:1568
139
+ msgid "Email address is not permitted."
140
  msgstr ""
141
 
142
+ #: ../cerber-load.php:1568
143
+ msgid "Please choose another one."
 
144
  msgstr ""
145
 
146
+ #: ../cerber-load.php:1888
147
+ msgid "Sorry, human verification failed."
 
148
  msgstr ""
149
 
150
+ #: ../cerber-load.php:4084
151
+ msgid "We're sorry, you are not allowed to proceed"
152
  msgstr ""
153
 
154
+ #: ../cerber-load.php:4200
155
+ msgid "WP Cerber notify"
156
  msgstr ""
157
 
158
+ #: ../cerber-load.php:4224
159
+ msgid "Citadel mode is activated"
160
  msgstr ""
161
 
162
+ #: ../cerber-load.php:4226
163
+ #, php-format
164
+ msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
165
  msgstr ""
166
 
167
+ #: ../cerber-load.php:4227
168
+ #, php-format
169
+ msgid "Last failed attempt was at %s from IP %s with user login: %s."
170
  msgstr ""
171
 
172
+ #: ../cerber-load.php:4228 ../cerber-load.php:5044
173
+ msgid "View activity in dashboard"
174
  msgstr ""
175
 
176
+ #: ../cerber-load.php:4252
177
+ msgid "unspecified"
 
178
  msgstr ""
179
 
180
+ #: ../cerber-load.php:4255
181
+ msgid "Number of lockouts is increasing"
182
  msgstr ""
183
 
184
+ #: ../cerber-load.php:4257
185
+ msgid "Number of active lockouts"
186
  msgstr ""
187
 
188
+ #: ../cerber-load.php:4258
189
+ #, php-format
190
+ msgid "Last lockout was added: %s for IP %s"
191
  msgstr ""
192
 
193
+ #: ../cerber-load.php:4259 ../dashboard.php:200
194
+ msgid "Reason"
195
  msgstr ""
196
 
197
+ #: ../cerber-load.php:4260
198
+ msgid "View activity for this IP"
199
  msgstr ""
200
 
201
+ #: ../cerber-load.php:4261
202
+ msgid "View lockouts in dashboard"
 
203
  msgstr ""
204
 
205
+ #: ../cerber-load.php:4264 ../cerber-load.php:4266
206
+ msgid "A new version of WP Cerber is available to install"
 
207
  msgstr ""
208
 
209
+ #: ../cerber-load.php:4265
210
+ msgid "Hi!"
 
 
211
  msgstr ""
212
 
213
+ #: ../cerber-load.php:4268 ../cerber-load.php:4279 ../nexus/cerber-slave-list.php:
214
+ #: 44
215
+ msgid "Website"
216
  msgstr ""
217
 
218
+ #: ../cerber-load.php:4271 ../cerber-load.php:4272
219
+ msgid "The WP Cerber security plugin has been deactivated"
 
220
  msgstr ""
221
 
222
+ #: ../cerber-load.php:4274
223
+ msgid "Not logged in"
224
  msgstr ""
225
 
226
+ #: ../cerber-load.php:4280
227
+ msgid "By user"
228
  msgstr ""
229
 
230
+ #: ../cerber-load.php:4281
231
+ msgid "From IP address"
232
  msgstr ""
233
 
234
+ #: ../cerber-load.php:4284
235
+ msgid "From country"
 
236
  msgstr ""
237
 
238
+ #: ../cerber-load.php:4288
239
+ msgid "The WP Cerber security plugin is now active"
240
  msgstr ""
241
 
242
+ #: ../cerber-load.php:4289 ../cerber-load.php:5322
243
+ msgid "WP Cerber is now active and has started protecting your site"
244
  msgstr ""
245
 
246
+ #: ../cerber-load.php:4291 ../cerber-load.php:5326
247
+ msgid "Getting Started Guide"
248
  msgstr ""
249
 
250
+ #: ../cerber-load.php:4300
251
+ msgid "New Custom login URL"
252
  msgstr ""
253
 
254
+ #: ../cerber-load.php:4304 ../cerber-load.php:4305
255
+ msgid "A new activity has been recorded"
256
  msgstr ""
257
 
258
+ #: ../cerber-load.php:4310
259
+ msgid "Weekly report"
260
  msgstr ""
261
 
262
+ #: ../cerber-load.php:4313 ../cerber-load.php:4323
263
+ msgid "To change reporting settings visit"
264
  msgstr ""
265
 
266
+ #: ../cerber-load.php:4320
267
+ msgid "Scanner Report"
268
  msgstr ""
269
 
270
+ #: ../cerber-load.php:4349
271
+ msgid "Your login page:"
272
  msgstr ""
273
 
274
+ #: ../cerber-load.php:4354
275
+ msgid "Your license is valid until"
276
  msgstr ""
277
 
278
+ #: ../cerber-load.php:4357
279
+ msgid "This message was sent by"
 
280
  msgstr ""
281
 
282
+ #: ../cerber-load.php:4378
283
+ #, php-format
284
+ msgid "Your last sign-in was %s from %s"
285
  msgstr ""
286
 
287
+ #: ../cerber-load.php:4448
288
+ msgid "Weekly Report"
289
  msgstr ""
290
 
291
+ #: ../cerber-load.php:4460
292
+ msgid "Activity details"
293
  msgstr ""
294
 
295
+ #: ../cerber-load.php:4474
296
+ msgid "Attempts to log in with non-existing usernames"
297
  msgstr ""
298
 
299
+ #: ../cerber-load.php:5003 ../cerber-users.php:1163 ../dashboard.php:1809 ..
300
+ #: /dashboard.php:2356 ../dashboard.php:4776 ../settings.php:277
301
+ msgid "Activity"
302
  msgstr ""
303
 
304
+ #: ../cerber-load.php:5012
305
+ msgid "IP"
306
  msgstr ""
307
 
308
+ #: ../cerber-load.php:5016 ../cerber-users.php:971
309
+ msgid "User"
310
  msgstr ""
311
 
312
+ #: ../cerber-load.php:5020
313
+ msgid "Username used"
314
  msgstr ""
315
 
316
+ #: ../cerber-load.php:5024
317
+ msgid "Search string"
318
  msgstr ""
319
 
320
+ #: ../cerber-load.php:5045
321
+ msgid "To delete the alert, click here"
322
  msgstr ""
323
 
324
+ #: ../cerber-load.php:5263
325
+ #, php-format
326
+ msgid "The WP Cerber requires PHP %s or higher. You are running"
327
  msgstr ""
328
 
329
+ #: ../cerber-load.php:5267
330
+ #, php-format
331
+ msgid "The WP Cerber requires WordPress %s or higher. You are running"
332
  msgstr ""
333
 
334
+ #: ../cerber-load.php:5277
335
+ msgid "Can't activate WP Cerber due to a database error."
336
  msgstr ""
337
 
338
+ #: ../cerber-load.php:5306
339
+ #, php-format
340
+ msgid "Your IP address %s has been added to the White IP Access List"
341
  msgstr ""
342
 
343
+ #: ../cerber-load.php:5335
344
+ msgid "Import settings"
345
  msgstr ""
346
 
347
+ #: ../cerber-load.php:7220
348
+ msgid "Awesome!"
349
  msgstr ""
350
 
351
+ #: ../cerber-scanner.php:938 ../dashboard.php:1798
352
+ msgid "Full Scan"
353
  msgstr ""
354
 
355
+ #: ../cerber-scanner.php:938 ../dashboard.php:1796
356
+ msgid "Quick Scan"
357
  msgstr ""
358
 
359
+ #: ../cerber-scanner.php:1439
360
+ msgid "Verified"
361
  msgstr ""
362
 
363
+ #: ../cerber-scanner.php:1445
364
+ msgid "Vulnerability found"
365
  msgstr ""
366
 
367
+ #: ../cerber-scanner.php:1446
368
+ msgid "Integrity data not found"
369
  msgstr ""
370
 
371
+ #: ../cerber-scanner.php:1447
372
+ msgid "Unable to check the integrity of the plugin due to a network error"
373
  msgstr ""
374
 
375
+ #: ../cerber-scanner.php:1448
376
+ msgid "Unable to check the integrity of WordPress files due to a network error"
 
377
  msgstr ""
378
 
379
+ #: ../cerber-scanner.php:1449
380
+ msgid "Unable to check the integrity of the theme due to a network error"
381
  msgstr ""
382
 
383
+ #: ../cerber-scanner.php:1450
384
+ msgid "Unable to check the integrity due to a DB error"
385
  msgstr ""
386
 
387
+ #: ../cerber-scanner.php:1452
388
+ msgid "Local file doesn't exist"
389
  msgstr ""
390
 
391
+ #: ../cerber-scanner.php:1454
392
+ msgid "Unable to process file"
393
  msgstr ""
394
 
395
+ #: ../cerber-scanner.php:1455 ../cerber-scanner.php:4644
396
+ msgid "Unable to open file"
397
  msgstr ""
398
 
399
+ #: ../cerber-scanner.php:1457 ../admin/cerber-admin.php:79
400
+ msgid "Checksum mismatch"
401
  msgstr ""
402
 
403
+ #: ../cerber-scanner.php:1460
404
+ msgid "Suspicious code found"
405
  msgstr ""
406
 
407
+ #: ../cerber-scanner.php:1461
408
+ msgid "Malicious code found"
409
  msgstr ""
410
 
411
+ #: ../cerber-scanner.php:1462
412
+ msgid "Unattended suspicious file"
413
  msgstr ""
414
 
415
+ #: ../cerber-scanner.php:1463
416
+ msgid "Executable code found"
417
  msgstr ""
418
 
419
+ #: ../cerber-scanner.php:1466 ../cerber-scanner.php:2706
420
+ msgid "Suspicious directives found"
421
  msgstr ""
422
 
423
+ #: ../cerber-scanner.php:1467
424
+ msgid "Unwanted file extension"
425
  msgstr ""
426
 
427
+ #: ../cerber-scanner.php:1469
428
+ msgid "Content has been modified"
429
+ msgstr ""
 
 
 
 
 
 
 
 
430
 
431
+ #: ../cerber-scanner.php:1470
432
+ msgid "New file"
433
  msgstr ""
434
 
435
+ #: ../cerber-scanner.php:1472
436
+ msgid "Unable to delete"
437
  msgstr ""
438
 
439
+ #: ../cerber-scanner.php:1473
440
+ msgid "File deleted"
441
  msgstr ""
442
 
443
+ #: ../cerber-scanner.php:1474
444
+ msgid "File recovered"
 
445
  msgstr ""
446
 
447
+ #: ../cerber-scanner.php:1493 ../cerber-users.php:20 ../cerber-users.php:446 ..
448
+ #: /dashboard.php:1795 ../dashboard.php:1797 ../settings.php:735 ../settings.php:
449
+ #: 763 ../settings.php:887 ../settings.php:896 ../settings.php:1239
450
  msgid "Disabled"
451
  msgstr ""
452
 
453
+ #: ../cerber-scanner.php:1494
454
+ msgid "Every hour"
455
  msgstr ""
456
 
457
+ #: ../cerber-scanner.php:1495
458
+ msgid "Every 3 hours"
459
  msgstr ""
460
 
461
+ #: ../cerber-scanner.php:1496
462
+ msgid "Every 6 hours"
 
463
  msgstr ""
464
 
465
+ #: ../cerber-scanner.php:2526
466
+ msgid "Custom signature found"
467
  msgstr ""
468
 
469
+ #: ../cerber-scanner.php:2701
470
+ msgid ""
471
+ "This file contains executable code and may contain obfuscated malware. If "
472
+ "this file is a part of a theme or a plugin, it must be located in the theme "
473
+ "or the plugin folder. No exception, no excuses."
474
  msgstr ""
475
 
476
+ #: ../cerber-scanner.php:2702
477
+ msgid ""
478
+ "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
479
+ "does not belong to any known part of the website and should not be here."
480
  msgstr ""
481
 
482
+ #: ../cerber-scanner.php:2703
483
+ #, php-format
484
+ msgid ""
485
+ "It may remain after upgrading to a newer version of %s. It also may be a "
486
+ "piece of obfuscated malware. In a rare case it might be a part of a custom-"
487
+ "made (bespoke) plugin or theme."
488
  msgstr ""
489
 
490
+ #: ../cerber-scanner.php:2704
491
+ msgid "Suspicious code instruction found"
492
  msgstr ""
493
 
494
+ #: ../cerber-scanner.php:2705
495
+ msgid "Suspicious code signatures found"
496
  msgstr ""
497
 
498
+ #: ../cerber-scanner.php:2707
499
+ msgid ""
500
+ "The contents of the file have been changed and do not match what exists in "
501
+ "the official WordPress repository or a reference file you have uploaded "
502
+ "earlier. The file may have been altered by malware, infected by a virus or "
503
+ "has been tampered with."
504
  msgstr ""
505
 
506
+ #: ../cerber-scanner.php:2708
507
+ #, php-format
508
+ msgid ""
509
+ "To solve this issue you have to reinstall %s or update it to the latest "
510
+ "version."
511
  msgstr ""
512
 
513
+ #: ../cerber-scanner.php:2709
514
+ msgid "Please upload a reference ZIP archive"
515
  msgstr ""
516
 
517
+ #: ../cerber-scanner.php:2710
518
+ msgid "Resolve issue"
519
  msgstr ""
520
 
521
+ #: ../cerber-scanner.php:3757
522
+ msgid "Preparing for the scan"
523
  msgstr ""
524
 
525
+ #: ../cerber-scanner.php:3758
526
+ msgid "Scanning folders for files"
527
  msgstr ""
528
 
529
+ #: ../cerber-scanner.php:3759
530
+ msgid "Scanning the upload folder for files"
531
  msgstr ""
532
 
533
+ #: ../cerber-scanner.php:3760
534
+ msgid "Scanning the temp folder for files"
535
  msgstr ""
536
 
537
+ #: ../cerber-scanner.php:3761
538
+ msgid "Scanning the session folder for files"
539
  msgstr ""
540
 
541
+ #: ../cerber-scanner.php:3762
542
+ msgid "Parsing the list of files"
543
  msgstr ""
544
 
545
+ #: ../cerber-scanner.php:3763
546
+ msgid "Checking for new and modified files"
547
  msgstr ""
548
 
549
+ #: ../cerber-scanner.php:3764
550
+ msgid "Verifying the integrity of WordPress"
551
  msgstr ""
552
 
553
+ #: ../cerber-scanner.php:3765
554
+ msgid "Recovering WordPress files"
555
  msgstr ""
556
 
557
+ #: ../cerber-scanner.php:3766
558
+ msgid "Verifying the integrity of the plugins"
559
  msgstr ""
560
 
561
+ #: ../cerber-scanner.php:3767
562
+ msgid "Recovering plugins files"
563
  msgstr ""
564
 
565
+ #: ../cerber-scanner.php:3768
566
+ msgid "Verifying the integrity of the themes"
567
  msgstr ""
568
 
569
+ #: ../cerber-scanner.php:3769
570
+ msgid "Searching for malicious code"
571
  msgstr ""
572
 
573
+ #: ../cerber-scanner.php:3770
574
+ msgid "Finalizing the scan"
575
  msgstr ""
576
 
577
+ #: ../cerber-scanner.php:4773
578
+ msgid "Full Scan Report"
579
  msgstr ""
580
 
581
+ #: ../cerber-scanner.php:4773
582
+ msgid "Quick Scan Report"
583
  msgstr ""
584
 
585
+ #: ../cerber-scanner.php:4786
586
+ msgid "Files scanned"
587
+ msgstr ""
 
 
 
 
 
 
 
 
 
 
588
 
589
+ #: ../cerber-scanner.php:4817 ../admin/cerber-admin.php:103
590
+ msgid "Issues total"
591
  msgstr ""
592
 
593
+ #: ../cerber-scanner.php:4871
594
+ msgid "Deleted"
595
  msgstr ""
596
 
597
+ #: ../cerber-scanner.php:4875
598
+ msgid "Recovered"
599
  msgstr ""
600
 
601
+ #: ../cerber-scanner.php:4924
602
+ msgid "Automatically moved to quarantine"
 
 
603
  msgstr ""
604
 
605
+ #: ../cerber-scanner.php:4925
606
+ msgid "Automatically deleted"
 
 
607
  msgstr ""
608
 
609
+ #: ../cerber-scanner.php:4928
610
+ msgid "Automatically recovered"
611
  msgstr ""
612
 
613
+ #: ../cerber-scanner.php:4940
614
+ msgid "To view full report visit"
615
  msgstr ""
616
 
617
+ #: ../cerber-tools.php:34
618
+ msgid "Export settings to the file"
619
  msgstr ""
620
 
621
+ #: ../cerber-tools.php:35
622
+ msgid ""
623
+ "When you click the button below you will get a configuration file, which you "
624
+ "can upload on another site."
625
  msgstr ""
626
 
627
+ #: ../cerber-tools.php:36
628
+ msgid "What do you want to export?"
629
  msgstr ""
630
 
631
+ #: ../cerber-tools.php:37 ../cerber-tools.php:48 ../nexus/cerber-nexus.php:93 ..
632
+ #: /dashboard.php:4849 ../dashboard.php:4910
633
+ msgid "Settings"
634
  msgstr ""
635
 
636
+ #: ../cerber-tools.php:38 ../cerber-tools.php:49 ../dashboard.php:4780
637
+ msgid "Access Lists"
638
  msgstr ""
639
 
640
+ #: ../cerber-tools.php:39
641
+ msgid "Download file"
642
  msgstr ""
643
 
644
+ #: ../cerber-tools.php:43
645
+ msgid "Import settings from the file"
646
  msgstr ""
647
 
648
+ #: ../cerber-tools.php:44
649
+ msgid ""
650
+ "When you click the button below, file will be uploaded and all existing "
651
+ "settings will be overridden."
652
  msgstr ""
653
 
654
+ #: ../cerber-tools.php:45
655
+ msgid "Select file to import."
656
  msgstr ""
657
 
658
+ #: ../cerber-tools.php:45 ../admin/cerber-admin.php:246
659
+ #, php-format
660
+ msgid "Maximum upload file size: %s."
661
  msgstr ""
662
 
663
+ #: ../cerber-tools.php:48
664
+ msgid "What do you want to import?"
665
  msgstr ""
666
 
667
+ #: ../cerber-tools.php:50 ../admin/cerber-admin.php:249
668
+ msgid "Upload file"
669
  msgstr ""
670
 
671
+ #: ../cerber-tools.php:52
672
+ msgid "Load the default plugin settings"
673
  msgstr ""
674
 
675
+ #: ../cerber-tools.php:53
676
+ msgid ""
677
+ "When you click the button below, the default WP Cerber settings will be "
678
+ "loaded. The Custom login URL and Access Lists will not be changed."
679
  msgstr ""
680
 
681
+ #: ../cerber-tools.php:54
682
+ msgid "To get the most out of WP Cerber, follow these steps:"
683
  msgstr ""
684
 
685
+ #: ../cerber-tools.php:57
686
+ msgid "Load default settings"
687
  msgstr ""
688
 
689
+ #: ../cerber-tools.php:59 ../admin/cerber-admin.php:729 ../admin/cerber-admin.php:
690
+ #: 896 ../dashboard.php:5272
691
+ msgid "Are you sure?"
692
  msgstr ""
693
 
694
+ #: ../cerber-tools.php:69 ../dashboard.php:255 ../dashboard.php:1344 ../dashboard.
695
+ #: php:1393 ../dashboard.php:1766
696
+ msgid "White IP Access List"
697
  msgstr ""
698
 
699
+ #: ../cerber-tools.php:70 ../dashboard.php:258 ../dashboard.php:1347 ../dashboard.
700
+ #: php:1396 ../dashboard.php:1767
701
+ msgid "Black IP Access List"
702
  msgstr ""
703
 
704
+ #: ../cerber-tools.php:72
705
+ msgid "Load entries"
706
  msgstr ""
707
 
708
+ #: ../cerber-tools.php:189
709
+ msgid "No file was uploaded or file is corrupted"
710
  msgstr ""
711
 
712
+ #: ../cerber-tools.php:228
713
+ msgid "A database error occurred while importing access list entries"
714
  msgstr ""
715
 
716
+ #: ../cerber-tools.php:236
717
+ msgid "Settings has imported successfully from"
718
  msgstr ""
719
 
720
+ #: ../cerber-tools.php:243
721
+ msgid "Error while parsing file"
722
  msgstr ""
723
 
724
+ #: ../cerber-tools.php:320
725
+ msgid "Unsubscribe"
726
  msgstr ""
727
 
728
+ #: ../cerber-lab.php:837
729
+ msgid "Want to make WP Cerber even more powerful?"
730
  msgstr ""
731
 
732
+ #: ../cerber-lab.php:838
733
+ msgid ""
734
+ "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
735
+ "This helps the plugin team to develop new algorithms for WP Cerber that will "
736
+ "defend WordPress against new threats and botnets that are appearing "
737
+ "everyday. You can disable the sending in the plugin settings at any time."
738
  msgstr ""
739
 
740
+ #: ../cerber-lab.php:839
741
+ msgid "OK, nail them all"
742
  msgstr ""
743
 
744
+ #: ../cerber-lab.php:840
745
+ msgid "NO, maybe later"
 
746
  msgstr ""
747
 
748
+ #: ../cerber-lab.php:841 ../admin/cerber-settings.php:100 ../admin/cerber-
749
+ #: settings.php:270
750
+ msgid "Know more"
751
  msgstr ""
752
 
753
+ #: ../nexus/cerber-nexus-master.php:67
754
+ msgid "Show homepage in the Website column"
755
  msgstr ""
756
 
757
+ #: ../nexus/cerber-nexus-master.php:69
758
+ msgid "Hide server IP address"
759
  msgstr ""
760
 
761
+ #: ../nexus/cerber-nexus-master.php:96
762
+ msgid "Select an existing group or enter a new one to add it"
763
  msgstr ""
764
 
765
+ #: ../nexus/cerber-nexus-master.php:104
766
+ msgid "Website Properties"
767
  msgstr ""
768
 
769
+ #: ../nexus/cerber-nexus-master.php:114
770
+ msgid "Website URL"
771
  msgstr ""
772
 
773
+ #: ../nexus/cerber-nexus-master.php:119
774
+ msgid "Display as"
775
  msgstr ""
776
 
777
+ #: ../nexus/cerber-nexus-master.php:127 ../nexus/cerber-slave-list.php:54
778
+ msgid "Group"
779
  msgstr ""
780
 
781
+ #: ../nexus/cerber-nexus-master.php:141 ../nexus/cerber-slave-list.php:56
782
+ msgid "Notes"
783
  msgstr ""
784
 
785
+ #: ../nexus/cerber-nexus-master.php:149
786
+ msgid "Website Owner"
787
  msgstr ""
788
 
789
+ #: ../nexus/cerber-nexus-master.php:153
790
+ msgid "First Name"
791
  msgstr ""
792
 
793
+ #: ../nexus/cerber-nexus-master.php:157
794
+ msgid "Last Name"
795
  msgstr ""
796
 
797
+ #: ../nexus/cerber-nexus-master.php:161
798
+ msgid "Email"
799
  msgstr ""
800
 
801
+ #: ../nexus/cerber-nexus-master.php:165
802
+ msgid "Phone"
803
  msgstr ""
804
 
805
+ #: ../nexus/cerber-nexus-master.php:169
806
+ msgid "Company"
807
  msgstr ""
808
 
809
+ #: ../nexus/cerber-nexus-master.php:173
810
+ msgid "Address"
811
  msgstr ""
812
 
813
+ #: ../nexus/cerber-nexus-master.php:286
814
+ msgid "Security access token is invalid"
815
  msgstr ""
816
 
817
+ #: ../nexus/cerber-nexus-master.php:316
818
+ msgid "The website you are trying to add is already in the list"
819
  msgstr ""
820
 
821
+ #: ../nexus/cerber-nexus-master.php:325
822
+ msgid "The website has been added successfully"
823
  msgstr ""
824
 
825
+ #: ../nexus/cerber-nexus-master.php:326
826
+ msgid "Click to edit"
827
  msgstr ""
828
 
829
+ #: ../nexus/cerber-nexus-master.php:327
830
+ msgid "Switch to the Dashboard"
831
  msgstr ""
832
 
833
+ #: ../nexus/cerber-nexus-master.php:330
834
+ msgid ""
835
+ "Keep in mind: You have added the website that does not support SSL "
836
+ "encryption. This may lead to data leakage."
837
  msgstr ""
838
 
839
+ #: ../nexus/cerber-nexus-master.php:449
840
+ #, php-format
841
+ msgid "Website has been deleted"
842
+ msgid_plural "%s websites have been deleted"
843
+ msgstr[0] ""
844
+ msgstr[1] ""
845
+
846
+ #: ../nexus/cerber-nexus-master.php:693
847
+ msgid "Invalid response from the slave website"
848
  msgstr ""
849
 
850
+ #: ../nexus/cerber-nexus-master.php:1025
851
+ #, php-format
852
+ msgid "You have switched to %s"
853
  msgstr ""
854
 
855
+ #: ../nexus/cerber-nexus-master.php:1035
856
+ msgid "You have switched back to the master website"
857
  msgstr ""
858
 
859
+ #: ../nexus/cerber-nexus-master.php:1251
860
+ msgid "You are here:"
861
  msgstr ""
862
 
863
+ #: ../nexus/cerber-nexus-master.php:1254 ../nexus/cerber-nexus.php:92 ..
864
+ #: /nexus/cerber-nexus.php:102
865
+ msgid "My Websites"
866
  msgstr ""
867
 
868
+ #: ../nexus/cerber-nexus-master.php:1269
869
+ msgid "Visit Site"
870
  msgstr ""
871
 
872
+ #: ../nexus/cerber-nexus-master.php:1335
873
+ msgid "Are you sure you want to delete selected websites?"
874
  msgstr ""
875
 
876
+ #: ../nexus/cerber-nexus-master.php:1379
877
+ msgid "A newer version is available"
878
  msgstr ""
879
 
880
+ #: ../nexus/cerber-nexus-master.php:1401 ../nexus/cerber-nexus-master.php:1409
881
+ msgid "Active plugins and updates on"
882
  msgstr ""
883
 
884
+ #: ../nexus/cerber-slave-list.php:47
885
+ msgid "WordPress"
 
 
 
 
 
886
  msgstr ""
887
 
888
+ #: ../nexus/cerber-slave-list.php:50
889
+ msgid "Updates"
890
  msgstr ""
891
 
892
+ #: ../nexus/cerber-slave-list.php:51
893
+ msgid "Malware Scan"
894
  msgstr ""
895
 
896
+ #: ../nexus/cerber-slave-list.php:52
897
+ msgid "Server"
898
  msgstr ""
899
 
900
+ #: ../nexus/cerber-slave-list.php:53
901
+ msgid "Server Country"
902
  msgstr ""
903
 
904
+ #: ../nexus/cerber-slave-list.php:55
905
+ msgid "Owner"
906
  msgstr ""
907
 
908
+ #: ../nexus/cerber-slave-list.php:117
909
+ msgid "Upgrade WP Cerber"
910
  msgstr ""
911
 
912
+ #: ../nexus/cerber-slave-list.php:118
913
+ msgid "Upgrade all active plugins"
914
  msgstr ""
915
 
916
+ #: ../nexus/cerber-slave-list.php:119
917
+ msgid "Delete website"
 
 
 
 
 
 
 
918
  msgstr ""
919
 
920
+ #: ../nexus/cerber-slave-list.php:135
921
+ msgid "All groups"
922
  msgstr ""
923
 
924
+ #: ../nexus/cerber-slave-list.php:145
925
+ msgid "All servers"
926
  msgstr ""
927
 
928
+ #: ../nexus/cerber-slave-list.php:152
929
+ msgid "All countries"
930
  msgstr ""
931
 
932
+ #: ../nexus/cerber-slave-list.php:161
933
+ msgid "Add a slave website"
934
  msgstr ""
935
 
936
+ #: ../nexus/cerber-slave-list.php:247 ../cerber-users.php:1085
937
+ msgid "Search results for:"
938
  msgstr ""
939
 
940
+ #: ../nexus/cerber-slave-list.php:282
941
+ msgid "Edit"
942
  msgstr ""
943
 
944
+ #: ../nexus/cerber-slave-list.php:288
945
+ msgid "Switch to"
946
  msgstr ""
947
 
948
+ #: ../nexus/cerber-slave-list.php:333 ../dashboard.php:434 ../dashboard.php:3710 .
949
+ #: ./dashboard.php:4277 ../common.php:1528 ../whois.php:222 ../whois.php:253
950
+ msgid "Unknown"
951
  msgstr ""
952
 
953
+ #: ../nexus/cerber-slave-list.php:340 ../admin/cerber-admin.php:67
954
+ msgid "Vulnerabilities"
955
  msgstr ""
956
 
957
+ #: ../nexus/cerber-slave-list.php:347 ../dashboard.php:1649 ../dashboard.php:1740
958
+ #: ../dashboard.php:1789 ../common.php:1666
959
+ msgid "Never"
960
  msgstr ""
961
 
962
+ #: ../nexus/cerber-slave-list.php:420
963
+ msgid "No websites configured."
964
  msgstr ""
965
 
966
+ #: ../nexus/cerber-slave-list.php:420
967
+ msgid "Add a new one"
968
  msgstr ""
969
 
970
+ #: ../nexus/cerber-slave-list.php:420
971
+ msgid "Disable master mode"
972
  msgstr ""
973
 
974
+ #: ../nexus/cerber-nexus.php:64
975
+ msgid "Enable slave mode"
976
  msgstr ""
977
 
978
+ #: ../nexus/cerber-nexus.php:65
979
+ msgid "This website can be managed from a master website"
980
  msgstr ""
981
 
982
+ #: ../nexus/cerber-nexus.php:68
983
+ msgid "Enable master mode"
984
  msgstr ""
985
 
986
+ #: ../nexus/cerber-nexus.php:69
987
+ msgid "Configure this website as a master to manage other website"
988
  msgstr ""
989
 
990
+ #: ../nexus/cerber-nexus.php:74
991
+ msgid "To proceed, please select the mode for this website"
992
  msgstr ""
993
 
994
+ #: ../nexus/cerber-nexus.php:98 ../nexus/cerber-nexus.php:102
995
+ msgid "Slave Settings"
996
  msgstr ""
997
 
998
+ #: ../nexus/cerber-nexus.php:144
999
+ msgid "Secret Access Token"
1000
  msgstr ""
1001
 
1002
+ #: ../nexus/cerber-nexus.php:146
1003
+ msgid ""
1004
+ "The token is unique to this website. Keep it secret. Install the token on a "
1005
+ "master website to grant access to this website."
1006
  msgstr ""
1007
 
1008
+ #: ../nexus/cerber-nexus.php:148
1009
+ msgid "Are you sure? This permanently invalidates the token."
1010
  msgstr ""
1011
 
1012
+ #: ../nexus/cerber-nexus.php:149
1013
+ msgid "To revoke the token and disable remote management, click here:"
1014
  msgstr ""
1015
 
1016
+ #: ../nexus/cerber-nexus.php:149
1017
+ msgid "Disable slave mode"
1018
  msgstr ""
1019
 
1020
+ #: ../nexus/cerber-nexus.php:264
1021
+ msgid "This website is set as master."
1022
  msgstr ""
1023
 
1024
+ #: ../nexus/cerber-nexus.php:265
1025
+ msgid "Add slave websites by using access tokens."
1026
  msgstr ""
1027
 
1028
+ #: ../nexus/cerber-nexus.php:268
1029
+ msgid "This website is set as slave."
1030
  msgstr ""
1031
 
1032
+ #: ../nexus/cerber-nexus.php:269
1033
+ msgid "Install the access token on the master website."
1034
  msgstr ""
1035
 
1036
+ #: ../nexus/cerber-nexus-slave.php:436
1037
+ msgid "Settings updated"
1038
  msgstr ""
1039
 
1040
+ #: ../cerber-addons.php:289 ../dashboard.php:80 ../dashboard.php:80
1041
+ msgid "Add-ons"
1042
  msgstr ""
1043
 
1044
+ #: ../cerber-users.php:10 ../cerber-users.php:439
1045
+ msgid "Two-Factor Authentication"
1046
  msgstr ""
1047
 
1048
+ #: ../cerber-users.php:18
1049
+ msgid "Determined by user role policies"
1050
  msgstr ""
1051
 
1052
+ #: ../cerber-users.php:19 ../cerber-users.php:447
1053
+ msgid "Always enabled"
1054
  msgstr ""
1055
 
1056
+ #: ../cerber-users.php:39
1057
+ msgid "Block User"
1058
  msgstr ""
1059
 
1060
+ #: ../cerber-users.php:43 ../cerber-users.php:49
1061
+ msgid "User is not permitted to log into the website"
1062
  msgstr ""
1063
 
1064
+ #: ../cerber-users.php:52 ../cerber-users.php:1130 ../dashboard.php:1688
1065
+ msgid "You"
1066
  msgstr ""
1067
 
1068
+ #: ../cerber-users.php:58
1069
+ #, php-format
1070
+ msgctxt "e.g. blocked by John at 11:00"
1071
+ msgid "blocked by %s at %s"
1072
  msgstr ""
1073
 
1074
+ #: ../cerber-users.php:68 ../settings.php:535
1075
+ msgid "User Message"
1076
  msgstr ""
1077
 
1078
+ #: ../cerber-users.php:70
1079
+ msgid "An optional message for this user"
1080
  msgstr ""
1081
 
1082
+ #: ../cerber-users.php:75
1083
+ msgid "Admin Note"
1084
  msgstr ""
1085
 
1086
+ #: ../cerber-users.php:86
1087
+ msgid "2FA PIN Code"
1088
  msgstr ""
1089
 
1090
+ #: ../cerber-users.php:101
1091
+ msgid "Two-Factor Authentication Email"
1092
  msgstr ""
1093
 
1094
+ #: ../cerber-users.php:181
1095
+ msgid "Blocked Users"
1096
  msgstr ""
1097
 
1098
+ #: ../cerber-users.php:213
1099
+ msgid "Block"
1100
  msgstr ""
1101
 
1102
+ #: ../cerber-users.php:288
1103
+ msgid "Save All Changes"
1104
  msgstr ""
1105
 
1106
+ #: ../cerber-users.php:401
1107
+ msgid "Block access to WordPress Dashboard"
1108
  msgstr ""
1109
 
1110
+ #: ../cerber-users.php:406
1111
+ msgid "Hide Toolbar when viewing site"
1112
  msgstr ""
1113
 
1114
+ #: ../cerber-users.php:412
1115
+ msgid "Redirection rules"
1116
  msgstr ""
1117
 
1118
+ #: ../cerber-users.php:416
1119
+ msgid "Redirect user after login"
1120
  msgstr ""
1121
 
1122
+ #: ../cerber-users.php:421
1123
+ msgid "Redirect user after logout"
1124
  msgstr ""
1125
 
1126
+ #: ../cerber-users.php:432 ../settings.php:597
1127
+ msgid "User session expiration time"
1128
  msgstr ""
1129
 
1130
+ #: ../cerber-users.php:443
1131
+ msgid "Two-factor authentication"
1132
  msgstr ""
1133
 
1134
+ #: ../cerber-users.php:448
1135
+ msgid "Advanced mode"
1136
  msgstr ""
1137
 
1138
+ #: ../cerber-users.php:452
1139
+ msgid "Enforce two-factor authentication if any of the following conditions is true"
 
 
 
 
 
 
 
 
1140
  msgstr ""
1141
 
1142
+ #: ../cerber-users.php:458
1143
+ msgid "Login from a different country"
1144
  msgstr ""
1145
 
1146
+ #: ../cerber-users.php:464
1147
+ msgid "Login from a different network Class C"
1148
  msgstr ""
1149
 
1150
+ #: ../cerber-users.php:470
1151
+ msgid "Login from a different IP address"
1152
  msgstr ""
1153
 
1154
+ #: ../cerber-users.php:476
1155
+ msgid "Using a different browser or device"
1156
  msgstr ""
1157
 
1158
+ #: ../cerber-users.php:482
1159
+ msgid "Enforce two-factor authentication with fixed intervals"
1160
  msgstr ""
1161
 
1162
+ #: ../cerber-users.php:488
1163
+ msgid "Regular time intervals (days)"
1164
  msgstr ""
1165
 
1166
+ #: ../cerber-users.php:490
1167
+ msgid "days interval"
1168
  msgstr ""
1169
 
1170
+ #: ../cerber-users.php:495
1171
+ msgid "Fixed number of logins"
1172
  msgstr ""
1173
 
1174
+ #: ../cerber-users.php:497
1175
+ msgid "number of logins"
1176
  msgstr ""
1177
 
1178
+ #: ../cerber-users.php:541
1179
+ msgid "Policies have been updated"
1180
  msgstr ""
1181
 
1182
+ #: ../cerber-users.php:613
 
1183
  #, php-format
1184
+ msgid "Session has been terminated"
1185
+ msgid_plural "%s sessions have been terminated"
1186
  msgstr[0] ""
1187
  msgstr[1] ""
1188
 
1189
+ #: ../cerber-users.php:944
1190
+ msgid "WP Cerber Personal Data Eraser"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1191
  msgstr ""
1192
 
1193
+ #: ../cerber-users.php:973
1194
+ msgid "Created"
1195
  msgstr ""
1196
 
1197
+ #: ../cerber-users.php:974 ../dashboard.php:199
1198
+ msgid "Expires"
1199
  msgstr ""
1200
 
1201
+ #: ../cerber-users.php:975 ../dashboard.php:196 ../dashboard.php:846 ../dashboard.
1202
+ #: php:1101 ../dashboard.php:4033
1203
+ msgid "IP Address"
1204
  msgstr ""
1205
 
1206
+ #: ../cerber-users.php:976 ../dashboard.php:4034
1207
+ msgid "Host Info"
1208
  msgstr ""
1209
 
1210
+ #: ../cerber-users.php:977 ../admin/cerber-admin.php:765 ../admin/cerber-admin.
1211
+ #: php:920 ../dashboard.php:201
1212
+ msgid "Action"
1213
  msgstr ""
1214
 
1215
+ #: ../cerber-users.php:994
1216
+ msgid "Terminate session"
1217
  msgstr ""
1218
 
1219
+ #: ../cerber-users.php:995
1220
+ msgid "Block user"
 
1221
  msgstr ""
1222
 
1223
+ #: ../cerber-users.php:1019 ../dashboard.php:1144
1224
+ msgid "Filter by registered user"
1225
  msgstr ""
1226
 
1227
+ #: ../cerber-users.php:1022
1228
+ msgid "Search for IP address"
1229
  msgstr ""
1230
 
1231
+ #: ../cerber-users.php:1127
1232
+ msgid "Profile"
1233
  msgstr ""
1234
 
1235
+ #: ../cerber-users.php:1140
1236
+ msgid "All Logins"
 
 
1237
  msgstr ""
1238
 
1239
+ #: ../cerber-users.php:1141
1240
+ msgid "User Activity"
 
1241
  msgstr ""
1242
 
1243
+ #: ../cerber-users.php:1164 ../dashboard.php:1810
1244
+ msgid "Traffic"
1245
  msgstr ""
1246
 
1247
+ #: ../cerber-users.php:1187
1248
+ msgid "Terminate"
1249
  msgstr ""
1250
 
1251
  #: ../admin/cerber-admin.php:43
1256
  msgid "Finished"
1257
  msgstr ""
1258
 
1259
+ #: ../admin/cerber-admin.php:51 ../settings.php:259
1260
  msgid "Duration"
1261
  msgstr ""
1262
 
1264
  msgid "Performance"
1265
  msgstr ""
1266
 
 
 
 
 
1267
  #: ../admin/cerber-admin.php:71
1268
  msgid "New files"
1269
  msgstr ""
1272
  msgid "Changed files"
1273
  msgstr ""
1274
 
 
 
 
 
1275
  #: ../admin/cerber-admin.php:83
1276
  msgid "Unwanted extensions"
1277
  msgstr ""
1280
  msgid "Unattended files"
1281
  msgstr ""
1282
 
1283
+ #: ../admin/cerber-admin.php:96 ../admin/cerber-admin.php:760
1284
  msgid "Scanned"
1285
  msgstr ""
1286
 
1292
  msgid "Critical issues"
1293
  msgstr ""
1294
 
 
 
 
 
1295
  #: ../admin/cerber-admin.php:164
1296
  msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1297
  msgstr ""
1342
  "malware."
1343
  msgstr ""
1344
 
1345
+ #: ../admin/cerber-admin.php:353
 
 
 
 
 
 
 
 
 
1346
  msgid ""
1347
  "File access error. Possibly scan results are outdated. Please run Quick or "
1348
  "Full Scan."
1349
  msgstr ""
1350
 
1351
+ #: ../admin/cerber-admin.php:704
1352
  msgid "There are no files in the quarantine at the moment."
1353
  msgstr ""
1354
 
1355
+ #: ../admin/cerber-admin.php:721
1356
  msgid "No files match the specified filter."
1357
  msgstr ""
1358
 
1359
+ #: ../admin/cerber-admin.php:721
1360
  msgid "Click here to see the full list of files"
1361
  msgstr ""
1362
 
1363
+ #: ../admin/cerber-admin.php:739
1364
  msgid "Delete permanently"
1365
  msgstr ""
1366
 
1367
+ #: ../admin/cerber-admin.php:742
1368
  msgid "Restore"
1369
  msgstr ""
1370
 
1371
+ #: ../admin/cerber-admin.php:761
1372
  msgid "Quarantined"
1373
  msgstr ""
1374
 
1375
+ #: ../admin/cerber-admin.php:762
1376
  msgid "Automatic deletion"
1377
  msgstr ""
1378
 
1379
+ #: ../admin/cerber-admin.php:763 ../admin/cerber-admin.php:918 ../admin/cerber-
1380
+ #: admin.php:1326
1381
  msgid "Size"
1382
  msgstr ""
1383
 
1384
+ #: ../admin/cerber-admin.php:764 ../admin/cerber-admin.php:919
1385
  msgid "File"
1386
  msgstr ""
1387
 
1388
+ #: ../admin/cerber-admin.php:775
1389
  msgid "All scans"
1390
  msgstr ""
1391
 
1392
+ #: ../admin/cerber-admin.php:837
1393
  msgid "The file has been deleted permanently."
1394
  msgstr ""
1395
 
1396
+ #: ../admin/cerber-admin.php:852
1397
  msgid "The file has been restored to its original location."
1398
  msgstr ""
1399
 
1400
+ #: ../admin/cerber-admin.php:876
1401
  msgid "Apply"
1402
  msgstr ""
1403
 
1404
+ #: ../admin/cerber-admin.php:877 ../admin/cerber-admin.php:904
1405
  msgid "Remove from the list"
1406
  msgstr ""
1407
 
1408
+ #: ../admin/cerber-admin.php:878
1409
  msgid "User Insights"
1410
  msgstr ""
1411
 
1412
+ #: ../admin/cerber-admin.php:879
1413
  msgid "Traffic Insights"
1414
  msgstr ""
1415
 
1416
+ #: ../admin/cerber-admin.php:880
1417
  msgid "Activity Insights"
1418
  msgstr ""
1419
 
1420
+ #: ../admin/cerber-admin.php:882
1421
  msgid "The list is empty."
1422
  msgstr ""
1423
 
1424
+ #: ../admin/cerber-admin.php:916
1425
  msgid "Added"
1426
  msgstr ""
1427
 
1428
+ #: ../admin/cerber-admin.php:917 ../admin/cerber-admin.php:1327
1429
  msgid "Modified"
1430
  msgstr ""
1431
 
1432
+ #: ../admin/cerber-admin.php:991
1433
  msgid "Files without extension"
1434
  msgstr ""
1435
 
1436
+ #: ../admin/cerber-admin.php:992
1437
  msgid "Back to list"
1438
  msgstr ""
1439
 
1440
+ #: ../admin/cerber-admin.php:1052
1441
  msgid "Brief summary"
1442
  msgstr ""
1443
 
1444
+ #: ../admin/cerber-admin.php:1103
1445
  msgid "Folder"
1446
  msgstr ""
1447
 
1448
+ #: ../admin/cerber-admin.php:1104
1449
  msgid "Path"
1450
  msgstr ""
1451
 
1452
+ #: ../admin/cerber-admin.php:1105 ../admin/cerber-admin.php:1199
1453
  msgid "Files"
1454
  msgstr ""
1455
 
1456
+ #: ../admin/cerber-admin.php:1106 ../admin/cerber-admin.php:1200
1457
  msgid "Space Occupied"
1458
  msgstr ""
1459
 
1460
+ #: ../admin/cerber-admin.php:1170
1461
  msgid "No extension"
1462
  msgstr ""
1463
 
1464
+ #: ../admin/cerber-admin.php:1195
1465
  msgid "File extensions statistics"
1466
  msgstr ""
1467
 
1468
+ #: ../admin/cerber-admin.php:1198
1469
  msgid "Extension"
1470
  msgstr ""
1471
 
1472
+ #: ../admin/cerber-admin.php:1201
1473
  msgid "Smallest"
1474
  msgstr ""
1475
 
1476
+ #: ../admin/cerber-admin.php:1202
1477
  msgid "Largest"
1478
  msgstr ""
1479
 
1480
+ #: ../admin/cerber-admin.php:1203
1481
  msgid "Average Size"
1482
  msgstr ""
1483
 
1484
+ #: ../admin/cerber-admin.php:1204
1485
  msgid "Oldest"
1486
  msgstr ""
1487
 
1488
+ #: ../admin/cerber-admin.php:1205
1489
  msgid "Newest"
1490
  msgstr ""
1491
 
1492
+ #: ../admin/cerber-admin.php:1221
1493
  msgid "Top 10 largest files"
1494
  msgstr ""
1495
 
1496
+ #: ../admin/cerber-admin.php:1325
1497
  msgid "File Name"
1498
  msgstr ""
1499
 
1500
+ #: ../admin/cerber-settings.php:352
1501
+ #, php-format
1502
+ msgid "%s retries are allowed within %s minutes"
1503
  msgstr ""
1504
 
1505
+ #: ../admin/cerber-settings.php:358
1506
+ #, php-format
1507
+ msgid "%s registrations are allowed within %s minutes from one IP address"
 
 
 
1508
  msgstr ""
1509
 
1510
+ #: ../admin/cerber-settings.php:364
1511
+ #, php-format
1512
+ msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1513
  msgstr ""
1514
 
1515
+ #: ../admin/cerber-settings.php:372
1516
+ msgid "Notify admin if the number of active lockouts above"
1517
  msgstr ""
1518
 
1519
+ #: ../admin/cerber-settings.php:377 ../settings.php:271
1520
+ msgid "Click to send test"
1521
  msgstr ""
1522
 
1523
+ #: ../admin/cerber-settings.php:381
1524
  #, php-format
1525
+ msgid "Enable after %s failed login attempts in the last %s minutes"
 
 
1526
  msgstr ""
1527
 
1528
+ #: ../admin/cerber-settings.php:517
1529
+ msgid "Select one or more roles"
1530
  msgstr ""
1531
 
1532
+ #: ../admin/cerber-settings.php:541
1533
+ msgid "Sunday"
 
 
 
 
 
 
 
 
 
1534
  msgstr ""
1535
 
1536
+ #: ../admin/cerber-settings.php:542
1537
+ msgid "Monday"
 
 
1538
  msgstr ""
1539
 
1540
+ #: ../admin/cerber-settings.php:543
1541
+ msgid "Tuesday"
 
 
 
1542
  msgstr ""
1543
 
1544
+ #: ../admin/cerber-settings.php:544
1545
+ msgid "Wednesday"
 
1546
  msgstr ""
1547
 
1548
+ #: ../admin/cerber-settings.php:545
1549
+ msgid "Thursday"
1550
  msgstr ""
1551
 
1552
+ #: ../admin/cerber-settings.php:546
1553
+ msgid "Friday"
 
 
 
 
 
 
 
 
1554
  msgstr ""
1555
 
1556
+ #: ../admin/cerber-settings.php:547
1557
+ msgid "Saturday"
1558
  msgstr ""
1559
 
1560
+ #: ../admin/cerber-settings.php:557
1561
+ msgctxt "preposition of time like: at 11:00"
1562
+ msgid "at"
1563
  msgstr ""
1564
 
1565
+ #: ../admin/cerber-settings.php:576
1566
+ msgid "Click to send now"
1567
  msgstr ""
1568
 
1569
+ #: ../admin/cerber-settings.php:628 ../dashboard.php:3162
1570
+ msgid "Save Changes"
 
1571
  msgstr ""
1572
 
1573
+ #: ../admin/cerber-settings.php:654
1574
+ msgid "Plugin initialization mode has not been changed"
 
1575
  msgstr ""
1576
 
1577
+ #: ../admin/cerber-settings.php:681 ../admin/cerber-settings.php:682
1578
+ msgid "Attention! You have changed the login URL! The new login URL is"
1579
  msgstr ""
1580
 
1581
+ #: ../admin/cerber-settings.php:683 ../admin/cerber-settings.php:684
1582
+ msgid ""
1583
+ "If you use a caching plugin, you have to add your new login URL to the list "
1584
+ "of pages not to cache."
1585
  msgstr ""
1586
 
1587
+ #: ../admin/cerber-settings.php:777 ../admin/cerber-settings.php:789 ..
1588
+ #: /admin/cerber-settings.php:949
1589
+ msgid "<strong>ERROR</strong>: please enter a valid email address."
1590
  msgstr ""
1591
 
1592
+ #: ../admin/cerber-settings.php:955
1593
+ msgid "The schedule has been updated"
1594
  msgstr ""
1595
 
1596
+ #: ../admin/cerber-settings.php:958
1597
+ msgid "Unable to update the schedule"
 
1598
  msgstr ""
1599
 
1600
+ #. Description of the plugin
1601
+ msgid ""
1602
+ "This is a standard boot module for WP Cerber Security & Antispam plugin. It "
1603
+ "was installed when you set the plugin initialization mode to Standard. Know "
1604
+ "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1605
  msgstr ""
1606
 
1607
+ #: ../dashboard.php:55
1608
+ msgid "Cerber Dashboard"
1609
  msgstr ""
1610
 
1611
+ #: ../dashboard.php:55 ../dashboard.php:1808 ../dashboard.php:2691 ../dashboard.
1612
+ #: php:4775
1613
+ msgid "Dashboard"
1614
  msgstr ""
1615
 
1616
+ #: ../dashboard.php:57
1617
+ msgid "Cerber Traffic Inspector"
1618
  msgstr ""
1619
 
1620
+ #: ../dashboard.php:57 ../dashboard.php:1771 ../dashboard.php:4846
1621
+ msgid "Traffic Inspector"
 
1622
  msgstr ""
1623
 
1624
+ #: ../dashboard.php:61
1625
+ msgid "Cerber Data Shield Policies"
1626
  msgstr ""
1627
 
1628
+ #: ../dashboard.php:61
1629
+ msgid "Data Shield"
1630
  msgstr ""
1631
 
1632
+ #: ../dashboard.php:62
1633
+ msgid "Cerber Security Rules"
1634
  msgstr ""
1635
 
1636
+ #: ../dashboard.php:62 ../dashboard.php:4892
1637
+ msgid "Security Rules"
1638
  msgstr ""
1639
 
1640
+ #: ../dashboard.php:65
1641
+ msgid "Cerber User Security"
1642
  msgstr ""
1643
 
1644
+ #: ../dashboard.php:65 ../dashboard.php:4872
1645
+ msgid "User Policies"
1646
  msgstr ""
1647
 
1648
+ #: ../dashboard.php:68 ../dashboard.php:4907
1649
+ msgid "Site Integrity"
1650
  msgstr ""
1651
 
1652
+ #: ../dashboard.php:72
1653
+ msgid "Cerber anti-spam settings"
1654
  msgstr ""
1655
 
1656
+ #: ../dashboard.php:72 ../settings.php:1166
1657
+ msgid "Anti-spam"
1658
  msgstr ""
1659
 
1660
+ #: ../dashboard.php:83
1661
+ msgid "Cerber tools"
1662
  msgstr ""
1663
 
1664
+ #: ../dashboard.php:83 ../dashboard.php:4961
1665
+ msgid "Tools"
1666
  msgstr ""
1667
 
1668
+ #: ../dashboard.php:191 ../dashboard.php:309
1669
+ msgid "Remove"
1670
  msgstr ""
1671
 
1672
+ #: ../dashboard.php:197 ../dashboard.php:1102
1673
+ msgid "Hostname"
1674
  msgstr ""
1675
 
1676
+ #: ../dashboard.php:198 ../dashboard.php:1103
1677
+ msgid "Country"
1678
  msgstr ""
1679
 
1680
+ #: ../dashboard.php:217
1681
+ #, php-format
1682
+ msgid "Showing last %d records from %d"
1683
  msgstr ""
1684
 
1685
+ #: ../dashboard.php:219
1686
+ msgid "Hint"
1687
  msgstr ""
1688
 
1689
+ #: ../dashboard.php:219
1690
+ msgid "To view activity, click on the IP"
 
1691
  msgstr ""
1692
 
1693
+ #: ../dashboard.php:223
1694
+ msgid "No lockouts at the moment. The sky is clear."
1695
  msgstr ""
1696
 
1697
+ #: ../dashboard.php:265
1698
+ msgid "Your IP"
1699
  msgstr ""
1700
 
1701
+ #: ../dashboard.php:305 ../dashboard.php:1384 ../dashboard.php:1439 ../dashboard.
1702
+ #: php:1580
1703
+ msgid "Check for activities"
1704
  msgstr ""
1705
 
1706
+ #: ../dashboard.php:315
1707
+ msgid "List is empty"
1708
  msgstr ""
1709
 
1710
+ #: ../dashboard.php:321
1711
+ msgid "IP address, range, wildcard, or CIDR"
1712
  msgstr ""
1713
 
1714
+ #: ../dashboard.php:322
1715
+ msgid "Add Entry"
1716
  msgstr ""
1717
 
1718
+ #: ../dashboard.php:323
1719
+ msgid "Optional comment for this entry"
1720
  msgstr ""
1721
 
1722
+ #: ../dashboard.php:345
1723
+ msgid "You cannot add your IP address or network"
1724
  msgstr ""
1725
 
1726
+ #: ../dashboard.php:349
1727
  #, php-format
1728
+ msgid "IP address %s has been added to Black IP Access List"
1729
  msgstr ""
1730
 
1731
+ #: ../dashboard.php:352
1732
  #, php-format
1733
+ msgid "IP address %s has been added to White IP Access List"
1734
  msgstr ""
1735
 
1736
+ #: ../dashboard.php:514
1737
+ msgid "unknown"
1738
  msgstr ""
1739
 
1740
+ #: ../dashboard.php:576
1741
  #, php-format
1742
+ msgid "Lockout for %s was removed"
1743
  msgstr ""
1744
 
1745
+ #: ../dashboard.php:584
1746
+ msgid "Email has been sent to"
1747
  msgstr ""
1748
 
1749
+ #: ../dashboard.php:587
1750
+ msgid "Unable to send email to"
1751
  msgstr ""
1752
 
1753
+ #: ../dashboard.php:653
1754
+ msgid "Default settings have been loaded"
1755
  msgstr ""
1756
 
1757
+ #: ../dashboard.php:847 ../dashboard.php:1104 ../dashboard.php:3577 ../dashboard.
1758
+ #: php:4031
1759
+ msgid "Date"
1760
  msgstr ""
1761
 
1762
+ #: ../dashboard.php:848 ../dashboard.php:1105
1763
+ msgid "Event"
1764
  msgstr ""
1765
 
1766
+ #: ../dashboard.php:849
1767
+ msgid "Additional Details"
1768
  msgstr ""
1769
 
1770
+ #: ../dashboard.php:850 ../dashboard.php:1106 ../dashboard.php:4036
1771
+ msgid "Local User"
1772
  msgstr ""
1773
 
1774
+ #: ../dashboard.php:851
1775
+ msgid "User login"
1776
  msgstr ""
1777
 
1778
+ #: ../dashboard.php:852 ../dashboard.php:3582
1779
+ msgid "User ID"
 
 
1780
  msgstr ""
1781
 
1782
+ #: ../dashboard.php:853 ../dashboard.php:1107
1783
+ msgid "Username"
1784
  msgstr ""
1785
 
1786
+ #: ../dashboard.php:959 ../dashboard.php:2370
1787
+ msgid "View all"
1788
  msgstr ""
1789
 
1790
+ #: ../dashboard.php:970
1791
+ msgid "New users"
1792
  msgstr ""
1793
 
1794
+ #: ../dashboard.php:976 ../dashboard.php:4062
1795
+ msgid "Suspicious activity"
1796
  msgstr ""
1797
 
1798
+ #: ../dashboard.php:978 ../common.php:1365
1799
+ msgid "IP blocked"
1800
  msgstr ""
1801
 
1802
+ #: ../dashboard.php:980 ../dashboard.php:1764 ../dashboard.php:4064 ../settings.
1803
+ #: php:400 ../settings.php:1085
1804
+ msgid "Logged in users"
1805
  msgstr ""
1806
 
1807
+ #: ../dashboard.php:981 ../dashboard.php:4065
1808
+ msgid "Not logged in visitors"
1809
  msgstr ""
1810
 
1811
+ #: ../dashboard.php:983
1812
+ msgid "My activity"
1813
  msgstr ""
1814
 
1815
+ #: ../dashboard.php:984 ../dashboard.php:4075
1816
+ msgid "My IP"
1817
  msgstr ""
1818
 
1819
+ #: ../dashboard.php:1129 ../dashboard.php:4099
1820
+ msgid "Export"
1821
  msgstr ""
1822
 
1823
+ #: ../dashboard.php:1134
1824
+ msgid "No activity has been logged."
1825
  msgstr ""
1826
 
1827
+ #: ../dashboard.php:1145
1828
+ msgid "Search for IP or username"
1829
  msgstr ""
1830
 
1831
+ #: ../dashboard.php:1148
1832
+ msgid "Request ID"
1833
  msgstr ""
1834
 
1835
+ #: ../dashboard.php:1149
1836
+ msgid "Search in URL"
1837
  msgstr ""
1838
 
1839
+ #: ../dashboard.php:1156
1840
+ msgid "Filter"
1841
  msgstr ""
1842
 
1843
+ #: ../dashboard.php:1400 ../common.php:1424
1844
+ msgid "Locked out"
1845
  msgstr ""
1846
 
1847
+ #: ../dashboard.php:1432
1848
+ msgid "Abuse email:"
1849
  msgstr ""
1850
 
1851
+ #: ../dashboard.php:1438
1852
+ msgid "Network:"
1853
  msgstr ""
1854
 
1855
+ #: ../dashboard.php:1454
1856
+ msgid "Add network to the Black List"
1857
  msgstr ""
1858
 
1859
+ #: ../dashboard.php:1460
1860
+ msgid "Add IP to the Black List"
1861
  msgstr ""
1862
 
1863
+ #: ../dashboard.php:1528 ../dashboard.php:1618
1864
+ msgid "Registered"
1865
  msgstr ""
1866
 
1867
+ #: ../dashboard.php:1540
1868
+ msgid "Activated"
1869
  msgstr ""
1870
 
1871
+ #: ../dashboard.php:1560
1872
+ msgid "Last seen"
1873
  msgstr ""
1874
 
1875
+ #: ../dashboard.php:1564
1876
+ msgid "Active sessions"
1877
  msgstr ""
1878
 
1879
+ #: ../dashboard.php:1615
1880
+ msgid "Comments"
1881
  msgstr ""
1882
 
1883
+ #: ../dashboard.php:1616
1884
+ msgid "Last login"
1885
  msgstr ""
1886
 
1887
+ #: ../dashboard.php:1617
1888
+ msgid "Failed login attempts"
1889
  msgstr ""
1890
 
1891
+ #: ../dashboard.php:1706
1892
+ msgid "Cerber Quick View"
1893
+ msgstr ""
 
 
 
1894
 
1895
+ #: ../dashboard.php:1745 ../dashboard.php:1775
1896
+ msgid "active"
1897
  msgstr ""
1898
 
1899
+ #: ../dashboard.php:1745
1900
+ msgid "deactivate"
1901
  msgstr ""
1902
 
1903
+ #: ../dashboard.php:1749
1904
+ msgid "not active"
1905
  msgstr ""
1906
 
1907
+ #: ../dashboard.php:1752 ../dashboard.php:1770
1908
+ msgid "disabled"
1909
  msgstr ""
1910
 
1911
+ #: ../dashboard.php:1758
1912
+ msgid "failed attempts"
1913
  msgstr ""
1914
 
1915
+ #: ../dashboard.php:1758 ../dashboard.php:1759
1916
+ msgid "in 24 hours"
1917
  msgstr ""
1918
 
1919
+ #: ../dashboard.php:1758 ../dashboard.php:1759
1920
+ msgid "view all"
1921
  msgstr ""
1922
 
1923
+ #: ../dashboard.php:1759
1924
+ msgid "lockouts"
1925
  msgstr ""
1926
 
1927
+ #: ../dashboard.php:1761
1928
+ msgid "Lockouts at the moment"
1929
  msgstr ""
1930
 
1931
+ #: ../dashboard.php:1762
1932
+ msgid "Last lockout"
1933
  msgstr ""
1934
 
1935
+ #: ../dashboard.php:1764
1936
+ msgid "user"
1937
+ msgid_plural "users"
1938
+ msgstr[0] ""
1939
+ msgstr[1] ""
1940
 
1941
+ #: ../dashboard.php:1766 ../dashboard.php:1767 ../dashboard.php:2669
1942
+ msgid "entry"
1943
+ msgid_plural "entries"
1944
+ msgstr[0] ""
1945
+ msgstr[1] ""
1946
 
1947
+ #: ../dashboard.php:1768 ../settings.php:244
1948
+ msgid "Citadel mode"
1949
  msgstr ""
1950
 
1951
+ #: ../dashboard.php:1770
1952
+ msgid "enabled"
 
 
1953
  msgstr ""
1954
 
1955
+ #: ../dashboard.php:1775
1956
+ msgid "no connection"
1957
  msgstr ""
1958
 
1959
+ #: ../dashboard.php:1792
1960
+ msgctxt "Example: Last malware scan: 23 Jan 2018"
1961
+ msgid "Last malware scan"
1962
  msgstr ""
1963
 
1964
+ #: ../dashboard.php:1811
1965
+ msgid "Integrity"
1966
  msgstr ""
1967
 
1968
+ #: ../dashboard.php:1814
1969
+ msgid "A new version is available"
1970
  msgstr ""
1971
 
1972
+ #: ../dashboard.php:2174 ../settings.php:231
1973
+ msgid "My site is behind a reverse proxy"
1974
  msgstr ""
1975
 
1976
+ #: ../dashboard.php:2350
1977
+ msgid "in the last 24 hours"
1978
  msgstr ""
1979
 
1980
+ #: ../dashboard.php:2373
1981
+ msgid "Recently locked out IP addresses"
1982
  msgstr ""
1983
 
1984
+ #: ../dashboard.php:2484
1985
+ msgid "Attention! Citadel mode is now active. Nobody is able to log in."
1986
  msgstr ""
1987
 
1988
+ #: ../dashboard.php:2485
1989
+ msgid "Deactivate"
1990
  msgstr ""
1991
 
1992
+ #: ../dashboard.php:2486 ../dashboard.php:2895
1993
+ msgid "View Activity"
1994
  msgstr ""
1995
 
1996
+ #: ../dashboard.php:2501
1997
+ msgid "Settings saved"
1998
  msgstr ""
1999
 
2000
+ #: ../dashboard.php:2577
2001
+ msgid "Create Alert"
2002
  msgstr ""
2003
 
2004
+ #: ../dashboard.php:2581
2005
+ msgid "Delete Alert"
2006
  msgstr ""
2007
 
2008
+ #: ../dashboard.php:2614
2009
+ msgid "The alert has been created"
2010
  msgstr ""
2011
 
2012
+ #: ../dashboard.php:2618
2013
+ msgid "The alert has been deleted"
2014
  msgstr ""
2015
 
2016
+ #: ../dashboard.php:2692
2017
+ msgid "Main settings"
2018
  msgstr ""
2019
 
2020
+ #: ../dashboard.php:2828
2021
+ msgid "Are you sure you want to delete selected files?"
2022
  msgstr ""
2023
 
2024
+ #: ../dashboard.php:2829
2025
+ msgid "These files have been moved to the quarantine"
2026
  msgstr ""
2027
 
2028
+ #: ../dashboard.php:2832
2029
+ msgid "Do you want to add selected files to the ignore list?"
2030
  msgstr ""
2031
 
2032
+ #: ../dashboard.php:2833
2033
+ msgid "These files have been added to the ignore list"
2034
  msgstr ""
2035
 
2036
+ #: ../dashboard.php:2835
2037
+ msgid "Some errors occurred"
2038
  msgstr ""
2039
 
2040
+ #: ../dashboard.php:2836
2041
+ msgid "All files have been processed"
 
 
2042
  msgstr ""
2043
 
2044
+ #: ../dashboard.php:2897 ../dashboard.php:4777
2045
+ msgid "Sessions"
2046
  msgstr ""
2047
 
2048
+ #: ../dashboard.php:3234
2049
+ msgid "Role-based rules are configured"
2050
  msgstr ""
2051
 
2052
+ #: ../dashboard.php:3284
2053
+ msgid "Start typing here to find a country"
2054
  msgstr ""
2055
 
2056
+ #: ../dashboard.php:3291
2057
+ msgid "Save all rules"
2058
  msgstr ""
2059
 
2060
+ #: ../dashboard.php:3304
2061
+ #, php-format
2062
+ msgid "Permitted for one country"
2063
+ msgid_plural "Permitted for %d countries"
2064
+ msgstr[0] ""
2065
+ msgstr[1] ""
2066
 
2067
+ #: ../dashboard.php:3307
2068
+ #, php-format
2069
+ msgid "Not permitted for one country"
2070
+ msgid_plural "Not permitted for %d countries"
2071
+ msgstr[0] ""
2072
+ msgstr[1] ""
2073
 
2074
+ #: ../dashboard.php:3315
2075
+ msgid "No rule"
2076
  msgstr ""
2077
 
2078
+ #: ../dashboard.php:3316
2079
+ msgid "Any country is permitted"
2080
  msgstr ""
2081
 
2082
+ #: ../dashboard.php:3399
2083
+ msgid "Click on a country name to add it to the list of selected countries"
 
 
2084
  msgstr ""
2085
 
2086
+ #: ../dashboard.php:3403
2087
+ #, php-format
2088
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2089
+ msgid "Selected countries are permitted to %s, other countries are not permitted to"
2090
  msgstr ""
2091
 
2092
+ #: ../dashboard.php:3406
2093
+ #, php-format
2094
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2095
+ msgid "Selected countries are not permitted to %s, other countries are permitted to"
2096
  msgstr ""
2097
 
2098
+ #: ../dashboard.php:3426
2099
+ msgid "Log into the website"
2100
  msgstr ""
2101
 
2102
+ #: ../dashboard.php:3428
2103
+ msgid "All Users"
2104
  msgstr ""
2105
 
2106
+ #: ../dashboard.php:3430
2107
+ msgid "Register on the website"
2108
  msgstr ""
2109
 
2110
+ #: ../dashboard.php:3431
2111
+ msgid "Submit forms"
2112
  msgstr ""
2113
 
2114
+ #: ../dashboard.php:3432
2115
+ msgid "Post comments"
 
 
2116
  msgstr ""
2117
 
2118
+ #: ../dashboard.php:3433
2119
+ msgid "Use XML-RPC"
2120
  msgstr ""
2121
 
2122
+ #: ../dashboard.php:3434
2123
+ msgid "Use REST API"
2124
  msgstr ""
2125
 
2126
+ #: ../dashboard.php:3476
2127
+ msgid "Security rules have been updated"
2128
  msgstr ""
2129
 
2130
+ #: ../dashboard.php:3576
2131
+ msgid "IP address"
2132
  msgstr ""
2133
 
2134
+ #: ../dashboard.php:3583
2135
+ msgid "Page generation time"
 
2136
  msgstr ""
2137
 
2138
+ #: ../dashboard.php:4032
2139
+ msgid "Request"
2140
  msgstr ""
2141
 
2142
+ #: ../dashboard.php:4035
2143
+ msgid "User Agent"
2144
  msgstr ""
2145
 
2146
+ #: ../dashboard.php:4052
2147
+ msgid "No requests have been logged."
2148
  msgstr ""
2149
 
2150
+ #: ../dashboard.php:4060
2151
+ msgid "All requests"
2152
  msgstr ""
2153
 
2154
+ #: ../dashboard.php:4063
2155
+ msgid "Errors"
2156
  msgstr ""
2157
 
2158
+ #: ../dashboard.php:4068
2159
+ msgid "Form submissions"
2160
  msgstr ""
2161
 
2162
+ #: ../dashboard.php:4070
2163
+ msgid "Page Not Found"
2164
  msgstr ""
2165
 
2166
+ #: ../dashboard.php:4074
2167
+ msgid "My requests"
2168
  msgstr ""
2169
 
2170
+ #: ../dashboard.php:4082
2171
+ msgid "Longer than"
2172
  msgstr ""
2173
 
2174
+ #: ../dashboard.php:4092
2175
+ msgid "Advanced Search"
2176
  msgstr ""
2177
 
2178
+ #: ../dashboard.php:4105
2179
+ msgid "Refresh"
 
2180
  msgstr ""
2181
 
2182
+ #: ../dashboard.php:4140
2183
+ msgid "Not specified"
2184
  msgstr ""
2185
 
2186
+ #: ../dashboard.php:4200
2187
+ msgid "Unknown Google's bot"
2188
  msgstr ""
2189
 
2190
+ #: ../dashboard.php:4778
2191
+ msgid "Lockouts"
2192
  msgstr ""
2193
 
2194
+ #: ../dashboard.php:4779
2195
+ msgid "Main Settings"
2196
  msgstr ""
2197
 
2198
+ #: ../dashboard.php:4781
2199
+ msgid "Hardening"
2200
  msgstr ""
2201
 
2202
+ #: ../dashboard.php:4783 ../settings.php:265
2203
+ msgid "Notifications"
2204
  msgstr ""
2205
 
2206
+ #: ../dashboard.php:4826
2207
+ msgid "Anti-spam and bot detection settings"
2208
  msgstr ""
2209
 
2210
+ #: ../dashboard.php:4828
2211
+ msgid "Anti-spam engine"
2212
  msgstr ""
2213
 
2214
+ #: ../dashboard.php:4848
2215
+ msgid "Live Traffic"
2216
  msgstr ""
2217
 
2218
+ #: ../dashboard.php:4862
2219
+ msgid "Data Shield Policies"
2220
  msgstr ""
2221
 
2222
+ #: ../dashboard.php:4864
2223
+ msgid "Accounts & Roles"
2224
  msgstr ""
2225
 
2226
+ #: ../dashboard.php:4865
2227
+ msgid "Site Settings"
2228
  msgstr ""
2229
 
2230
+ #: ../dashboard.php:4874
2231
+ msgid "Role-based"
2232
  msgstr ""
2233
 
2234
+ #: ../dashboard.php:4875
2235
+ msgid "Global"
2236
  msgstr ""
2237
 
2238
+ #: ../dashboard.php:4894
2239
+ msgid "Countries"
2240
  msgstr ""
2241
 
2242
+ #: ../dashboard.php:4909
2243
+ msgid "Security Scanner"
2244
  msgstr ""
2245
 
2246
+ #: ../dashboard.php:4911
2247
+ msgid "Scheduling"
2248
  msgstr ""
2249
 
2250
+ #: ../dashboard.php:4912
2251
+ msgid "Cleaning up"
2252
  msgstr ""
2253
 
2254
+ #: ../dashboard.php:4913
2255
+ msgid "Ignore List"
2256
  msgstr ""
2257
 
2258
+ #: ../dashboard.php:4914
2259
+ msgid "Quarantine"
 
 
2260
  msgstr ""
2261
 
2262
+ #: ../dashboard.php:4915
2263
+ msgid "Analytics"
2264
  msgstr ""
2265
 
2266
+ #: ../dashboard.php:4964
2267
+ msgid "Manage Settings"
2268
  msgstr ""
2269
 
2270
+ #: ../dashboard.php:4965
2271
+ msgid "Diagnostic"
2272
  msgstr ""
2273
 
2274
+ #: ../dashboard.php:4966
2275
+ msgid "Diagnostic Log"
2276
  msgstr ""
2277
 
2278
+ #: ../dashboard.php:4967
2279
+ msgid "Changelog"
2280
  msgstr ""
2281
 
2282
+ #: ../dashboard.php:4968
2283
+ msgid "License"
2284
  msgstr ""
2285
 
2286
+ #: ../dashboard.php:5069
2287
+ msgid "Help"
 
 
2288
  msgstr ""
2289
 
2290
+ #: ../dashboard.php:5118
2291
+ msgid "Incorrect IP address or IP range"
2292
  msgstr ""
2293
 
2294
+ #: ../dashboard.php:5122
2295
+ msgid "The IP address you are trying to add is already in the list"
 
 
2296
  msgstr ""
2297
 
2298
+ #: ../dashboard.php:5257
2299
+ msgid "These features are available in a professional version of the plugin."
2300
  msgstr ""
2301
 
2302
+ #: ../dashboard.php:5258
2303
+ msgid "Know more about all advantages at"
2304
  msgstr ""
2305
 
2306
+ #: ../dashboard.php:5293
2307
+ msgid "Log In"
2308
  msgstr ""
2309
 
2310
+ #: ../dashboard.php:5294
2311
+ msgid "Log Out"
2312
  msgstr ""
2313
 
2314
+ #: ../dashboard.php:5295
2315
+ msgid "Register"
2316
  msgstr ""
2317
 
2318
+ #: ../dashboard.php:5298
2319
+ msgid "WooCommerce Log In"
2320
  msgstr ""
2321
 
2322
+ #: ../dashboard.php:5299
2323
+ msgid "WooCommerce Log Out"
2324
  msgstr ""
2325
 
2326
+ #: ../dashboard.php:5338 ../dashboard.php:5339
2327
+ msgid "Add to menu"
2328
  msgstr ""
2329
 
2330
+ #: ../common.php:209
2331
+ msgid "Check for requests"
2332
  msgstr ""
2333
 
2334
+ #: ../common.php:307
2335
+ msgid "Malicious activities mitigated"
2336
  msgstr ""
2337
 
2338
+ #: ../common.php:310
2339
+ msgid "Spam comments denied"
2340
  msgstr ""
2341
 
2342
+ #: ../common.php:311
2343
+ msgid "Spam form submissions denied"
2344
  msgstr ""
2345
 
2346
+ #: ../common.php:312
2347
+ msgid "Malicious IP addresses detected"
2348
  msgstr ""
2349
 
2350
+ #: ../common.php:313
2351
+ msgid "Lockouts occurred"
2352
  msgstr ""
2353
 
2354
+ #: ../common.php:1357
2355
+ msgid "User created"
2356
  msgstr ""
2357
 
2358
+ #: ../common.php:1358
2359
+ msgid "User registered"
2360
  msgstr ""
2361
 
2362
+ #: ../common.php:1359
2363
+ msgid "User deleted"
2364
  msgstr ""
2365
 
2366
+ #: ../common.php:1360
2367
+ msgid "Logged in"
2368
  msgstr ""
2369
 
2370
+ #: ../common.php:1361
2371
+ msgid "Logged out"
2372
  msgstr ""
2373
 
2374
+ #: ../common.php:1362
2375
+ msgid "Login failed"
2376
  msgstr ""
2377
 
2378
+ #: ../common.php:1366
2379
+ msgid "IP subnet blocked"
2380
  msgstr ""
2381
 
2382
+ #: ../common.php:1369
2383
+ msgid "Citadel activated!"
2384
  msgstr ""
2385
 
2386
+ #: ../common.php:1370
2387
+ msgid "Spam comment denied"
 
 
2388
  msgstr ""
2389
 
2390
+ #: ../common.php:1371
2391
+ msgid "Spam form submission denied"
2392
  msgstr ""
2393
 
2394
+ #: ../common.php:1372
2395
+ msgid "Form submission denied"
2396
  msgstr ""
2397
 
2398
+ #: ../common.php:1373
2399
+ msgid "Comment denied"
 
 
 
2400
  msgstr ""
2401
 
2402
+ #: ../common.php:1382
2403
+ msgid "Password changed"
2404
  msgstr ""
2405
 
2406
+ #: ../common.php:1383
2407
+ msgid "Password reset requested"
2408
  msgstr ""
2409
 
2410
+ #: ../common.php:1385
2411
+ msgid "reCAPTCHA verification failed"
2412
  msgstr ""
2413
 
2414
+ #: ../common.php:1386
2415
+ msgid "reCAPTCHA settings are incorrect"
2416
  msgstr ""
2417
 
2418
+ #: ../common.php:1387
2419
+ msgid "Request to the Google reCAPTCHA service failed"
 
 
2420
  msgstr ""
2421
 
2422
+ #: ../common.php:1389 ../common.php:1505
2423
+ msgid "Attempt to access prohibited URL"
2424
  msgstr ""
2425
 
2426
+ #: ../common.php:1390 ../common.php:1506
2427
+ msgid "Attempt to log in with non-existing username"
2428
  msgstr ""
2429
 
2430
+ #: ../common.php:1391 ../common.php:1507
2431
+ msgid "Attempt to log in with prohibited username"
2432
  msgstr ""
2433
 
2434
+ #: ../common.php:1393
2435
+ msgid "Attempt to log in denied"
2436
  msgstr ""
2437
 
2438
+ #: ../common.php:1394
2439
+ msgid "Attempt to register denied"
2440
  msgstr ""
2441
 
2442
+ #: ../common.php:1395 ../common.php:1511
2443
+ msgid "Probing for vulnerable code"
2444
  msgstr ""
2445
 
2446
+ #: ../common.php:1396
2447
+ msgid "Attempt to upload malicious file denied"
2448
  msgstr ""
2449
 
2450
+ #: ../common.php:1397
2451
+ msgid "File upload denied"
2452
  msgstr ""
2453
 
2454
+ #: ../common.php:1399
2455
+ msgid "Request to REST API denied"
2456
  msgstr ""
2457
 
2458
+ #: ../common.php:1400
2459
+ msgid "XML-RPC request denied"
2460
  msgstr ""
2461
 
2462
+ #: ../common.php:1402
2463
+ msgid "User creation denied"
2464
  msgstr ""
2465
 
2466
+ #: ../common.php:1403
2467
+ msgid "User row update denied"
2468
  msgstr ""
2469
 
2470
+ #: ../common.php:1404
2471
+ msgid "Role update denied"
2472
  msgstr ""
2473
 
2474
+ #: ../common.php:1405
2475
+ msgid "Setting update denied"
 
2476
  msgstr ""
2477
 
2478
+ #: ../common.php:1406
2479
+ msgid "User metadata update denied"
2480
  msgstr ""
2481
 
2482
+ #: ../common.php:1408
2483
+ msgid "Malicious request denied"
2484
  msgstr ""
2485
 
2486
+ #: ../common.php:1411
2487
+ msgid "User activated"
2488
  msgstr ""
2489
 
2490
+ #: ../common.php:1414
2491
+ msgid "Invalid master credentials"
2492
  msgstr ""
2493
 
2494
+ #: ../common.php:1422
2495
+ msgid "Bot detected"
2496
  msgstr ""
2497
 
2498
+ #: ../common.php:1423
2499
+ msgid "Citadel mode is active"
2500
  msgstr ""
2501
 
2502
+ #: ../common.php:1425
2503
+ msgid "IP address is locked out"
2504
  msgstr ""
2505
 
2506
+ #: ../common.php:1426
2507
+ msgid "IP blacklisted"
2508
  msgstr ""
2509
 
2510
+ #: ../common.php:1427
2511
+ msgid "Malicious activity detected"
 
 
2512
  msgstr ""
2513
 
2514
+ #: ../common.php:1428
2515
+ msgid "Blocked by country rule"
2516
  msgstr ""
2517
 
2518
+ #: ../common.php:1429
2519
+ msgid "Limit reached"
2520
  msgstr ""
2521
 
2522
+ #: ../common.php:1430
2523
+ msgid "Multiple suspicious activities"
2524
  msgstr ""
2525
 
2526
+ #: ../common.php:1431
2527
+ msgid "Denied"
2528
  msgstr ""
2529
 
2530
+ #: ../common.php:1433
2531
+ msgid "Suspicious number of fields"
 
 
2532
  msgstr ""
2533
 
2534
+ #: ../common.php:1434
2535
+ msgid "Suspicious number of nested values"
2536
  msgstr ""
2537
 
2538
+ #: ../common.php:1435 ../common.php:1512
2539
+ msgid "Malicious code detected"
2540
  msgstr ""
2541
 
2542
+ #: ../common.php:1436
2543
+ msgid "Suspicious SQL code detected"
2544
  msgstr ""
2545
 
2546
+ #: ../common.php:1437
2547
+ msgid "Suspicious JavaScript code detected"
2548
  msgstr ""
2549
 
2550
+ #: ../common.php:1438
2551
+ msgid "Blocked by administrator"
 
 
2552
  msgstr ""
2553
 
2554
+ #: ../common.php:1439
2555
+ msgid "Site policy enforcement"
2556
  msgstr ""
2557
 
2558
+ #: ../common.php:1440
2559
+ msgid "2FA code verified"
2560
  msgstr ""
2561
 
2562
+ #: ../common.php:1441
2563
+ msgid "Initiated by the user"
 
 
2564
  msgstr ""
2565
 
2566
+ #: ../common.php:1444
2567
+ msgid "Email address is prohibited"
2568
  msgstr ""
2569
 
2570
+ #: ../common.php:1446
2571
+ msgid "Permission denied"
2572
  msgstr ""
2573
 
2574
+ #: ../common.php:1448
2575
+ msgid "Invalid user"
2576
  msgstr ""
2577
 
2578
+ #: ../common.php:1449
2579
+ msgid "Incorrect password"
 
 
2580
  msgstr ""
2581
 
2582
+ #: ../common.php:1450
2583
+ msgid "IP address is not allowed"
2584
  msgstr ""
2585
 
2586
+ #: ../common.php:1453
2587
+ msgid "IP whitelisted"
2588
  msgstr ""
2589
 
2590
+ #: ../common.php:1503
2591
+ msgid "Limit on login attempts is reached"
2592
  msgstr ""
2593
 
2594
+ #: ../common.php:1504
2595
+ msgid "Attempt to access"
2596
  msgstr ""
2597
 
2598
+ #: ../common.php:1508
2599
+ msgid "Limit on failed reCAPTCHA verifications is reached"
2600
  msgstr ""
2601
 
2602
+ #: ../common.php:1509
2603
+ msgid "Bot activity is detected"
2604
  msgstr ""
2605
 
2606
+ #: ../common.php:1510
2607
+ msgid "Multiple suspicious activities were detected"
2608
  msgstr ""
2609
 
2610
+ #: ../common.php:1513
2611
+ msgid "Attempt to upload a file with malicious code"
2612
  msgstr ""
2613
 
2614
+ #: ../common.php:1515
2615
+ msgid "Multiple erroneous requests"
2616
  msgstr ""
2617
 
2618
+ #: ../common.php:1516
2619
+ msgid "Multiple suspicious requests"
2620
  msgstr ""
2621
 
2622
+ #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
2623
+ #: ../common.php:1654
2624
+ #, php-format
2625
+ msgid "%s sec"
2626
+ msgid_plural "%s secs"
2627
+ msgstr[0] ""
2628
+ msgstr[1] ""
2629
 
2630
+ #: ../common.php:1661
2631
+ #, php-format
2632
+ msgid "%s ago"
2633
  msgstr ""
2634
 
2635
+ #: ../common.php:1661
2636
+ #, php-format
2637
+ msgctxt "preposition of a period of time like: in 6 hours"
2638
+ msgid "in %s"
2639
  msgstr ""
2640
 
2641
+ #: ../common.php:1768
2642
+ msgid "Bytes"
2643
  msgstr ""
2644
 
2645
+ #: ../common.php:1874
2646
+ #, php-format
2647
+ msgid "A new version of %s is available. Please install it."
2648
  msgstr ""
2649
 
2650
+ #: ../common.php:2704
2651
+ msgid "Unable to create the directory"
2652
  msgstr ""
2653
 
2654
+ #: ../common.php:2709
2655
+ msgid "Destination folder access denied"
2656
  msgstr ""
2657
 
2658
+ #: ../common.php:2712
2659
+ msgid "File not found"
2660
  msgstr ""
2661
 
2662
+ #: ../common.php:2715
2663
+ msgid "Unable to copy the file"
2664
  msgstr ""
2665
 
2666
+ #: ../common.php:2721
2667
+ msgid "Unable to delete the file"
 
 
2668
  msgstr ""
2669
 
2670
+ #: ../settings.php:114
2671
+ msgid "All connected devices"
2672
  msgstr ""
2673
 
2674
+ #: ../settings.php:117
2675
+ msgid "No devices found"
 
 
2676
  msgstr ""
2677
 
2678
+ #: ../settings.php:121
2679
+ msgid "Not available"
2680
  msgstr ""
2681
 
2682
+ #: ../settings.php:127
2683
  msgid ""
2684
+ "Please enable Permalinks to use this feature. Set Permalink Settings to "
2685
+ "something other than Default."
2686
  msgstr ""
2687
 
2688
+ #: ../settings.php:130
2689
+ msgid "Be careful about enabling these options."
2690
  msgstr ""
2691
 
2692
+ #: ../settings.php:130
2693
+ msgid "If you forget your Custom login URL, you will be unable to log in."
2694
  msgstr ""
2695
 
2696
+ #: ../settings.php:133
2697
+ msgid "These restrictions do not apply to IP addresses in the White IP Access List"
2698
  msgstr ""
2699
 
2700
+ #: ../settings.php:137
2701
+ msgid "Plugin initialization"
2702
  msgstr ""
2703
 
2704
+ #: ../settings.php:140
2705
+ msgid "Load security engine"
2706
  msgstr ""
2707
 
2708
+ #: ../settings.php:143
2709
+ msgid "Legacy mode"
2710
  msgstr ""
2711
 
2712
+ #: ../settings.php:144
2713
+ msgid "Standard mode"
2714
  msgstr ""
2715
 
2716
+ #: ../settings.php:150
2717
+ msgid "Limit login attempts"
2718
  msgstr ""
2719
 
2720
+ #: ../settings.php:153
2721
+ msgid "Limit"
2722
  msgstr ""
2723
 
2724
+ #: ../settings.php:158
2725
+ msgid "Lockout duration"
2726
  msgstr ""
2727
 
2728
+ #: ../settings.php:159 ../settings.php:260
2729
+ msgid "minutes"
2730
  msgstr ""
2731
 
2732
+ #: ../settings.php:162
2733
+ msgid "Aggressive lockout"
2734
  msgstr ""
2735
 
2736
+ #: ../settings.php:166 ../settings.php:528 ../settings.php:553 ../settings.php:741
2737
+ msgid "Use White IP Access List"
 
 
2738
  msgstr ""
2739
 
2740
+ #: ../settings.php:167
2741
+ msgid "Apply limit login rules to IP addresses in the White IP Access List"
2742
  msgstr ""
2743
 
2744
+ #: ../settings.php:173
2745
+ msgid "Proactive security rules"
2746
  msgstr ""
2747
 
2748
+ #: ../settings.php:174
2749
+ msgid "Make your protection smarter!"
2750
  msgstr ""
2751
 
2752
+ #: ../settings.php:177
2753
+ msgid "Block subnet"
 
 
2754
  msgstr ""
2755
 
2756
+ #: ../settings.php:178
2757
+ msgid "Always block entire subnet Class C of intruders IP"
2758
  msgstr ""
2759
 
2760
+ #: ../settings.php:182
2761
+ msgid "Non-existing users"
2762
  msgstr ""
2763
 
2764
+ #: ../settings.php:183
2765
+ msgid "Immediately block IP when attempting to log in with a non-existing username"
2766
  msgstr ""
2767
 
2768
+ #: ../settings.php:187
2769
+ msgid "Disable dashboard redirection"
2770
  msgstr ""
2771
 
2772
+ #: ../settings.php:188
2773
+ msgid ""
2774
+ "Disable automatic redirection to the login page when /wp-admin/ is requested "
2775
+ "by an unauthorized request"
2776
  msgstr ""
2777
 
2778
+ #: ../settings.php:192
2779
+ msgid "Request wp-login.php"
2780
  msgstr ""
2781
 
2782
+ #: ../settings.php:193
2783
+ msgid "Immediately block IP after any request to wp-login.php"
2784
  msgstr ""
2785
 
2786
+ #: ../settings.php:197
2787
+ msgid "Display 404 page"
2788
  msgstr ""
2789
 
2790
+ #: ../settings.php:200
2791
+ msgid "Use 404 template from the active theme"
2792
  msgstr ""
2793
 
2794
+ #: ../settings.php:201
2795
+ msgid "Display simple 404 page"
2796
  msgstr ""
2797
 
2798
+ #: ../settings.php:208
2799
+ msgid "Custom login page"
2800
  msgstr ""
2801
 
2802
+ #: ../settings.php:212
2803
+ msgid "Custom login URL"
 
 
2804
  msgstr ""
2805
 
2806
+ #: ../settings.php:213
2807
+ msgid "must not overlap with the existing pages or posts slug"
2808
  msgstr ""
2809
 
2810
+ #: ../settings.php:215
2811
+ msgid ""
2812
+ "Custom login URL may contain Latin alphanumeric characters, dashes and "
2813
+ "underscores only"
2814
  msgstr ""
2815
 
2816
+ #: ../settings.php:220
2817
+ msgid "Disable wp-login.php"
2818
  msgstr ""
2819
 
2820
+ #: ../settings.php:221
2821
+ msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
2822
  msgstr ""
2823
 
2824
+ #: ../settings.php:227
2825
+ msgid "Site-specific settings"
2826
  msgstr ""
2827
 
2828
+ #: ../settings.php:230
2829
+ msgid "Site connection"
2830
  msgstr ""
2831
 
2832
+ #: ../settings.php:235
2833
+ msgid "Prefix for plugin cookies"
2834
  msgstr ""
2835
 
2836
+ #: ../settings.php:236
2837
+ msgid "Prefix may contain only Latin alphanumeric characters and underscores"
2838
  msgstr ""
2839
 
2840
+ #: ../settings.php:245
2841
+ msgid ""
2842
+ "In the Citadel mode nobody is able to log in except IPs from the White IP "
2843
+ "Access List. Active user sessions will not be affected."
2844
  msgstr ""
2845
 
2846
+ #: ../settings.php:248
2847
+ msgid "Enable authentication log monitoring"
2848
  msgstr ""
2849
 
2850
+ #: ../settings.php:254
2851
+ msgid "Threshold"
2852
  msgstr ""
2853
 
2854
+ #: ../settings.php:267
2855
+ msgid "Send notification to admin email"
2856
  msgstr ""
2857
 
2858
+ #: ../settings.php:280 ../settings.php:843
2859
+ msgid "Keep log records of not logged in visitors for"
2860
  msgstr ""
2861
 
2862
+ #: ../settings.php:281 ../settings.php:287 ../settings.php:844 ../settings.php:
2863
+ #: 850 ../settings.php:921 ../settings.php:1112
2864
+ msgid "days"
2865
  msgstr ""
2866
 
2867
+ #: ../settings.php:286 ../settings.php:849
2868
+ msgid "Keep log records of logged in users for"
2869
  msgstr ""
2870
 
2871
+ #: ../settings.php:292
2872
+ msgid "Cerber Lab connection"
2873
  msgstr ""
2874
 
2875
+ #: ../settings.php:293
2876
+ msgid "Send malicious IP addresses to the Cerber Lab"
2877
  msgstr ""
2878
 
2879
+ #: ../settings.php:298
2880
+ msgid "Cerber Lab protocol"
2881
  msgstr ""
2882
 
2883
+ #: ../settings.php:306
2884
+ msgid "Use file"
2885
  msgstr ""
2886
 
2887
+ #: ../settings.php:307
2888
+ msgid "Write failed login attempts to the file"
2889
  msgstr ""
2890
 
2891
+ #: ../settings.php:313
2892
+ msgid "Preferences"
2893
  msgstr ""
2894
 
2895
+ #: ../settings.php:316
2896
+ msgid "Drill down IP"
2897
  msgstr ""
2898
 
2899
+ #: ../settings.php:317
2900
+ msgid "Retrieve extra WHOIS information for IP"
2901
  msgstr ""
2902
 
2903
+ #: ../settings.php:321
2904
+ msgid "Date format"
 
 
2905
  msgstr ""
2906
 
2907
+ #: ../settings.php:322
2908
+ #, php-format
2909
+ msgid "if empty, the default format %s will be used"
2910
  msgstr ""
2911
 
2912
+ #: ../settings.php:328
2913
+ msgid "Date format for CSV export"
2914
  msgstr ""
2915
 
2916
+ #: ../settings.php:329
2917
+ msgid "Use ISO 8601 date format for CSV export files"
2918
  msgstr ""
2919
 
2920
+ #: ../settings.php:333
2921
+ msgid "Use English"
2922
  msgstr ""
2923
 
2924
+ #: ../settings.php:334
2925
+ msgid "Use English for admin interface"
 
 
2926
  msgstr ""
2927
 
2928
+ #: ../settings.php:338
2929
+ msgid "My IP address"
2930
  msgstr ""
2931
 
2932
+ #: ../settings.php:339
2933
+ msgid "Do not add my IP address to the White IP Access List upon plugin activation"
2934
  msgstr ""
2935
 
2936
+ #: ../settings.php:350
2937
+ msgid "Hardening WordPress"
2938
  msgstr ""
2939
 
2940
+ #: ../settings.php:354 ../settings.php:390
2941
+ msgid "Stop user enumeration"
2942
  msgstr ""
2943
 
2944
+ #: ../settings.php:355
2945
+ msgid "Block access to user pages like /?author=n"
2946
  msgstr ""
2947
 
2948
+ #: ../settings.php:359
2949
+ msgid "Protect admin scripts"
2950
  msgstr ""
2951
 
2952
+ #: ../settings.php:360
2953
+ msgid "Block unauthorized access to load-scripts.php and load-styles.php"
2954
  msgstr ""
2955
 
2956
+ #: ../settings.php:364
2957
+ msgid "Disable PHP in uploads"
2958
  msgstr ""
2959
 
2960
+ #: ../settings.php:365
2961
+ msgid "Block execution of PHP scripts in the WordPress media folder"
 
 
2962
  msgstr ""
2963
 
2964
+ #: ../settings.php:369
2965
+ msgid "Disable PHP error displaying"
2966
  msgstr ""
2967
 
2968
+ #: ../settings.php:373
2969
+ msgid "Disable XML-RPC"
2970
  msgstr ""
2971
 
2972
+ #: ../settings.php:374
2973
+ msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
2974
  msgstr ""
2975
 
2976
+ #: ../settings.php:378
2977
+ msgid "Disable feeds"
2978
  msgstr ""
2979
 
2980
+ #: ../settings.php:379
2981
+ msgid "Block access to the RSS, Atom and RDF feeds"
 
 
2982
  msgstr ""
2983
 
2984
+ #: ../settings.php:385
2985
+ msgid "Access to WordPress REST API"
2986
  msgstr ""
2987
 
2988
+ #: ../settings.php:386
2989
+ msgid ""
2990
+ "Restrict or completely block access to the WordPress REST API according to "
2991
+ "your needs"
2992
  msgstr ""
2993
 
2994
+ #: ../settings.php:391
2995
+ msgid "Block access to users' data via REST API"
2996
  msgstr ""
2997
 
2998
+ #: ../settings.php:395
2999
+ msgid "Disable REST API"
3000
  msgstr ""
3001
 
3002
+ #: ../settings.php:396
3003
+ msgid "Block access to WordPress REST API except any of the following"
3004
  msgstr ""
3005
 
3006
+ #: ../settings.php:401
3007
+ msgid "Allow REST API for logged in users"
3008
  msgstr ""
3009
 
3010
+ #: ../settings.php:406
3011
+ msgid "Allow REST API for these roles"
3012
  msgstr ""
3013
 
3014
+ #: ../settings.php:411
3015
+ msgid "Allow these namespaces"
3016
  msgstr ""
3017
 
3018
+ #: ../settings.php:415
3019
+ msgid ""
3020
+ "Specify REST API namespaces to be allowed if REST API is disabled. One "
3021
+ "string per line."
3022
  msgstr ""
3023
 
3024
+ #: ../settings.php:423
3025
+ msgid "Protect user accounts"
3026
  msgstr ""
3027
 
3028
+ #: ../settings.php:428
3029
+ msgid ""
3030
+ "Restrict user account creation and user management with the following "
3031
+ "policies"
3032
  msgstr ""
3033
 
3034
+ #: ../settings.php:434
3035
+ msgid "User registrations are limited to these roles"
 
3036
  msgstr ""
3037
 
3038
+ #: ../settings.php:440
3039
+ msgid "Users with these roles are permitted to create new accounts"
3040
  msgstr ""
3041
 
3042
+ #: ../settings.php:445
3043
+ msgid "Users with these roles are permitted to change sensitive user data"
3044
  msgstr ""
3045
 
3046
+ #: ../settings.php:450 ../settings.php:478 ../settings.php:507
3047
+ msgid "Do not apply these policies to the IP addresses in the White IP Access List"
3048
  msgstr ""
3049
 
3050
+ #: ../settings.php:458
3051
+ msgid "Protect user roles"
3052
  msgstr ""
3053
 
3054
+ #: ../settings.php:462
3055
+ msgid "Restrict roles and capabilities management with the following policies"
3056
  msgstr ""
3057
 
3058
+ #: ../settings.php:468
3059
+ msgid "Users with these roles are permitted to add new roles"
3060
  msgstr ""
3061
 
3062
+ #: ../settings.php:473
3063
+ msgid "Users with these roles are permitted to change role capabilities"
3064
  msgstr ""
3065
 
3066
+ #: ../settings.php:486
3067
+ msgid "Protect site settings"
3068
  msgstr ""
3069
 
3070
+ #: ../settings.php:490
3071
+ msgid "Restrict updating site settings with the following policies"
3072
  msgstr ""
3073
 
3074
+ #: ../settings.php:496
3075
+ msgid "Users with these roles are permitted to change protected settings"
3076
  msgstr ""
3077
 
3078
+ #: ../settings.php:501
3079
+ msgid "Protected settings"
3080
  msgstr ""
3081
 
3082
+ #: ../settings.php:521
3083
+ msgid "Authorized users only"
3084
  msgstr ""
3085
 
3086
+ #: ../settings.php:522
3087
+ msgid "Only registered and logged in website users have access to the website"
3088
  msgstr ""
3089
 
3090
+ #: ../settings.php:529
3091
+ msgid "Do not apply these policy to the IP addresses in the White IP Access List"
3092
  msgstr ""
3093
 
3094
+ #: ../settings.php:539 ../settings.php:1484
3095
+ msgid "Only registered and logged in users are allowed to view this website"
3096
  msgstr ""
3097
 
3098
+ #: ../settings.php:544
3099
+ msgid "Redirect to URL"
3100
  msgstr ""
3101
 
3102
+ #: ../settings.php:554
3103
+ msgid ""
3104
+ "Only users from IP addresses in the White IP Access List may register on the "
3105
+ "website"
3106
  msgstr ""
3107
 
3108
+ #: ../settings.php:559
3109
+ msgid "User message"
3110
  msgstr ""
3111
 
3112
+ #: ../settings.php:566
3113
+ msgid "Registration limit"
 
 
3114
  msgstr ""
3115
 
3116
+ #: ../settings.php:572
3117
+ msgid "Restrict email addresses"
3118
  msgstr ""
3119
 
3120
+ #: ../settings.php:575
3121
+ msgid "No restrictions"
3122
  msgstr ""
3123
 
3124
+ #: ../settings.php:576
3125
+ msgid "Deny all email addresses that match the following"
3126
  msgstr ""
3127
 
3128
+ #: ../settings.php:577
3129
+ msgid "Permit only email addresses that match the following"
 
3130
  msgstr ""
3131
 
3132
+ #: ../settings.php:582
3133
+ msgid ""
3134
+ "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
3135
+ "items."
3136
  msgstr ""
3137
 
3138
+ #: ../settings.php:582 ../settings.php:590
3139
+ msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
3140
  msgstr ""
3141
 
3142
+ #: ../settings.php:589
3143
+ msgid "Prohibited usernames"
3144
  msgstr ""
3145
 
3146
+ #: ../settings.php:590
3147
+ msgid ""
3148
+ "Usernames from this list are not allowed to log in or register. Any IP "
3149
+ "address, have tried to use any of these usernames, will be immediately "
3150
+ "blocked. Use comma to separate logins."
3151
  msgstr ""
3152
 
3153
+ #: ../settings.php:598
3154
+ msgid "minutes (leave empty to use the default WordPress value)"
3155
  msgstr ""
3156
 
3157
+ #: ../settings.php:604
3158
+ msgid "Sort users in dashboard"
3159
  msgstr ""
3160
 
3161
+ #: ../settings.php:605
3162
+ msgid "by date of registration"
3163
  msgstr ""
3164
 
3165
+ #: ../settings.php:613
3166
+ msgid "Personal Data"
3167
  msgstr ""
3168
 
3169
+ #: ../settings.php:615
3170
+ msgid ""
3171
+ "These features help your organization to be in compliance with personal data "
3172
+ "protection laws"
3173
  msgstr ""
3174
 
3175
+ #: ../settings.php:619
3176
+ msgid "Enable data erase"
3177
  msgstr ""
3178
 
3179
+ #: ../settings.php:626
3180
+ msgid "Terminate user sessions"
3181
  msgstr ""
3182
 
3183
+ #: ../settings.php:627
3184
+ msgid "Delete user sessions data when user data is erased"
3185
  msgstr ""
3186
 
3187
+ #: ../settings.php:633
3188
+ msgid "Enable data export"
 
 
3189
  msgstr ""
3190
 
3191
+ #: ../settings.php:640
3192
+ msgid "Include activity log events"
3193
  msgstr ""
3194
 
3195
+ #: ../settings.php:646
3196
+ msgid "Include traffic log entries"
3197
  msgstr ""
3198
 
3199
+ #: ../settings.php:649
3200
+ msgid "Request URL"
3201
  msgstr ""
3202
 
3203
+ #: ../settings.php:650
3204
+ msgid "Form fields data"
 
 
3205
  msgstr ""
3206
 
3207
+ #: ../settings.php:651
3208
+ msgid "Cookies"
3209
  msgstr ""
3210
 
3211
+ #: ../settings.php:659
3212
+ msgid "Email notifications"
3213
  msgstr ""
3214
 
3215
+ #: ../settings.php:664
3216
+ msgid "Lockout notifications"
3217
  msgstr ""
3218
 
3219
+ #: ../settings.php:668 ../settings.php:715 ../settings.php:976
3220
+ msgid "Email Address"
 
 
3221
  msgstr ""
3222
 
3223
+ #: ../settings.php:669 ../settings.php:717 ../settings.php:815 ../settings.php:978
3224
+ msgid "Use comma to specify multiple values"
3225
  msgstr ""
3226
 
3227
+ #: ../settings.php:673
3228
+ #, php-format
3229
+ msgid "if empty, the website administrator email %s will be used"
3230
  msgstr ""
3231
 
3232
+ #: ../settings.php:676
3233
+ msgid "Notification limit"
3234
  msgstr ""
3235
 
3236
+ #: ../settings.php:677
3237
+ msgid "notifications are allowed per hour (0 means unlimited)"
3238
  msgstr ""
3239
 
3240
+ #: ../settings.php:681
3241
+ msgid "New version is available"
3242
  msgstr ""
3243
 
3244
+ #: ../settings.php:687
3245
+ msgid "Push notifications"
3246
  msgstr ""
3247
 
3248
+ #: ../settings.php:688
3249
+ msgid "Get notified instantly with mobile and desktop notifications"
3250
  msgstr ""
3251
 
3252
+ #: ../settings.php:692
3253
+ msgid "Pushbullet access token"
3254
  msgstr ""
3255
 
3256
+ #: ../settings.php:695
3257
+ msgid "Pushbullet device"
3258
  msgstr ""
3259
 
3260
+ #: ../settings.php:702
3261
+ msgid "Weekly reports"
3262
  msgstr ""
3263
 
3264
+ #: ../settings.php:703
3265
+ msgid ""
3266
+ "Weekly report is a summary of all activities and suspicious events occurred "
3267
+ "during the last seven days"
3268
  msgstr ""
3269
 
3270
+ #: ../settings.php:706
3271
+ msgid "Enable reporting"
3272
  msgstr ""
3273
 
3274
+ #: ../settings.php:710
3275
+ msgid "Send reports on"
3276
  msgstr ""
3277
 
3278
+ #: ../settings.php:716 ../settings.php:977
3279
+ msgid "if empty, the email addresses from the notification settings will be used"
3280
  msgstr ""
3281
 
3282
+ #: ../settings.php:727
3283
+ msgid "Traffic Inspection"
3284
  msgstr ""
3285
 
3286
+ #: ../settings.php:728
3287
+ msgid ""
3288
+ "Traffic Inspector is a context-aware web application firewall (WAF) that "
3289
+ "protects your website by recognizing and denying malicious HTTP requests"
3290
  msgstr ""
3291
 
3292
+ #: ../settings.php:732
3293
+ msgid "Enable traffic inspection"
3294
  msgstr ""
3295
 
3296
+ #: ../settings.php:736 ../settings.php:764
3297
+ msgid "Maximum compatibility"
3298
  msgstr ""
3299
 
3300
+ #: ../settings.php:737 ../settings.php:765
3301
+ msgid "Maximum security"
3302
  msgstr ""
3303
 
3304
+ #: ../settings.php:745
3305
+ msgid "Request whitelist"
3306
  msgstr ""
3307
 
3308
+ #: ../settings.php:749
3309
+ msgid ""
3310
+ "Enter a request URI to exclude the request from inspection. One item per "
3311
+ "line."
3312
  msgstr ""
3313
 
3314
+ #: ../settings.php:749 ../settings.php:799
3315
+ msgid "To specify a REGEX pattern, enclose a whole line in two braces."
3316
  msgstr ""
3317
 
3318
+ #: ../settings.php:755
3319
+ msgid "Erroneous Request Shielding"
3320
  msgstr ""
3321
 
3322
+ #: ../settings.php:757
3323
+ msgid ""
3324
+ "Block IP addresses that send excessive requests for non-existing pages or "
3325
+ "scan website for security breaches"
3326
  msgstr ""
3327
 
3328
+ #: ../settings.php:760
3329
+ msgid "Enable error shielding"
3330
  msgstr ""
3331
 
3332
+ #: ../settings.php:769
3333
+ msgid "Ignore logged in users"
3334
  msgstr ""
3335
 
3336
+ #: ../settings.php:776
3337
+ msgid "Traffic Logging"
3338
  msgstr ""
3339
 
3340
+ #: ../settings.php:777
3341
+ msgid ""
3342
+ "Enable optional traffic logging if you need to monitor suspicious and "
3343
+ "malicious activity or solve security issues"
3344
  msgstr ""
3345
 
3346
+ #: ../settings.php:781
3347
+ msgid "Logging mode"
3348
  msgstr ""
3349
 
3350
+ #: ../settings.php:784
3351
+ msgid "Logging disabled"
3352
  msgstr ""
3353
 
3354
+ #: ../settings.php:785
3355
+ msgid "Minimal"
3356
  msgstr ""
3357
 
3358
+ #: ../settings.php:786
3359
+ msgid "Smart"
3360
  msgstr ""
3361
 
3362
+ #: ../settings.php:787
3363
+ msgid "All traffic"
3364
  msgstr ""
3365
 
3366
+ #: ../settings.php:791
3367
+ msgid "Do not log known crawlers"
3368
  msgstr ""
3369
 
3370
+ #: ../settings.php:795
3371
+ msgid "Do not log these locations"
3372
  msgstr ""
3373
 
3374
+ #: ../settings.php:799
3375
+ msgid "Specify URL paths to exclude requests from logging. One item per line."
3376
  msgstr ""
3377
 
3378
+ #: ../settings.php:802
3379
+ msgid "Do not log these User-Agents"
3380
  msgstr ""
3381
 
3382
+ #: ../settings.php:806
3383
+ msgid "Specify User-Agents to exclude requests from logging. One item per line."
3384
  msgstr ""
3385
 
3386
+ #: ../settings.php:809
3387
+ msgid "Save request fields"
3388
  msgstr ""
3389
 
3390
+ #: ../settings.php:813
3391
+ msgid "Mask these form fields"
3392
  msgstr ""
3393
 
3394
+ #: ../settings.php:820
3395
+ msgid "Save request headers"
3396
  msgstr ""
3397
 
3398
+ #: ../settings.php:825
3399
+ msgid "Save $_SERVER"
3400
  msgstr ""
3401
 
3402
+ #: ../settings.php:829
3403
+ msgid "Save request cookies"
3404
  msgstr ""
3405
 
3406
+ #: ../settings.php:833
3407
+ msgid "Save software errors"
3408
  msgstr ""
3409
 
3410
+ #: ../settings.php:837
3411
+ msgid "Page generation time threshold"
3412
  msgstr ""
3413
 
3414
+ #: ../settings.php:838
3415
+ msgid "milliseconds"
3416
  msgstr ""
3417
 
3418
+ #: ../settings.php:858
3419
+ msgid "Scanner settings"
3420
+ msgstr ""
3421
+
3422
+ #: ../settings.php:859
3423
  msgid ""
3424
+ "The scanner monitors file changes, verifies the integrity of WordPress, "
3425
+ "plugins, and themes, and detects malware"
3426
  msgstr ""
3427
 
3428
+ #: ../settings.php:863
3429
+ msgid "Custom signatures"
3430
+ msgstr ""
 
 
 
3431
 
3432
+ #: ../settings.php:867
3433
+ msgid ""
3434
+ "Specify custom PHP code signatures. One item per line. To specify a REGEX "
3435
+ "pattern, enclose a whole line in two braces."
3436
  msgstr ""
3437
 
3438
+ #: ../settings.php:870
3439
+ msgid "Unwanted file extensions"
 
3440
  msgstr ""
3441
 
3442
+ #: ../settings.php:874
3443
+ msgid ""
3444
+ "Specify file extensions to search for. Full scan only. Use comma to separate "
3445
+ "items."
3446
  msgstr ""
3447
 
3448
+ #: ../settings.php:877
3449
+ msgid "Directories to exclude"
3450
  msgstr ""
3451
 
3452
+ #: ../settings.php:881
3453
+ msgid "Specify directories to exclude from scanning. One directory per line."
 
3454
  msgstr ""
3455
 
3456
+ #: ../settings.php:884
3457
+ msgid "Monitor new files"
3458
  msgstr ""
3459
 
3460
+ #: ../settings.php:888 ../settings.php:897
3461
+ msgid "Executable files"
3462
  msgstr ""
3463
 
3464
+ #: ../settings.php:889 ../settings.php:898
3465
+ msgid "All files"
3466
  msgstr ""
3467
 
3468
+ #: ../settings.php:893
3469
+ msgid "Monitor modified files"
3470
  msgstr ""
3471
 
3472
+ #: ../settings.php:902
3473
+ msgid "Change file permissions when necessary"
3474
  msgstr ""
3475
 
3476
+ #: ../settings.php:906
3477
+ msgid "Scan temporary directory"
3478
  msgstr ""
3479
 
3480
+ #: ../settings.php:910
3481
+ msgid "Scan session directory"
3482
  msgstr ""
3483
 
3484
+ #: ../settings.php:914 ../settings.php:1217 ../settings.php:1245
3485
+ msgid "Enable diagnostic logging"
3486
  msgstr ""
3487
 
3488
+ #: ../settings.php:919
3489
+ msgid "Delete quarantined files after"
3490
  msgstr ""
3491
 
3492
+ #: ../settings.php:928
3493
+ msgid "Automated recurring scan schedule"
3494
  msgstr ""
3495
 
3496
+ #: ../settings.php:929
3497
+ msgid ""
3498
+ "The scanner automatically scans the website, removes malware and sends email "
3499
+ "reports with the results of a scan"
3500
  msgstr ""
3501
 
3502
+ #: ../settings.php:933
3503
+ msgid "Launch Quick Scan"
3504
+ msgstr ""
3505
+
3506
+ #: ../settings.php:938
3507
+ msgid "Launch Full Scan"
3508
+ msgstr ""
3509
+
3510
+ #: ../settings.php:945
3511
+ msgid "Scan results reporting"
3512
+ msgstr ""
3513
+
3514
+ #: ../settings.php:946
3515
  msgid ""
3516
+ "Configure what issues to include in the email report and the condition for "
3517
+ "sending reports"
3518
  msgstr ""
3519
 
3520
+ #: ../settings.php:950
3521
+ msgid "Report an issue if any of the following is true"
3522
  msgstr ""
3523
 
3524
+ #: ../settings.php:953 ../settings.php:999
3525
+ msgid "Low severity"
3526
  msgstr ""
3527
 
3528
+ #: ../settings.php:954 ../settings.php:1000
3529
+ msgid "Medium severity"
3530
  msgstr ""
3531
 
3532
+ #: ../settings.php:955 ../settings.php:1001
3533
+ msgid "High severity"
3534
  msgstr ""
3535
 
3536
+ #: ../settings.php:959
3537
+ msgid "Send email report"
3538
  msgstr ""
3539
 
3540
+ #: ../settings.php:962
3541
+ msgid "After every scan"
3542
  msgstr ""
3543
 
3544
+ #: ../settings.php:963
3545
+ msgid "If any changes in scan results occurred"
3546
  msgstr ""
3547
 
3548
+ #: ../settings.php:964
3549
+ msgid "If new issues found"
3550
  msgstr ""
3551
 
3552
+ #: ../settings.php:968
3553
+ msgid "Include file sizes"
3554
  msgstr ""
3555
 
3556
+ #: ../settings.php:972
3557
+ msgid "Include scan errors"
3558
  msgstr ""
3559
 
3560
+ #: ../settings.php:987
3561
+ msgid "Automatic cleanup of malware and suspicious files"
3562
  msgstr ""
3563
 
3564
+ #: ../settings.php:988
3565
+ msgid ""
3566
+ "These policies are automatically enforced at the end of every scheduled scan "
3567
+ "based on its results. All affected files are moved to the quarantine"
3568
  msgstr ""
3569
 
3570
+ #: ../settings.php:992
3571
+ msgid "Delete unattended files"
3572
  msgstr ""
3573
 
3574
+ #: ../settings.php:996
3575
+ msgid "Files in the uploads folder"
3576
  msgstr ""
3577
 
3578
+ #: ../settings.php:1005
3579
+ msgid "Files with unwanted extensions"
3580
  msgstr ""
3581
 
3582
+ #: ../settings.php:1011
3583
+ msgid "Automatic recovery of modified and infected files"
3584
  msgstr ""
3585
 
3586
+ #: ../settings.php:1014
3587
+ msgid "Recover WordPress files"
3588
  msgstr ""
3589
 
3590
+ #: ../settings.php:1018
3591
+ msgid "Recover plugins files"
3592
  msgstr ""
3593
 
3594
+ #: ../settings.php:1024
3595
+ msgid "Exclusions"
3596
  msgstr ""
3597
 
3598
+ #: ../settings.php:1025
3599
+ msgid "These files will never be deleted during automatic cleanup."
3600
  msgstr ""
3601
 
3602
+ #: ../settings.php:1028
3603
+ msgid "Files in the temporary directory"
3604
  msgstr ""
3605
 
3606
+ #: ../settings.php:1032
3607
+ msgid "Files in the sessions directory"
3608
  msgstr ""
3609
 
3610
+ #: ../settings.php:1036
3611
+ msgid "Files in these directories"
3612
  msgstr ""
3613
 
3614
+ #: ../settings.php:1040
3615
+ msgid "Use absolute paths. One item per line."
3616
  msgstr ""
3617
 
3618
+ #: ../settings.php:1043
3619
+ msgid "Files with these extensions"
3620
  msgstr ""
3621
 
3622
+ #: ../settings.php:1047
3623
+ msgid "Use comma to separate items."
3624
  msgstr ""
3625
 
3626
+ #: ../settings.php:1054
3627
+ msgid "Cerber anti-spam engine"
3628
  msgstr ""
3629
 
3630
+ #: ../settings.php:1055
3631
+ msgid "Spam protection for comment, registration and contact forms on a website"
3632
  msgstr ""
3633
 
3634
+ #: ../settings.php:1059
3635
+ msgid "Comment form"
3636
  msgstr ""
3637
 
3638
+ #: ../settings.php:1060
3639
+ msgid "Protect comment form with bot detection engine"
3640
  msgstr ""
3641
 
3642
+ #: ../settings.php:1064 ../settings.php:1136
3643
+ msgid "Registration form"
3644
  msgstr ""
3645
 
3646
+ #: ../settings.php:1065
3647
+ msgid "Protect registration form with bot detection engine"
3648
  msgstr ""
3649
 
3650
+ #: ../settings.php:1069
3651
+ msgid "Other forms"
3652
+ msgstr ""
3653
+
3654
+ #: ../settings.php:1070
3655
+ msgid "Protect all forms on the website with bot detection engine"
3656
+ msgstr ""
3657
+
3658
+ #: ../settings.php:1076
3659
+ msgid "Adjust anti-spam engine"
3660
+ msgstr ""
3661
+
3662
+ #: ../settings.php:1077
3663
  msgid ""
3664
+ "These settings enable you to fine-tune the behavior of anti-spam algorithms "
3665
+ "and avoid false positives"
 
3666
  msgstr ""
3667
 
3668
+ #: ../settings.php:1080
3669
+ msgid "Safe mode"
3670
+ msgstr ""
3671
+
3672
+ #: ../settings.php:1081
3673
+ msgid "Use less restrictive policies (allow AJAX)"
3674
+ msgstr ""
3675
+
3676
+ #: ../settings.php:1086
3677
+ msgid "Disable bot detection engine for logged in users"
3678
+ msgstr ""
3679
+
3680
+ #: ../settings.php:1090
3681
+ msgid "Query whitelist"
3682
+ msgstr ""
3683
+
3684
+ #: ../settings.php:1091
3685
  msgid ""
3686
+ "Enter a part of query string or query path to exclude a request from "
3687
+ "inspection by the engine. One item per line."
3688
  msgstr ""
3689
 
3690
+ #: ../settings.php:1100
3691
+ msgid "Comment processing"
3692
+ msgstr ""
3693
+
3694
+ #: ../settings.php:1101
3695
+ msgid "How the plugin processes comments submitted through the standard comment form"
3696
+ msgstr ""
3697
+
3698
+ #: ../settings.php:1104
3699
+ msgid "If a spam comment detected"
3700
+ msgstr ""
3701
+
3702
+ #: ../settings.php:1106
3703
+ msgid "Deny it completely"
3704
+ msgstr ""
3705
+
3706
+ #: ../settings.php:1106
3707
+ msgid "Mark it as spam"
3708
+ msgstr ""
3709
+
3710
+ #: ../settings.php:1109
3711
+ msgid "Trash spam comments"
3712
+ msgstr ""
3713
+
3714
+ #: ../settings.php:1111
3715
+ msgid "Move spam comments to trash after"
3716
+ msgstr ""
3717
+
3718
+ #: ../settings.php:1118
3719
+ msgid "reCAPTCHA settings"
3720
+ msgstr ""
3721
+
3722
+ #: ../settings.php:1119
3723
  msgid ""
3724
+ "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
3725
+ "key on the Google website"
 
3726
  msgstr ""
3727
 
3728
+ #: ../settings.php:1123
3729
+ msgid "Site key"
3730
  msgstr ""
3731
 
3732
+ #: ../settings.php:1127
3733
+ msgid "Secret key"
3734
  msgstr ""
3735
 
3736
+ #: ../settings.php:1131
3737
+ msgid "Invisible reCAPTCHA"
3738
+ msgstr ""
3739
+
3740
+ #: ../settings.php:1132
3741
+ msgid "Enable invisible reCAPTCHA"
3742
+ msgstr ""
3743
+
3744
+ #: ../settings.php:1132
3745
  msgid ""
3746
+ "(do not enable it unless you get and enter the Site and Secret keys for the "
3747
+ "invisible version)"
 
 
3748
  msgstr ""
3749
 
3750
+ #: ../settings.php:1137
3751
+ msgid "Enable reCAPTCHA for WordPress registration form"
3752
+ msgstr ""
3753
+
3754
+ #: ../settings.php:1142
3755
+ msgid "Enable reCAPTCHA for WooCommerce registration form"
3756
+ msgstr ""
3757
+
3758
+ #: ../settings.php:1146
3759
+ msgid "Lost password form"
3760
+ msgstr ""
3761
+
3762
+ #: ../settings.php:1147
3763
+ msgid "Enable reCAPTCHA for WordPress lost password form"
3764
+ msgstr ""
3765
+
3766
+ #: ../settings.php:1152
3767
+ msgid "Enable reCAPTCHA for WooCommerce lost password form"
3768
+ msgstr ""
3769
+
3770
+ #: ../settings.php:1156
3771
+ msgid "Login form"
3772
+ msgstr ""
3773
+
3774
+ #: ../settings.php:1157
3775
+ msgid "Enable reCAPTCHA for WordPress login form"
3776
+ msgstr ""
3777
+
3778
+ #: ../settings.php:1162
3779
+ msgid "Enable reCAPTCHA for WooCommerce login form"
3780
+ msgstr ""
3781
+
3782
+ #: ../settings.php:1167
3783
+ msgid "Enable reCAPTCHA for WordPress comment form"
3784
+ msgstr ""
3785
+
3786
+ #: ../settings.php:1172
3787
+ msgid "Disable reCAPTCHA for logged in users"
3788
+ msgstr ""
3789
+
3790
+ #: ../settings.php:1176
3791
+ msgid "Limit attempts"
3792
+ msgstr ""
3793
+
3794
+ #: ../settings.php:1177
3795
  #, php-format
3796
+ msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
 
 
3797
  msgstr ""
3798
 
3799
+ #: ../settings.php:1184
3800
+ msgid "Master settings"
3801
  msgstr ""
3802
 
3803
+ #: ../settings.php:1192
3804
+ msgid "Return to the website list"
3805
  msgstr ""
3806
 
3807
+ #: ../settings.php:1196
3808
+ msgid "Show \"Switched to\" notification"
3809
  msgstr ""
3810
 
3811
+ #: ../settings.php:1200
3812
+ msgid "Add @ site to the page title"
3813
  msgstr ""
3814
 
3815
+ #: ../settings.php:1204
3816
+ msgid "Use master language"
3817
  msgstr ""
3818
 
3819
+ #: ../settings.php:1228
3820
+ msgid "Limit access by IP address"
3821
  msgstr ""
3822
 
3823
+ #: ../settings.php:1234
3824
+ msgid "Access to this website"
3825
  msgstr ""
3826
 
3827
+ #: ../settings.php:1237
3828
+ msgid "Full access mode"
3829
  msgstr ""
3830
 
3831
+ #: ../settings.php:1238
3832
+ msgid "Read-only mode"
3833
  msgstr ""
3834
 
3835
+ #: ../settings.php:1259
3836
+ msgid "The full access mode requires the PRO version of WP Cerber"
3837
  msgstr ""
3838
 
3839
+ #: ../settings.php:1327
3840
+ msgid "Any activity"
3841
  msgstr ""
3842
 
3843
+ #: ../cerber-2fa.php:352
3844
+ msgid ""
3845
+ "This verification PIN code is expired. We have just sent a new one to your "
3846
+ "email."
3847
  msgstr ""
3848
 
3849
+ #: ../cerber-2fa.php:355
3850
+ msgid "You have entered an incorrect verification PIN code"
3851
  msgstr ""
3852
 
3853
+ #: ../cerber-2fa.php:402 ../cerber-2fa.php:486
3854
+ msgid "Please verify that it’s you"
3855
  msgstr ""
3856
 
3857
+ #: ../cerber-2fa.php:489
3858
+ msgid "Please use the following verification PIN code to confirm your identity"
3859
  msgstr ""
3860
 
3861
+ #: ../cerber-2fa.php:489
3862
+ #, php-format
3863
+ msgid "The code is valid for %s minutes."
3864
  msgstr ""
3865
 
3866
+ #: ../cerber-2fa.php:514
3867
+ msgid "Here are the details of the sign-in attempt"
3868
  msgstr ""
3869
 
3870
+ #: ../cerber-2fa.php:563
3871
+ msgid "expires"
3872
  msgstr ""
3873
 
3874
+ #: ../cerber-2fa.php:580
3875
+ msgid "only digits are allowed"
3876
  msgstr ""
3877
 
3878
+ #: ../cerber-2fa.php:583
3879
+ msgid "We've sent a verification PIN code to your email"
3880
  msgstr ""
3881
 
3882
+ #: ../cerber-2fa.php:584
3883
+ msgid "Enter the code from the email in the field below."
3884
  msgstr ""
3885
 
3886
+ #: ../cerber-2fa.php:586
3887
+ msgid "Try again"
3888
  msgstr ""
3889
 
3890
+ #: ../cerber-2fa.php:587
3891
+ msgid "Cancel"
3892
  msgstr ""
3893
 
3894
+ #: ../cerber-2fa.php:588
3895
+ msgid "Did not receive an email?"
3896
  msgstr ""
3897
 
3898
+ #: ../cerber-2fa.php:588
3899
+ msgid "or"
3900
+ msgstr ""
3901
+
3902
+ #: ../cerber-2fa.php:594
3903
+ msgid "Verify it's you"
3904
+ msgstr ""
3905
+
3906
+ #: ../cerber-2fa.php:599
3907
+ msgid "Verify"
3908
  msgstr ""
nexus/cerber-nexus-master.php CHANGED
@@ -31,14 +31,15 @@
31
 
32
  */
33
 
34
-
35
- if ( ! defined( 'WPINC' ) ) { exit; }
 
36
 
37
  require_once( dirname( cerber_plugin_file() ) . '/cerber-maintenance.php' );
38
  require_once( dirname( __FILE__ ) . '/cerber-slave-list.php' );
39
 
40
- define( 'CRB_ADD_SLAVE_LNK', '#TB_inline?width=450&height=350&inlineId=crb-popup-add-slave' );
41
- define( 'CRB_NX_SLAVE', 'slave-edit-form' ); // Special form for editing slave data
42
 
43
  function nexus_show_slaves() {
44
  //load_nexus_test_slaves();
31
 
32
  */
33
 
34
+ if ( ! defined( 'WPINC' ) ) {
35
+ exit;
36
+ }
37
 
38
  require_once( dirname( cerber_plugin_file() ) . '/cerber-maintenance.php' );
39
  require_once( dirname( __FILE__ ) . '/cerber-slave-list.php' );
40
 
41
+ const CRB_ADD_SLAVE_LNK = '#TB_inline?width=450&height=350&inlineId=crb-popup-add-slave';
42
+ const CRB_NX_SLAVE = 'slave-edit-form'; // Special form for editing slave data
43
 
44
  function nexus_show_slaves() {
45
  //load_nexus_test_slaves();
nexus/cerber-slave-list.php CHANGED
@@ -202,7 +202,8 @@ class CRB_Slave_Table extends WP_List_Table {
202
  $limit = 'LIMIT ' . $per_page;
203
  }
204
 
205
- if ( $group_id = cerber_get_get( 'filter_group_id', '\d+' ) ) {
 
206
  $where[] = 'group_id = ' . absint( $group_id );
207
  }
208
 
@@ -388,7 +389,11 @@ class CRB_Slave_Table extends WP_List_Table {
388
  case 'srv_country':
389
  return crb_country_html( $item['server_country'] );
390
  case 'site_grp':
391
- return crb_array_get( $groups, $item['group_id'], 'Unknown' );
 
 
 
 
392
  break;
393
  case 'site_owner':
394
  if ( ! $owner = crb_array_get( $item['details'], 'owner_biz' ) ) {
202
  $limit = 'LIMIT ' . $per_page;
203
  }
204
 
205
+ $group_id = cerber_get_get( 'filter_group_id', '\d+' );
206
+ if ( is_numeric( $group_id ) ) {
207
  $where[] = 'group_id = ' . absint( $group_id );
208
  }
209
 
389
  case 'srv_country':
390
  return crb_country_html( $item['server_country'] );
391
  case 'site_grp':
392
+ if ( $ret = crb_array_get( $groups, $item['group_id'], 'Not set' ) ) {
393
+ $ret = '<a href="' . $this->base_sites . '&filter_group_id=' . $item['group_id'] . '">' . $ret . '</a>';
394
+ }
395
+
396
+ return $ret;
397
  break;
398
  case 'site_owner':
399
  if ( ! $owner = crb_array_get( $item['details'], 'owner_biz' ) ) {
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
5
  Requires at least: 4.9
6
  Requires PHP: 5.6
7
  Tested up to: 5.5
8
- Stable tag: 8.6.6
9
  License: GPLv2
10
 
11
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
@@ -331,6 +331,19 @@ To get access to your dashboard you need to copy the WP Cerber Reset folder to t
331
 
332
  == Changelog ==
333
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
  = 8.6.6 =
335
  * New: On the user sessions page, you can now search sessions by a user name, email, and the IP address from which a user has logged in.
336
  * New: You can specify locations (URL Paths) to exclude requests from logging. They can be either exact matches or regular expressions (REGEX).
5
  Requires at least: 4.9
6
  Requires PHP: 5.6
7
  Tested up to: 5.5
8
+ Stable tag: 8.6.7
9
  License: GPLv2
10
 
11
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
331
 
332
  == Changelog ==
333
 
334
+ = 8.6.7 =
335
+ * New: In the professional version of WP Cerber, you can now permit user registrations for IP addresses in the White IP Access List only.
336
+ * New: All URLs in the logs are displayed in a shortened form without the website’s domain. There is no much value having see known things.
337
+ * New: A new label "IP Whitelisted" with green borders has been introduced. It is displayed in a log row on the Live Traffic if the IP address was in White IP Access List, but the appropriate setting “Use White IP Access List” was not enabled at the moment when the event was logged.
338
+ * New: If you now hover the mouse over a red square icon in the Activity or Live Traffic log, you see the reason why the IP address in the row is currently locked out.
339
+ * New: If you now hover the mouse over a green or black square Access List icon in the Activity or Live Traffic log, you see the comment you’ve previously specified for that Access List entry.
340
+ * Improved: All non-REGEX entries [in the list of prohibited usernames (logins)](https://wpcerber.com/using-list-of-prohibited-logins-to-catch-stupid-bots/) are case-insensitive now. This applies to standard Latin-based (ASCII) WordPress usernames only.
341
+ * Improved: The name of a group in the Group column on [Cerber.Hub’s](https://wpcerber.com/manage-multiple-websites/) website list is a link that takes you to the list of websites in the group.
342
+ * Improved: The launch time of the daily maintenance tasks is now set to the night-time at 02:20. If you need them to get rescheduled, you can manually delete the “cerber_daily” cron task via a plugin or deactivate/activate WP Cerber.
343
+ * Fixed: Configured [REST API restrictions](https://wpcerber.com/restrict-access-to-wordpress-rest-api/) have no effect if a WordPress is installed not in the root folder of a website (there is a path in the site URL). Affected versions: 8.6.1 and newer.
344
+ * Fixed: A bug in the logging subsystem: depending on server configuration, submitted form fields are not saved into the DB (if it is enabled in the logging settings).
345
+ * Fixed: A bug with Cerber’s admin CSS styles that were added in the previous version and hid the top pagination links on the "All posts" and "All posts" admin pages.
346
+
347
  = 8.6.6 =
348
  * New: On the user sessions page, you can now search sessions by a user name, email, and the IP address from which a user has logged in.
349
  * New: You can specify locations (URL Paths) to exclude requests from logging. They can be either exact matches or regular expressions (REGEX).
settings.php CHANGED
@@ -32,32 +32,33 @@
32
  */
33
 
34
 
35
-
36
  // If this file is called directly, abort executing.
37
- if ( ! defined( 'WPINC' ) ) { exit; }
 
 
38
 
39
  // Processed by WP Settings API
40
- define( 'CERBER_OPT', 'cerber-main' );
41
- define( 'CERBER_OPT_H', 'cerber-hardening' );
42
- define( 'CERBER_OPT_U', 'cerber-users' );
43
- define( 'CERBER_OPT_A', 'cerber-antispam' );
44
- define( 'CERBER_OPT_C', 'cerber-recaptcha' );
45
- define( 'CERBER_OPT_N', 'cerber-notifications' );
46
- define( 'CERBER_OPT_T', 'cerber-traffic' );
47
- define( 'CERBER_OPT_S', 'cerber-scanner' );
48
- define( 'CERBER_OPT_E', 'cerber-schedule' );
49
- define( 'CERBER_OPT_P', 'cerber-policies' );
50
- define( 'CERBER_OPT_US', 'cerber-user_shield' );
51
- define( 'CERBER_OPT_OS', 'cerber-opt_shield' );
52
- define( 'CERBER_OPT_SL', 'cerber-nexus-slave' );
53
- define( 'CERBER_OPT_MA', 'cerber-nexus_master' );
54
 
55
  // Processed by Cerber
56
- define( 'CERBER_SETTINGS', 'cerber_settings' );
57
- define( 'CERBER_GEO_RULES', 'geo_rule_set' );
58
  // A new, united settings entry
59
  // @since 8.5.9.1
60
- define( 'CERBER_CONFIG', 'cerber_configuration' );
61
 
62
  /**
63
  * A set of Cerber settings (WP options)
@@ -548,7 +549,20 @@ function cerber_settings_config( $args = array() ) {
548
  'maxlength' => 1000,
549
  'enabler' => array( 'authonly' ),
550
  ),
551
- 'reglimit' => array(
 
 
 
 
 
 
 
 
 
 
 
 
 
552
  'title' => __( 'Registration limit', 'wp-cerber' ),
553
  'type' => 'reglimit',
554
  'default' => array( 3, 60 ),
@@ -1469,6 +1483,8 @@ function cerber_get_defaults( $setting = null ) {
1469
  'authonlyacl' => 0,
1470
  'authonlymsg' => __( 'Only registered and logged in users are allowed to view this website', 'wp-cerber' ),
1471
  'authonlyredir' => '',
 
 
1472
  'reglimit_num' => 3,
1473
  'reglimit_min' => 60,
1474
  'emrule' => 0,
32
  */
33
 
34
 
 
35
  // If this file is called directly, abort executing.
36
+ if ( ! defined( 'WPINC' ) ) {
37
+ exit;
38
+ }
39
 
40
  // Processed by WP Settings API
41
+ const CERBER_OPT = 'cerber-main';
42
+ const CERBER_OPT_H = 'cerber-hardening';
43
+ const CERBER_OPT_U = 'cerber-users';
44
+ const CERBER_OPT_A = 'cerber-antispam';
45
+ const CERBER_OPT_C = 'cerber-recaptcha';
46
+ const CERBER_OPT_N = 'cerber-notifications';
47
+ const CERBER_OPT_T = 'cerber-traffic';
48
+ const CERBER_OPT_S = 'cerber-scanner';
49
+ const CERBER_OPT_E = 'cerber-schedule';
50
+ const CERBER_OPT_P = 'cerber-policies';
51
+ const CERBER_OPT_US = 'cerber-user_shield';
52
+ const CERBER_OPT_OS = 'cerber-opt_shield';
53
+ const CERBER_OPT_SL = 'cerber-nexus-slave';
54
+ const CERBER_OPT_MA = 'cerber-nexus_master';
55
 
56
  // Processed by Cerber
57
+ const CERBER_SETTINGS = 'cerber_settings';
58
+ const CERBER_GEO_RULES = 'geo_rule_set';
59
  // A new, united settings entry
60
  // @since 8.5.9.1
61
+ const CERBER_CONFIG = 'cerber_configuration';
62
 
63
  /**
64
  * A set of Cerber settings (WP options)
549
  'maxlength' => 1000,
550
  'enabler' => array( 'authonly' ),
551
  ),
552
+ 'regwhite' => array(
553
+ 'title' => __( 'Use White IP Access List', 'wp-cerber' ),
554
+ 'label' => __( 'Only users from IP addresses in the White IP Access List may register on the website', 'wp-cerber' ),
555
+ 'type' => 'checkbox',
556
+ 'pro' => 1
557
+ ),
558
+ 'regwhite_msg' => array(
559
+ 'title' => __( 'User message', 'wp-cerber' ),
560
+ 'placeholder' => 'This optional message will be displayed to a user if their IP address is not whitelisted',
561
+ 'type' => 'textarea',
562
+ 'enabler' => array( 'regwhite' ),
563
+ 'pro' => 1
564
+ ),
565
+ 'reglimit' => array(
566
  'title' => __( 'Registration limit', 'wp-cerber' ),
567
  'type' => 'reglimit',
568
  'default' => array( 3, 60 ),
1483
  'authonlyacl' => 0,
1484
  'authonlymsg' => __( 'Only registered and logged in users are allowed to view this website', 'wp-cerber' ),
1485
  'authonlyredir' => '',
1486
+ 'regwhite' => 0,
1487
+ 'regwhite_msg' => '',
1488
  'reglimit_num' => 3,
1489
  'reglimit_min' => 60,
1490
  'emrule' => 0,
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.6
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
@@ -31,8 +31,8 @@
31
 
32
  */
33
 
34
- define( 'CERBER_VER', '8.6.6' );
35
- define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {
38
  return __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.7
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
31
 
32
  */
33
 
34
+ const CERBER_VER = '8.6.7';
35
+ const CERBER_PLUGIN_ID = 'wp-cerber/wp-cerber.php';
36
 
37
  function cerber_plugin_file() {
38
  return __FILE__;