isCrawler, 관리자페이지 IP잠금, 사이트잠금 기능에서 ipfilter를 사용하도록 변경

This commit is contained in:
khongchi 2013-11-28 17:01:01 +09:00
parent 98d3408919
commit 5fae27d53c
11 changed files with 85 additions and 67 deletions

View file

@ -3,11 +3,12 @@
class IpFilter
{
public function filter($ip_list, $ip)
public function filter($ip_list, $ip = NULL)
{
if(!$ip) $ip = $_SERVER['REMOTE_ADDR'];
$long_ip = ip2long($ip);
foreach($ip_list as $filter_ip)
{
{
$range = explode('-', $filter_ip);
if(!$range[1]) // single address type
{
@ -16,9 +17,9 @@ class IpFilter
{
if(strncmp($filter_ip, $ip, $star_pos)===0) return true;
}
else
else if(strcmp($filter_ip, $ip)===0)
{
if(strcmp($filter_ip, $ip)===0) return true;
return true;
}
}
else if(ip2long($range[0]) <= $long_ip && ip2long($range[1]) >= $long_ip)
@ -26,7 +27,6 @@ class IpFilter
return true;
}
}
return false;
}
@ -56,28 +56,26 @@ class IpFilter
{
/* 사용가능한 표현
192.168.2.10 - 4자리의 정확한 ip주소
192.168.*.* - 와일드카드(*) 사용된 4자리의 ip주소, a클래스에는 와일드카드 사용불가, 와일드카드 이후의 아이피주소 허용(but, 처리시 와일드카드로 처리)
192.168.*.* - 와일드카드(*) 사용된 4자리의 ip주소, a클래스에는 와일드카드 사용불가,
와일드카드 이후의 아이피주소 허용(, filter() 경우 와일드카드 이후 주소는 무시됨
192.168.1.1-192.168.1.10 - '-' 구분된 정확한 4자리의 ip주소 2
*/
$regex = "/^
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
(?:
(?:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)-){1}
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)
(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}
(?:-(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){1}
(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}
)
|
(?:
(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:\*))\.){2}
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:\*))
(?:\.(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|\*)){3}
)
)
$/";
$regex = str_replace(array("\r\n", "\n", "\r","\t"," "), '', $regex);
$regex = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)(?:(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)-){1}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$))|(?:(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:\*))\.){2}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:\*))))$/';
foreach($ip_list as $i => $ip)
{