Server IP : 104.21.14.48 / Your IP : 18.191.200.108 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/chroot/var/www/wp-content/plugins/defender-security/src/component/ |
Upload File : |
<?php /** * Handles the display and management of lockout-related data in tables. * * @package WP_Defender\Component */ namespace WP_Defender\Component; use WP_Defender\Component; use WP_Defender\Traits\Formats; use WP_Defender\Model\Lockout_Ip; use WP_Defender\Model\Lockout_Log; /** * Handles the display and management of lockout-related data in tables. */ class Table_Lockout extends Component { use Formats; public const STATUS_BAN = 'ban', STATUS_NOT_BAN = 'not_ban', STATUS_ALLOWLIST = 'allowlist'; public const SORT_DESC = 'latest', SORT_ASC = 'oldest', SORT_BY_IP = 'ip', SORT_BY_UA = 'user_agent'; public const LIMIT_20 = '20', LIMIT_50 = '50', LIMIT_100 = '100', LIMIT_ALL = '-1'; /** * Retrieves the status text for a given IP address. * * @param string $ip The IP address to check. * * @return string The status text related to the IP address. */ public function get_ip_status_text( $ip ): string { $bl_component = new Blacklist_Lockout(); if ( $bl_component->is_ip_whitelisted( $ip ) ) { return esc_html__( 'Is allowlisted', 'defender-security' ); } if ( $bl_component->is_blacklist( $ip ) ) { return esc_html__( 'Is blocklisted', 'defender-security' ); } $model = Lockout_Ip::get( $ip ); if ( ! is_object( $model ) ) { return esc_html__( 'Not banned', 'defender-security' ); } if ( Lockout_Ip::STATUS_BLOCKED === $model->status ) { return esc_html__( 'Banned', 'defender-security' ); } elseif ( Lockout_Ip::STATUS_NORMAL === $model->status ) { return esc_html__( 'Not banned', 'defender-security' ); } return ''; } /** * Get types. * * @return array */ private function get_types(): array { return array( 'all' => esc_html__( 'All', 'defender-security' ), Lockout_Log::AUTH_FAIL => esc_html__( 'Failed login attempts', 'defender-security' ), Lockout_Log::AUTH_LOCK => esc_html__( 'Login lockout', 'defender-security' ), Lockout_Log::ERROR_404 => esc_html__( '404 error', 'defender-security' ), Lockout_Log::LOCKOUT_404 => esc_html__( '404 lockout', 'defender-security' ), Lockout_Log::LOCKOUT_UA => esc_html__( 'User Agent Lockout', 'defender-security' ), ); } /** * Get ban statuses. * * @return array */ private function ban_status(): array { return array( 'all' => esc_html__( 'All', 'defender-security' ), self::STATUS_NOT_BAN => esc_html__( 'Not Banned', 'defender-security' ), self::STATUS_BAN => esc_html__( 'Banned', 'defender-security' ), self::STATUS_ALLOWLIST => esc_html__( 'Allowlisted', 'defender-security' ), ); } /** * Retrieves the type description based on the type key. * * @param string $type The type key. * * @return string The description of the type. */ public function get_type( $type ): string { $types = array( Lockout_Log::AUTH_FAIL => esc_html__( 'Failed login attempts', 'defender-security' ), Lockout_Log::AUTH_LOCK => esc_html__( 'Login lockout', 'defender-security' ), Lockout_Log::ERROR_404 => esc_html__( '404 error', 'defender-security' ), Lockout_Log::ERROR_404_IGNORE => esc_html__( '404 error', 'defender-security' ), Lockout_Log::LOCKOUT_404 => esc_html__( '404 lockout', 'defender-security' ), Lockout_Log::LOCKOUT_UA => esc_html__( 'User Agent Lockout', 'defender-security' ), ); return $types[ $type ] ?? ''; } /** * Retrieves sorting values. * * @return array An associative array of sorting options. */ private function sort_values(): array { return array( self::SORT_DESC => esc_html__( 'Latest', 'defender-security' ), self::SORT_ASC => esc_html__( 'Oldest', 'defender-security' ), self::SORT_BY_IP => esc_html__( 'IP Address', 'defender-security' ), self::SORT_BY_UA => esc_html__( 'User agent', 'defender-security' ), ); } /** * Retrieves pagination limits. * * @return array An associative array of pagination limits. */ private function limit_per_page(): array { return array( self::LIMIT_20 => '20', self::LIMIT_50 => '50', self::LIMIT_100 => '100', self::LIMIT_ALL => esc_html__( 'All', 'defender-security' ), ); } /** * Retrieves all filters used in the lockout table. * * @return array An associative array of all filters. */ public function get_filters(): array { return array( 'lockout_types' => $this->get_types(), 'ban_status' => $this->ban_status(), 'sort_values' => $this->sort_values(), 'limit_logs' => $this->limit_per_page(), ); } }