Move IpFilter class to Security namespace

This commit is contained in:
Kijin Sung 2016-03-13 10:24:52 +09:00
parent 0adb13ca30
commit 544170b530
10 changed files with 94 additions and 94 deletions

View file

@ -1478,7 +1478,7 @@ class Context
}
// Allow if the current user is in the list of allowed IPs.
if (Rhymix\Framework\IpFilter::inRanges(RX_CLIENT_IP, config('lock.allow')))
if (Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, config('lock.allow')))
{
return;
}

View file

@ -6,12 +6,12 @@ class IpFilter
public function filter($ip_list, $ip = NULL)
{
if(!$ip) $ip = $_SERVER['REMOTE_ADDR'];
return Rhymix\Framework\IpFilter::inRanges($ip, $ip_list);
return Rhymix\Framework\Security\IpFilter::inRanges($ip, $ip_list);
}
public function validate($ip_list = array())
{
return Rhymix\Framework\IpFilter::validateRanges($ip_list);
return Rhymix\Framework\Security\IpFilter::validateRanges($ip_list);
}
}

View file

@ -53,8 +53,8 @@ else
*/
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
{
include_once __DIR__ . '/framework/ipfilter.php';
Rhymix\Framework\IpFilter::getCloudFlareRealIP();
include_once __DIR__ . '/framework/security/ipfilter.php';
Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP();
}
if (isset($_SERVER['REMOTE_ADDR']) && preg_match('/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/', $_SERVER['REMOTE_ADDR'], $matches))
{

View file

@ -445,7 +445,7 @@ class Debug
return $cache = true;
case 'ip':
if (IpFilter::inRanges(RX_CLIENT_IP, Config::get('debug.allow')))
if (Security\IpFilter::inRanges(RX_CLIENT_IP, Config::get('debug.allow')))
{
return $cache = true;
}

View file

@ -1,6 +1,6 @@
<?php
namespace Rhymix\Framework;
namespace Rhymix\Framework\Security;
/**
* The IP filter class.

View file

@ -587,7 +587,7 @@ class adminAdminController extends admin
$allowed_ip = array_unique(array_filter($allowed_ip, function($item) {
return $item !== '';
}));
if (!Rhymix\Framework\IpFilter::validateRanges($allowed_ip)) {
if (!Rhymix\Framework\Security\IpFilter::validateRanges($allowed_ip)) {
return new Object(-1, 'msg_invalid_ip');
}
@ -595,7 +595,7 @@ class adminAdminController extends admin
$denied_ip = array_unique(array_filter($denied_ip, function($item) {
return $item !== '';
}));
if (!Rhymix\Framework\IpFilter::validateRanges($denied_ip)) {
if (!Rhymix\Framework\Security\IpFilter::validateRanges($denied_ip)) {
return new Object(-1, 'msg_invalid_ip');
}
@ -745,7 +745,7 @@ class adminAdminController extends admin
$allowed_ip = array_unique(array_filter($allowed_ip, function($item) {
return $item !== '';
}));
if (!IpFilter::validate($whitelist)) {
if (!Rhymix\Framework\Security\IpFilter::validate($allowed_ip)) {
return new Object(-1, 'msg_invalid_ip');
}
Rhymix\Framework\Config::set('debug.allow', array_values($allowed_ip));
@ -771,17 +771,17 @@ class adminAdminController extends admin
if ($vars->sitelock_locked === 'Y')
{
if (!Rhymix\Framework\IpFilter::inRanges('127.0.0.1', $allowed_ip))
if (!Rhymix\Framework\Security\IpFilter::inRanges('127.0.0.1', $allowed_ip))
{
array_unshift($allowed_ip, '127.0.0.1');
}
if (!Rhymix\Framework\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
if (!Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
{
array_unshift($allowed_ip, RX_CLIENT_IP);
}
}
if (!Rhymix\Framework\IpFilter::validateRanges($allowed_ip))
if (!Rhymix\Framework\Security\IpFilter::validateRanges($allowed_ip))
{
return new Object(-1, 'msg_invalid_ip');
}

View file

@ -518,11 +518,11 @@ class adminAdminView extends admin
Context::set('sitelock_message', escape(Rhymix\Framework\Config::get('lock.message')));
$allowed_ip = Rhymix\Framework\Config::get('lock.allow') ?: array();
if (!Rhymix\Framework\IpFilter::inRanges('127.0.0.1', $allowed_ip))
if (!Rhymix\Framework\Security\IpFilter::inRanges('127.0.0.1', $allowed_ip))
{
array_unshift($allowed_ip, '127.0.0.1');
}
if (!Rhymix\Framework\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
if (!Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
{
array_unshift($allowed_ip, RX_CLIENT_IP);
}

View file

@ -298,12 +298,12 @@ class memberAdminModel extends member
{
if ($allow_list = ($allow_list === null) ? config('admin.allow') : $allow_list)
{
return Rhymix\Framework\IpFilter::inRanges(RX_CLIENT_IP, $allow_list);
return Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allow_list);
}
if ($deny_list = ($deny_list === null) ? config('admin.deny') : $deny_list)
{
return !Rhymix\Framework\IpFilter::inRanges(RX_CLIENT_IP, $deny_list);
return !Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $deny_list);
}
return true;

View file

@ -1,77 +0,0 @@
<?php
class IpFilterTest extends \Codeception\TestCase\Test
{
public function testIPv4CIDR()
{
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('10.0.127.191', '10.0.127.191'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('10.1.131.177', '10.1.131.178'));
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('127.0.0.1', '127.0.0.0/8'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('172.34.0.0', '172.16.0.0/12'));
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('192.168.18.214', '192.168.16.0/22'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('192.168.18.214', '192.168.16.0/23'));
}
public function testIPv6CIDR()
{
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('::1', '::1/128'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('::1', '::2'));
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('2400:cb00::1234', '2400:cb00::/32'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('2405:8100::1234', '2400:cb00::/32'));
}
public function testIPv4Wildcard()
{
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.134.*'));
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.*.*'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.136.*'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.172.*.*'));
}
public function testIPv4Hyphen()
{
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.134.0-192.168.134.255'));
$this->assertTrue(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.128.16-192.168.145.0'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.134.242-192.168.244.7'));
$this->assertFalse(Rhymix\Framework\IpFilter::inRange('192.168.134.241', '192.168.100.255-192.168.133.19'));
}
public function testValidator()
{
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('192.168.0.1'));
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('192.168.0.0/16'));
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('192.168.*.*'));
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('192.168.*'));
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('192.168.0.0-192.168.255.255'));
$this->assertTrue(Rhymix\Framework\IpFilter::validateRange('2400:cb00::/32'));
$this->assertFalse(Rhymix\Framework\IpFilter::validateRange('192.168.0.0~192.168.255.255'));
}
public function testLegacy()
{
$this->assertTrue(\IpFilter::filter(array('192.168.134.241'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.134.0-192.168.134.255'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('127.0.0.1', '192.168.134.241'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.134.*'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.*'), '192.168.134.241'));
$this->assertFalse(\IpFilter::filter(array('127.0.0.1'), '192.168.134.241'));
}
public function testCloudFlareRealIP()
{
$_SERVER['HTTP_CF_CONNECTING_IP'] = '192.168.134.241';
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
$this->assertFalse(Rhymix\Framework\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
$_SERVER['REMOTE_ADDR'] = '108.162.192.121';
$this->assertEquals('192.168.134.241', Rhymix\Framework\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.134.241', $_SERVER['REMOTE_ADDR']);
unset($_SERVER['HTTP_CF_CONNECTING_IP']);
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
$this->assertFalse(Rhymix\Framework\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
}
}

View file

@ -0,0 +1,77 @@
<?php
class IpFilterTest extends \Codeception\TestCase\Test
{
public function testIPv4CIDR()
{
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('10.0.127.191', '10.0.127.191'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('10.1.131.177', '10.1.131.178'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('127.0.0.1', '127.0.0.0/8'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('172.34.0.0', '172.16.0.0/12'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.18.214', '192.168.16.0/22'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.18.214', '192.168.16.0/23'));
}
public function testIPv6CIDR()
{
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('::1', '::1/128'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('::1', '::2'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('2400:cb00::1234', '2400:cb00::/32'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('2405:8100::1234', '2400:cb00::/32'));
}
public function testIPv4Wildcard()
{
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.*'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.*.*'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.136.*'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.172.*.*'));
}
public function testIPv4Hyphen()
{
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.0-192.168.134.255'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.128.16-192.168.145.0'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.242-192.168.244.7'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.100.255-192.168.133.19'));
}
public function testValidator()
{
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.1'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0/16'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.*.*'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.*'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0-192.168.255.255'));
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('2400:cb00::/32'));
$this->assertFalse(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0~192.168.255.255'));
}
public function testLegacy()
{
$this->assertTrue(\IpFilter::filter(array('192.168.134.241'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.134.0-192.168.134.255'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('127.0.0.1', '192.168.134.241'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.134.*'), '192.168.134.241'));
$this->assertTrue(\IpFilter::filter(array('192.168.*'), '192.168.134.241'));
$this->assertFalse(\IpFilter::filter(array('127.0.0.1'), '192.168.134.241'));
}
public function testCloudFlareRealIP()
{
$_SERVER['HTTP_CF_CONNECTING_IP'] = '192.168.134.241';
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
$this->assertFalse(Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
$_SERVER['REMOTE_ADDR'] = '108.162.192.121';
$this->assertEquals('192.168.134.241', Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.134.241', $_SERVER['REMOTE_ADDR']);
unset($_SERVER['HTTP_CF_CONNECTING_IP']);
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
$this->assertFalse(Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
}
}