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: wfBrowscap.php
Edit
<?php
class wfBrowscap {
    protected 
$_cacheLoaded false;
    protected 
$_userAgents = array();
    protected 
$_browsers = array();
    protected 
$_patterns = array();
    protected 
$_properties = array();
    protected 
$resultCache = array();
    const 
COMPRESSION_PATTERN_START '@';
    const 
COMPRESSION_PATTERN_DELIMITER '|';
    const 
REGEX_DELIMITER '@';
    
    public static function 
shared() {
        static 
$_browscap null;
        if (
$_browscap === null) {
            
$_browscap = new wfBrowscap();
        }
        return 
$_browscap;
    }

    public function 
getBrowser($user_agent){
        if (!
$this->_cacheLoaded) {
                if (!
$this->_loadCache(dirname(__FILE__) . '/wfBrowscapCache.php')) {
                    throw new 
Exception('Cannot load this cache version - the cache format is not compatible.');
                }
            }

        
$browser = array();
        foreach (
$this->_patterns as $pattern => $pattern_data) {
            if (
preg_match($pattern 'i'$user_agent$matches)) {
                if (
== count($matches)) {
                    
$key $pattern_data;

                    
$simple_match true;
                } else {
                    
$pattern_data unserialize($pattern_data);

                    
array_shift($matches);

                    
$match_string self::COMPRESSION_PATTERN_START
                        
implode(self::COMPRESSION_PATTERN_DELIMITER$matches);

                    if (!isset(
$pattern_data[$match_string])) {
                        continue;
                    }

                    
$key $pattern_data[$match_string];

                    
$simple_match false;
                }

                
$browser = array(
                    
$user_agent,
                    
trim(strtolower($pattern), self::REGEX_DELIMITER),
                    
$this->_pregUnQuote($pattern$simple_match false $matches)
                );

                
$browser $value $browser unserialize($this->_browsers[$key]);

                while (
array_key_exists(3$value)) {
                    
$value unserialize($this->_browsers[$value[3]]);
                    
$browser += $value;
                }

                if (!empty(
$browser[3])) {
                    
$browser[3] = $this->_userAgents[$browser[3]];
                }

                break;
            }
        }

        
$array = array();
        foreach (
$browser as $key => $value) {
            if (
$value === 'true') {
                
$value true;
            } elseif (
$value === 'false') {
                
$value false;
            }
            
$array[$this->_properties[$key]] = $value;
        }

        return 
$array;
    }
    protected function 
_loadCache($cache_file){
        
$cache_version  null;
        
$browsers       = array();
        
$userAgents     = array();
        
$patterns       = array();
        
$properties     = array();

        
$this->_cacheLoaded false;

        require 
$cache_file;

        
$this->_browsers       $browsers;
        
$this->_userAgents     $userAgents;
        
$this->_patterns       $patterns;
        
$this->_properties     $properties;

        
$this->_cacheLoaded true;

        return 
true;
    }
    protected function 
_pregUnQuote($pattern$matches){
        
$search  = array(
            
'\\' self::REGEX_DELIMITER'\\.''\\\\''\\+''\\[''\\^''\\]''\\$''\\(''\\)''\\{''\\}',
            
'\\=''\\!''\\<''\\>''\\|''\\:''\\-''.*''.''\\?'
        
);
        
$replace = array(
            
self::REGEX_DELIMITER'\\?''\\''+''[''^'']''$''('')''{''}''=''!''<''>''|',
            
':''-''*''?''.'
        
);

        
$result substr(str_replace($search$replace$pattern), 2, -2);

        if (
$matches) {
            foreach (
$matches as $one_match) {
                
$num_pos strpos($result'(\d)');
                
$result  substr_replace($result$one_match$num_pos4);
            }
        }

        return 
$result;
    }
}

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

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL