<?php
require_once 'IP2LocationCalc.php';
error_reporting(E_ERROR | E_PARSE);
//ini_set("display_errors",0);
//ini_set('error_reporting',0);
//set_time_limit(60*2);
ini_set('max_execution_time', 300);
$ip_data=[];
//Load file using FILE_IO method
$db = new \IP2Location\Database('./databases/IP2LOCATION-LITE-DB11.BIN', \IP2Location\Database::FILE_IO);
switch ($_GET["dir"]) {
case "down" ; {
$from=$_GET["from"];
$to=$_GET["to"];
$step=$_GET["step"];
$cc=$_GET["cc"];
}
break;
default : {
$from=$_GET["to"];
$to=$_GET["from"];
$step=$_GET["step"];
$cc=$_GET["cc"];
$step*=-1;
}
break;
}
if ($from<0 && $to<0) {
$from=0;
$to=from+$step*$step;
}
//$from=-2721030656;$to=-1060086267;$step=16777216;$dir=down;$cc=All;
//$from=-5721030656;$to=-4060086267;$step=16777216;$dir=down;$cc=CN;
//from=-1720253316&to=-42531716&step=16777216&dir=up&cc=All;
//$from=85196800;$to=91684864;$step=65536;$cc="VN";
//$from=0;$to=6488064;$step=65536;$cc="JP";
//$s=ip2long("0.0.0.0");
$e=sprintf('%u', ip2long("255.255.255.255"));
if ($cc != "All") {
foreach (range(0,$e,256*256*256) as $long) {
$records = $db->lookup(long2ip($long), \IP2Location\Database::ALL);
if ($records["countryCode"]!=$cc) {
$b=sprintf('%u', long2ip($long));
$a=explode(".",$b)[0];
$step4[$a]= [$a,$long,$records["countryCode"]];
}
}
while ($from<$to && $from>=0 || count($ip_data)<99) {
if (count($ip_data)>99) break;
$b=sprintf('%u', long2ip($from));
$a = explode(".",$b)[0];
if (!$step4[$a] && $a<129) {
$records = $db->lookup(long2ip($from), \IP2Location\Database::ALL);
if ($cc==$records['countryCode'] || $cc=="All") {
$ip_data[] = ['ipaddr'=>$records['ipAddress'],
'countryCode'=>$records['countryCode'],
'regionName'=>$records['regionName'],
'cityName'=>$records['cityName'],
'lat'=>$records['latitude'],
'long'=>$records['longitude'],
'zipCode'=>$records['zipCode'],
'timeZone'=>$records['timeZone'],
'from'=>$from,
'to'=>$to
];
}
} else if ($a>129){
break;
}
$from+=$step;
}
} else {
while ($from<$to && $from>=0 || count($ip_data)<99) {
if (count($ip_data)>99) break;
if ($from>=$e) break;
$records = $db->lookup(long2ip($from), \IP2Location\Database::ALL);
$ip_data[] = ['ipaddr'=>$records['ipAddress'],
'countryCode'=>$records['countryCode'],
'regionName'=>$records['regionName'],
'cityName'=>$records['cityName'],
'lat'=>$records['latitude'],
'long'=>$records['longitude'],
'zipCode'=>$records['zipCode'],
'timeZone'=>$records['timeZone'],
'from'=>$from,
'to'=>$to
];
$from+=$step;
}
}
header("Expires: Sat, 1 Jan 2005 00:00:00 GMT");
header("Last-Modified: ".gmdate( "D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo json_encode($ip_data,true);
|