mirror of https://gitlab.com/bashrc2/epicyon
Tidying
parent
a10d23cf2c
commit
0c8c2bab81
28
daemon.py
28
daemon.py
|
@ -119,8 +119,7 @@ from inbox import run_inbox_queue_watchdog
|
||||||
from inbox import save_post_to_inbox_queue
|
from inbox import save_post_to_inbox_queue
|
||||||
from inbox import populate_replies
|
from inbox import populate_replies
|
||||||
from inbox import receive_edit_to_post
|
from inbox import receive_edit_to_post
|
||||||
from follow import get_followers_sync_json
|
from follow import update_followers_sync_cache
|
||||||
from follow import get_followers_sync_hash
|
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
from follow import is_following_actor
|
from follow import is_following_actor
|
||||||
from follow import get_following_feed
|
from follow import get_following_feed
|
||||||
|
@ -16905,6 +16904,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.debug)
|
self.server.debug)
|
||||||
|
|
||||||
# followers synchronization
|
# followers synchronization
|
||||||
|
# See https://github.com/mastodon/mastodon/pull/14510
|
||||||
|
# https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
||||||
if self.path.startswith('/users/') and \
|
if self.path.startswith('/users/') and \
|
||||||
self.path.endswith('/followers_synchronization'):
|
self.path.endswith('/followers_synchronization'):
|
||||||
if self.server.followers_synchronization:
|
if self.server.followers_synchronization:
|
||||||
|
@ -16918,24 +16919,15 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
# check authorized fetch
|
# check authorized fetch
|
||||||
if self._secure_mode(curr_session, proxy_type):
|
if self._secure_mode(curr_session, proxy_type):
|
||||||
nickname = get_nickname_from_actor(self.path)
|
nickname = get_nickname_from_actor(self.path)
|
||||||
foll_sync_key = nickname + ':' + calling_domain
|
sync_cache = self.server.followers_sync_cache
|
||||||
sync_dict = self.server.followers_sync_cache
|
sync_json, _ = \
|
||||||
if sync_dict.get(foll_sync_key):
|
update_followers_sync_cache(self.server.base_dir,
|
||||||
sync_hash = sync_dict[foll_sync_key]['hash']
|
nickname,
|
||||||
sync_json = sync_dict[foll_sync_key]['response']
|
self.server.domain,
|
||||||
else:
|
|
||||||
sync_json = \
|
|
||||||
get_followers_sync_json(self.server.base_dir,
|
|
||||||
nickname, self.server.domain,
|
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.domain_full,
|
self.server.domain_full,
|
||||||
calling_domain)
|
calling_domain,
|
||||||
sync_hash = get_followers_sync_hash(sync_json)
|
sync_cache)
|
||||||
if sync_hash:
|
|
||||||
self.server.followers_sync_cache[foll_sync_key] = {
|
|
||||||
"hash": sync_hash,
|
|
||||||
"response": sync_json
|
|
||||||
}
|
|
||||||
msg_str = json.dumps(sync_json, ensure_ascii=False)
|
msg_str = json.dumps(sync_json, ensure_ascii=False)
|
||||||
msg_str = self._convert_domains(calling_domain, referer_domain,
|
msg_str = self._convert_domains(calling_domain, referer_domain,
|
||||||
msg_str)
|
msg_str)
|
||||||
|
|
45
follow.py
45
follow.py
|
@ -1372,12 +1372,16 @@ def _get_followers_for_domain(base_dir: str,
|
||||||
if not os.path.isfile(followers_filename):
|
if not os.path.isfile(followers_filename):
|
||||||
return []
|
return []
|
||||||
lines = []
|
lines = []
|
||||||
|
foll_text = ''
|
||||||
try:
|
try:
|
||||||
with open(followers_filename, 'r', encoding='utf-8') as fp_foll:
|
with open(followers_filename, 'r', encoding='utf-8') as fp_foll:
|
||||||
lines = fp_foll.read().splitlines()
|
foll_text = fp_foll.read()
|
||||||
except OSError:
|
except OSError:
|
||||||
print('EX: get_followers_for_domain unable to read followers ' +
|
print('EX: get_followers_for_domain unable to read followers ' +
|
||||||
followers_filename)
|
followers_filename)
|
||||||
|
if search_domain not in foll_text:
|
||||||
|
return []
|
||||||
|
lines = foll_text.splitlines()
|
||||||
result = []
|
result = []
|
||||||
for line_str in lines:
|
for line_str in lines:
|
||||||
if search_domain not in line_str:
|
if search_domain not in line_str:
|
||||||
|
@ -1406,10 +1410,10 @@ def _get_followers_for_domain(base_dir: str,
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def get_followers_sync_json(base_dir: str,
|
def _get_followers_sync_json(base_dir: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
http_prefix: str, domain_full: str,
|
http_prefix: str, domain_full: str,
|
||||||
search_domain: str) -> {}:
|
search_domain: str) -> {}:
|
||||||
"""Returns a response for followers synchronization
|
"""Returns a response for followers synchronization
|
||||||
See https://github.com/mastodon/mastodon/pull/14510
|
See https://github.com/mastodon/mastodon/pull/14510
|
||||||
https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
||||||
|
@ -1429,7 +1433,7 @@ def get_followers_sync_json(base_dir: str,
|
||||||
return sync_json
|
return sync_json
|
||||||
|
|
||||||
|
|
||||||
def get_followers_sync_hash(sync_json: {}) -> str:
|
def _get_followers_sync_hash(sync_json: {}) -> str:
|
||||||
"""Returns a hash used within the Collection-Synchronization http header
|
"""Returns a hash used within the Collection-Synchronization http header
|
||||||
See https://github.com/mastodon/mastodon/pull/14510
|
See https://github.com/mastodon/mastodon/pull/14510
|
||||||
https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
||||||
|
@ -1448,6 +1452,35 @@ def get_followers_sync_hash(sync_json: {}) -> str:
|
||||||
return sync_hash
|
return sync_hash
|
||||||
|
|
||||||
|
|
||||||
|
def update_followers_sync_cache(base_dir: str,
|
||||||
|
nickname: str, domain: str,
|
||||||
|
http_prefix: str, domain_full: str,
|
||||||
|
calling_domain: str,
|
||||||
|
sync_cache: {}) -> ({}, str):
|
||||||
|
"""Updates the followers synchronization cache
|
||||||
|
See https://github.com/mastodon/mastodon/pull/14510
|
||||||
|
https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-8fcf.md
|
||||||
|
"""
|
||||||
|
foll_sync_key = nickname + ':' + calling_domain
|
||||||
|
if sync_cache.get(foll_sync_key):
|
||||||
|
sync_hash = sync_cache[foll_sync_key]['hash']
|
||||||
|
sync_json = sync_cache[foll_sync_key]['response']
|
||||||
|
else:
|
||||||
|
sync_json = \
|
||||||
|
_get_followers_sync_json(base_dir,
|
||||||
|
nickname, domain,
|
||||||
|
http_prefix,
|
||||||
|
domain_full,
|
||||||
|
calling_domain)
|
||||||
|
sync_hash = _get_followers_sync_hash(sync_json)
|
||||||
|
if sync_hash:
|
||||||
|
sync_cache[foll_sync_key] = {
|
||||||
|
"hash": sync_hash,
|
||||||
|
"response": sync_json
|
||||||
|
}
|
||||||
|
return sync_json, sync_hash
|
||||||
|
|
||||||
|
|
||||||
def get_followers_of_actor(base_dir: str, actor: str, debug: bool) -> {}:
|
def get_followers_of_actor(base_dir: str, actor: str, debug: bool) -> {}:
|
||||||
"""In a shared inbox if we receive a post we know who it's from
|
"""In a shared inbox if we receive a post we know who it's from
|
||||||
and if it's addressed to followers then we need to get a list of those.
|
and if it's addressed to followers then we need to get a list of those.
|
||||||
|
|
Loading…
Reference in New Issue