| Server IP : 89.108.64.180 / Your IP : 216.73.217.95 Web Server : Apache/2.4.41 (Ubuntu) System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-root ( 1010) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/hotelzm.com/wp-content/plugins/wordfence/lib/ |
Upload File : |
<?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;
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:', $message, 0);
}
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 . '/' . wfIpLocation::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($preferredSource, self::$instances)) {
$database = self::initializeDatabase($preferredSource, $isPreferred);
self::$instances[$preferredSource] = new wfIpLocator($database, $isPreferred);
}
return self::$instances[$preferredSource];
}
}