'application/json', 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", ]; $url = 'https://'.$domain; $wk = $url.'/.well-known/nodeinfo'; try { $res = Http::withOptions([ 'allow_redirects' => false, ]) ->withHeaders($headers) ->timeout(5) ->get($wk); } catch (RequestException $e) { return false; } catch (ConnectionException $e) { return false; } catch (\Exception $e) { return false; } if (! $res) { return false; } $json = $res->json(); if (! isset($json['links'])) { return false; } if (is_array($json['links'])) { if (isset($json['links']['href'])) { $href = $json['links']['href']; } else { $href = $json['links'][0]['href']; } } else { return false; } $domain = parse_url($url, PHP_URL_HOST); $hrefDomain = parse_url($href, PHP_URL_HOST); if ($domain !== $hrefDomain) { return false; } try { $res = Http::withOptions([ 'allow_redirects' => false, ]) ->withHeaders($headers) ->timeout(5) ->get($href); } catch (RequestException $e) { return false; } catch (ConnectionException $e) { return false; } catch (\Exception $e) { return false; } return $res->json(); } }