HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
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/wpwatermates_err/wp-content/plugins/defender-security/src/component/firewall-logs.php
<?php

namespace WP_Defender\Component;

use WP_Defender\Component;
use WP_Defender\Model\Lockout_Log;

class Firewall_Logs extends Component {

	/**
	 * Fetch compact Firewall logs.
	 *
     * @param int $from  Fetch Logs from this time to current time.
     *
	 * @return array
	 */
	public function get_compact_logs( int $from ): array {
		global $wpdb;

		$table = $wpdb->base_prefix . ( new Lockout_Log() )->get_table();
		$sql = $wpdb->prepare(
			"SELECT IP, `type`, COUNT(*) AS frequency, country_iso_code FROM {$table}" .
			" WHERE `date` >= %s AND type IN ('auth_fail', '404_error', 'ua_lockout')" .
			" GROUP BY IP, `type`",
			$from
        );
        $results = $wpdb->get_results( $sql, ARRAY_A );

        $logs = [];
        if ( is_array( $results ) ) {
            foreach ( $results as $row ) {
                $ip = $row['IP'];
                if ( ! isset( $logs[ $ip ] ) ) {
                    $logs[ $ip ] = ['ip' => $ip];
                }

                $type = '';
                if( 'auth_fail' === $row['type'] ) {
                    $type = 'login';
                } else if ( '404_error' === $row['type'] ) {
                    $type = 'nf';
                } else if ( 'ua_lockout' === $row['type'] ) {
                    $type = 'ua';
                }

                if ( empty( $type ) ) {
                    continue;
                }

                $logs[ $ip ]['reason'][ $type ] = $row['frequency'];
                $logs[ $ip ][ 'country_code' ] = $row['country_iso_code'];
            }
        }

        return array_values( $logs );
	}
}