From b9fb1a9ee4153bf8e7718731a0afefa2b12cab19 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 31 Jan 2022 14:22:37 +0000 Subject: [PATCH 1/4] Use referer url when checking is site is active --- daemon.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index 5f150d154..fe043bfa3 100644 --- a/daemon.py +++ b/daemon.py @@ -1175,10 +1175,20 @@ class PubServer(BaseHTTPRequestHandler): self._400() self.server.nodeinfo_is_active = False return True - if not site_is_active(httpPrefix + '://' + referer_domain, + + referer_url = referer_domain + if referer_domain + '/' in ua_str: + referer_url = ua_str.split(referer_domain)[1] + if ' ' in referer_url: + referer_url = referer_url.split(' ')[0] + if ';' in referer_url: + referer_url = referer_url.split(';')[0] + if ')' in referer_url: + referer_url = referer_url.split(')')[0] + if not site_is_active(httpPrefix + '://' + referer_url, calling_site_timeout): - print('nodeinfo referer domain is not active ' + - referer_domain) + print('nodeinfo referer url is not active ' + + referer_url) self._400() self.server.nodeinfo_is_active = False return True From 79d3de93f6ba312183b35e71a50e5ac1ca7bb1fb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 31 Jan 2022 15:13:07 +0000 Subject: [PATCH 2/4] Include domain in referer url --- daemon.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/daemon.py b/daemon.py index fe043bfa3..0cbdadd27 100644 --- a/daemon.py +++ b/daemon.py @@ -1176,17 +1176,16 @@ class PubServer(BaseHTTPRequestHandler): self.server.nodeinfo_is_active = False return True - referer_url = referer_domain + referer_url = httpPrefix + '://' + referer_domain if referer_domain + '/' in ua_str: - referer_url = ua_str.split(referer_domain)[1] + referer_url = referer_url + ua_str.split(referer_domain)[1] if ' ' in referer_url: referer_url = referer_url.split(' ')[0] if ';' in referer_url: referer_url = referer_url.split(';')[0] if ')' in referer_url: referer_url = referer_url.split(')')[0] - if not site_is_active(httpPrefix + '://' + referer_url, - calling_site_timeout): + if not site_is_active(referer_url, calling_site_timeout): print('nodeinfo referer url is not active ' + referer_url) self._400() From 2c4b0a44330db9b033fc7ca59b03f985c36d8b31 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 31 Jan 2022 16:03:18 +0000 Subject: [PATCH 3/4] Domain of busy request --- daemon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index 0cbdadd27..95190cc29 100644 --- a/daemon.py +++ b/daemon.py @@ -1153,7 +1153,7 @@ class PubServer(BaseHTTPRequestHandler): self._400() return True if self.server.nodeinfo_is_active: - print('nodeinfo is busy') + print('nodeinfo is busy during request from ' + referer_domain) self._503() return True self.server.nodeinfo_is_active = True From 7bb310e8119c344a4803140d845c249abbbed759 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 31 Jan 2022 16:08:06 +0000 Subject: [PATCH 4/4] Less Mastodon-specific user agent --- utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils.py b/utils.py index 58638e408..593ea7895 100644 --- a/utils.py +++ b/utils.py @@ -2891,9 +2891,9 @@ def user_agent_domain(user_agent: str, debug: bool) -> str: """If the User-Agent string contains a domain then return it """ - if '+http' not in user_agent: + if 'http' not in user_agent: return None - agent_domain = user_agent.split('+http')[1].strip() + agent_domain = user_agent.split('http')[1].strip() if '://' in agent_domain: agent_domain = agent_domain.split('://')[1] if '/' in agent_domain: