HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux acmehomecare 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 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/init.php
<?php declare(strict_types=1);
/**
 * WP fail2ban features
 *
 * @package wp-fail2ban
 * @since   4.4.0   Require PHP 7.4
 * @since   4.0.0
 * @php     7.4
 */
namespace    org\lecklider\charles\wordpress\wp_fail2ban;

defined('ABSPATH') or exit;

/**
 * Hook: plugins_loaded
 *
 * Run slightly earlier than the main hook
 *
 * @since  4.4.0    Add return type
 * @since  4.3.0
 *
 * @return void
 */
function plugins_loaded__early(): void
{
    Config::load();
}
add_action('plugins_loaded', __NAMESPACE__.'\plugins_loaded__early', 9);

/**
 * Load all enabled features.
 *
 * @since  4.4.0    Add return type
 * @since  4.3.0
 *
 * @return void
 *
 * @wp-f2b-hard Immediately block connections
 */
function plugins_loaded(): void
{
    /**
     * Core
     *
     * @since 4.3.0
     */
    add_action('authenticate', __NAMESPACE__.'\core\authenticate', 1, 3);
    add_action('wp_login', __NAMESPACE__.'\core\wp_login', 10, 2);
    add_action('wp_login_failed', __NAMESPACE__.'\core\wp_login_failed');

    /**
     * Comments
     *
     * @since 4.0.0     Refactored
     * @since 3.5.0
     */
    if (true === Config::get('WP_FAIL2BAN_LOG_COMMENTS') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_filter('notify_post_author', __NAMESPACE__.'\feature\notify_post_author', 10, 2);

        /**
         * @deprecated 5.0.0
         */
        if ($comments = Config::get('WP_FAIL2BAN_LOG_COMMENTS_EXTRA')) {
            if ($comments & WPF2B_EVENT_COMMENT_NOT_FOUND) {
                add_action('comment_id_not_found', __NAMESPACE__.'\feature\comment_id_not_found');
            }
            if ($comments & WPF2B_EVENT_COMMENT_CLOSED) {
                add_action('comment_closed', __NAMESPACE__.'\feature\comment_closed');
            }
            if ($comments & WPF2B_EVENT_COMMENT_TRASH) {
                add_action('comment_on_trash', __NAMESPACE__.'\feature\comment_on_trash');
            }
            if ($comments & WPF2B_EVENT_COMMENT_DRAFT) {
                add_action('comment_on_draft', __NAMESPACE__.'\feature\comment_on_draft');
            }
            if ($comments & WPF2B_EVENT_COMMENT_PASSWORD) {
                add_action('comment_on_password_protected', __NAMESPACE__.'\feature\comment_on_password_protected');
            }
        }
    }
    /**
     * @since 5.0.0
     */
    if (true === Config::get('WP_FAIL2BAN_LOG_COMMENT_ATTEMPTS') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_action('comment_id_not_found', __NAMESPACE__.'\feature\comment_id_not_found');
        add_action('comment_closed', __NAMESPACE__.'\feature\comment_closed');
        add_action('comment_on_trash', __NAMESPACE__.'\feature\comment_on_trash');
        add_action('comment_on_draft', __NAMESPACE__.'\feature\comment_on_draft');
        add_action('comment_on_password_protected', __NAMESPACE__.'\feature\comment_on_password_protected');
    }

    /**
     * Password
     *
     * @since 4.0.0     Refactored
     * @since 3.5.0
     */
    if (true === Config::get('WP_FAIL2BAN_LOG_PASSWORD_REQUEST') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_action('retrieve_password', __NAMESPACE__.'\feature\retrieve_password');
    }


    /**
     * Spam
     *
     * @since 4.0.0     Refactored
     * @since 3.5.0
     */
    if (true === Config::get('WP_FAIL2BAN_LOG_SPAM') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_action('comment_post', __NAMESPACE__.'\feature\log_spam_comment', 10, 2);
        add_action('wp_set_comment_status', __NAMESPACE__.'\feature\log_spam_comment', 10, 2);
    }

    /**
     * User enumeration
     *
     * @since 4.0.0     Refactored
     * @since 2.1.0
     */
    if (true === Config::get('WP_FAIL2BAN_BLOCK_USER_ENUMERATION') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_filter('parse_request', __NAMESPACE__.'\feature\parse_request', 1);
        add_filter('rest_user_query', __NAMESPACE__.'\feature\rest_user_query', 10, 2);
        add_filter('oembed_response_data', __NAMESPACE__.'\feature\oembed_response_data', PHP_INT_MAX-1, 4);
        add_filter('wp_sitemaps_add_provider', __NAMESPACE__.'\feature\wp_sitemaps_add_provider', 10, 2);
    }

    /**
     * Users
     *
     * @since 4.3.0 Better test
     * @since 4.0.0     Refactored
     * @since 2.0.0
     */
    if (Config::get('WP_FAIL2BAN_BLOCKED_USERS') || Config::get('WP_FAIL2BAN_BLOCK_USERNAME_LOGIN') || defined('PHPUNIT_COMPOSER_INSTALL')) {
        add_filter('authenticate', __NAMESPACE__.'\feature\block_users', 1, 3);
    }

    /**
     * Set up for plugins
     *
     * @since 4.3.0
     */
    add_action('wp_fail2ban_register_plugin', __NAMESPACE__.'\feature\register_plugin', 1, 2);
    add_action('wp_fail2ban_register_message', __NAMESPACE__.'\feature\register_message', 1, 2);
    add_action('wp_fail2ban_register_messages', __NAMESPACE__.'\feature\register_messages', 1, 2);
    add_action('wp_fail2ban_log_message', __NAMESPACE__.'\feature\log_message', 1, 3);
}
/**
 * Load nice and early.
 *
 * @since 4.3.0
 */
add_action('plugins_loaded', __NAMESPACE__.'\plugins_loaded');

/**
 * Things we need a current user for.
 *
 * @since  4.4.0    Add return type
 * @since  4.3.0
 *
 * @return void
 */
function init(): void
{
    /**
     * @since 4.3.0 Check for logged in
     * @since 4.2.5 Check for admin
     */
    if (!is_user_logged_in()) {
        /**
         * XML-RPC
         *
         * @since 4.0.0     Refactored
         * @since 3.0.0
         */
        if (defined('XMLRPC_REQUEST') && true === XMLRPC_REQUEST) {
            add_action('xmlrpc_login_error', __NAMESPACE__.'\feature\xmlrpc_login_error', 10, 2);
            add_filter('xmlrpc_pingback_error', __NAMESPACE__.'\feature\xmlrpc_pingback_error', 5);

            /**
             * @since 4.3.0 Refactored
             * @since 4.0.0 Refactored
             * @since 3.6.0
             */
            if (defined('WP_FAIL2BAN_XMLRPC_LOG') && WP_FAIL2BAN_XMLRPC_LOG) {
                feature\xmlrpc_log(); // @codeCoverageIgnore
            }
            /**
             * @since 4.3.0 Refactored
             * @since 4.0.0 Refactored
             * @since 2.2.0
             */
            if (Config::get('WP_FAIL2BAN_LOG_PINGBACKS')) {
                add_action('xmlrpc_call', __NAMESPACE__.'\feature\xmlrpc_call');
            }
        }
    }

    /**
     * @since 4.3.0 Relocate.
     * @since 4.2.5
     */
    if (defined('WP_ADMIN') && WP_ADMIN) {
        require_once __DIR__.'/admin/admin.php'; // @codeCoverageIgnore
    }

    /**
     * @since 4.4.0.9
     */
    add_filter('auto_update_plugin', __NAMESPACE__.'\auto_update_plugin', 10, 2);

    /**
     * @since 5.0.0 Add our tests to Site Health
     */
    add_filter('site_status_tests', __NAMESPACE__.'\SiteHealth::get_tests');
}
add_action('init', __NAMESPACE__.'\init');


/**
 * Init as late as possible.
 *
 * @since  4.4.0    Add return type
 * @since  4.3.0.4
 *
 * @return void
 */
function init__late(): void
{
    /**
     * Let other plugins register their messages
     *
     * @since 4.3.0
     */
    global $wp_fail2ban;
    $wp_fail2ban['plugins'] = [];

    do_action('wp_fail2ban_register');
}
add_action('init', __NAMESPACE__.'\init__late', PHP_INT_MAX);