<?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);
 
 
 
 
 
 
 
 
 
 
 
 
 |