0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-02-12 03:59:16 +00:00
nextcloud_server/lib/private/Security/Ip/Range.php
Josh 077eea18b5
fix(security): Handle IPv6 zone IDs used in link-local addresses
Signed-off-by: Josh <josh.t.richards@gmail.com>
2024-10-31 17:01:34 -04:00

40 lines
1,017 B
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OC\Security\Ip;
use InvalidArgumentException;
use IPLib\Factory;
use IPLib\ParseStringFlag;
use IPLib\Range\RangeInterface;
use OCP\Security\Ip\IAddress;
use OCP\Security\Ip\IRange;
class Range implements IRange {
private readonly RangeInterface $range;
public function __construct(string $range) {
$range = Factory::parseRangeString($range);
if ($range === null) {
throw new InvalidArgumentException('Given range cant be parsed');
}
$this->range = $range;
}
public static function isValid(string $range): bool {
return Factory::parseRangeString($range) !== null;
}
public function contains(IAddress $address): bool {
return $this->range->contains(Factory::parseAddressString((string)$address, ParseStringFlag::MAY_INCLUDE_ZONEID));
}
public function __toString(): string {
return $this->range->toString();
}
}