Add UriInterface-enabled isUriBlocked method in Util\Network

This commit is contained in:
Hypolite Petovan 2023-01-04 11:38:46 -05:00
parent a574146f04
commit a907d6c87b

View file

@ -29,6 +29,7 @@ use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPClient\Client\HttpClientOptions; use Friendica\Network\HTTPClient\Client\HttpClientOptions;
use Friendica\Network\HTTPException\NotModifiedException; use Friendica\Network\HTTPException\NotModifiedException;
use GuzzleHttp\Psr7\Uri; use GuzzleHttp\Psr7\Uri;
use Psr\Http\Message\UriInterface;
class Network class Network
{ {
@ -177,11 +178,28 @@ class Network
* @param string $url The url to check the domain from * @param string $url The url to check the domain from
* *
* @return boolean * @return boolean
*
* @deprecated since 2023.03 Use isUriBlocked instead
*/ */
public static function isUrlBlocked(string $url): bool public static function isUrlBlocked(string $url): bool
{ {
$host = @parse_url($url, PHP_URL_HOST); try {
if (!$host) { 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; return false;
} }
@ -191,7 +209,7 @@ class Network
} }
foreach ($domain_blocklist as $domain_block) { 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; return true;
} }
} }