X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FGServer.php;h=a3a3d1abbc6bcb94390a2ebaea48d975e60b5ace;hb=50746bad55eb2453764dffa143785b19fdb61d6c;hp=1878befa9f2282440c44a3b0ad19351555cb047c;hpb=4faf08c0643d3e6bbe2a0a77be2ff8c1dbea4d5c;p=friendica.git diff --git a/src/Model/GServer.php b/src/Model/GServer.php index 1878befa9f..a3a3d1abbc 100644 --- a/src/Model/GServer.php +++ b/src/Model/GServer.php @@ -44,7 +44,9 @@ use Friendica\Util\Network; use Friendica\Util\Strings; use Friendica\Util\XML; use Friendica\Network\HTTPException; +use Friendica\Worker\UpdateGServer; use GuzzleHttp\Psr7\Uri; +use Psr\Http\Message\UriInterface; /** * This class handles GServer related functions @@ -99,11 +101,11 @@ class GServer */ public static function add(string $url, bool $only_nodeinfo = false) { - if (self::getID($url, false)) { + if (self::getID($url)) { return; } - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $url, $only_nodeinfo); + UpdateGServer::add(Worker::PRIORITY_LOW, $url, $only_nodeinfo); } /** @@ -191,8 +193,9 @@ class GServer return false; } else { if (strtotime($gserver['next_contact']) < time()) { - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $gserver['url'], false); + UpdateGServer::add(Worker::PRIORITY_LOW, $gserver['url']); } + return self::isDefunct($gserver); } } @@ -210,8 +213,9 @@ class GServer return true; } else { if (strtotime($gserver['next_contact']) < time()) { - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $gserver['url'], false); + UpdateGServer::add(Worker::PRIORITY_LOW, $gserver['url']); } + return !$gserver['failed'] && in_array($gserver['network'], Protocol::FEDERATED); } } @@ -252,7 +256,7 @@ class GServer } if (!empty($server) && (empty($gserver) || strtotime($gserver['next_contact']) < time())) { - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $server, false); + UpdateGServer::add(Worker::PRIORITY_LOW, $server); } return $reachable; @@ -375,7 +379,7 @@ class GServer Logger::info('Reset failed status for server', ['url' => $gserver['url']]); if (strtotime($gserver['next_contact']) < time()) { - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $gserver['url'], false); + UpdateGServer::add(Worker::PRIORITY_LOW, $gserver['url']); } } } @@ -393,7 +397,7 @@ class GServer Logger::info('Set failed status for server', ['url' => $gserver['url']]); if (strtotime($gserver['next_contact']) < time()) { - Worker::add(Worker::PRIORITY_LOW, 'UpdateGServer', $gserver['url'], false); + UpdateGServer::add(Worker::PRIORITY_LOW, $gserver['url']); } } } @@ -442,18 +446,41 @@ class GServer * * @return string cleaned URL * @throws Exception + * @deprecated since 2023.03 Use cleanUri instead */ public static function cleanURL(string $dirtyUrl): string { try { - $url = str_replace('/index.php', '', trim($dirtyUrl, '/')); - return (string)(new Uri($url))->withUserInfo('')->withQuery('')->withFragment(''); + return (string)self::cleanUri(new Uri($dirtyUrl)); } catch (\Throwable $e) { - Logger::warning('Invalid URL', ['dirtyUrl' => $dirtyUrl, 'url' => $url]); + Logger::warning('Invalid URL', ['dirtyUrl' => $dirtyUrl]); return ''; } } + /** + * Remove unwanted content from the given URI + * + * @param UriInterface $dirtyUri + * + * @return UriInterface cleaned URI + * @throws Exception + */ + public static function cleanUri(UriInterface $dirtyUri): string + { + return $dirtyUri + ->withUserInfo('') + ->withQuery('') + ->withFragment('') + ->withPath( + preg_replace( + '#(?:^|/)index\.php#', + '', + rtrim($dirtyUri->getPath(), '/') + ) + ); + } + /** * Detect server data (type, protocol, version number, ...) * The detected data is then updated or inserted in the gserver table.