Merge branch 'main' of gitlab.com:bashrc2/epicyon

merge-requests/30/head
Bob Mottram 2022-02-26 13:58:52 +00:00
commit 8437693336
3 changed files with 36 additions and 27 deletions

View File

@ -1118,7 +1118,7 @@ class PubServer(BaseHTTPRequestHandler):
return False
if not referer_domain:
if not debug and not self.server.unit_test:
if not (debug and self.server.unit_test):
print('mastodon api request has no referer domain ' +
str(ua_str))
self._400()

View File

@ -7,7 +7,6 @@ __email__ = "bob@libreserver.org"
__status__ = "Production"
__module_group__ = "Core"
import os
import json
from urllib import request, parse
from utils import get_actor_languages_list
@ -49,22 +48,15 @@ def get_understood_languages(base_dir: str, http_prefix: str,
def set_actor_languages(base_dir: str, actor_json: {},
languages_str: str) -> None:
"""Sets the languages used by the given actor
"""Sets the languages understood by the given actor
"""
languages_str = languages_str.strip()
separator = None
if ',' in languages_str:
separator = ','
elif '/' in languages_str:
separator = '/'
elif ',' in languages_str:
separator = ','
elif ';' in languages_str:
separator = ';'
elif '+' in languages_str:
separator = '+'
elif ' ' in languages_str:
separator = ' '
possible_separators = (',', '/', ';', '+', ' ')
for poss in possible_separators:
if poss in languages_str:
separator = poss
break
if separator:
lang_list = languages_str.lower().split(separator)
else:
@ -72,18 +64,11 @@ def set_actor_languages(base_dir: str, actor_json: {},
lang_list2 = ''
for lang in lang_list:
lang = lang.strip()
if base_dir:
language_filename = base_dir + '/translations/' + lang + '.json'
if os.path.isfile(language_filename):
if lang_list2:
lang_list2 += ', ' + lang.strip()
else:
lang_list2 += lang.strip()
if lang_list2:
if ' ' + lang not in lang_list2:
lang_list2 += ', ' + lang
else:
if lang_list2:
lang_list2 += ', ' + lang.strip()
else:
lang_list2 += lang.strip()
lang_list2 += lang
# remove any existing value
property_found = None

View File

@ -78,6 +78,8 @@ def webfinger_handle(session, handle: str, http_prefix: str,
wf_domain = remove_domain_port(domain)
wf_handle = nickname + '@' + wf_domain
if debug:
print('Parsed webfinger handle: ' + handle + ' -> ' + wf_handle)
wfg = get_webfinger_from_cache(wf_handle, cached_webfingers)
if wfg:
if debug:
@ -95,15 +97,37 @@ def webfinger_handle(session, handle: str, http_prefix: str,
get_json(signing_priv_key_pem, session, url, hdr, par,
debug, project_version, http_prefix, from_domain)
except Exception as ex:
print('ERROR: webfinger_handle ' + str(ex))
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
return None
# if the first attempt fails then try specifying the webfinger
# resource in a different way
if not result:
resource = handle
if handle == wf_handle:
# reconstruct the actor
resource = http_prefix + '://' + wf_domain + '/users/' + nickname
# try again using the actor as the resource
# See https://datatracker.ietf.org/doc/html/rfc7033 section 4.5
par = {
'resource': '{}'.format(resource)
}
try:
result = \
get_json(signing_priv_key_pem, session, url, hdr, par,
debug, project_version, http_prefix, from_domain)
except Exception as ex:
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
return None
if result:
store_webfinger_in_cache(wf_handle, result, cached_webfingers)
else:
if debug:
print("WARN: Unable to webfinger " + url + ' ' +
'nickname: ' + str(nickname) + ' ' +
'handle: ' + str(handle) + ' ' +
'wf_handle: ' + str(wf_handle) + ' ' +
'domain: ' + str(wf_domain) + ' ' +
'headers: ' + str(hdr) + ' ' +
'params: ' + str(par))