From 0d840357e639bb50c7c5f64ca7c1fddb8b7672af Mon Sep 17 00:00:00 2001 From: ghost Date: Sat, 16 Dec 2023 20:02:06 +0200 Subject: [PATCH] fix square quoting for fsockopen --- src/Socket.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Socket.php b/src/Socket.php index e7b74a7..4b606b4 100644 --- a/src/Socket.php +++ b/src/Socket.php @@ -6,15 +6,30 @@ namespace Yggverse\Net; class Socket { + public static function isIPv4(mixed $value): bool + { + return false !== filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); + } + + public static function isIPv6(mixed $value): bool + { + return false !== filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); + } + + public static function isHostName(mixed $value): bool + { + return false !== filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME); + } + public static function isHost(mixed $value): bool { return ( is_string($value) && ( - false !== filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) || - false !== filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) || - false !== filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) + false !== self::isIPv4($value) || + false !== self::isIPv6($value) || + false !== self::isHostName($value) ) ); } @@ -37,7 +52,7 @@ class Socket if (self::isHost($host) && self::isPort($port)) { $connection = @fsockopen( - $host, + self::isIPv6($host) ? "[$host]" : $host, // PHP is shit 💩. $port, $error_code, $error_message,