HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux sa-dev.otherchirps.net 5.15.0-139-generic #149-Ubuntu SMP Fri Apr 11 22:06:13 UTC 2025 x86_64
User: www-data (33)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wp-content/plugins/wp-fail2ban/feature/user.php
<?php declare(strict_types=1);
/**
 * Blocked user functionality
 *
 * @package wp-fail2ban
 * @since   4.4.0   Require PHP 7.4
 * @since   4.0.0
 */
namespace    org\lecklider\charles\wordpress\wp_fail2ban\feature;

use          org\lecklider\charles\wordpress\wp_fail2ban\Config;
use          org\lecklider\charles\wordpress\wp_fail2ban\Syslog;

use function org\lecklider\charles\wordpress\wp_fail2ban\bail;

defined('ABSPATH') or exit;

/**
 * Catch blocked users
 *
 * @see \wp_authenticate()
 *
 * @since  4.4.0    Add type hints
 * @since  4.3.4.0  Refactor to use Syslog::single
 * @since  4.3.0    Add blocking username logins
 * @since  3.5.0    Refactored for unit testing
 * @since  2.0.0
 *
 * @param  mixed|null   $user
 * @param  string       $username
 * @param  string       $password
 *
 * @return mixed|null
 *
 * @wp-f2b-hard Blocked authentication attempt for .*
 * @wp-f2b-soft Blocked username authentication attempt for .*
 */
function block_users($user, string $username, string $password) // : ?mixed
{
    if (!empty($username)) {
        if (Config::get('WP_FAIL2BAN_BLOCK_USERNAME_LOGIN')) {
            if (is_email($username)) {
                // OK!
            } else {
                Syslog::single(LOG_NOTICE, "Blocked username authentication attempt for {$username}");

                do_action(__FUNCTION__.'.block_username_login', $user, $username, $password);

                return bail(); // for testing
            }
        }

        if (!empty(Config::get('WP_FAIL2BAN_BLOCKED_USERS'))) {
            /**
             * @since 3.5.0 Arrays allowed in PHP 7
             */
            $blocked_users = Config::get('WP_FAIL2BAN_BLOCKED_USERS');
            $matched = (is_array($blocked_users))
                ? in_array($username, $blocked_users)
                : preg_match('/'.$blocked_users.'/i', $username);

            if ($matched) {
                Syslog::single(LOG_NOTICE, "Blocked authentication attempt for {$username}");

                do_action(__FUNCTION__.'.blocked_users', $user, $username, $password);

                return bail(); // for testing
            }
        }
    }

    return $user;
}