From 6b001b5e4abba23fe26bd8d685c15bf4c5001b9d Mon Sep 17 00:00:00 2001 From: El RIDO Date: Mon, 28 Feb 2022 16:23:11 +0100 Subject: [PATCH 1/2] typo --- cfg/conf.sample.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cfg/conf.sample.php b/cfg/conf.sample.php index 005f83be..4d21dc3e 100644 --- a/cfg/conf.sample.php +++ b/cfg/conf.sample.php @@ -135,7 +135,7 @@ markdown = "Markdown" ; Set this to 0 to disable rate limiting. limit = 10 -; (optional) Set IPs adresses (v4 or v6) or subnets (CIDR) which are exempted +; (optional) Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted ; from the rate-limit. Invalid IPs will be ignored. If multiple values are to ; be exempted, the list needs to be comma separated. Leave unset to disable ; exemptions. From 3e028183358b0241301df1b9925a32ace6c23f66 Mon Sep 17 00:00:00 2001 From: El RIDO Date: Mon, 28 Feb 2022 16:24:06 +0100 Subject: [PATCH 2/2] actually support the short CIDR notation --- lib/Persistence/TrafficLimiter.php | 5 ++++- tst/Persistence/TrafficLimiterTest.php | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Persistence/TrafficLimiter.php b/lib/Persistence/TrafficLimiter.php index f071562b..93f91d23 100644 --- a/lib/Persistence/TrafficLimiter.php +++ b/lib/Persistence/TrafficLimiter.php @@ -146,7 +146,10 @@ class TrafficLimiter extends AbstractPersistence $ipRange = trim($ipRange); } $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 if (is_null($address)) { diff --git a/tst/Persistence/TrafficLimiterTest.php b/tst/Persistence/TrafficLimiterTest.php index a8b8040c..84e0bae8 100644 --- a/tst/Persistence/TrafficLimiterTest.php +++ b/tst/Persistence/TrafficLimiterTest.php @@ -57,7 +57,7 @@ class TrafficLimiterTest extends PHPUnit_Framework_TestCase 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'; $this->assertTrue(TrafficLimiter::canPass(), 'first request may pass'); try { @@ -85,7 +85,7 @@ class TrafficLimiterTest extends PHPUnit_Framework_TestCase 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'; try { $this->assertFalse(TrafficLimiter::canPass(), 'expected an exception');