From ed49e3346a961274b49fe68f32a0ea588f0053b9 Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@libreserver.org> Date: Sun, 6 Apr 2025 13:06:37 +0100 Subject: [PATCH] Receiving quote requests --- acceptreject.py | 27 +++++++++++++++++++++++++++ inbox.py | 20 +++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/acceptreject.py b/acceptreject.py index 92057d3c5..75cf625af 100644 --- a/acceptreject.py +++ b/acceptreject.py @@ -12,6 +12,7 @@ __module_group__ = "ActivityPub" import os from flags import has_group_type from flags import url_permitted +from utils import get_attributed_to from utils import get_user_paths from utils import text_in_file from utils import has_object_string_object @@ -86,6 +87,23 @@ def create_reject(federation_list: [], http_prefix, object_json, 'Reject') +def _reject_quote_request(message_json: {}) -> None: + """ Rejects a QuoteRequest + """ + actor = None + if message_json.get('actor'): + actor = message_json['actor'] + elif message_json.get('instrument'): + if isinstance(message_json['instrument'], dict): + if message_json['instrument'].get('attributedTo'): + instrument_dict = message_json['instrument'] + actor = get_attributed_to(instrument_dict['attributedTo']) + if not actor: + return + # TODO send back a Reject + print('REJECT: QuoteRequest from ' + actor) + + def _accept_follow(base_dir: str, message_json: {}, federation_list: [], debug: bool, curr_domain: str, @@ -248,3 +266,12 @@ def receive_accept_reject(base_dir: str, domain: str, message_json: {}, if debug: print('DEBUG: Uh, ' + message_json['type'] + ', I guess') return True + + +def receive_quote_request(message_json: {}) -> bool: + """Receives a QuoteRequest within the POST section of HTTPServer + """ + if message_json['type'] != 'QuoteRequest': + return False + _reject_quote_request(message_json) + return True diff --git a/inbox.py b/inbox.py index 2b5fcb34f..f51de9274 100644 --- a/inbox.py +++ b/inbox.py @@ -78,6 +78,7 @@ from pprint import pprint from cache import cache_svg_images from cache import get_person_pub_key from acceptreject import receive_accept_reject +from acceptreject import receive_quote_request from blocking import is_blocked from blocking import is_blocked_nickname from blocking import is_blocked_domain @@ -341,7 +342,8 @@ def inbox_permitted_message(domain: str, message_json: {}, return False always_allowed_types = ( - 'Follow', 'Join', 'Like', 'EmojiReact', 'Delete', 'Announce', 'Move' + 'Follow', 'Join', 'Like', 'EmojiReact', 'Delete', 'Announce', 'Move', + 'QuoteRequest' ) if message_json['type'] not in always_allowed_types: if not has_object_dict(message_json): @@ -3638,6 +3640,22 @@ def run_inbox_queue(server, inbox_start_time = time.time() continue + if receive_quote_request(queue_json['post']): + print('Queue: QuoteRequest received from ' + key_id) + if os.path.isfile(queue_filename): + try: + os.remove(queue_filename) + except OSError: + print('EX: run_inbox_queue 7 unable to delete ' + + str(queue_filename)) + if len(queue) > 0: + queue.pop(0) + fitness_performance(inbox_start_time, server.fitness, + 'INBOX', 'receive_quote_request', + debug) + inbox_start_time = time.time() + continue + if receive_move_activity(curr_session, base_dir, http_prefix, domain, port, cached_webfingers,