========================================================================== 以下のコードで、外国IPを却下している。 cn/include/CUser.class.php -------------------------------------------------------------------------- public static function isInvalidUser() { $ip = CIpSig::getVal(); if ( !CConnType::isInWhiteList($ip) ) { $cfg = CEnv::config("client/conntype"); if ( $cfg["reject-proxy"] && CConnType::isProxy() ) { return true; } if ( $cfg["reject-foreign"] && CConnType::isForeign($ip) ) { return true;; } } return false; } ========================================================================== 以下のコードは、国内IPか外国IPかを判定している。 web/lib/client/CConnType.class.php -------------------------------------------------------------------------- public static function isForeign( $ip ) { //-- reject empty ip if ( empty($ip) ) { return true; } //-- check if it's ipv4 $sx = explode('.',$ip); if ( count($sx) != 4 ) { return false; } $n = ip2long($ip); $lx = file(dirname(__FILE__)."/data/iplist.txt"); foreach( $lx as $ln ) { $ln = trim($ln); if ( !empty($ln) ) { $ax = explode("\t",$ln); if (( count($ax) == 3 ) && ( $ax[1] <= $n ) && ( $n <= $ax[2] )) { return false; } } } return true; } ========================================================================== 上記のfunctionで使用するデータファイル(dirname(__FILE__)."/data/iplist.txt") だが、research/ip-format/longip/make.php で作れる。 make.php は、data/source.txt から data/iplist.txtを作る。 data/source.txt は以下のURLから取得できる。 https://ipv4.fetus.jp/jp.txt -------------------------------------------------------------------------- [参考] make.php では使用されていないが、以下のURLでは、 IPv4とIPv6 の両方が取得できる。 http://ftp.apnic.net/stats/apnic/delegated-apnic-latest 将来、必要になるかもしれない。 ========================================================================== make.php で生成したレコードに数: 2019-05-01: 2819 records 2022-10-05: 2938 records ==========================================================================