Move function out of daemon

merge-requests/30/head
Bob Mottram 2024-01-29 21:05:16 +00:00
parent 8e60206182
commit 7cf4871eec
2 changed files with 334 additions and 65 deletions

380
daemon.py
View File

@ -300,6 +300,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 get_instance_url
from utils import convert_domains
from utils import post_summary_contains_links
from utils import resembles_url
@ -535,20 +536,6 @@ class PubServer(BaseHTTPRequestHandler):
return True
return False
def _get_instance_url(self, calling_domain: str) -> str:
"""Returns the URL for this instance
"""
if calling_domain.endswith('.onion') and \
self.server.onion_domain:
instance_url = 'http://' + self.server.onion_domain
elif (calling_domain.endswith('.i2p') and
self.server.i2p_domain):
instance_url = 'http://' + self.server.i2p_domain
else:
instance_url = \
self.server.http_prefix + '://' + self.server.domain_full
return instance_url
def handle_error(self, request, client_address):
"""HTTP server error handling
"""
@ -826,7 +813,14 @@ class PubServer(BaseHTTPRequestHandler):
nickname = nickname.split('#/publicKey')[0]
else:
return None
actor = self._get_instance_url(calling_domain) + '/users/' + nickname
actor = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + nickname
actor_json = get_person_from_cache(base_dir, actor, person_cache)
if not actor_json:
actor_filename = acct_dir(base_dir, nickname, domain) + '.json'
@ -841,7 +835,12 @@ class PubServer(BaseHTTPRequestHandler):
not actor_json.get('assertionMethod'):
return None
original_person_url = \
self._get_instance_url(calling_domain) + path
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
path
pub_key, _ = \
get_actor_public_key_from_id(actor_json, original_person_url)
return pub_key
@ -879,7 +878,12 @@ class PubServer(BaseHTTPRequestHandler):
def _logout_redirect(self, redirect: str, calling_domain: str) -> None:
if '://' not in redirect:
redirect = self._get_instance_url(calling_domain) + redirect
redirect = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
redirect
print('WARN: redirect was not an absolute url, changed to ' +
redirect)
@ -1003,7 +1007,12 @@ class PubServer(BaseHTTPRequestHandler):
calling_domain: str,
code: int = 303) -> None:
if '://' not in redirect:
redirect = self._get_instance_url(calling_domain) + redirect
redirect = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
redirect
print('WARN: redirect was not an absolute url, changed to ' +
redirect)
@ -1615,7 +1624,11 @@ class PubServer(BaseHTTPRequestHandler):
if broch_mode:
show_node_info_accounts = False
instance_url = self._get_instance_url(calling_domain)
instance_url = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain)
about_url = instance_url + '/about'
terms_of_service_url = instance_url + '/terms'
info = meta_data_node_info(self.server.base_dir,
@ -2417,7 +2430,12 @@ class PubServer(BaseHTTPRequestHandler):
if not valid_password(login_password):
self.server.postreq_busy = False
login_url = \
self._get_instance_url(calling_domain) + '/login'
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/login'
self._redirect_headers(login_url, cookie, calling_domain)
return
@ -2426,7 +2444,12 @@ class PubServer(BaseHTTPRequestHandler):
self.server.manual_follower_approval):
self.server.postreq_busy = False
login_url = \
self._get_instance_url(calling_domain) + '/login'
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/login'
self._redirect_headers(login_url, cookie, calling_domain)
return
auth_header = \
@ -2517,8 +2540,14 @@ class PubServer(BaseHTTPRequestHandler):
self.server.tokens_lookup[index] = login_nickname
cookie_str = 'SET:epicyon=' + \
self.server.tokens[login_nickname] + '; SameSite=Strict'
tl_url = self._get_instance_url(calling_domain) + '/users/' + \
login_nickname + '/' + self.server.default_timeline
tl_url = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + login_nickname + '/' + \
self.server.default_timeline
self._redirect_headers(tl_url, cookie_str, calling_domain)
self.server.postreq_busy = False
return
@ -2559,7 +2588,13 @@ class PubServer(BaseHTTPRequestHandler):
"""
users_path = path.replace('/moderationaction', '')
nickname = users_path.replace('/users/', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
if not is_moderator(self.server.base_dir, nickname):
self._redirect_headers(actor_str + '/moderation',
cookie, calling_domain)
@ -4550,7 +4585,13 @@ class PubServer(BaseHTTPRequestHandler):
path = path.split('?page=')[0]
users_path = path.replace('/searchhandle', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
length = int(self.headers['Content-length'])
try:
search_params = self.rfile.read(length).decode('utf-8')
@ -4851,7 +4892,12 @@ class PubServer(BaseHTTPRequestHandler):
search_str.endswith(';') or \
search_str.endswith('.'):
actor_str = \
self._get_instance_url(calling_domain) + users_path
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
self._redirect_headers(actor_str + '/search',
cookie, calling_domain)
self.server.postreq_busy = False
@ -5032,7 +5078,12 @@ class PubServer(BaseHTTPRequestHandler):
self.server.postreq_busy = False
return
actor_str = \
self._get_instance_url(calling_domain) + users_path
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
self._redirect_headers(actor_str + '/search',
cookie, calling_domain)
self.server.postreq_busy = False
@ -5109,7 +5160,13 @@ class PubServer(BaseHTTPRequestHandler):
self._write(msg)
self.server.postreq_busy = False
return
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
self._redirect_headers(actor_str + '/' +
self.server.default_timeline,
cookie, calling_domain)
@ -5379,7 +5436,11 @@ class PubServer(BaseHTTPRequestHandler):
# https://codeberg.org/fediverse/fep/
# src/branch/main/fep/0837/fep-0837.md
actor = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + share_nickname
person_cache = self.server.person_cache
actor_json = get_person_from_cache(base_dir,
@ -5626,7 +5687,13 @@ class PubServer(BaseHTTPRequestHandler):
"""
users_path = path.replace('/linksdata', '')
users_path = users_path.replace('/editlinks', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
boundary = None
if ' boundary=' in self.headers['Content-type']:
@ -5813,7 +5880,13 @@ class PubServer(BaseHTTPRequestHandler):
self._404()
return
users_path = users_path.split('/tags/')[0]
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
tag_screen_str = actor_str + '/tags/' + hashtag
boundary = None
@ -5905,7 +5978,13 @@ class PubServer(BaseHTTPRequestHandler):
"""
users_path = path.replace('/newswiredata', '')
users_path = users_path.replace('/editnewswire', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
boundary = None
if ' boundary=' in self.headers['Content-type']:
@ -6092,7 +6171,13 @@ class PubServer(BaseHTTPRequestHandler):
update button on the citations screen
"""
users_path = path.replace('/citationsdata', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
nickname = get_nickname_from_actor(actor_str)
if not nickname:
self.server.postreq_busy = False
@ -6182,7 +6267,13 @@ class PubServer(BaseHTTPRequestHandler):
"""
users_path = path.replace('/newseditdata', '')
users_path = users_path.replace('/editnewspost', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
boundary = None
if ' boundary=' in self.headers['Content-type']:
@ -6330,7 +6421,13 @@ class PubServer(BaseHTTPRequestHandler):
"""
users_path = path.replace('/profiledata', '')
users_path = users_path.replace('/editprofile', '')
actor_str = self._get_instance_url(calling_domain) + users_path
actor_str = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
users_path
boundary = None
if ' boundary=' in self.headers['Content-type']:
@ -9233,7 +9330,12 @@ class PubServer(BaseHTTPRequestHandler):
return
origin_path_str_absolute = \
self._get_instance_url(calling_domain) + origin_path_str
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
origin_path_str
self._redirect_headers(origin_path_str_absolute, cookie,
calling_domain)
@ -9930,7 +10032,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number)
@ -10072,7 +10180,11 @@ class PubServer(BaseHTTPRequestHandler):
self.server.auto_cw_cache)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -10133,7 +10245,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + '?page=' + \
str(page_number)
@ -10200,7 +10318,11 @@ class PubServer(BaseHTTPRequestHandler):
curr_session, proxy_type)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -10505,7 +10627,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -10660,7 +10788,11 @@ class PubServer(BaseHTTPRequestHandler):
like_url)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -10721,7 +10853,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number)
@ -10864,7 +11002,11 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.iconsCache.get('like_inactive.png'):
del self.server.iconsCache['like_inactive.png']
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -10931,7 +11073,13 @@ class PubServer(BaseHTTPRequestHandler):
emoji_content_encoded = emoji_content_encoded.split('?')[0]
if not emoji_content_encoded:
print('WARN: no emoji reaction ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -10942,7 +11090,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -11103,7 +11257,11 @@ class PubServer(BaseHTTPRequestHandler):
reaction_url)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -11164,7 +11322,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number)
@ -11178,7 +11342,13 @@ class PubServer(BaseHTTPRequestHandler):
emoji_content_encoded = emoji_content_encoded.split('?')[0]
if not emoji_content_encoded:
print('WARN: no emoji reaction ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -11327,7 +11497,11 @@ class PubServer(BaseHTTPRequestHandler):
reaction_post_filename)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -11375,7 +11549,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -11390,7 +11570,13 @@ class PubServer(BaseHTTPRequestHandler):
post_json_object = load_json(reaction_post_filename)
if not reaction_post_filename or not post_json_object:
print('WARN: unable to locate reaction post ' + reaction_url)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number) + timeline_bookmark
@ -11494,7 +11680,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number)
@ -11602,7 +11794,11 @@ class PubServer(BaseHTTPRequestHandler):
# self.server.project_version, None,
# curr_session, proxy_type)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -11663,7 +11859,13 @@ class PubServer(BaseHTTPRequestHandler):
self.post_to_nickname = get_nickname_from_actor(actor)
if not self.post_to_nickname:
print('WARN: unable to find nickname in ' + actor)
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
actor_path_str = \
actor_absolute + '/' + timeline_str + \
'?page=' + str(page_number)
@ -11772,7 +11974,11 @@ class PubServer(BaseHTTPRequestHandler):
print('WARN: Unbookmarked post not found: ' +
bookmark_filename)
actor_absolute = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + self.post_to_nickname
actor_path_str = \
@ -12737,7 +12943,13 @@ class PubServer(BaseHTTPRequestHandler):
self._404()
return True
actor = path.replace('/skills', '')
actor_absolute = self._get_instance_url(calling_domain) + actor
actor_absolute = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
actor
self._redirect_headers(actor_absolute, cookie, calling_domain)
return True
@ -12756,7 +12968,11 @@ class PubServer(BaseHTTPRequestHandler):
post_id = path.split('?convthread=')[1].strip()
post_id = post_id.replace('--', '/')
if post_id.startswith('/users/'):
instance_url = self._get_instance_url(calling_domain)
instance_url = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain)
post_id = instance_url + post_id
nickname = path.split('/users/')[1]
if '?convthread=' in nickname:
@ -16309,7 +16525,11 @@ class PubServer(BaseHTTPRequestHandler):
self._404()
return False
accept_str = self.headers['Accept']
actor_domain_url = self._get_instance_url(calling_domain)
actor_domain_url = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain)
actor_url = actor_domain_url + '/users/Actor'
remove_fields = (
'icon', 'image', 'tts', 'shares',
@ -16472,7 +16692,13 @@ class PubServer(BaseHTTPRequestHandler):
str(divert_to_login_screen))
print('DEBUG: authorized=' + str(authorized))
print('DEBUG: path=' + path)
redirect_url = self._get_instance_url(calling_domain) + divert_path
redirect_url = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
divert_path
self._redirect_headers(redirect_url, None, calling_domain)
fitness_performance(getreq_start_time,
self.server.fitness,
@ -17553,7 +17779,12 @@ class PubServer(BaseHTTPRequestHandler):
self._write(msg)
else:
news_url = \
self._get_instance_url(calling_domain) + '/users/news'
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/news'
self._logout_redirect(news_url, calling_domain)
fitness_performance(getreq_start_time, self.server.fitness,
'_GET', 'logout',
@ -17716,7 +17947,12 @@ class PubServer(BaseHTTPRequestHandler):
return
# get the actor from the cache
actor = \
self._get_instance_url(calling_domain) + '/users/' + nickname
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + nickname
actor_json = get_person_from_cache(self.server.base_dir, actor,
self.server.person_cache)
if not actor_json:
@ -19715,7 +19951,12 @@ class PubServer(BaseHTTPRequestHandler):
if self.path == '/' and \
not authorized and \
self.server.news_instance:
news_url = self._get_instance_url(calling_domain) + '/users/news'
news_url = get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/news'
self._logout_redirect(news_url, calling_domain)
fitness_performance(getreq_start_time, self.server.fitness,
'_GET', 'news front page shown',
@ -19885,7 +20126,12 @@ class PubServer(BaseHTTPRequestHandler):
if os.path.isfile(tags_filename):
# redirect to the local hashtag screen
self.server.getreq_busy = False
ht_url = self._get_instance_url(calling_domain) + \
ht_url = \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + nickname + '/tags/' + hashtag
self._redirect_headers(ht_url, cookie, calling_domain)
else:
@ -23175,7 +23421,11 @@ class PubServer(BaseHTTPRequestHandler):
# add shareOnProfile items to the actor attachments
# https://codeberg.org/fediverse/fep/src/branch/main/fep/0837/fep-0837.md
actor = \
self._get_instance_url(calling_domain) + \
get_instance_url(calling_domain,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.i2p_domain) + \
'/users/' + nickname
person_cache = self.server.person_cache
actor_json = get_person_from_cache(self.server.base_dir,

View File

@ -5014,3 +5014,22 @@ def convert_domains(calling_domain: str, referer_domain: str,
'http://' +
i2p_domain)
return msg_str
def get_instance_url(calling_domain: str,
http_prefix: str,
domain_full: str,
onion_domain: str,
i2p_domain: str) -> str:
"""Returns the URL for this instance
"""
if calling_domain.endswith('.onion') and \
onion_domain:
instance_url = 'http://' + onion_domain
elif (calling_domain.endswith('.i2p') and
i2p_domain):
instance_url = 'http://' + i2p_domain
else:
instance_url = \
http_prefix + '://' + domain_full
return instance_url