nextcloud-server/lib/private/Security/Ip/Range.php

41 lines
1017 B
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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();
}
}