Source of file ContinentalContentUtils.php
Size: 2,411 Bytes - Last Modified: 2021-12-23T10:36:28+00:00
/var/www/docs.ssmods.com/process/src/code/Utils/ContinentalContentUtils.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <?php /** * Created by Nivanka Fonseka (nivanka@silverstripers.com). * User: nivankafonseka * Date: 2/9/15 * Time: 10:47 AM * To change this template use File | Settings | File Templates. */ class ContinentalContentUtils { private static $fake_ip = null; public static function set_fake_ip($ip) { self::$fake_ip = $ip; Session::set('FAKE_IP', $ip); Session::save(); } public static function get_fake_ip() { if(Session::get('FAKE_IP')) return Session::get('FAKE_IP'); return self::$fake_ip; } public static function clear_fake_ip() { Session::clear('FAKE_IP'); Session::save(); self::$fake_ip = null; } public static function IPAddress(){ if($ip = ContinentalContentUtils::get_fake_ip()) return $ip; elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR']; else if (isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; elseif (isset($_SERVER['REMOTE_ADDR'])) return $_SERVER['REMOTE_ADDR']; } public static function IPType($addr) { if (ip2long($addr) !== false) { return "ipv4"; } else if (preg_match('/^[0-9a-fA-F:]+$/', $addr) && @inet_pton($addr)) { return "ipv6"; } } public static function IPAddressToIPNumber($strIP) { if(self::GetProvider() == 'IPDBCOM'){ return inet_pton($strIP); } $arrParts = explode('.', $strIP); return $arrParts[3] + ($arrParts[2] * 256) + ($arrParts[1] * 256 * 256) + ($arrParts[0] * 256 * 256 * 256); } public static function IPV6AddressToIPNumber($ipv6) { $int = inet_pton($ipv6); $bits = 15; $ipv6long = 0; while($bits >= 0) { $bin = sprintf("%08b", (ord($int[$bits]))); if($ipv6long){ $ipv6long = $bin . $ipv6long; } else{ $ipv6long = $bin; } $bits--; } $ipv6long = gmp_strval(gmp_init($ipv6long, 2), 10); return $ipv6long; } public static function GetLocation() { if($ip = self::IPAddress()){ Debug::log('IP Address : ' . $ip); $ipNumber = self::IPType($ip) == 'ipv4' ? self::IPAddressToIPNumber($ip) : self::IPV6AddressToIPNumber($ip); $parse = IpParser::get(self::GetProvider()); return $parse->getLocation($ip, $ipNumber); } return null; } public static function GetProvider(){ return Config::inst()->get('ContinentalContent', 'provider') . 'Parser'; } } |