Plugin Directory

Changeset 3462256


Ignore:
Timestamp:
02/16/2026 07:36:13 AM (6 weeks ago)
Author:
softaculous
Message:

New version 2.0.5

Location:
loginizer/trunk
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • loginizer/trunk/functions.php

    r3365675 r3462256  
    66
    77include_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 }
     8include_once(LOGINIZER_DIR .'/common.php');
    599
    6010// Execute a select query and return an array
     
    7121}
    7222
    73 // Check if an IP is valid
    74 function lz_valid_ip($ip){
    75 
    76     if(empty($ip)){
    77         return false;
    78     }
    79    
    80     // IPv6
    81     if(lz_valid_ipv6($ip)){
    82         return true;
    83     }
    84    
    85     // IPv4
    86     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 
    12323// Check if a field is posted via POST else return default value
    12424function lz_optpost($name, $default = ''){
     
    246146    }
    247147   
    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 />';
    249149   
    250150    foreach($error as $ek => $ev){
     
    253153   
    254154    echo '<div id="message" class="error"><p>'
    255                     . __($error_string, 'loginizer')
     155                    . $error_string
    256156                    . '</p></div>';
    257157}
     
    273173    }
    274174   
    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 />';
    276176   
    277177    foreach($notice as $ek => $ev){
     
    280180   
    281181    echo '<div id="message" class="'.$notice_class.'"><p>'
    282                     . __($notice_string, 'loginizer')
     182                    . $notice_string
    283183                    . '</p></div>';
    284184}
  • loginizer/trunk/init.php

    r3415505 r3462256  
    66}
    77
    8 define('LOGINIZER_VERSION', '2.0.4');
     8define('LOGINIZER_VERSION', '2.0.5');
    99define('LOGINIZER_DIR', dirname(LOGINIZER_FILE));
    1010define('LOGINIZER_URL', plugins_url('', LOGINIZER_FILE));
     
    496496        return false;
    497497    }
    498      
     498   
     499    $current_ip_inet = inet_ptoi($loginizer['current_ip']);
     500
    499501    foreach($blacklist as $k => $v){
    500        
     502
     503        $start_inet = inet_ptoi($v['start']);
     504        $end_inet = inet_ptoi($v['end']);
     505
    501506        // 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){
    503508            $result = 1;
    504509            break;
    505510        }
    506        
     511
    507512        // 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){
    509514           
    510515            // Since the end of the RANGE (i.e. current IP range) is beyond the +ve value of inet_ptoi,
     
    512517            // OR
    513518            // 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){             
    516521                $result = 1;
    517522                break;
     
    521526       
    522527    }
    523        
     528
    524529    // You are blacklisted
    525530    if(!empty($result)){
    526531        $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 range
    557             // OR
    558             // if the current IP is <= than the end of the range, it is within the range
    559             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 whitelisted
    570     if(!empty($result)){
    571532        return true;
    572533    }
  • loginizer/trunk/loginizer.php

    r3415505 r3462256  
    44Plugin URI: https://wordpress.org/extend/plugins/loginizer/
    55Description: 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.4
     6Version: 2.0.5
    77Text Domain: loginizer
    88Author: Softaculous
  • loginizer/trunk/main/admin.php

    r3365675 r3462256  
    461461   
    462462    <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>.';
    464464   
    465465    }
     
    550550       
    551551    }
    552    
     552       
    553553    // Brute Force
    554554    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    }
    555563   
    556564    // PasswordLess
     
    566574   
    567575    // 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');
    569577   
    570578    // 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');
    572580   
    573581    // 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');
    575583   
    576584    // Security Settings
     
    578586   
    579587        // 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');
    581589       
    582590        // File Checksums
     
    765773}
    766774
     775function loginizer_firewall_settings(){
     776    include_once LOGINIZER_PRO_DIR . 'main/settings/waf.php';
     777    loginizer_pro_firewall();
     778}
     779
    767780// Hides the interim login poup after successful login.
    768781function loginizer_social_interim_js(){
  • loginizer/trunk/main/settings/2fa.php

    r3365675 r3462256  
    1515   
    1616    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>';
    1818        return loginizer_page_2fa_T();
    1919    }
     
    283283    // Saved ?
    284284    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 />';
    286286    }
    287287   
     
    491491                        <td scope="row" valign="top" style="width:350px !important">
    492492                            <label for="msg_otp_app"><?php echo __('OTP via APP','loginizer'); ?></label><br />
    493                             <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_app']. '&quot;</em>', 'loginizer'); ?>
     493                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_app']. '&quot;</em>'; ?>
    494494                        </td>
    495495                        <td>
     
    501501                        <td scope="row" valign="top" style="width:350px !important">
    502502                            <label for="msg_otp_email"><?php echo __('OTP via Email','loginizer'); ?></label><br />
    503                             <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_email']. '&quot;</em>', 'loginizer'); ?>
     503                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_email']. '&quot;</em>'; ?>
    504504                        </td>
    505505                        <td>
     
    511511                        <td scope="row" valign="top" style="width:350px !important">
    512512                            <label for="msg_otp_field"><?php echo __('Title for OTP field','loginizer'); ?></label><br />
    513                             <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_field']. '&quot;</em>', 'loginizer'); ?>
     513                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_field']. '&quot;</em>'; ?>
    514514                        </td>
    515515                        <td>
     
    521521                        <td scope="row" valign="top" style="width:350px !important">
    522522                            <label for="msg_otp_question"><?php echo __('Title for Security Question','loginizer'); ?></label><br />
    523                             <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_question']. '&quot;</em>', 'loginizer'); ?>
     523                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_question']. '&quot;</em>'; ?>
    524524                        </td>
    525525                        <td>
     
    531531                        <td scope="row" valign="top" style="width:350px !important">
    532532                            <label for="msg_otp_answer"><?php echo __('Title for Security Answer','loginizer'); ?></label><br />
    533                             <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_answer']. '&quot;</em>', 'loginizer'); ?>
     533                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_answer']. '&quot;</em>'; ?>
    534534                        </td>
    535535                        <td>
  • loginizer/trunk/main/settings/brute-force.php

    r3318145 r3462256  
    285285                    . __('Blacklist IP range added successfully', 'loginizer')
    286286                    . '</p></div><br />';
    287            
     287
    288288        }
    289289       
     
    319319           
    320320            update_option('loginizer_whitelist', $whitelist);
    321            
     321
    322322            echo '<div id="message" class="updated fade"><p>'
    323323                    . __('Whitelist IP range added successfully', 'loginizer')
     
    387387                       
    388388                        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)))
    390390                                . '</p></div><br />';
    391391                       
     
    685685                <th scope="row" valign="top"><label for="max_lockouts"><?php echo __('Max Lockouts','loginizer'); ?></label></th>
    686686                <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 />
    688688                </td>
    689689            </tr>
     
    950950    <br />
    951951   
    952     <div id="" class="postbox">
     952    <div id="lz-whitelist-ip" class="postbox">
    953953   
    954954        <div class="postbox-header">
     
    10651065                        <td>
    10661066                            <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>&quot;' . $loginizer['d_msg']['inv_userpass']. '&quot;</em>', 'loginizer'); ?><br />
     1067                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['d_msg']['inv_userpass']. '&quot;</em>'; ?><br />
    10681068                        </td>
    10691069                    </tr>
     
    10721072                        <td>
    10731073                            <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>&quot;' . $loginizer['d_msg']['ip_blacklisted']. '&quot;</em>', 'loginizer'); ?><br />
     1074                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['d_msg']['ip_blacklisted']. '&quot;</em>'; ?><br />
    10751075                        </td>
    10761076                    </tr>
     
    10791079                        <td>
    10801080                            <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>&quot;' . $loginizer['d_msg']['attempts_left']. '&quot;</em>', 'loginizer'); ?><br />
     1081                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['d_msg']['attempts_left']. '&quot;</em>'; ?><br />
    10821082                        </td>
    10831083                    </tr>
     
    10861086                        <td>
    10871087                            <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>&quot;' . strip_tags($loginizer['d_msg']['lockout_err']). '&quot;</em>', 'loginizer'); ?><br />
     1088                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . strip_tags($loginizer['d_msg']['lockout_err']). '&quot;</em>'; ?><br />
    10891089                        </td>
    10901090                    </tr>
     
    10931093                        <td>
    10941094                            <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>&quot;' . strip_tags($loginizer['d_msg']['minutes_err']). '&quot;</em>', 'loginizer'); ?><br />
     1095                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . strip_tags($loginizer['d_msg']['minutes_err']). '&quot;</em>'; ?><br />
    10961096                        </td>
    10971097                    </tr>
     
    11001100                        <td>
    11011101                            <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>&quot;' . strip_tags($loginizer['d_msg']['hours_err']). '&quot;</em>', 'loginizer'); ?><br />
     1102                            <?php echo __('Default:', 'loginizer').' <em>&quot;' . strip_tags($loginizer['d_msg']['hours_err']). '&quot;</em>'; ?><br />
    11031103                        </td>
    11041104                    </tr>
  • loginizer/trunk/main/settings/checksum.php

    r3124530 r3462256  
    4040   
    4141    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>';
    4343        return loginizer_page_checksums_T();
    4444    }
  • loginizer/trunk/main/settings/passwordless.php

    r3237794 r3462256  
    1515   
    1616    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>';
    1818        return loginizer_page_passwordless_T();
    1919    }
  • loginizer/trunk/main/settings/recaptcha.php

    r3415505 r3462256  
    1919   
    2020    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>';
    2222        return loginizer_page_recaptcha_T();
    2323    }
     
    157157            $option['captcha_wc_block_checkout'] = isset($_POST['captcha_wc_block_checkout']);
    158158            $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');
    159161           
    160162            // Are we to use Math Captcha ?
     
    391393                <td scope="row" valign="top"><label><b><?php echo __('reCAPTCHA type', 'loginizer'); ?></b></label><br>
    392394                <?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>'; ?>
    394396                </td>
    395397                <td>
     
    405407                <td>
    406408                    <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>'; ?>
    408410                </td>
    409411            </tr>
     
    482484                <td>
    483485                    <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>'; ?>
    485487                </td>
    486488            </tr>
     
    629631                                </select>
    630632                            </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>
    631644                        </tr>';
    632645                        }
  • loginizer/trunk/main/settings/security.php

    r3318145 r3462256  
    1515   
    1616    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>';
    1818        return loginizer_page_security_T();
    1919    }
     
    350350                <td scope="row" valign="top" style="width:200px !important">
    351351                    <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>
    353353                </td>
    354354                <td>
     
    576576                <td scope="row" valign="top" style="width:200px !important">
    577577                    <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>
    579579                </td>
    580580                <td>
     
    733733            </tr>
    734734        </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>
    736736        <center><input name="save_lz_admin" class="button button-primary action" value="<?php echo __('Set the Username', 'loginizer'); ?>" type="submit" /></center>
    737737   
  • loginizer/trunk/main/settings/social_login.php

    r3318145 r3462256  
    9191
    9292        $action_class = '';
    93         $action_text = __('Get Started');
     93        $action_text = __('Get Started', 'loginizer');
    9494        if(array_key_exists($key, $provider_settings)){
    95             $action_text = __('Settings');
     95            $action_text = __('Settings', 'loginizer');
    9696        }
    9797
  • loginizer/trunk/readme.txt

    r3415505 r3462256  
    55Tested up to: 6.9
    66Requires PHP: 5.5
    7 Stable tag: 2.0.4
     7Stable tag: 2.0.5
    88License: LGPLv2.1
    99License URI: http://www.gnu.org/licenses/lgpl-2.1.html
     
    5959* 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.
    6060* 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.
    6162
    6263Features in Loginizer include:
     
    8687
    8788== 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.
    8895
    8996= 2.0.4 =
Note: See TracChangeset for help on using the changeset viewer.