From b9c379e53f9499d611d1af80f946ad1f946c3e4d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 12 May 2023 14:47:28 +0100 Subject: [PATCH] Show proxied actors --- daemon.py | 23 +++++++++++++++-------- utils.py | 15 +++++++++++++++ webapp_profile.py | 37 ++++++++++++++++++++++++++++++------- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/daemon.py b/daemon.py index 82155f191..a92ef0e50 100644 --- a/daemon.py +++ b/daemon.py @@ -12225,7 +12225,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, self.server.content_license_url, timezone, bold_reading, - self.server.buy_sites) + self.server.buy_sites, None) msg = msg.encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, @@ -12352,7 +12352,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, content_license_url, timezone, bold_reading, - self.server.buy_sites) + self.server.buy_sites, + None) msg = msg.encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, @@ -15000,7 +15001,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, self.server.content_license_url, timezone, bold_reading, - self.server.buy_sites) + self.server.buy_sites, + None) msg = msg.encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, @@ -15143,7 +15145,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, content_license_url, timezone, bold_reading, - self.server.buy_sites).encode('utf-8') + self.server.buy_sites, + None).encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, cookie, calling_domain, False) @@ -15280,7 +15283,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, content_license_url, timezone, bold_reading, - self.server.buy_sites).encode('utf-8') + self.server.buy_sites, + None).encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, cookie, calling_domain, False) @@ -15421,7 +15425,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, content_license_url, timezone, bold_reading, - self.server.buy_sites).encode('utf-8') + self.server.buy_sites, + None).encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, cookie, calling_domain, False) @@ -15563,7 +15568,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, content_license_url, timezone, bold_reading, - self.server.buy_sites).encode('utf-8') + self.server.buy_sites, + None).encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, cookie, calling_domain, False) @@ -15730,7 +15736,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, self.server.content_license_url, timezone, bold_reading, - self.server.buy_sites).encode('utf-8') + self.server.buy_sites, + None).encode('utf-8') msglen = len(msg) self._set_headers('text/html', msglen, cookie, calling_domain, False) diff --git a/utils.py b/utils.py index 5a2ab390f..c5c4d5328 100644 --- a/utils.py +++ b/utils.py @@ -4345,3 +4345,18 @@ def harmless_markup(post_json_object: {}) -> None: content = remove_html(content) post_json_object['object'][map_name][lang] = \ content + + +def actor_proxy_type(actor: {}) -> str: + """Returns a string indicating the proxy for an actor + or None if not proxied + """ + if not actor.get('proxyOf'): + return None + if not isinstance(actor['proxyOf'], list): + return None + for proxy_dict in actor['proxyOf']: + if proxy_dict.get('protocol'): + if isinstance(proxy_dict['protocol'], str): + return proxy_dict['protocol'] + return None diff --git a/webapp_profile.py b/webapp_profile.py index ec2280840..c2e216e65 100644 --- a/webapp_profile.py +++ b/webapp_profile.py @@ -10,6 +10,7 @@ __module_group__ = "Web Interface" import os from pprint import pprint from webfinger import webfinger_handle +from utils import actor_proxy_type from utils import remove_id_ending from utils import standardize_text from utils import get_display_name @@ -327,6 +328,8 @@ def html_profile_after_search(recent_posts_cache: {}, max_recent_posts: int, if 'T' in profile_json['published']: joined_date = profile_json['published'] + actor_proxied = actor_proxy_type(profile_json) + profile_str = \ _get_profile_header_after_search(nickname, default_timeline, search_nickname, @@ -338,7 +341,7 @@ def html_profile_after_search(recent_posts_cache: {}, max_recent_posts: int, avatar_url, image_url, moved_to, profile_json['id'], also_known_as, access_keys, - joined_date) + joined_date, actor_proxied) domain_full = get_full_domain(domain, port) @@ -478,7 +481,8 @@ def _get_profile_header(base_dir: str, http_prefix: str, nickname: str, pinned_content: str, access_keys: {}, joined_date: str, - occupation_name: str) -> str: + occupation_name: str, + actor_proxied: str) -> str: """The header of the profile screen, containing background image and avatar """ @@ -509,8 +513,17 @@ def _get_profile_header(base_dir: str, http_prefix: str, nickname: str, '

' + display_name + '\n

\n' + \ occupation_str + if not actor_proxied: + actor_proxied = '' + else: + actor_proxied = remove_html(actor_proxied) + if '/' in actor_proxied: + actor_proxied = actor_proxied.split('/')[-1] + actor_proxied = ' [' + actor_proxied + ']' + html_str += \ - '

@' + nickname + '@' + domain_full + '
\n' + '

@' + nickname + '@' + domain_full + \ + actor_proxied + '
\n' if joined_date: html_str += \ '

' + translate['Joined'] + ' ' + \ @@ -592,7 +605,8 @@ def _get_profile_header_after_search(nickname: str, default_timeline: str, moved_to: str, actor: str, also_known_as: [], access_keys: {}, - joined_date: str) -> str: + joined_date: str, + actor_proxied: str) -> str: """The header of a searched for handle, containing background image and avatar """ @@ -617,12 +631,19 @@ def _get_profile_header_after_search(nickname: str, default_timeline: str, avatar_url + '" ' + 'alt="" class="title">\n' if not display_name: display_name = search_nickname + if not actor_proxied: + actor_proxied = '' + else: + actor_proxied = remove_html(actor_proxied) + if '/' in actor_proxied: + actor_proxied = actor_proxied.split('/')[-1] + actor_proxied = ' [' + actor_proxied + ']' html_str += \ '

\n' + \ ' ' + display_name + '\n' + \ '

\n' + \ '

@' + search_nickname + '@' + search_domain_full + \ - '
\n' + actor_proxied + '
\n' if joined_date: html_str += '

' + translate['Joined'] + ' ' + \ joined_date.split('T')[0] + '

\n' @@ -700,7 +721,8 @@ def html_profile(signing_priv_key_pem: str, cw_lists: {}, lists_enabled: str, content_license_url: str, timezone: str, bold_reading: bool, - buy_sites: {}) -> str: + buy_sites: {}, + actor_proxied: str) -> str: """Show the profile page as html """ show_moved_accounts = False @@ -1052,7 +1074,8 @@ def html_profile(signing_priv_key_pem: str, login_button, avatar_url, theme, moved_to, also_known_as, pinned_content, access_keys, - joined_date, occupation_name) + joined_date, occupation_name, + actor_proxied) # keyboard navigation user_path_str = '/users/' + nickname