fix: Fetch nodeinfo endpoint address from .well-known/nodeinfo when checking instance availability

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2561>
environments/review-docs-renov-dx7eod/deployments/18348
Georg Krause 2023-08-29 10:30:15 +02:00 zatwierdzone przez Marge
rodzic cc0d642215
commit e78191c917
3 zmienionych plików z 15 dodań i 3 usunięć

Wyświetl plik

@ -643,8 +643,7 @@ def check_all_remote_instance_availability():
@celery.app.task(name="federation.check_single_remote_instance_availability")
def check_single_remote_instance_availability(domain):
try:
response = requests.get(f"https://{domain.name}/api/v1/instance/nodeinfo/2.0/")
nodeinfo = response.json()
nodeinfo = fetch_nodeinfo(domain.name)
except Exception as e:
logger.info(
f"Domain {domain.name} could not be reached because of the following error : {e}. \

Wyświetl plik

@ -669,7 +669,18 @@ def test_fetch_collection(mocker, r_mock):
def test_check_all_remote_instance_reachable(factories, r_mock):
domain = factories["federation.Domain"]()
r_mock.get(
f"https://{domain.name}/api/v1/instance/nodeinfo/2.0/", json={"version": "2"}
f"https://{domain.name}/api/v1/instance/nodeinfo/2.0", json={"version": "2"}
)
r_mock.get(
f"https://{domain.name}/.well-known/nodeinfo",
json={
"links": [
{
"rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
"href": f"https://{domain.name}/api/v1/instance/nodeinfo/2.0",
}
]
},
)
tasks.check_all_remote_instance_availability()
domain = models.Domain.objects.get(name=domain.name)

Wyświetl plik

@ -0,0 +1,2 @@
Fetch the nodeinfo endpoint from .well-known/nodeinfo when checking instance availability