Limit Login Attempts Reloaded - Version 2.17.4

Version Description

  • Missing jQuery images added.
  • PHP 5 compatibility fixed.
  • Custom App setup link replaced with setup code.
Download this release

Release Info

Developer wpchefgadget
Plugin Icon 128x128 Limit Login Attempts Reloaded
Version 2.17.4
Comparing to
See all releases

Code changes from version 2.17.3 to 2.17.4

assets/css/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
assets/css/images/ui-bg_glass_75_e6e6e6_1x400.png ADDED
Binary file
assets/css/images/ui-icons_222222_256x240.png ADDED
Binary file
assets/css/limit-login-attempts.css CHANGED
@@ -1 +1 @@
1
- .limit-login-page-settings .field-col{display:inline-block;margin-right:20px}.limit-login-page-settings .limit-login-log table{background-color:#fff}.limit-login-page-settings .limit-login-log table th,.limit-login-page-settings .limit-login-log table td{padding:10px}.limit-login-page-settings .limit-login-log table tr:nth-child(even){background-color:rgba(0,0,0,0.09)}.limit-login-page-settings #limit-login-app-setup-link{width:85%}.limit-login-page-settings .nav-tab-wrapper{position:relative}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link{font-size:14px;float:right;line-height:2}.limit-login-page-settings .limit-login-app-dashboard .llar-table-scroll-wrap{max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .form-table{background-color:#fff;border:1px solid #f4f4f4;border-top:3px solid #3c8dbc;position:relative}.limit-login-page-settings .limit-login-app-dashboard .form-table.llar-preloader:before{content:"";display:block;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:999;position:absolute;top:0;left:0}.limit-login-page-settings .limit-login-app-dashboard .form-table th{font-weight:bold;border-bottom:1px solid #dbdbdb !important}.limit-login-page-settings .limit-login-app-dashboard .form-table th,.limit-login-page-settings .limit-login-app-dashboard .form-table td{padding:10px;border:1px solid #b9b9b9}.limit-login-page-settings .limit-login-app-dashboard .form-table th.llar-col-nowrap,.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-col-nowrap{white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .form-table td button{line-height:1;margin-right:5px}.limit-login-page-settings .limit-login-app-dashboard .form-table td button:last-child{margin-right:0}.limit-login-page-settings .limit-login-app-dashboard .form-table td button .dashicons{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn{display:inline-block;line-height:20px;cursor:pointer}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn i{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn:hover i{color:#3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .form-table tr:nth-child(even){background-color:#f9f9f9}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination>a{font-size:16px;line-height:1.625}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination .spinner{float:none}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col{-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table select{width:100%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-action-col{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-pass{background-color:#cffbe8}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-allow{background-color:#abdfff}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-deny{background-color:#fd2c2c3d}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-remove{color:crimson;border-color:crimson}.limit-login-page-settings .llar-app-notice{background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:15px;border-radius:3px;margin-top:20px;margin-bottom:20px;font-size:14px;border-left:5px solid #ffba00}.limit-login-page-settings .llar-app-notice.success{border-color:#46b450}.limit-login-page-settings .llar-app-notice p{font-size:inherit;margin:0 0 20px}.limit-login-page-settings .llar-app-notice p:last-child{margin-bottom:0}.limit-login-page-settings input[name="admin_notify_email"]{min-width:243px}.limit-login-page-settings .llar-protect-notice{font-size:15px;color:#848484;margin-left:10px}.limit-login-page-settings .llar-protect-notice a{color:#222222;text-decoration:none;border-bottom:1px dashed}.limit-login-page-settings .llar-show-app-fields{position:absolute;right:15px;top:15px;color:#bdbdbd}.limit-login-page-settings .llar-show-app-fields:hover{color:#222}.limit-login-page-settings .llar-app-field{display:none}.limit-login-page-settings .llar-app-field.active{display:table-row}.llar-notice-review,.llar-notice-notify{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px 0 !important;border-left:4px solid #333 !important}.llar-notice-review .llar-review-image img,.llar-notice-notify .llar-review-image img{margin-top:10px;margin-bottom:20px}.llar-notice-review .llar-review-image span,.llar-notice-notify .llar-review-image span{font-size:80px;color:orange;width:80px;height:auto;margin-bottom:20px}.llar-notice-review .llar-review-info,.llar-notice-notify .llar-review-info{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:30px}.llar-notice-review .llar-review-info .llar-buttons,.llar-notice-notify .llar-review-info .llar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.llar-notice-review .llar-review-info .llar-buttons li,.llar-notice-notify .llar-review-info .llar-buttons li{margin-right:10px}.llar-notice-review .llar-review-info .llar-buttons li .dashicons,.llar-notice-notify .llar-review-info .llar-buttons li .dashicons{margin-right:5px}.llar-accordion .ui-accordion-header{font-weight:bold;background-color:#778899;color:#fff}.llar-accordion .ui-accordion-header.ui-accordion-header-active{background-color:#87CEFA}.custom-app-tab{position:relative}.custom-app-tab .spinner{float:none}.custom-app-tab .llar-app-ajax-msg{font-size:13px;margin-top:5px;display:block}.custom-app-tab .llar-app-ajax-msg.error{color:red}.custom-app-tab .llar-app-ajax-msg.success{color:green}.custom-app-tab .llar-delete-app{color:#dc3232;position:absolute;bottom:15px;right:15px}.custom-app-tab .llar-delete-app:hover{opacity:0.8}.custom-app-tab .llar-why-use-premium-text{margin-top:20px}.custom-app-tab .llar-why-use-premium-text .title{font-weight:bold;font-size:16px;color:#4d4d4d}.custom-app-tab .llar-why-use-premium-text ul li .dashicons{color:#3ab54a;font-size:25px;width:25px;top:-2px;position:relative}#llar-progress-bar{position:fixed;top:0;height:6px;left:0;width:100%;z-index:999999;background-color:#eee}#llar-progress-bar span{height:100%;position:absolute;display:block;width:0;background-color:#00b357;-webkit-transition:width 0.4s;transition:width 0.4s}#llar-header-upgrade-message{text-align:center;background-color:#fff;color:#222;padding:10px;margin-left:-20px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2)}#llar-header-upgrade-message p{margin:0}#llar-header-upgrade-message p .dashicons{color:#f2a64c;margin-right:5px}.settings_page_limit-login-attempts .update-nag{display:none}
1
+ .limit-login-page-settings .field-col{display:inline-block;margin-right:20px}.limit-login-page-settings .limit-login-log table{background-color:#fff}.limit-login-page-settings .limit-login-log table th,.limit-login-page-settings .limit-login-log table td{padding:10px}.limit-login-page-settings .limit-login-log table tr:nth-child(even){background-color:rgba(0,0,0,0.09)}.limit-login-page-settings #limit-login-app-setup-link{width:85%}.limit-login-page-settings .nav-tab-wrapper{position:relative}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link{font-size:14px;float:right;line-height:2}.limit-login-page-settings .limit-login-app-dashboard .llar-table-scroll-wrap{max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .form-table{background-color:#fff;border:1px solid #f4f4f4;border-top:3px solid #3c8dbc;position:relative}.limit-login-page-settings .limit-login-app-dashboard .form-table.llar-preloader:before{content:"";display:block;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:999;position:absolute;top:0;left:0}.limit-login-page-settings .limit-login-app-dashboard .form-table th{font-weight:bold;border-bottom:1px solid #dbdbdb !important}.limit-login-page-settings .limit-login-app-dashboard .form-table th,.limit-login-page-settings .limit-login-app-dashboard .form-table td{padding:10px;border:1px solid #b9b9b9}.limit-login-page-settings .limit-login-app-dashboard .form-table th.llar-col-nowrap,.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-col-nowrap{white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .form-table td button{line-height:1;margin-right:5px}.limit-login-page-settings .limit-login-app-dashboard .form-table td button:last-child{margin-right:0}.limit-login-page-settings .limit-login-app-dashboard .form-table td button .dashicons{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn{display:inline-block;line-height:20px;cursor:pointer}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn i{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn:hover i{color:#3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .form-table tr:nth-child(even){background-color:#f9f9f9}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination>a{font-size:16px;line-height:1.625}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination .spinner{float:none}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col{-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table select{width:100%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-action-col{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-pass{background-color:#cffbe8}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-allow{background-color:#abdfff}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-deny{background-color:#fd2c2c3d}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-remove{color:crimson;border-color:crimson}.limit-login-page-settings .llar-app-notice{background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:15px;border-radius:3px;margin-top:20px;margin-bottom:20px;font-size:14px;border-left:5px solid #ffba00}.limit-login-page-settings .llar-app-notice.success{border-color:#46b450}.limit-login-page-settings .llar-app-notice p{font-size:inherit;margin:0 0 20px}.limit-login-page-settings .llar-app-notice p:last-child{margin-bottom:0}.limit-login-page-settings input[name="admin_notify_email"]{min-width:243px}.limit-login-page-settings .llar-protect-notice{font-size:15px;color:#848484;margin-left:10px}.limit-login-page-settings .llar-protect-notice a{color:#222222;text-decoration:none;border-bottom:1px dashed}.limit-login-page-settings .llar-show-app-fields{position:absolute;right:15px;top:15px;color:#bdbdbd}.limit-login-page-settings .llar-show-app-fields:hover{color:#222}.limit-login-page-settings .llar-app-field{display:none}.limit-login-page-settings .llar-app-field.active{display:table-row}.llar-notice-review,.llar-notice-notify{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px 0 !important;border-left:4px solid #333 !important}.llar-notice-review .llar-review-image img,.llar-notice-notify .llar-review-image img{margin-top:10px;margin-bottom:20px}.llar-notice-review .llar-review-image span,.llar-notice-notify .llar-review-image span{font-size:80px;color:orange;width:80px;height:auto;margin-bottom:20px}.llar-notice-review .llar-review-info,.llar-notice-notify .llar-review-info{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:30px}.llar-notice-review .llar-review-info .llar-buttons,.llar-notice-notify .llar-review-info .llar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.llar-notice-review .llar-review-info .llar-buttons li,.llar-notice-notify .llar-review-info .llar-buttons li{margin-right:10px}.llar-notice-review .llar-review-info .llar-buttons li .dashicons,.llar-notice-notify .llar-review-info .llar-buttons li .dashicons{margin-right:5px}.llar-accordion .ui-accordion-header{font-weight:bold;background:#778899;color:#fff}.llar-accordion .ui-accordion-header.ui-accordion-header-active{background:#87CEFA}.custom-app-tab{position:relative}.custom-app-tab .spinner{float:none}.custom-app-tab .llar-app-ajax-msg{font-size:13px;margin-top:5px;display:block}.custom-app-tab .llar-app-ajax-msg.error{color:red}.custom-app-tab .llar-app-ajax-msg.success{color:green}.custom-app-tab .llar-delete-app{color:#dc3232;position:absolute;bottom:15px;right:15px}.custom-app-tab .llar-delete-app:hover{opacity:0.8}.custom-app-tab .llar-why-use-premium-text{margin-top:20px}.custom-app-tab .llar-why-use-premium-text .title{font-weight:bold;font-size:16px;color:#4d4d4d}.custom-app-tab .llar-why-use-premium-text ul li .dashicons{color:#3ab54a;font-size:25px;width:25px;top:-2px;position:relative}#llar-progress-bar{position:fixed;top:0;height:6px;left:0;width:100%;z-index:999999;background-color:#eee}#llar-progress-bar span{height:100%;position:absolute;display:block;width:0;background-color:#00b357;-webkit-transition:width 0.4s;transition:width 0.4s}#llar-header-upgrade-message{text-align:center;background-color:#fff;color:#222;padding:10px;margin-left:-20px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2)}#llar-header-upgrade-message p{margin:0}#llar-header-upgrade-message p .dashicons{color:#f2a64c;margin-right:5px}.settings_page_limit-login-attempts .update-nag{display:none}
assets/sass/limit-login-attempts.scss CHANGED
@@ -254,11 +254,11 @@
254
  .llar-accordion {
255
  .ui-accordion-header {
256
  font-weight: bold;
257
- background-color: #778899;
258
  color: #fff;
259
 
260
  &.ui-accordion-header-active {
261
- background-color: #87CEFA;
262
  }
263
  }
264
  }
254
  .llar-accordion {
255
  .ui-accordion-header {
256
  font-weight: bold;
257
+ background: #778899;
258
  color: #fff;
259
 
260
  &.ui-accordion-header-active {
261
+ background: #87CEFA;
262
  }
263
  }
264
  }
core/App.php CHANGED
@@ -90,6 +90,7 @@ class LLAR_App {
90
  return $return;
91
  }
92
 
 
93
  $link = add_query_arg( 'domain', $_SERVER['SERVER_NAME'], $link );
94
 
95
  $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . '/limit-login-attempts-reloaded.php' );
90
  return $return;
91
  }
92
 
93
+ $link = 'https://' . $link;
94
  $link = add_query_arg( 'domain', $_SERVER['SERVER_NAME'], $link );
95
 
96
  $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . '/limit-login-attempts-reloaded.php' );
core/LimitLoginAttempts.php CHANGED
@@ -190,6 +190,16 @@ class Limit_Login_Attempts {
190
  add_action('wp_ajax_limit-login-unlock', array( $this, 'ajax_unlock' ) );
191
 
192
  add_filter( 'plugin_action_links_' . LLA_PLUGIN_BASENAME, array( $this, 'add_action_links' ) );
 
 
 
 
 
 
 
 
 
 
193
  }
194
 
195
  public function add_action_links( $actions ) {
@@ -446,7 +456,7 @@ class Limit_Login_Attempts {
446
 
447
  foreach ( $_SERVER as $key => $value ) {
448
 
449
- if( in_array( $key, ['SERVER_ADDR'] ) ) continue;
450
 
451
  if( filter_var( $value, FILTER_VALIDATE_IP ) ) {
452
 
@@ -1526,7 +1536,7 @@ class Limit_Login_Attempts {
1526
 
1527
  if( !empty( $_POST['llar_app_settings'] ) && $this->app ) {
1528
 
1529
- if( ( $app_setup_link = $this->get_option( 'app_setup_link' ) ) && $setup_result = LLAR_App::setup( $app_setup_link ) ) {
1530
 
1531
  if( $setup_result['success'] && $active_app_config = $setup_result['app_config'] ) {
1532
 
@@ -1875,7 +1885,8 @@ class Limit_Login_Attempts {
1875
 
1876
  if( !empty( $_POST['link'] ) ) {
1877
 
1878
- $link = sanitize_text_field( $_POST['link'] );
 
1879
 
1880
  if( $setup_result = LLAR_App::setup( $link ) ) {
1881
 
@@ -1886,7 +1897,7 @@ class Limit_Login_Attempts {
1886
  $this->app_update_config( $setup_result['app_config'], true );
1887
  $this->update_option( 'active_app', 'custom' );
1888
 
1889
- $this->update_option( 'app_setup_link', $link );
1890
 
1891
  wp_send_json_success(array(
1892
  'msg' => ( !empty( $setup_result['app_config']['messages']['setup_success'] ) )
@@ -1905,7 +1916,7 @@ class Limit_Login_Attempts {
1905
  }
1906
 
1907
  wp_send_json_error(array(
1908
- 'msg' => __( 'Please specify the Setup Link', 'limit-login-attempts-reloaded' )
1909
  ));
1910
  }
1911
 
190
  add_action('wp_ajax_limit-login-unlock', array( $this, 'ajax_unlock' ) );
191
 
192
  add_filter( 'plugin_action_links_' . LLA_PLUGIN_BASENAME, array( $this, 'add_action_links' ) );
193
+
194
+ /**
195
+ * Transform setup link to setup code.
196
+ */
197
+ if( ( $setup_link = $this->get_option( 'app_setup_link' ) ) && empty( $this->get_option( 'app_setup_code' ) ) ) {
198
+
199
+ $setup_link = str_replace( array( 'http://', 'https://' ), '', $setup_link );
200
+ $this->update_option( 'app_setup_code', strrev( $setup_link ) );
201
+ $this->delete_option( 'app_setup_link' );
202
+ }
203
  }
204
 
205
  public function add_action_links( $actions ) {
456
 
457
  foreach ( $_SERVER as $key => $value ) {
458
 
459
+ if( in_array( $key, array( 'SERVER_ADDR' ) ) ) continue;
460
 
461
  if( filter_var( $value, FILTER_VALIDATE_IP ) ) {
462
 
1536
 
1537
  if( !empty( $_POST['llar_app_settings'] ) && $this->app ) {
1538
 
1539
+ if( ( $app_setup_code = $this->get_option( 'app_setup_code' ) ) && $setup_result = LLAR_App::setup( strrev( $app_setup_code ) ) ) {
1540
 
1541
  if( $setup_result['success'] && $active_app_config = $setup_result['app_config'] ) {
1542
 
1885
 
1886
  if( !empty( $_POST['link'] ) ) {
1887
 
1888
+ $setup_code = sanitize_text_field( $_POST['link'] );
1889
+ $link = strrev( $setup_code );
1890
 
1891
  if( $setup_result = LLAR_App::setup( $link ) ) {
1892
 
1897
  $this->app_update_config( $setup_result['app_config'], true );
1898
  $this->update_option( 'active_app', 'custom' );
1899
 
1900
+ $this->update_option( 'app_setup_code', $setup_code );
1901
 
1902
  wp_send_json_success(array(
1903
  'msg' => ( !empty( $setup_result['app_config']['messages']['setup_success'] ) )
1916
  }
1917
 
1918
  wp_send_json_error(array(
1919
+ 'msg' => __( 'Please specify the Setup Code', 'limit-login-attempts-reloaded' )
1920
  ));
1921
  }
1922
 
limit-login-attempts-reloaded.php CHANGED
@@ -5,7 +5,7 @@ Description: Limit the rate of login attempts for each IP address.
5
  Author: Limit Login Attempts Reloaded
6
  Author URI: https://limitloginattempts.com/
7
  Text Domain: limit-login-attempts-reloaded
8
- Version: 2.17.3
9
 
10
  Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2020 Limit Login Attempts Reloaded
11
  */
5
  Author: Limit Login Attempts Reloaded
6
  Author URI: https://limitloginattempts.com/
7
  Text Domain: limit-login-attempts-reloaded
8
+ Version: 2.17.4
9
 
10
  Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2020 Limit Login Attempts Reloaded
11
  */
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/donate?hosted_button_id=FKD4MYFCMNVQQ
4
  Tags: brute force, login, security, GDPR, protection
5
  Requires at least: 3.0
6
  Tested up to: 5.6
7
- Stable tag: 2.17.3
8
 
9
  Reloaded version of the original Limit Login Attempts plugin for Login Protection by a team of WordPress developers. GDPR compliant.
10
 
@@ -90,6 +90,11 @@ Please follow this link: <a href="https://www.limitloginattempts.com/resources/"
90
 
91
  == Changelog ==
92
 
 
 
 
 
 
93
  = 2.17.3 =
94
  * Plugin pages message.
95
 
4
  Tags: brute force, login, security, GDPR, protection
5
  Requires at least: 3.0
6
  Tested up to: 5.6
7
+ Stable tag: 2.17.4
8
 
9
  Reloaded version of the original Limit Login Attempts plugin for Login Protection by a team of WordPress developers. GDPR compliant.
10
 
90
 
91
  == Changelog ==
92
 
93
+ = 2.17.4 =
94
+ * Missing jQuery images added.
95
+ * PHP 5 compatibility fixed.
96
+ * Custom App setup link replaced with setup code.
97
+
98
  = 2.17.3 =
99
  * Plugin pages message.
100
 
views/options-page.php CHANGED
@@ -4,7 +4,7 @@ if( !defined( 'ABSPATH' ) ) exit();
4
 
5
  $active_tab = "settings";
6
  $active_app = $this->get_option( 'active_app' );
7
- if(!empty($_GET["tab"]) && in_array($_GET["tab"], ['logs-local', 'logs-custom', 'settings', 'debug'])) {
8
 
9
  if(!$this->app && $_GET['tab'] === 'logs-custom') {
10
 
4
 
5
  $active_tab = "settings";
6
  $active_app = $this->get_option( 'active_app' );
7
+ if( !empty($_GET["tab"]) && in_array( $_GET["tab"], array( 'logs-local', 'logs-custom', 'settings', 'debug' ) ) ) {
8
 
9
  if(!$this->app && $_GET['tab'] === 'logs-custom') {
10
 
views/tab-debug.php CHANGED
@@ -11,7 +11,7 @@ $debug_info = '';
11
  $ips = $server = array();
12
  foreach ($_SERVER as $key => $value) {
13
 
14
- if(in_array($key, ['SERVER_ADDR'])) continue;
15
 
16
  if( $this->is_ip_valid( $value ) ) {
17
 
@@ -20,7 +20,7 @@ foreach ($_SERVER as $key => $value) {
20
  $ips[] = $value;
21
  }
22
 
23
- if(in_array($value, ['127.0.0.1', '0.0.0.0']))
24
  $server[$key] = $value;
25
  else
26
  $server[$key] = 'IP'.array_search($value, $ips);
11
  $ips = $server = array();
12
  foreach ($_SERVER as $key => $value) {
13
 
14
+ if( in_array( $key, array( 'SERVER_ADDR' ) ) ) continue;
15
 
16
  if( $this->is_ip_valid( $value ) ) {
17
 
20
  $ips[] = $value;
21
  }
22
 
23
+ if( in_array( $value, array( '127.0.0.1', '0.0.0.0' ) ) )
24
  $server[$key] = $value;
25
  else
26
  $server[$key] = 'IP'.array_search($value, $ips);
views/tab-settings.php CHANGED
@@ -19,7 +19,7 @@ $trusted_ip_origins = $this->get_option( 'trusted_ip_origins' );
19
  $trusted_ip_origins = ( is_array( $trusted_ip_origins ) && !empty( $trusted_ip_origins ) ) ? implode( ", ", $trusted_ip_origins ) : 'REMOTE_ADDR';
20
 
21
  $active_app = $this->get_option( 'active_app' );
22
- $app_setup_link = $this->get_option( 'app_setup_link' );
23
  $active_app_config = $this->get_custom_app_config();
24
 
25
  ?>
@@ -160,9 +160,9 @@ $active_app_config = $this->get_custom_app_config();
160
 
161
  <tr class="llar-app-field <?php echo ( $active_app === 'local' || !$active_app_config ) ? 'active' : ''; ?>">
162
  <th scope="row"
163
- valign="top"><?php echo __( 'Setup Link', 'limit-login-attempts-reloaded' ); ?></th>
164
  <td>
165
- <input type="text" class="regular-text" id="limit-login-app-setup-link" value="<?php echo ( !empty( $app_setup_link ) ) ? esc_attr( $app_setup_link ) : ''; ?>">
166
  <button class="button" id="limit-login-app-setup"><?php echo __( 'Submit', 'limit-login-attempts-reloaded' ); ?></button>
167
  <span class="spinner llar-app-ajax-spinner"></span><br>
168
  <span class="llar-app-ajax-msg"></span>
19
  $trusted_ip_origins = ( is_array( $trusted_ip_origins ) && !empty( $trusted_ip_origins ) ) ? implode( ", ", $trusted_ip_origins ) : 'REMOTE_ADDR';
20
 
21
  $active_app = $this->get_option( 'active_app' );
22
+ $app_setup_code = $this->get_option( 'app_setup_code' );
23
  $active_app_config = $this->get_custom_app_config();
24
 
25
  ?>
160
 
161
  <tr class="llar-app-field <?php echo ( $active_app === 'local' || !$active_app_config ) ? 'active' : ''; ?>">
162
  <th scope="row"
163
+ valign="top"><?php echo __( 'Setup Code', 'limit-login-attempts-reloaded' ); ?></th>
164
  <td>
165
+ <input type="text" class="regular-text" id="limit-login-app-setup-link" value="<?php echo ( !empty( $app_setup_code ) ) ? esc_attr( $app_setup_code ) : ''; ?>">
166
  <button class="button" id="limit-login-app-setup"><?php echo __( 'Submit', 'limit-login-attempts-reloaded' ); ?></button>
167
  <span class="spinner llar-app-ajax-spinner"></span><br>
168
  <span class="llar-app-ajax-msg"></span>