mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of gitlab.com:bashrc2/epicyon
commit
8437693336
|
|
@ -1118,7 +1118,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not referer_domain:
|
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 ' +
|
print('mastodon api request has no referer domain ' +
|
||||||
str(ua_str))
|
str(ua_str))
|
||||||
self._400()
|
self._400()
|
||||||
|
|
|
||||||
35
languages.py
35
languages.py
|
|
@ -7,7 +7,6 @@ __email__ = "bob@libreserver.org"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Core"
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import os
|
|
||||||
import json
|
import json
|
||||||
from urllib import request, parse
|
from urllib import request, parse
|
||||||
from utils import get_actor_languages_list
|
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: {},
|
def set_actor_languages(base_dir: str, actor_json: {},
|
||||||
languages_str: str) -> None:
|
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()
|
languages_str = languages_str.strip()
|
||||||
separator = None
|
separator = None
|
||||||
if ',' in languages_str:
|
possible_separators = (',', '/', ';', '+', ' ')
|
||||||
separator = ','
|
for poss in possible_separators:
|
||||||
elif '/' in languages_str:
|
if poss in languages_str:
|
||||||
separator = '/'
|
separator = poss
|
||||||
elif ',' in languages_str:
|
break
|
||||||
separator = ','
|
|
||||||
elif ';' in languages_str:
|
|
||||||
separator = ';'
|
|
||||||
elif '+' in languages_str:
|
|
||||||
separator = '+'
|
|
||||||
elif ' ' in languages_str:
|
|
||||||
separator = ' '
|
|
||||||
if separator:
|
if separator:
|
||||||
lang_list = languages_str.lower().split(separator)
|
lang_list = languages_str.lower().split(separator)
|
||||||
else:
|
else:
|
||||||
|
|
@ -72,18 +64,11 @@ def set_actor_languages(base_dir: str, actor_json: {},
|
||||||
lang_list2 = ''
|
lang_list2 = ''
|
||||||
for lang in lang_list:
|
for lang in lang_list:
|
||||||
lang = lang.strip()
|
lang = lang.strip()
|
||||||
if base_dir:
|
if lang_list2:
|
||||||
language_filename = base_dir + '/translations/' + lang + '.json'
|
if ' ' + lang not in lang_list2:
|
||||||
if os.path.isfile(language_filename):
|
lang_list2 += ', ' + lang
|
||||||
if lang_list2:
|
|
||||||
lang_list2 += ', ' + lang.strip()
|
|
||||||
else:
|
|
||||||
lang_list2 += lang.strip()
|
|
||||||
else:
|
else:
|
||||||
if lang_list2:
|
lang_list2 += lang
|
||||||
lang_list2 += ', ' + lang.strip()
|
|
||||||
else:
|
|
||||||
lang_list2 += lang.strip()
|
|
||||||
|
|
||||||
# remove any existing value
|
# remove any existing value
|
||||||
property_found = None
|
property_found = None
|
||||||
|
|
|
||||||
26
webfinger.py
26
webfinger.py
|
|
@ -78,6 +78,8 @@ def webfinger_handle(session, handle: str, http_prefix: str,
|
||||||
wf_domain = remove_domain_port(domain)
|
wf_domain = remove_domain_port(domain)
|
||||||
|
|
||||||
wf_handle = nickname + '@' + wf_domain
|
wf_handle = nickname + '@' + wf_domain
|
||||||
|
if debug:
|
||||||
|
print('Parsed webfinger handle: ' + handle + ' -> ' + wf_handle)
|
||||||
wfg = get_webfinger_from_cache(wf_handle, cached_webfingers)
|
wfg = get_webfinger_from_cache(wf_handle, cached_webfingers)
|
||||||
if wfg:
|
if wfg:
|
||||||
if debug:
|
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,
|
get_json(signing_priv_key_pem, session, url, hdr, par,
|
||||||
debug, project_version, http_prefix, from_domain)
|
debug, project_version, http_prefix, from_domain)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print('ERROR: webfinger_handle ' + str(ex))
|
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
|
||||||
return None
|
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:
|
if result:
|
||||||
store_webfinger_in_cache(wf_handle, result, cached_webfingers)
|
store_webfinger_in_cache(wf_handle, result, cached_webfingers)
|
||||||
else:
|
else:
|
||||||
if debug:
|
if debug:
|
||||||
print("WARN: Unable to webfinger " + url + ' ' +
|
print("WARN: Unable to webfinger " + url + ' ' +
|
||||||
'nickname: ' + str(nickname) + ' ' +
|
'nickname: ' + str(nickname) + ' ' +
|
||||||
|
'handle: ' + str(handle) + ' ' +
|
||||||
|
'wf_handle: ' + str(wf_handle) + ' ' +
|
||||||
'domain: ' + str(wf_domain) + ' ' +
|
'domain: ' + str(wf_domain) + ' ' +
|
||||||
'headers: ' + str(hdr) + ' ' +
|
'headers: ' + str(hdr) + ' ' +
|
||||||
'params: ' + str(par))
|
'params: ' + str(par))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue