Server IP : 192.64.118.117 / Your IP : 3.15.190.49 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/thecgapy/mobilecreationz.com/wp-content/plugins/wordfence/lib/ |
Upload File : |
<?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 function getBrowser($user_agent){ if (!$this->_cacheLoaded) { if (!$this->_loadCache('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 (1 == 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; $source_version = null; $browsers = array(); $userAgents = array(); $patterns = array(); $properties = array(); $this->_cacheLoaded = false; require $cache_file; $this->_source_version = $source_version; $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_pos, 4); } } return $result; } }