更新文件列表

This commit is contained in:
gently 2019-12-14 19:27:05 +08:00
parent b7041c5fc6
commit cf4371c3a3
88 changed files with 270 additions and 289 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,35 +9,36 @@
*/ */
set_time_limit(0); set_time_limit(0);
error_reporting(0); error_reporting(7);
if (PHP_SAPI != 'cli') { if(PHP_SAPI != 'cli'){
die('nothing.'); die('nothing.');
} }
$src_file = ''; $src_file = '';
$file_num = 'unknown'; $file_num = 'unknown';
try { try{
$file = $argv[1]; $file = $argv[1];
$src_file = dirname(__DIR__) . '/origin-files/' . $file; $src_file = dirname(__DIR__) . '/origin-files/' . $file;
list(,$file_num) = explode('_', $file); list(, $file_num) = explode('_', $file);
} catch (Exception $e) { }catch(Exception $e){
echo "get args failed.", $e->getMessage(), "\n"; echo "get args failed.", $e->getMessage(), "\n";
die(0); die(0);
} }
if (empty($src_file) || !is_file($src_file)) { if(empty($src_file) || !is_file($src_file)){
echo 'src_file:', $src_file, ' is not found.'; echo 'src_file:', $src_file, ' is not found.';
die(0); die(0);
} }
define('START_TIME', microtime(true)); define('START_TIME', microtime(true));
define('LIB_DIR', dirname(__DIR__) . '/lib');
define('CHINA_LIST', dirname(__DIR__) . '/origin-files/china-list_' . $file_num . '.php'); define('CHINA_LIST', dirname(__DIR__) . '/origin-files/china-list_' . $file_num . '.php');
define('DEAD_HORSE', dirname(__DIR__) . '/origin-files/dead-horse_' . $file_num . '.php'); define('DEAD_HORSE', dirname(__DIR__) . '/origin-files/dead-horse_' . $file_num . '.php');
//http://download.ip2location.com/lite/IP2LOCATION-LITE-DB1.BIN.ZIP //http://download.ip2location.com/lite/IP2LOCATION-LITE-DB1.BIN.ZIP
require_once './IP2Location.php'; require_once LIB_DIR . '/IP2Location.php';
require_once './Net/DNS2.php'; require_once LIB_DIR . '/Net/DNS2.php';
$china_list = is_file(CHINA_LIST) ? require CHINA_LIST : array(); $china_list = is_file(CHINA_LIST) ? require CHINA_LIST : array();
$dead_horse = is_file(DEAD_HORSE) ? require DEAD_HORSE : array(); $dead_horse = is_file(DEAD_HORSE) ? require DEAD_HORSE : array();
@ -46,67 +47,67 @@ $dead_horse = is_file(DEAD_HORSE) ? require DEAD_HORSE : array();
$CHINA_AREA = array('CN' => true, 'HK' => true, 'MO' => true, 'TW' => true); $CHINA_AREA = array('CN' => true, 'HK' => true, 'MO' => true, 'TW' => true);
$db = new \IP2Location\Database('./databases/IP2LOCATION-LITE-DB1.BIN', \IP2Location\Database::MEMORY_CACHE); $db = new \IP2Location\Database(LIB_DIR.'/databases/IP2LOCATION-LITE-DB1.BIN', \IP2Location\Database::MEMORY_CACHE);
$r = new Net_DNS2_Resolver(array('nameservers' => array('223.5.5.5', '223.6.6.6', '119.29.29.29'))); $r = new Net_DNS2_Resolver(array('nameservers' => array('223.5.5.5', '223.6.6.6', '119.29.29.29')));
$src_fp = fopen($src_file, 'r'); $src_fp = fopen($src_file, 'r');
while (!feof($src_fp)) { while(!feof($src_fp)){
$row = fgets($src_fp, 512); $row = fgets($src_fp, 512);
if (empty($row)) { if(empty($row)){
continue; continue;
} }
echo $row; echo $row;
if (preg_match('/^address=\/(.+)?\/$/', $row, $matches)) { if(preg_match('/^address=\/(.+)?\/$/', $row, $matches)){
try { try{
$result = $r->query($matches[1], 'A'); $result = $r->query($matches[1], 'A');
$result = $result->answer; $result = $result->answer;
if (is_array($result) && count($result) > 0) { if(is_array($result) && count($result) > 0){
//find the A record //find the A record
$a_record = null; $a_record = null;
foreach ($result as $res) { foreach($result as $res){
if ($res->type == 'A') { if($res->type == 'A'){
$a_record = $res; $a_record = $res;
break; break;
} }
} }
if (!$a_record) { if(!$a_record){
$dead_horse[$matches[1]]['empty']++; $dead_horse[$matches[1]]['empty']++;
continue; continue;
} }
$records = $db->lookup($a_record->address, \IP2Location\Database::ALL); $records = $db->lookup($a_record->address, \IP2Location\Database::ALL);
if (array_key_exists($records['countryCode'], $CHINA_AREA) && !array_key_exists($matches[1], $china_list)) { if(array_key_exists($records['countryCode'], $CHINA_AREA) && !array_key_exists($matches[1], $china_list)){
$china_list[$matches[1]] = $records['countryCode'];//$records['countryName']; $china_list[$matches[1]] = $records['countryCode'];//$records['countryName'];
} }
} else { }else{
$dead_horse[$matches[1]]['empty']++; $dead_horse[$matches[1]]['empty']++;
} }
} catch (Net_DNS2_Exception $e) { }catch(Net_DNS2_Exception $e){
if ($e->getCode() == 3) { if($e->getCode() == 3){
$dead_horse[$matches[1]]['dead']++;//3=dns记录不存在 $dead_horse[$matches[1]]['dead']++;//3=dns记录不存在
}elseif($e->getCode() == 2) { }elseif($e->getCode() == 2){
$dead_horse[$matches[1]]['problem']++;//2=查询失败dns服务器没有返回正确记录 $dead_horse[$matches[1]]['problem']++;//2=查询失败dns服务器没有返回正确记录
}elseif($e->getCode() == 203){ }elseif($e->getCode() == 203){
$dead_horse[$matches[1]]['timeout']++;//203=查询超时 $dead_horse[$matches[1]]['timeout']++;//203=查询超时
} else { }else{
echo date('m-d H:i:s'), "[", $matches[1], "]", $e->getMessage(), ",code:", $e->getCode(), "\n"; echo date('m-d H:i:s'), "[", $matches[1], "]", $e->getMessage(), ",code:", $e->getCode(), "\n";
} }
} }
} }
} }
try { try{
$dead_horse = "<?php \nreturn " . var_export($dead_horse, true) . ';'; $dead_horse = "<?php \nreturn " . var_export($dead_horse, true) . ';';
$china_list = "<?php \nreturn " . var_export($china_list, true) . ';'; $china_list = "<?php \nreturn " . var_export($china_list, true) . ';';
file_put_contents(DEAD_HORSE, $dead_horse); file_put_contents(DEAD_HORSE, $dead_horse);
file_put_contents(CHINA_LIST, $china_list); file_put_contents(CHINA_LIST, $china_list);
} catch (Exception $e) { }catch(Exception $e){
echo date('m-d H:i:s'), "write file failed:", $e->getMessage(), "\t", $e->getCode(), "\n"; echo date('m-d H:i:s'), "write file failed:", $e->getMessage(), "\t", $e->getCode(), "\n";
} }