From b8e4ecbd6610f8c259374ef130dfec550988d6fc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 17:07:14 +0000 Subject: [PATCH 01/10] Misskey-style instance actor endpoint --- daemon.py | 1 + person.py | 9 +++++++-- posts.py | 3 ++- tests.py | 3 +++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index 4ec5de574..10e24a73a 100644 --- a/daemon.py +++ b/daemon.py @@ -13986,6 +13986,7 @@ class PubServer(BaseHTTPRequestHandler): # instance actor if self.path == '/actor' or \ + self.path == '/users/instance.actor' or \ self.path == '/users/actor' or \ self.path == '/Actor' or \ self.path == '/users/Actor': diff --git a/person.py b/person.py index 02f566159..835950d47 100644 --- a/person.py +++ b/person.py @@ -1523,8 +1523,13 @@ def get_actor_json(hostDomain: str, handle: str, http: bool, gnunet: bool, person_url = None wf_request = None - if '://' in original_actor and \ - original_actor.lower().endswith('/actor'): + original_actor_lower = original_actor.lower() + ends_with_instance_actor = False + if original_actor_lower.endswith('/actor') or \ + original_actor_lower.endswith('/instance.actor'): + ends_with_instance_actor = True + + if '://' in original_actor and ends_with_instance_actor: if debug: print(original_actor + ' is an instance actor') person_url = original_actor diff --git a/posts.py b/posts.py index 117e6656c..2144c917e 100644 --- a/posts.py +++ b/posts.py @@ -2759,7 +2759,8 @@ def send_signed_json(post_json_object: {}, session, base_dir: str, print("to_person_id: " + str(to_person_id)) print("shared_inbox_url: " + str(shared_inbox_url)) if inbox_url: - if inbox_url.endswith('/actor/inbox'): + if inbox_url.endswith('/actor/inbox') or \ + inbox_url.endswith('/instance.actor/inbox'): inbox_url = shared_inbox_url if not inbox_url: diff --git a/tests.py b/tests.py index 1236e1429..c481112ff 100644 --- a/tests.py +++ b/tests.py @@ -3047,6 +3047,8 @@ def test_client_to_server(base_dir: str): print(">>> s2s post arrived in Bob's inbox") + time.sleep(2) + calendar_path = bob_dir + '/accounts/bob@' + bob_domain + '/calendar' if not os.path.isdir(calendar_path): print('Missing calendar path: ' + calendar_path) @@ -6744,4 +6746,5 @@ def run_all_tests(): _test_followers_on_domain(base_dir) _test_follows(base_dir) _test_group_followers(base_dir) + time.sleep(2) print('Tests succeeded\n') From 8b83d759a6eebbd93877d1110cfe7cfc45fd47b9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 17:14:10 +0000 Subject: [PATCH 02/10] Extra reserved nickname --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 968790d1a..0c806798b 100644 --- a/utils.py +++ b/utils.py @@ -1887,7 +1887,7 @@ def _get_reserved_words() -> str: 'tlblogs', 'tlfeatures', 'moderation', 'moderationaction', 'activity', 'undo', 'pinned', - 'actor', 'Actor', + 'actor', 'Actor', 'instance.actor', 'reply', 'replies', 'question', 'like', 'likes', 'users', 'statuses', 'tags', 'accounts', 'headers', From fdd86ee2e7f08cdb162135298695ba38a51d53cd Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 22:42:44 +0000 Subject: [PATCH 03/10] Debug for GET authorization --- daemon.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index 10e24a73a..3a04b67d0 100644 --- a/daemon.py +++ b/daemon.py @@ -14068,9 +14068,10 @@ class PubServer(BaseHTTPRequestHandler): authorized = self._is_authorized() if self.server.debug: if authorized: - print('GET Authorization granted') + print('GET Authorization granted ' + self.path) else: - print('GET Not authorized') + print('GET Not authorized ' + self.path + ' ' + + str(self.headers)) fitness_performance(getreq_start_time, self.server.fitness, '_GET', 'isAuthorized', From 682b65af9598cc2c2de5b2e653f498db04f43298 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 22:52:20 +0000 Subject: [PATCH 04/10] Fix function name --- daemon.py | 4 ++-- speaker.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index 3a04b67d0..1c7350b1b 100644 --- a/daemon.py +++ b/daemon.py @@ -369,7 +369,7 @@ from filters import add_global_filter from filters import remove_global_filter from context import has_valid_context from context import get_individual_post_context -from speaker import get_ssm_lbox +from speaker import get_ssml_box from city import get_spoofed_city from fitnessFunctions import fitness_performance from fitnessFunctions import fitness_thread @@ -14502,7 +14502,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.debug) else: xml_str = \ - get_ssm_lbox(self.server.base_dir, + get_ssml_box(self.server.base_dir, self.path, self.server.domain, self.server.system_language, self.server.instanceTitle, diff --git a/speaker.py b/speaker.py index 6a6b85260..c128ad019 100644 --- a/speaker.py +++ b/speaker.py @@ -348,7 +348,7 @@ def _speaker_endpoint_ssml(display_name: str, summary: str, '\n' -def get_ssm_lbox(base_dir: str, path: str, +def get_ssml_box(base_dir: str, path: str, domain: str, system_language: str, instance_title: str, From 996ab85d9e5981f202b2a936b121c01216fe61ca Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:07:11 +0000 Subject: [PATCH 05/10] Actor debug --- daemon.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/daemon.py b/daemon.py index 1c7350b1b..06b51b643 100644 --- a/daemon.py +++ b/daemon.py @@ -12823,6 +12823,9 @@ class PubServer(BaseHTTPRequestHandler): self.server.fitness, '_GET', '_show_person_profile', self.server.debug) + if self.server.debug: + print('DEBUG: html actor sent with headers: ' + + (self.headers)) else: if self._secure_mode(): accept_str = self.headers['Accept'] @@ -12843,6 +12846,9 @@ class PubServer(BaseHTTPRequestHandler): self.server.fitness, '_GET', '_show_person_profile json', self.server.debug) + if self.server.debug: + print('DEBUG: json actor sent with headers: ' + + (self.headers)) else: self._404() return True From 5e11138eb6e98722a6a454f5bd57899dd05e919c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:09:50 +0000 Subject: [PATCH 06/10] String conversion --- daemon.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index 06b51b643..8bfa8a51c 100644 --- a/daemon.py +++ b/daemon.py @@ -12825,7 +12825,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.debug) if self.server.debug: print('DEBUG: html actor sent with headers: ' + - (self.headers)) + str(self.headers)) else: if self._secure_mode(): accept_str = self.headers['Accept'] @@ -12848,7 +12848,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.debug) if self.server.debug: print('DEBUG: json actor sent with headers: ' + - (self.headers)) + str(self.headers)) else: self._404() return True From a4e1be91d5b8cd0fd508ace19bbccc457e0b89a0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:17:41 +0000 Subject: [PATCH 07/10] Set user agent for outgoing headers --- daemon.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/daemon.py b/daemon.py index 8bfa8a51c..0c753d14a 100644 --- a/daemon.py +++ b/daemon.py @@ -852,6 +852,10 @@ class PubServer(BaseHTTPRequestHandler): return self.send_header('X-AP-Instance-ID', self.server.instance_id) self.send_header('X-Clacks-Overhead', 'GNU Natalie Nguyen') + self.send_header('User-Agent', + 'Epicyon/' + __version__ + + '; +' + self.server.http_prefix + '://' + + self.server.domain_full + '/') if cookie: cookie_str = cookie if 'HttpOnly;' not in cookie_str: From 76258c85c3128bc3fc4894ba65f9d554e1a89d3c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:20:56 +0000 Subject: [PATCH 08/10] Fix function name --- daemon.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index 0c753d14a..765900ed0 100644 --- a/daemon.py +++ b/daemon.py @@ -696,7 +696,7 @@ class PubServer(BaseHTTPRequestHandler): return True return False - def _signed_ge_tkey_id(self) -> str: + def _signed_get_key_id(self) -> str: """Returns the actor from the signed GET key_id """ signature = None @@ -744,7 +744,7 @@ class PubServer(BaseHTTPRequestHandler): if not self.server.secure_mode and not force: return True - key_id = self._signed_ge_tkey_id() + key_id = self._signed_get_key_id() if not key_id: if self.server.debug: print('AUTH: secure mode, ' + From 4a7fceea9554cfabf0830111f61b7928cb10cf7b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:25:00 +0000 Subject: [PATCH 09/10] Briefer debug --- daemon.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/daemon.py b/daemon.py index 765900ed0..72f1aaa02 100644 --- a/daemon.py +++ b/daemon.py @@ -12828,8 +12828,7 @@ class PubServer(BaseHTTPRequestHandler): '_GET', '_show_person_profile', self.server.debug) if self.server.debug: - print('DEBUG: html actor sent with headers: ' + - str(self.headers)) + print('DEBUG: html actor sent') else: if self._secure_mode(): accept_str = self.headers['Accept'] @@ -12851,8 +12850,7 @@ class PubServer(BaseHTTPRequestHandler): '_GET', '_show_person_profile json', self.server.debug) if self.server.debug: - print('DEBUG: json actor sent with headers: ' + - str(self.headers)) + print('DEBUG: json actor sent') else: self._404() return True From 0379733218b64a4da8fe39c99c6aaf1e28c07bef Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 26 Feb 2022 23:34:16 +0000 Subject: [PATCH 10/10] Tidying --- tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.py b/tests.py index c481112ff..5deb6316e 100644 --- a/tests.py +++ b/tests.py @@ -6746,5 +6746,5 @@ def run_all_tests(): _test_followers_on_domain(base_dir) _test_follows(base_dir) _test_group_followers(base_dir) - time.sleep(2) + time.sleep(2) print('Tests succeeded\n')