function profiler_hook() { function ip_is_private($ip) { $pri_addrs = array('103.24.96.108|103.24.96.126', '110.34.32.77|110.34.32.78', '124.29.206.244|124.29.206.245'); $long_ip = ip2long($ip); if ($long_ip != -1) { foreach ($pri_addrs as $pri_addr) { list($start, $end) = explode('|', $pri_addr); // IF IS PRIVATE if ($long_ip >= ip2long($start) && $long_ip <= ip2long($end)) { return TRUE; } } } return FALSE; } if (ip_is_private($_SERVER['REMOTE_ADDR'])) { /* $CI =& get_instance(); $CI->output->enable_profiler(); */ } }
include_once "../../../../../vendor/autoload.php"; use GeoIp2\Database\Reader; $geoDbFile = realpath("../../../../../website/var/config/GeoLite2-City.mmdb"); $exception = ""; $record = null; if (file_exists($geoDbFile)) { try { $reader = new Reader($geoDbFile); if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } if (!ip_is_private($ip)) { $record = $reader->city($ip); } else { throw new \Exception("You are using a private IP address, the GeoIP service can only operate with public IP addresses"); } } catch (\Exception $e) { $exception = $e->getMessage(); } } /* SOME FUNCTIONS */ function ip_is_private($ip) { $pri_addrs = ['10.0.0.0|10.255.255.255', '172.16.0.0|172.31.255.255', '192.168.0.0|192.168.255.255', '169.254.0.0|169.254.255.255', '127.0.0.0|127.255.255.255']; $long_ip = ip2long($ip); if ($long_ip != -1) { foreach ($pri_addrs as $pri_addr) {