mirror of https://gitlab.com/bashrc2/epicyon
Change actor domain for non-clearnet lookups
parent
eebc60170d
commit
06af2b892f
21
daemon.py
21
daemon.py
|
@ -251,6 +251,8 @@ from languages import set_actor_languages
|
||||||
from languages import get_understood_languages
|
from languages import get_understood_languages
|
||||||
from like import update_likes_collection
|
from like import update_likes_collection
|
||||||
from reaction import update_reaction_collection
|
from reaction import update_reaction_collection
|
||||||
|
from utils import is_onion_request
|
||||||
|
from utils import is_i2p_request
|
||||||
from utils import get_account_timezone
|
from utils import get_account_timezone
|
||||||
from utils import set_account_timezone
|
from utils import set_account_timezone
|
||||||
from utils import load_account_timezones
|
from utils import load_account_timezones
|
||||||
|
@ -13246,7 +13248,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
|
||||||
def _show_person_profile(self, authorized: bool,
|
def _show_person_profile(self, authorized: bool,
|
||||||
calling_domain: str, path: str,
|
calling_domain: str,
|
||||||
|
referer_domain: str, path: str,
|
||||||
base_dir: str, http_prefix: str,
|
base_dir: str, http_prefix: str,
|
||||||
domain: str, domain_full: str, port: int,
|
domain: str, domain_full: str, port: int,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
|
@ -13294,11 +13297,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.max_recent_posts,
|
self.server.max_recent_posts,
|
||||||
self.server.translate,
|
self.server.translate,
|
||||||
self.server.project_version,
|
self.server.project_version,
|
||||||
base_dir,
|
base_dir, http_prefix, authorized,
|
||||||
http_prefix,
|
actor_json, 'posts', curr_session,
|
||||||
authorized,
|
|
||||||
actor_json, 'posts',
|
|
||||||
curr_session,
|
|
||||||
self.server.cached_webfingers,
|
self.server.cached_webfingers,
|
||||||
self.server.person_cache,
|
self.server.person_cache,
|
||||||
self.server.yt_replace_domain,
|
self.server.yt_replace_domain,
|
||||||
|
@ -13334,6 +13334,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if self._secure_mode(curr_session, proxy_type):
|
if self._secure_mode(curr_session, proxy_type):
|
||||||
accept_str = self.headers['Accept']
|
accept_str = self.headers['Accept']
|
||||||
msg_str = json.dumps(actor_json, ensure_ascii=False)
|
msg_str = json.dumps(actor_json, ensure_ascii=False)
|
||||||
|
if is_onion_request(calling_domain, referer_domain,
|
||||||
|
self.server.domain, onion_domain):
|
||||||
|
msg_str = msg_str.replace(domain, onion_domain)
|
||||||
|
elif is_i2p_request(calling_domain, referer_domain,
|
||||||
|
self.server.domain, i2p_domain):
|
||||||
|
msg_str = msg_str.replace(domain, i2p_domain)
|
||||||
msg = msg_str.encode('utf-8')
|
msg = msg_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
if 'application/ld+json' in accept_str:
|
if 'application/ld+json' in accept_str:
|
||||||
|
@ -17626,7 +17632,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
|
|
||||||
# look up a person
|
# look up a person
|
||||||
if self._show_person_profile(authorized,
|
if self._show_person_profile(authorized,
|
||||||
calling_domain, self.path,
|
calling_domain, referer_domain,
|
||||||
|
self.path,
|
||||||
self.server.base_dir,
|
self.server.base_dir,
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.domain,
|
self.server.domain,
|
||||||
|
|
36
utils.py
36
utils.py
|
@ -3453,3 +3453,39 @@ def set_account_timezone(base_dir: str, nickname: str, domain: str,
|
||||||
timezone = timezone.strip()
|
timezone = timezone.strip()
|
||||||
with open(tz_filename, 'w+') as fp_timezone:
|
with open(tz_filename, 'w+') as fp_timezone:
|
||||||
fp_timezone.write(timezone)
|
fp_timezone.write(timezone)
|
||||||
|
|
||||||
|
|
||||||
|
def is_onion_request(calling_domain: str, referer_domain: str,
|
||||||
|
domain: str, onion_domain: str) -> bool:
|
||||||
|
"""Do the given domains indicate that this is a request
|
||||||
|
from an onion instance
|
||||||
|
"""
|
||||||
|
if not onion_domain:
|
||||||
|
return False
|
||||||
|
if domain == onion_domain:
|
||||||
|
return True
|
||||||
|
if calling_domain.endswith('.onion'):
|
||||||
|
return True
|
||||||
|
if not referer_domain:
|
||||||
|
return False
|
||||||
|
if referer_domain.endswith('.onion'):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def is_i2p_request(calling_domain: str, referer_domain: str,
|
||||||
|
domain: str, i2p_domain: str) -> bool:
|
||||||
|
"""Do the given domains indicate that this is a request
|
||||||
|
from an i2p instance
|
||||||
|
"""
|
||||||
|
if not i2p_domain:
|
||||||
|
return False
|
||||||
|
if domain == i2p_domain:
|
||||||
|
return True
|
||||||
|
if calling_domain.endswith('.i2p'):
|
||||||
|
return True
|
||||||
|
if not referer_domain:
|
||||||
|
return False
|
||||||
|
if referer_domain.endswith('.i2p'):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
Loading…
Reference in New Issue