actually support the short CIDR notation

This commit is contained in:
El RIDO 2022-02-28 16:24:06 +01:00
parent 6b001b5e4a
commit 3e02818335
No known key found for this signature in database
GPG key ID: 0F5C940A6BD81F92
2 changed files with 6 additions and 3 deletions

View file

@ -146,7 +146,10 @@ class TrafficLimiter extends AbstractPersistence
$ipRange = trim($ipRange); $ipRange = trim($ipRange);
} }
$address = Factory::parseAddressString($_SERVER[self::$_ipKey]); $address = Factory::parseAddressString($_SERVER[self::$_ipKey]);
$range = Factory::parseRangeString($ipRange, ParseStringFlag::IPV4_MAYBE_NON_DECIMAL); $range = Factory::parseRangeString(
$ipRange,
ParseStringFlag::IPV4_MAYBE_NON_DECIMAL | ParseStringFlag::IPV4SUBNET_MAYBE_COMPACT | ParseStringFlag::IPV4ADDRESS_MAYBE_NON_QUAD_DOTTED
);
// address could not be parsed, we might not be in IP space and try a string comparison instead // address could not be parsed, we might not be in IP space and try a string comparison instead
if (is_null($address)) { if (is_null($address)) {

View file

@ -57,7 +57,7 @@ class TrafficLimiterTest extends PHPUnit_Framework_TestCase
public function testTrafficLimitExempted() public function testTrafficLimitExempted()
{ {
TrafficLimiter::setExempted('1.2.3.4,10.10.10.0/24,2001:1620:2057::/48'); TrafficLimiter::setExempted('1.2.3.4,10.10.10/24,2001:1620:2057::/48');
$_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$this->assertTrue(TrafficLimiter::canPass(), 'first request may pass'); $this->assertTrue(TrafficLimiter::canPass(), 'first request may pass');
try { try {
@ -85,7 +85,7 @@ class TrafficLimiterTest extends PHPUnit_Framework_TestCase
public function testTrafficLimitCreators() public function testTrafficLimitCreators()
{ {
TrafficLimiter::setCreators('1.2.3.4,10.10.10.0/24,2001:1620:2057::/48'); TrafficLimiter::setCreators('1.2.3.4,10.10.10/24,2001:1620:2057::/48');
$_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
try { try {
$this->assertFalse(TrafficLimiter::canPass(), 'expected an exception'); $this->assertFalse(TrafficLimiter::canPass(), 'expected an exception');