From 05cdd5194fef6cd27628e52cc96a6c0e046d7ac7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 30 Sep 2025 14:53:10 +0100 Subject: [PATCH] Prepend domain to avatar url if needed --- daemon_post_search.py | 2 +- webapp_post.py | 10 +++++----- webapp_utils.py | 12 ++++++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/daemon_post_search.py b/daemon_post_search.py index 91814125c..8be56bce4 100644 --- a/daemon_post_search.py +++ b/daemon_post_search.py @@ -523,7 +523,7 @@ def _receive_search_handle(self, search_str: str, # get the avatar url for the actor avatar_url = \ get_avatar_image_url(curr_session, - base_dir, http_prefix, + base_dir, http_prefix, domain, actor, person_cache, None, True, signing_priv_key_pem, diff --git a/webapp_post.py b/webapp_post.py index 5783c1af9..bc624a221 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -613,7 +613,7 @@ def _get_post_from_recent_cache(session, _log_post_timing(enable_timing_log, post_start_time, '2.1') update_avatar_image_cache(signing_priv_key_pem, - session, base_dir, http_prefix, + session, base_dir, http_prefix, domain, post_actor, avatar_url, person_cache, allow_downloads, mitm_servers) @@ -2232,7 +2232,7 @@ def remove_incomplete_code_tags(content: str) -> str: return content -def _mentions_to_person_options(html_str: str, nickname: str, +def _mentions_to_person_options(html_str: str, nickname: str, domain: str, session, base_dir: str, http_prefix: str, person_cache: {}, allow_downloads: bool, @@ -2259,7 +2259,7 @@ def _mentions_to_person_options(html_str: str, nickname: str, post_actor = link.split('"')[0] # look up the avatar image for the mention avatar_url = \ - get_avatar_image_url(session, base_dir, http_prefix, + get_avatar_image_url(session, base_dir, http_prefix, domain, post_actor, person_cache, None, allow_downloads, signing_priv_key_pem, @@ -2391,7 +2391,7 @@ def individual_post_as_html(signing_priv_key_pem: str, avatar_url = \ get_avatar_image_url(session, - base_dir, http_prefix, + base_dir, http_prefix, domain, post_actor, person_cache, avatar_url, allow_downloads, signing_priv_key_pem, @@ -3369,7 +3369,7 @@ def individual_post_as_html(signing_priv_key_pem: str, # This enables following of mentions in browsers which don't # support javascript post_html = \ - _mentions_to_person_options(post_html, nickname, + _mentions_to_person_options(post_html, nickname, domain, session, base_dir, http_prefix, person_cache, allow_downloads, diff --git a/webapp_utils.py b/webapp_utils.py index f0d0eda94..275a02082 100644 --- a/webapp_utils.py +++ b/webapp_utils.py @@ -364,7 +364,8 @@ def set_blog_address(actor_json: {}, blog_address: str) -> None: def update_avatar_image_cache(signing_priv_key_pem: str, - session, base_dir: str, http_prefix: str, + session, base_dir: str, + http_prefix: str, domain: str, actor: str, avatar_url: str, person_cache: {}, allow_downloads: bool, mitm_servers: [], @@ -393,6 +394,8 @@ def update_avatar_image_cache(signing_priv_key_pem: str, if (not os.path.isfile(avatar_image_filename) or force) and \ allow_downloads: + if '://' not in avatar_url and avatar_url.startswith('/'): + avatar_url = http_prefix + '://' + domain + avatar_url try: if debug: print('avatar image url: ' + avatar_url) @@ -1798,7 +1801,8 @@ def html_highlight_label(label: str, highlight: bool) -> str: return '*' + str(label) + '*' -def get_avatar_image_url(session, base_dir: str, http_prefix: str, +def get_avatar_image_url(session, base_dir: str, + http_prefix: str, domain: str, post_actor: str, person_cache: {}, avatar_url: str, allow_downloads: bool, signing_priv_key_pem: str, @@ -1811,12 +1815,12 @@ def get_avatar_image_url(session, base_dir: str, http_prefix: str, get_person_avatar_url(base_dir, post_actor, person_cache) avatar_url = \ update_avatar_image_cache(signing_priv_key_pem, - session, base_dir, http_prefix, + session, base_dir, http_prefix, domain, post_actor, avatar_url, person_cache, allow_downloads, mitm_servers) else: update_avatar_image_cache(signing_priv_key_pem, - session, base_dir, http_prefix, + session, base_dir, http_prefix, domain, post_actor, avatar_url, person_cache, allow_downloads, mitm_servers)