setTimezone(new \DateTimeZone('GMT')); return $time->format('D, d M Y H:i:s \\G\\M\\T'); } /** * Is IP address in CIDR block? */ public static function ipMatch(string $ip, string $mask) : bool { [$mask, $size] = \explode('/', $mask . '/'); $tmp = function (int $n) : string { return \sprintf('%032b', $n); }; $ip = \implode('', \array_map($tmp, \unpack('N*', \inet_pton($ip)))); $mask = \implode('', \array_map($tmp, \unpack('N*', \inet_pton($mask)))); $max = \strlen($ip); if (!$max || $max !== \strlen($mask) || (int) $size < 0 || (int) $size > $max) { return \false; } return \strncmp($ip, $mask, $size === '' ? $max : (int) $size) === 0; } public static function initCookie(IRequest $request, IResponse $response) { $response->setCookie(self::StrictCookieName, '1', 0, '/', null, null, \true, IResponse::SameSiteStrict); } }