From 895a5a121b64dfec946fd63c4cf159e67c201748 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 27 Jan 2024 17:35:04 +0000 Subject: [PATCH] Tidying --- daemon.py | 35 +++++------------------------------ utils.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/daemon.py b/daemon.py index ece24603c..6c66ada79 100644 --- a/daemon.py +++ b/daemon.py @@ -301,6 +301,7 @@ from languages import set_actor_languages from languages import get_understood_languages from like import update_likes_collection from reaction import update_reaction_collection +from utils import post_summary_contains_links from utils import resembles_url from utils import get_url_from_post from utils import date_from_string_format @@ -2277,36 +2278,10 @@ class PubServer(BaseHTTPRequestHandler): self.server.postreq_busy = False return 3 # check that the summary does not contain links - if message_json['object'].get('type') and \ - message_json['object'].get('summary'): - if message_json['object']['type'] != 'Person' and \ - message_json['object']['type'] != 'Application' and \ - message_json['object']['type'] != 'Group': - if len(message_json['object']['summary']) > 1024: - actor_url = get_actor_from_post(message_json) - print('INBOX: summary is too long ' + - actor_url + ' ' + - message_json['object']['summary']) - self._400() - self.server.postreq_busy = False - return 3 - if '://' in message_json['object']['summary']: - actor_url = get_actor_from_post(message_json) - print('INBOX: summary should not contain links ' + - actor_url + ' ' + - message_json['object']['summary']) - self._400() - self.server.postreq_busy = False - return 3 - else: - if len(message_json['object']['summary']) > 4096: - actor_url = get_actor_from_post(message_json) - print('INBOX: person summary is too long ' + - actor_url + ' ' + - message_json['object']['summary']) - self._400() - self.server.postreq_busy = False - return 3 + if post_summary_contains_links(message_json): + self._400() + self.server.postreq_busy = False + return 3 # if this is a local only post, is it really local? if 'localOnly' in message_json['object'] and \ message_json['object'].get('to') and \ diff --git a/utils.py b/utils.py index 659833ec3..6a6209fc8 100644 --- a/utils.py +++ b/utils.py @@ -4959,3 +4959,33 @@ def local_only_is_local(message_json: {}, domain_full: str) -> bool: str(message_json)) return False return True + + +def post_summary_contains_links(message_json: {}) -> bool: + """check if the json post summary contains links + """ + if message_json['object'].get('type') and \ + message_json['object'].get('summary'): + if message_json['object']['type'] != 'Person' and \ + message_json['object']['type'] != 'Application' and \ + message_json['object']['type'] != 'Group': + if len(message_json['object']['summary']) > 1024: + actor_url = get_actor_from_post(message_json) + print('INBOX: summary is too long ' + + actor_url + ' ' + + message_json['object']['summary']) + return True + if '://' in message_json['object']['summary']: + actor_url = get_actor_from_post(message_json) + print('INBOX: summary should not contain links ' + + actor_url + ' ' + + message_json['object']['summary']) + return True + else: + if len(message_json['object']['summary']) > 4096: + actor_url = get_actor_from_post(message_json) + print('INBOX: person summary is too long ' + + actor_url + ' ' + + message_json['object']['summary']) + return True + return False