%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/lib/private/Security/Ip/ |
Current File : /www/varak.net/nextcloud.varak.net/lib/private/Security/Ip/Address.php |
<?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\Address\AddressInterface; use IPLib\Factory; use IPLib\ParseStringFlag; use OCP\Security\Ip\IAddress; use OCP\Security\Ip\IRange; /** * @since 30.0.0 */ class Address implements IAddress { private readonly AddressInterface $ip; public function __construct(string $ip) { $ip = Factory::parseAddressString($ip, ParseStringFlag::MAY_INCLUDE_ZONEID); if ($ip === null) { throw new InvalidArgumentException('Given IP address can’t be parsed'); } $this->ip = $ip; } public static function isValid(string $ip): bool { return Factory::parseAddressString($ip, ParseStringFlag::MAY_INCLUDE_ZONEID) !== null; } public function matches(IRange... $ranges): bool { foreach($ranges as $range) { if ($range->contains($this)) { return true; } } return false; } public function __toString(): string { return $this->ip->toString(); } }