nextcloud/lib/private/Security/Ip/Range.php
Joas Schilling 047479ccf9
feat(security): Add public API to allow validating IP Ranges and checking for "in range"
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-07-19 16:28:03 +02:00

39 lines
954 B
PHP
Raw 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\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));
}
public function __toString(): string {
return $this->range->toString();
}
}