Changeset 3462256
- Timestamp:
- 02/16/2026 07:36:13 AM (6 weeks ago)
- Location:
- loginizer/trunk
- Files:
-
- 1 added
- 12 edited
-
common.php (added)
-
functions.php (modified) (6 diffs)
-
init.php (modified) (4 diffs)
-
loginizer.php (modified) (1 diff)
-
main/admin.php (modified) (5 diffs)
-
main/settings/2fa.php (modified) (7 diffs)
-
main/settings/brute-force.php (modified) (11 diffs)
-
main/settings/checksum.php (modified) (1 diff)
-
main/settings/passwordless.php (modified) (1 diff)
-
main/settings/recaptcha.php (modified) (6 diffs)
-
main/settings/security.php (modified) (4 diffs)
-
main/settings/social_login.php (modified) (1 diff)
-
readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
loginizer/trunk/functions.php
r3365675 r3462256 6 6 7 7 include_once(LOGINIZER_DIR.'/lib/IPv6/IPv6.php'); 8 9 // Get the client IP 10 function _lz_getip(){ 11 if(isset($_SERVER["REMOTE_ADDR"])){ 12 return $_SERVER["REMOTE_ADDR"]; 13 }elseif(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ 14 return $_SERVER["HTTP_X_FORWARDED_FOR"]; 15 }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){ 16 return $_SERVER["HTTP_CLIENT_IP"]; 17 } 18 } 19 20 // Get the client IP 21 function lz_getip(){ 22 23 global $loginizer; 24 25 // Just so that we have something 26 $ip = _lz_getip(); 27 28 $loginizer['ip_method'] = (int) @$loginizer['ip_method']; 29 30 if(isset($_SERVER["REMOTE_ADDR"])){ 31 $ip = $_SERVER["REMOTE_ADDR"]; 32 } 33 34 if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && @$loginizer['ip_method'] == 1){ 35 if(strpos($_SERVER["HTTP_X_FORWARDED_FOR"], ',')){ 36 $temp_ip = explode(',', $_SERVER["HTTP_X_FORWARDED_FOR"]); 37 $ip = trim($temp_ip[0]); 38 }else{ 39 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 40 } 41 } 42 43 if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){ 44 $ip = $_SERVER["HTTP_CLIENT_IP"]; 45 } 46 47 if(@$loginizer['ip_method'] == 3 && isset($_SERVER[@$loginizer['custom_ip_method']])){ 48 $ip = $_SERVER[@$loginizer['custom_ip_method']]; 49 } 50 51 // Hacking fix for X-Forwarded-For 52 if(!lz_valid_ip($ip)){ 53 return ''; 54 } 55 56 return $ip; 57 58 } 8 include_once(LOGINIZER_DIR .'/common.php'); 59 9 60 10 // Execute a select query and return an array … … 71 21 } 72 22 73 // Check if an IP is valid74 function lz_valid_ip($ip){75 76 if(empty($ip)){77 return false;78 }79 80 // IPv681 if(lz_valid_ipv6($ip)){82 return true;83 }84 85 // IPv486 if(!ip2long($ip) || !lz_valid_ipv4($ip)){87 return false;88 }89 90 return true;91 }92 93 function lz_valid_ipv4($ip){94 if(!preg_match('/^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/is', $ip) || substr_count($ip, '.') != 3){95 return false;96 }97 98 $r = explode('.', $ip);99 100 foreach($r as $v){101 $v = (int) $v;102 if($v > 255 || $v < 0){103 return false;104 }105 }106 107 return true;108 109 }110 111 function lz_valid_ipv6($ip){112 113 $pattern = '/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/';114 115 if(!preg_match($pattern, $ip)){116 return false;117 }118 119 return true;120 121 }122 123 23 // Check if a field is posted via POST else return default value 124 24 function lz_optpost($name, $default = ''){ … … 246 146 } 247 147 248 $error_string = '<b> Please fix the below error(s):</b> <br />';148 $error_string = '<b>'.__('Please fix the below error(s)', 'loginizer').' :</b> <br />'; 249 149 250 150 foreach($error as $ek => $ev){ … … 253 153 254 154 echo '<div id="message" class="error"><p>' 255 . __($error_string, 'loginizer')155 . $error_string 256 156 . '</p></div>'; 257 157 } … … 273 173 } 274 174 275 $notice_string = '<b> Please check the below notice(s):</b> <br />';175 $notice_string = '<b>'.__('Please check the below notice(s)', 'loginizer').' :</b> <br />'; 276 176 277 177 foreach($notice as $ek => $ev){ … … 280 180 281 181 echo '<div id="message" class="'.$notice_class.'"><p>' 282 . __($notice_string, 'loginizer')182 . $notice_string 283 183 . '</p></div>'; 284 184 } -
loginizer/trunk/init.php
r3415505 r3462256 6 6 } 7 7 8 define('LOGINIZER_VERSION', '2.0. 4');8 define('LOGINIZER_VERSION', '2.0.5'); 9 9 define('LOGINIZER_DIR', dirname(LOGINIZER_FILE)); 10 10 define('LOGINIZER_URL', plugins_url('', LOGINIZER_FILE)); … … 496 496 return false; 497 497 } 498 498 499 $current_ip_inet = inet_ptoi($loginizer['current_ip']); 500 499 501 foreach($blacklist as $k => $v){ 500 502 503 $start_inet = inet_ptoi($v['start']); 504 $end_inet = inet_ptoi($v['end']); 505 501 506 // Is the IP in the blacklist ? 502 if( inet_ptoi($v['start']) <= inet_ptoi($loginizer['current_ip']) && inet_ptoi($loginizer['current_ip']) <= inet_ptoi($v['end'])){507 if($start_inet <= $current_ip_inet && $current_ip_inet <= $end_inet){ 503 508 $result = 1; 504 509 break; 505 510 } 506 511 507 512 // Is it in a wider range ? 508 if( inet_ptoi($v['start']) >= 0 && inet_ptoi($v['end'])< 0){513 if($start_inet >= 0 && $end_inet < 0){ 509 514 510 515 // Since the end of the RANGE (i.e. current IP range) is beyond the +ve value of inet_ptoi, … … 512 517 // OR 513 518 // if the current IP is <= than the end of the range, it is within the range 514 if( inet_ptoi($v['start']) <= inet_ptoi($loginizer['current_ip'])515 || inet_ptoi($loginizer['current_ip']) <= inet_ptoi($v['end'])){519 if($start_inet <= $current_ip_inet 520 || $current_ip_inet <= $end_inet){ 516 521 $result = 1; 517 522 break; … … 521 526 522 527 } 523 528 524 529 // You are blacklisted 525 530 if(!empty($result)){ 526 531 $lz_error['ip_blacklisted'] = $loginizer['msg']['ip_blacklisted']; 527 return true;528 }529 530 return false;531 532 }533 534 function loginizer_is_whitelisted(){535 536 global $wpdb, $loginizer, $lz_error;537 538 $whitelist = $loginizer['whitelist'];539 540 if(empty($whitelist)){541 return false;542 }543 544 foreach($whitelist as $k => $v){545 546 // Is the IP in the blacklist ?547 if(inet_ptoi($v['start']) <= inet_ptoi($loginizer['current_ip']) && inet_ptoi($loginizer['current_ip']) <= inet_ptoi($v['end'])){548 $result = 1;549 break;550 }551 552 // Is it in a wider range ?553 if(inet_ptoi($v['start']) >= 0 && inet_ptoi($v['end']) < 0){554 555 // Since the end of the RANGE (i.e. current IP range) is beyond the +ve value of inet_ptoi,556 // if the current IP is <= than the start of the range, it is within the range557 // OR558 // if the current IP is <= than the end of the range, it is within the range559 if(inet_ptoi($v['start']) <= inet_ptoi($loginizer['current_ip'])560 || inet_ptoi($loginizer['current_ip']) <= inet_ptoi($v['end'])){561 $result = 1;562 break;563 }564 565 }566 567 }568 569 // You are whitelisted570 if(!empty($result)){571 532 return true; 572 533 } -
loginizer/trunk/loginizer.php
r3415505 r3462256 4 4 Plugin URI: https://wordpress.org/extend/plugins/loginizer/ 5 5 Description: Loginizer is a WordPress plugin which helps you fight against bruteforce attack by blocking login for the IP after it reaches maximum retries allowed. You can blacklist or whitelist IPs for login using Loginizer. 6 Version: 2.0. 46 Version: 2.0.5 7 7 Text Domain: loginizer 8 8 Author: Softaculous -
loginizer/trunk/main/admin.php
r3365675 r3462256 461 461 462 462 <hr /> 463 <a href="http://loginizer.com" target="_blank">Loginizer</a> '.__('v'.LOGINIZER_VERSION.'.You can report any bugs ','loginizer').'<a href="http://wordpress.org/support/plugin/loginizer" target="_blank">'.__('here','loginizer').'</a>.';463 <a href="http://loginizer.com" target="_blank">Loginizer</a> v'.LOGINIZER_VERSION.'. '.__('You can report any bugs ','loginizer').'<a href="http://wordpress.org/support/plugin/loginizer" target="_blank">'.__('here','loginizer').'</a>.'; 464 464 465 465 } … … 550 550 551 551 } 552 552 553 553 // Brute Force 554 554 add_submenu_page('loginizer', __('Brute Force Settings', 'loginizer'), __('Brute Force', 'loginizer'), 'activate_plugins', 'loginizer_brute_force', 'loginizer_brute_force_settings'); 555 556 if(defined('LOGINIZER_PREMIUM')){ 557 // WAF Security Firewall 558 $expiry_date = strtotime('2026-03-01'); 559 $tag_new = time() < $expiry_date ? '<span style="display: inline-block; margin-left: 10px; padding: 0px 5px; color: #fff; background-color: #d63638; border-radius: 2px;">'.__('New', 'loginizer').'</span>' : ''; 560 561 add_submenu_page('loginizer', __('Country Block', 'loginizer'), __('Country Block', 'loginizer').' '.$tag_new, 'activate_plugins', 'loginizer_firewall', 'loginizer_firewall_settings'); 562 } 555 563 556 564 // PasswordLess … … 566 574 567 575 // reCaptcha 568 add_submenu_page('loginizer', __($loginizer['prefix'].'reCAPTCHA Settings', 'loginizer'), __('reCAPTCHA', 'loginizer'), 'activate_plugins', 'loginizer_recaptcha', 'loginizer_recaptcha_settings');576 add_submenu_page('loginizer', $loginizer['prefix'].__('reCAPTCHA Settings', 'loginizer'), __('reCAPTCHA', 'loginizer'), 'activate_plugins', 'loginizer_recaptcha', 'loginizer_recaptcha_settings'); 569 577 570 578 // Temporary Login 571 add_submenu_page('loginizer', __($loginizer['prefix'].'SSO', 'loginizer'), __('Single Sign On', 'loginizer'). ((time() < strtotime('30 November 2023')) ? ' <span style="color:yellow;">Update</span>' : ''), 'activate_plugins', 'loginizer_sso', 'loginizer_sso_settings');579 add_submenu_page('loginizer', $loginizer['prefix'].__('SSO', 'loginizer'), __('Single Sign On', 'loginizer'). ((time() < strtotime('30 November 2023')) ? ' <span style="color:yellow;">Update</span>' : ''), 'activate_plugins', 'loginizer_sso', 'loginizer_sso_settings'); 572 580 573 581 // Social Login 574 $hook_name = add_submenu_page('loginizer', __($loginizer['prefix'].'social_login', 'loginizer'), __('Social Login', 'loginizer') . (defined('LOGINIZER_PREMIUM') && (time() < strtotime('30 June 2025')) ? ' <span style="color:yellow;font-size:12px;">Updated</span>' : ''), 'activate_plugins', 'loginizer_social_login', 'loginizer_social_login_settings');582 $hook_name = add_submenu_page('loginizer', $loginizer['prefix']. __('Social Login', 'loginizer'), __('Social Login', 'loginizer') . (defined('LOGINIZER_PREMIUM') && (time() < strtotime('30 June 2025')) ? ' <span style="color:yellow;font-size:12px;">Updated</span>' : ''), 'activate_plugins', 'loginizer_social_login', 'loginizer_social_login_settings'); 575 583 576 584 // Security Settings … … 578 586 579 587 // Security Settings 580 add_submenu_page('loginizer', __($loginizer['prefix'].'Security Settings', 'loginizer'), __('Security Settings', 'loginizer'), 'activate_plugins', 'loginizer_security', 'loginizer_security_settings');588 add_submenu_page('loginizer', $loginizer['prefix'].__('Security Settings', 'loginizer'), __('Security Settings', 'loginizer'), 'activate_plugins', 'loginizer_security', 'loginizer_security_settings'); 581 589 582 590 // File Checksums … … 765 773 } 766 774 775 function loginizer_firewall_settings(){ 776 include_once LOGINIZER_PRO_DIR . 'main/settings/waf.php'; 777 loginizer_pro_firewall(); 778 } 779 767 780 // Hides the interim login poup after successful login. 768 781 function loginizer_social_interim_js(){ -
loginizer/trunk/main/settings/2fa.php
r3365675 r3462256 15 15 16 16 if(!loginizer_is_premium() && count($_POST) > 0){ 17 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');17 $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').'<a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; 18 18 return loginizer_page_2fa_T(); 19 19 } … … 283 283 // Saved ? 284 284 if(!empty($GLOBALS['lz_saved'])){ 285 echo '<div id="message" class="updated"><p>'. __(is_string($GLOBALS['lz_saved']) ? $GLOBALS['lz_saved'] : 'The settings were saved successfully', 'loginizer'). '</p></div><br />';285 echo '<div id="message" class="updated"><p>'. (is_string($GLOBALS['lz_saved']) ? $GLOBALS['lz_saved'] : __('The settings were saved successfully', 'loginizer')). '</p></div><br />'; 286 286 } 287 287 … … 491 491 <td scope="row" valign="top" style="width:350px !important"> 492 492 <label for="msg_otp_app"><?php echo __('OTP via APP','loginizer'); ?></label><br /> 493 <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_app']. '"</em>', 'loginizer'); ?>493 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_app']. '"</em>'; ?> 494 494 </td> 495 495 <td> … … 501 501 <td scope="row" valign="top" style="width:350px !important"> 502 502 <label for="msg_otp_email"><?php echo __('OTP via Email','loginizer'); ?></label><br /> 503 <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_email']. '"</em>', 'loginizer'); ?>503 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_email']. '"</em>'; ?> 504 504 </td> 505 505 <td> … … 511 511 <td scope="row" valign="top" style="width:350px !important"> 512 512 <label for="msg_otp_field"><?php echo __('Title for OTP field','loginizer'); ?></label><br /> 513 <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_field']. '"</em>', 'loginizer'); ?>513 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_field']. '"</em>'; ?> 514 514 </td> 515 515 <td> … … 521 521 <td scope="row" valign="top" style="width:350px !important"> 522 522 <label for="msg_otp_question"><?php echo __('Title for Security Question','loginizer'); ?></label><br /> 523 <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_question']. '"</em>', 'loginizer'); ?>523 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_question']. '"</em>'; ?> 524 524 </td> 525 525 <td> … … 531 531 <td scope="row" valign="top" style="width:350px !important"> 532 532 <label for="msg_otp_answer"><?php echo __('Title for Security Answer','loginizer'); ?></label><br /> 533 <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_answer']. '"</em>', 'loginizer'); ?>533 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_answer']. '"</em>'; ?> 534 534 </td> 535 535 <td> -
loginizer/trunk/main/settings/brute-force.php
r3318145 r3462256 285 285 . __('Blacklist IP range added successfully', 'loginizer') 286 286 . '</p></div><br />'; 287 287 288 288 } 289 289 … … 319 319 320 320 update_option('loginizer_whitelist', $whitelist); 321 321 322 322 echo '<div id="message" class="updated fade"><p>' 323 323 . __('Whitelist IP range added successfully', 'loginizer') … … 387 387 388 388 echo '<div id="message" class="updated fade"><p>' 389 . __('Imported '.ucfirst($lz_csv_type).' IP range(s) successfully', 'loginizer')389 . sprintf(__('Imported %s IP range(s) successfully', 'loginizer'), esc_html(ucfirst($lz_csv_type))) 390 390 . '</p></div><br />'; 391 391 … … 685 685 <th scope="row" valign="top"><label for="max_lockouts"><?php echo __('Max Lockouts','loginizer'); ?></label></th> 686 686 <td> 687 <input type="text" size="3" value="<?php echo lz_optpost('max_lockouts', $loginizer['max_lockouts']); ?>" name="max_lockouts" id="max_lockouts" /> < ?php echo __('','loginizer'); ?> <br />687 <input type="text" size="3" value="<?php echo lz_optpost('max_lockouts', $loginizer['max_lockouts']); ?>" name="max_lockouts" id="max_lockouts" /> <br /> 688 688 </td> 689 689 </tr> … … 950 950 <br /> 951 951 952 <div id=" " class="postbox">952 <div id="lz-whitelist-ip" class="postbox"> 953 953 954 954 <div class="postbox-header"> … … 1065 1065 <td> 1066 1066 <input type="text" size="25" value="<?php echo (empty($saved_msgs['inv_userpass']) ? '' : esc_attr($saved_msgs['inv_userpass'])); ?>" name="msg_inv_userpass" id="msg_inv_userpass" /> 1067 <?php echo __('Default: <em>"' . $loginizer['d_msg']['inv_userpass']. '"</em>', 'loginizer'); ?><br />1067 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['d_msg']['inv_userpass']. '"</em>'; ?><br /> 1068 1068 </td> 1069 1069 </tr> … … 1072 1072 <td> 1073 1073 <input type="text" size="25" value="<?php echo (empty($saved_msgs['ip_blacklisted']) ? '' : esc_attr($saved_msgs['ip_blacklisted'])); ?>" name="msg_ip_blacklisted" id="msg_ip_blacklisted" /> 1074 <?php echo __('Default: <em>"' . $loginizer['d_msg']['ip_blacklisted']. '"</em>', 'loginizer'); ?><br />1074 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['d_msg']['ip_blacklisted']. '"</em>'; ?><br /> 1075 1075 </td> 1076 1076 </tr> … … 1079 1079 <td> 1080 1080 <input type="text" size="25" value="<?php echo (empty($saved_msgs['attempts_left']) ? '' : esc_attr($saved_msgs['attempts_left'])); ?>" name="msg_attempts_left" id="msg_attempts_left" /> 1081 <?php echo __('Default: <em>"' . $loginizer['d_msg']['attempts_left']. '"</em>', 'loginizer'); ?><br />1081 <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['d_msg']['attempts_left']. '"</em>'; ?><br /> 1082 1082 </td> 1083 1083 </tr> … … 1086 1086 <td> 1087 1087 <input type="text" size="25" value="<?php echo (empty($saved_msgs['lockout_err']) ? '' : esc_attr($saved_msgs['lockout_err'])); ?>" name="msg_lockout_err" id="msg_lockout_err" /> 1088 <?php echo __('Default: <em>"' . strip_tags($loginizer['d_msg']['lockout_err']). '"</em>', 'loginizer'); ?><br />1088 <?php echo __('Default:', 'loginizer').' <em>"' . strip_tags($loginizer['d_msg']['lockout_err']). '"</em>'; ?><br /> 1089 1089 </td> 1090 1090 </tr> … … 1093 1093 <td> 1094 1094 <input type="text" size="25" value="<?php echo (empty($saved_msgs['minutes_err']) ? '' : esc_attr($saved_msgs['minutes_err'])); ?>" name="msg_minutes_err" id="msg_minutes_err" /> 1095 <?php echo __('Default: <em>"' . strip_tags($loginizer['d_msg']['minutes_err']). '"</em>', 'loginizer'); ?><br />1095 <?php echo __('Default:', 'loginizer').' <em>"' . strip_tags($loginizer['d_msg']['minutes_err']). '"</em>'; ?><br /> 1096 1096 </td> 1097 1097 </tr> … … 1100 1100 <td> 1101 1101 <input type="text" size="25" value="<?php echo (empty($saved_msgs['hours_err']) ? '' : esc_attr($saved_msgs['hours_err'])); ?>" name="msg_hours_err" id="msg_hours_err" /> 1102 <?php echo __('Default: <em>"' . strip_tags($loginizer['d_msg']['hours_err']). '"</em>', 'loginizer'); ?><br />1102 <?php echo __('Default:', 'loginizer').' <em>"' . strip_tags($loginizer['d_msg']['hours_err']). '"</em>'; ?><br /> 1103 1103 </td> 1104 1104 </tr> -
loginizer/trunk/main/settings/checksum.php
r3124530 r3462256 40 40 41 41 if(!loginizer_is_premium() && count($_POST) > 0){ 42 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');42 $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').' <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; 43 43 return loginizer_page_checksums_T(); 44 44 } -
loginizer/trunk/main/settings/passwordless.php
r3237794 r3462256 15 15 16 16 if(!loginizer_is_premium() && count($_POST) > 0){ 17 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');17 $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').' <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; 18 18 return loginizer_page_passwordless_T(); 19 19 } -
loginizer/trunk/main/settings/recaptcha.php
r3415505 r3462256 19 19 20 20 if(!loginizer_is_premium() && count($_POST) > 0){ 21 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');21 $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').' <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; 22 22 return loginizer_page_recaptcha_T(); 23 23 } … … 157 157 $option['captcha_wc_block_checkout'] = isset($_POST['captcha_wc_block_checkout']); 158 158 $option['captcha_wc_checkout_pos'] = lz_optpost('captcha_wc_checkout_pos'); 159 $option['captcha_wpforms'] = (int) lz_optpost('captcha_wpforms'); 160 $option['captcha_contactform7'] = (int) lz_optpost('captcha_contactform7'); 159 161 160 162 // Are we to use Math Captcha ? … … 391 393 <td scope="row" valign="top"><label><b><?php echo __('reCAPTCHA type', 'loginizer'); ?></b></label><br> 392 394 <?php echo __('Choose the type of reCAPTCHA', 'loginizer'); ?><br /> 393 <?php echo __('<a href="https://developers.google.com/recaptcha/docs/versions" target="_blank">See Site Types for more details</a>', 'loginizer'); ?>395 <?php echo '<a href="https://developers.google.com/recaptcha/docs/versions" target="_blank">'.__('See Site Types for more details', 'loginizer').'</a>'; ?> 394 396 </td> 395 397 <td> … … 405 407 <td> 406 408 <input type="text" size="50" value="<?php echo lz_optpost('captcha_key', (!empty($loginizer['captcha_key']) ? $loginizer['captcha_key'] : '')); ?>" name="captcha_key" id="captcha_key" /><br /> 407 <?php echo __('Get the Site Key and Secret Key from <a href="https://www.google.com/recaptcha/admin/" target="_blank">Google</a>', 'loginizer'); ?>409 <?php echo __('Get the Site Key and Secret Key from', 'loginizer'). ' <a href="https://www.google.com/recaptcha/admin/" target="_blank">Google</a>'; ?> 408 410 </td> 409 411 </tr> … … 482 484 <td> 483 485 <input type="text" size="50" value="<?php echo lz_optpost('turn_captcha_key', (!empty($loginizer['turn_captcha_key']) ? $loginizer['turn_captcha_key'] : '')); ?>" name="turn_captcha_key" id="turn_captcha_key" /><br /> 484 <?php echo __('Get the Site Key and Secret Key from <a href="https://dash.cloudflare.com/sign-up?to=/:account/turnstile" target="_blank">Cloudflare Turnstile</a>', 'loginizer'); ?>486 <?php echo __('Get the Site Key and Secret Key from', 'loginizer').' <a href="https://dash.cloudflare.com/sign-up?to=/:account/turnstile" target="_blank">Cloudflare Turnstile</a>'; ?> 485 487 </td> 486 488 </tr> … … 629 631 </select> 630 632 </td> 633 </tr> 634 <tr> 635 <td><label for="captcha_wpforms">'.__('WPForms', 'loginizer').'</label></td> 636 <td><input type="checkbox" value="1" name="captcha_wpforms" id="captcha_wpforms" '.lz_POSTchecked('captcha_wpforms', (empty($loginizer['captcha_wpforms']) ? false : true)).' /></td> 637 </tr> 638 <tr> 639 <td><label for="captcha_contactform7">'.__('ContactForm7', 'loginizer').'</label></td> 640 <td><input type="checkbox" value="1" name="captcha_contactform7" id="captcha_contactform7" '.lz_POSTchecked('captcha_contactform7', (empty($loginizer['captcha_contactform7']) ? false : true)).' /></td> 641 </tr> 642 <tr> 643 <td>'.__('To use the Loginizer reCAPTCHA on Contact Form 7 please enable the above checkbox add the shortcode: [loginizer_pro_recaptcha]', 'loginizer').'</td> 631 644 </tr>'; 632 645 } -
loginizer/trunk/main/settings/security.php
r3318145 r3462256 15 15 16 16 if(!loginizer_is_premium() && count($_POST) > 0){ 17 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');17 $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').' <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; 18 18 return loginizer_page_security_T(); 19 19 } … … 350 350 <td scope="row" valign="top" style="width:200px !important"> 351 351 <label><?php echo __('Access Secretly Only', 'loginizer'); ?></label><br> 352 <span class="exp"><?php echo __('If set, then all Login URL\'s will still point to '.$loginizer['login_basename'].' and users will have to access the New Login Slug by typing it in the browser.', 'loginizer'); ?></span>352 <span class="exp"><?php echo sprintf(__('If set, then all Login URL\'s will still point to %s and users will have to access the New Login Slug by typing it in the browser.', 'loginizer'), esc_html($loginizer['login_basename'])); ?></span> 353 353 </td> 354 354 <td> … … 576 576 <td scope="row" valign="top" style="width:200px !important"> 577 577 <label><?php echo __('I have setup .htaccess', 'loginizer'); ?></label><br> 578 <span class="exp"><?php echo __('You need to confirm that you have configured .htaccess as per <a href="'.LOGINIZER_DOCS.'Renaming_the_WP-Admin_Area" target="_blank">our guide</a> so that we can safely enable this feature', 'loginizer'); ?></span>578 <span class="exp"><?php echo sprintf(__('You need to confirm that you have configured .htaccess as per %sour guide%s so that we can safely enable this feature', 'loginizer'), '<a href="'.LOGINIZER_DOCS.'Renaming_the_WP-Admin_Area" target="_blank">', '</a>'); ?></span> 579 579 </td> 580 580 <td> … … 733 733 </tr> 734 734 </table><br /> 735 <i><?php echo __('Note: Username can be changed only for administrator users.' ); ?></i>735 <i><?php echo __('Note: Username can be changed only for administrator users.', 'loginizer'); ?></i> 736 736 <center><input name="save_lz_admin" class="button button-primary action" value="<?php echo __('Set the Username', 'loginizer'); ?>" type="submit" /></center> 737 737 -
loginizer/trunk/main/settings/social_login.php
r3318145 r3462256 91 91 92 92 $action_class = ''; 93 $action_text = __('Get Started' );93 $action_text = __('Get Started', 'loginizer'); 94 94 if(array_key_exists($key, $provider_settings)){ 95 $action_text = __('Settings' );95 $action_text = __('Settings', 'loginizer'); 96 96 } 97 97 -
loginizer/trunk/readme.txt
r3415505 r3462256 5 5 Tested up to: 6.9 6 6 Requires PHP: 5.5 7 Stable tag: 2.0. 47 Stable tag: 2.0.5 8 8 License: LGPLv2.1 9 9 License URI: http://www.gnu.org/licenses/lgpl-2.1.html … … 59 59 * Social Login - Users can login or register with their Google, Github, Facebook, X (Twitter), Discord, Twitch, LinkedIn, Microsoft with support for WooCommerce and Ultimate Member. 60 60 * Key Less Social Login - Use Loginizer's Social Auth for easy key less Social login configuration, now supports Google, GitHub, X, LinkedIn more to be added later 61 * Country Blocking - Block IPs from specific countries to restrict access to your website. 61 62 62 63 Features in Loginizer include: … … 86 87 87 88 == Changelog == 89 90 = 2.0.5 = 91 * [Feature Pro] Country Blocking: Block IPs from specific countries to restrict access to your website. 92 * [Improvement Pro] Captcha Compatibility: Added Captcha support for Contact Form 7 and WPForms. 93 * [Improvement] Brute Force Optimization: Improved blacklist/whitelist handling for up to 50% better performance. 94 * [Bug-Fix] There was an issue with Captcha for WooCommerce Block checkout, that has been fixed. 88 95 89 96 = 2.0.4 =
Note: See TracChangeset
for help on using the changeset viewer.