]> git.mxchange.org Git - friendica.git/commitdiff
Add UriInterface-enabled isUriBlocked method in Util\Network
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 4 Jan 2023 16:38:46 +0000 (11:38 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Fri, 13 Jan 2023 14:20:14 +0000 (09:20 -0500)
src/Util/Network.php

index 5a06a0056e5065bd890e10c1cc5e9a59af97141c..e9d3fb1104887d0b68e64ee031ab4fbc4cedf86a 100644 (file)
@@ -29,6 +29,7 @@ use Friendica\Network\HTTPClient\Client\HttpClientAccept;
 use Friendica\Network\HTTPClient\Client\HttpClientOptions;
 use Friendica\Network\HTTPException\NotModifiedException;
 use GuzzleHttp\Psr7\Uri;
+use Psr\Http\Message\UriInterface;
 
 class Network
 {
@@ -177,11 +178,28 @@ class Network
         * @param string $url The url to check the domain from
         *
         * @return boolean
+        *
+        * @deprecated since 2023.03 Use isUriBlocked instead
         */
        public static function isUrlBlocked(string $url): bool
        {
-               $host = @parse_url($url, PHP_URL_HOST);
-               if (!$host) {
+               try {
+                       return self::isUriBlocked(new Uri($url));
+               } catch (\Throwable $e) {
+                       Logger::warning('Invalid URL', ['url' => $url]);
+                       return false;
+               }
+       }
+
+       /**
+        * Checks if the provided URI domain is on the domain blocklist.
+        *
+        * @param UriInterface $uri
+        * @return boolean
+        */
+       public static function isUriBlocked(UriInterface $uri): bool
+       {
+               if (!$uri->getHost()) {
                        return false;
                }
 
@@ -191,7 +209,7 @@ class Network
                }
 
                foreach ($domain_blocklist as $domain_block) {
-                       if (fnmatch(strtolower($domain_block['domain']), strtolower($host))) {
+                       if (fnmatch(strtolower($domain_block['domain']), strtolower($uri->getHost()))) {
                                return true;
                        }
                }