Show proxied actors

merge-requests/30/head
Bob Mottram 2023-05-12 14:47:28 +01:00
parent 705792d2fb
commit b9c379e53f
3 changed files with 60 additions and 15 deletions

View File

@ -12225,7 +12225,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
self.server.content_license_url, self.server.content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites) self.server.buy_sites, None)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -12352,7 +12352,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
content_license_url, content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites) self.server.buy_sites,
None)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15000,7 +15001,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
self.server.content_license_url, self.server.content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites) self.server.buy_sites,
None)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15143,7 +15145,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
content_license_url, content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites).encode('utf-8') self.server.buy_sites,
None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -15280,7 +15283,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
content_license_url, content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites).encode('utf-8') self.server.buy_sites,
None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -15421,7 +15425,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
content_license_url, content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites).encode('utf-8') self.server.buy_sites,
None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -15563,7 +15568,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
content_license_url, content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites).encode('utf-8') self.server.buy_sites,
None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
cookie, calling_domain, False) cookie, calling_domain, False)
@ -15730,7 +15736,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
self.server.content_license_url, self.server.content_license_url,
timezone, bold_reading, timezone, bold_reading,
self.server.buy_sites).encode('utf-8') self.server.buy_sites,
None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
cookie, calling_domain, False) cookie, calling_domain, False)

View File

@ -4345,3 +4345,18 @@ def harmless_markup(post_json_object: {}) -> None:
content = remove_html(content) content = remove_html(content)
post_json_object['object'][map_name][lang] = \ post_json_object['object'][map_name][lang] = \
content 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

View File

@ -10,6 +10,7 @@ __module_group__ = "Web Interface"
import os import os
from pprint import pprint from pprint import pprint
from webfinger import webfinger_handle from webfinger import webfinger_handle
from utils import actor_proxy_type
from utils import remove_id_ending from utils import remove_id_ending
from utils import standardize_text from utils import standardize_text
from utils import get_display_name 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']: if 'T' in profile_json['published']:
joined_date = profile_json['published'] joined_date = profile_json['published']
actor_proxied = actor_proxy_type(profile_json)
profile_str = \ profile_str = \
_get_profile_header_after_search(nickname, default_timeline, _get_profile_header_after_search(nickname, default_timeline,
search_nickname, search_nickname,
@ -338,7 +341,7 @@ def html_profile_after_search(recent_posts_cache: {}, max_recent_posts: int,
avatar_url, image_url, avatar_url, image_url,
moved_to, profile_json['id'], moved_to, profile_json['id'],
also_known_as, access_keys, also_known_as, access_keys,
joined_date) joined_date, actor_proxied)
domain_full = get_full_domain(domain, port) 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, pinned_content: str,
access_keys: {}, access_keys: {},
joined_date: str, joined_date: str,
occupation_name: str) -> str: occupation_name: str,
actor_proxied: str) -> str:
"""The header of the profile screen, containing background """The header of the profile screen, containing background
image and avatar image and avatar
""" """
@ -509,8 +513,17 @@ def _get_profile_header(base_dir: str, http_prefix: str, nickname: str,
' <h1>' + display_name + '\n</h1>\n' + \ ' <h1>' + display_name + '\n</h1>\n' + \
occupation_str 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 += \ html_str += \
' <p><b>@' + nickname + '@' + domain_full + '</b><br>\n' ' <p><b>@' + nickname + '@' + domain_full + \
actor_proxied + '</b><br>\n'
if joined_date: if joined_date:
html_str += \ html_str += \
' <p>' + translate['Joined'] + ' ' + \ ' <p>' + translate['Joined'] + ' ' + \
@ -592,7 +605,8 @@ def _get_profile_header_after_search(nickname: str, default_timeline: str,
moved_to: str, actor: str, moved_to: str, actor: str,
also_known_as: [], also_known_as: [],
access_keys: {}, access_keys: {},
joined_date: str) -> str: joined_date: str,
actor_proxied: str) -> str:
"""The header of a searched for handle, containing background """The header of a searched for handle, containing background
image and avatar image and avatar
""" """
@ -617,12 +631,19 @@ def _get_profile_header_after_search(nickname: str, default_timeline: str,
avatar_url + '" ' + 'alt="" class="title"></a>\n' avatar_url + '" ' + 'alt="" class="title"></a>\n'
if not display_name: if not display_name:
display_name = search_nickname 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 += \ html_str += \
' <h1>\n' + \ ' <h1>\n' + \
' ' + display_name + '\n' + \ ' ' + display_name + '\n' + \
' </h1>\n' + \ ' </h1>\n' + \
' <p><b>@' + search_nickname + '@' + search_domain_full + \ ' <p><b>@' + search_nickname + '@' + search_domain_full + \
'</b><br>\n' actor_proxied + '</b><br>\n'
if joined_date: if joined_date:
html_str += ' <p>' + translate['Joined'] + ' ' + \ html_str += ' <p>' + translate['Joined'] + ' ' + \
joined_date.split('T')[0] + '</p>\n' joined_date.split('T')[0] + '</p>\n'
@ -700,7 +721,8 @@ def html_profile(signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
content_license_url: str, content_license_url: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
buy_sites: {}) -> str: buy_sites: {},
actor_proxied: str) -> str:
"""Show the profile page as html """Show the profile page as html
""" """
show_moved_accounts = False show_moved_accounts = False
@ -1052,7 +1074,8 @@ def html_profile(signing_priv_key_pem: str,
login_button, avatar_url, theme, login_button, avatar_url, theme,
moved_to, also_known_as, moved_to, also_known_as,
pinned_content, access_keys, pinned_content, access_keys,
joined_date, occupation_name) joined_date, occupation_name,
actor_proxied)
# keyboard navigation # keyboard navigation
user_path_str = '/users/' + nickname user_path_str = '/users/' + nickname