mirror of https://gitlab.com/bashrc2/epicyon
Implementing mitm detection
parent
446310d03d
commit
ee9fee4d6b
24
announce.py
24
announce.py
|
@ -172,7 +172,8 @@ def create_announce(session, base_dir: str, federation_list: [],
|
||||||
curr_domain: str,
|
curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates an announce message
|
"""Creates an announce message
|
||||||
Typically to_url will be https://www.w3.org/ns/activitystreams#Public
|
Typically to_url will be https://www.w3.org/ns/activitystreams#Public
|
||||||
and cc_url might be a specific person favorited or repeated and the
|
and cc_url might be a specific person favorited or repeated and the
|
||||||
|
@ -241,7 +242,7 @@ def create_announce(session, base_dir: str, federation_list: [],
|
||||||
signing_priv_key_pem, 639633,
|
signing_priv_key_pem, 639633,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
return new_announce
|
return new_announce
|
||||||
|
|
||||||
|
@ -256,7 +257,8 @@ def announce_public(session, base_dir: str, federation_list: [],
|
||||||
curr_domain: str,
|
curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Makes a public announcement
|
"""Makes a public announcement
|
||||||
"""
|
"""
|
||||||
from_domain = get_full_domain(domain, port)
|
from_domain = get_full_domain(domain, port)
|
||||||
|
@ -273,7 +275,7 @@ def announce_public(session, base_dir: str, federation_list: [],
|
||||||
signing_priv_key_pem, curr_domain,
|
signing_priv_key_pem, curr_domain,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def send_announce_via_server(base_dir: str, session,
|
def send_announce_via_server(base_dir: str, session,
|
||||||
|
@ -283,7 +285,8 @@ def send_announce_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates an announce message via c2s
|
"""Creates an announce message via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -319,7 +322,7 @@ def send_announce_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: announce webfinger failed for ' + handle)
|
print('DEBUG: announce webfinger failed for ' + handle)
|
||||||
|
@ -341,7 +344,7 @@ def send_announce_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname, from_domain,
|
from_nickname, from_domain,
|
||||||
post_to_box, 73528,
|
post_to_box, 73528,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -379,7 +382,8 @@ def send_undo_announce_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undo an announce message via c2s
|
"""Undo an announce message via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -407,7 +411,7 @@ def send_undo_announce_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: undo announce webfinger failed for ' + handle)
|
print('DEBUG: undo announce webfinger failed for ' + handle)
|
||||||
|
@ -429,7 +433,7 @@ def send_undo_announce_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
post_to_box, 73528,
|
post_to_box, 73528,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
|
@ -90,7 +90,8 @@ def send_availability_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Sets the availability for a person via c2s
|
"""Sets the availability for a person via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -116,7 +117,7 @@ def send_availability_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: availability webfinger failed for ' + handle)
|
print('DEBUG: availability webfinger failed for ' + handle)
|
||||||
|
@ -137,7 +138,7 @@ def send_availability_via_server(base_dir: str, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, nickname,
|
http_prefix, nickname,
|
||||||
domain, post_to_box, 57262,
|
domain, post_to_box, 57262,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
14
blocking.py
14
blocking.py
|
@ -1867,7 +1867,8 @@ def get_blocks_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, page_number: int, debug: bool,
|
http_prefix: str, page_number: int, debug: bool,
|
||||||
version: str,
|
version: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns the blocked collection for shared items via c2s
|
"""Returns the blocked collection for shared items via c2s
|
||||||
https://codeberg.org/fediverse/fep/src/branch/main/fep/c648/fep-c648.md
|
https://codeberg.org/fediverse/fep/src/branch/main/fep/c648/fep-c648.md
|
||||||
"""
|
"""
|
||||||
|
@ -1889,7 +1890,7 @@ def get_blocks_via_server(session, nickname: str, password: str,
|
||||||
if debug:
|
if debug:
|
||||||
print('Blocked collection request to: ' + url)
|
print('Blocked collection request to: ' + url)
|
||||||
blocked_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
blocked_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
||||||
debug, version, http_prefix, None)
|
debug, mitm_servers, version, http_prefix, None)
|
||||||
if not get_json_valid(blocked_json):
|
if not get_json_valid(blocked_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET blocked collection failed for c2s to ' + url)
|
print('DEBUG: GET blocked collection failed for c2s to ' + url)
|
||||||
|
@ -2115,7 +2116,8 @@ def _update_federated_blocks(session, base_dir: str,
|
||||||
domain: str,
|
domain: str,
|
||||||
debug: bool, version: str,
|
debug: bool, version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
max_api_blocks: int) -> []:
|
max_api_blocks: int,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Creates block_api.txt
|
"""Creates block_api.txt
|
||||||
"""
|
"""
|
||||||
block_federated = []
|
block_federated = []
|
||||||
|
@ -2144,7 +2146,8 @@ def _update_federated_blocks(session, base_dir: str,
|
||||||
if debug:
|
if debug:
|
||||||
print('federated blocklist Block API endpoint: ' + url)
|
print('federated blocklist Block API endpoint: ' + url)
|
||||||
blocked_json = get_json(signing_priv_key_pem, session, url, headers,
|
blocked_json = get_json(signing_priv_key_pem, session, url, headers,
|
||||||
None, debug, version, http_prefix, domain)
|
None, debug, mitm_servers,
|
||||||
|
version, http_prefix, domain)
|
||||||
if not get_json_valid(blocked_json):
|
if not get_json_valid(blocked_json):
|
||||||
print('DEBUG: federated blocklist ' +
|
print('DEBUG: federated blocklist ' +
|
||||||
'GET blocked json failed ' + url)
|
'GET blocked json failed ' + url)
|
||||||
|
@ -2277,5 +2280,6 @@ def run_federated_blocks_daemon(base_dir: str, httpd, debug: bool) -> None:
|
||||||
httpd.domain,
|
httpd.domain,
|
||||||
debug, httpd.project_version,
|
debug, httpd.project_version,
|
||||||
httpd.signing_priv_key_pem,
|
httpd.signing_priv_key_pem,
|
||||||
httpd.max_api_blocks)
|
httpd.max_api_blocks,
|
||||||
|
httpd.mitm_servers)
|
||||||
time.sleep(seconds_per_hour * 6)
|
time.sleep(seconds_per_hour * 6)
|
||||||
|
|
15
bookmarks.py
15
bookmarks.py
|
@ -394,7 +394,8 @@ def send_bookmark_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a bookmark via c2s
|
"""Creates a bookmark via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -428,7 +429,7 @@ def send_bookmark_via_server(base_dir: str, session,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: bookmark webfinger failed for ' + handle)
|
print('DEBUG: bookmark webfinger failed for ' + handle)
|
||||||
|
@ -450,7 +451,7 @@ def send_bookmark_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
post_to_box, 58391,
|
post_to_box, 58391,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -490,7 +491,8 @@ def send_undo_bookmark_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Removes a bookmark via c2s
|
"""Removes a bookmark via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -524,7 +526,7 @@ def send_undo_bookmark_via_server(base_dir: str, session,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unbookmark webfinger failed for ' + handle)
|
print('DEBUG: unbookmark webfinger failed for ' + handle)
|
||||||
|
@ -546,7 +548,8 @@ def send_undo_bookmark_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
post_to_box, 52594,
|
post_to_box, 52594,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
5
cache.py
5
cache.py
|
@ -208,7 +208,8 @@ def get_person_pub_key(base_dir: str, session, person_url: str,
|
||||||
project_version: str, http_prefix: str,
|
project_version: str, http_prefix: str,
|
||||||
domain: str, onion_domain: str,
|
domain: str, onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Get the public key for an actor
|
"""Get the public key for an actor
|
||||||
"""
|
"""
|
||||||
original_person_url = person_url
|
original_person_url = person_url
|
||||||
|
@ -249,7 +250,7 @@ def get_person_pub_key(base_dir: str, session, person_url: str,
|
||||||
person_json = \
|
person_json = \
|
||||||
get_json(signing_priv_key_pem,
|
get_json(signing_priv_key_pem,
|
||||||
session, person_url, as_header, None, debug,
|
session, person_url, as_header, None, debug,
|
||||||
project_version, http_prefix, person_domain)
|
mitm_servers, project_version, http_prefix, person_domain)
|
||||||
if not get_json_valid(person_json):
|
if not get_json_valid(person_json):
|
||||||
if person_json is not None:
|
if person_json is not None:
|
||||||
if isinstance(person_json, dict):
|
if isinstance(person_json, dict):
|
||||||
|
|
|
@ -131,7 +131,8 @@ def _get_replies_to_post(post_json_object: {},
|
||||||
session, as_header, debug: bool,
|
session, as_header, debug: bool,
|
||||||
http_prefix: str,
|
http_prefix: str,
|
||||||
base_dir: str, nickname: str,
|
base_dir: str, nickname: str,
|
||||||
domain: str, depth: int, ids: []) -> []:
|
domain: str, depth: int, ids: [],
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Returns a list of reply posts to the given post as json
|
"""Returns a list of reply posts to the given post as json
|
||||||
"""
|
"""
|
||||||
result = []
|
result = []
|
||||||
|
@ -156,7 +157,7 @@ def _get_replies_to_post(post_json_object: {},
|
||||||
|
|
||||||
replies_collection = \
|
replies_collection = \
|
||||||
get_json(signing_priv_key_pem, session, replies_collection_id,
|
get_json(signing_priv_key_pem, session, replies_collection_id,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers, __version__,
|
||||||
http_prefix, domain)
|
http_prefix, domain)
|
||||||
if not get_json_valid(replies_collection):
|
if not get_json_valid(replies_collection):
|
||||||
return result
|
return result
|
||||||
|
@ -183,7 +184,7 @@ def _get_replies_to_post(post_json_object: {},
|
||||||
return result
|
return result
|
||||||
replies_collection = \
|
replies_collection = \
|
||||||
get_json(signing_priv_key_pem, session, next_page_id,
|
get_json(signing_priv_key_pem, session, next_page_id,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers, __version__,
|
||||||
http_prefix, domain)
|
http_prefix, domain)
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: get_replies_to_post next replies_collection ' +
|
print('DEBUG: get_replies_to_post next replies_collection ' +
|
||||||
|
@ -212,8 +213,8 @@ def _get_replies_to_post(post_json_object: {},
|
||||||
print('Downloading conversation item ' + item)
|
print('Downloading conversation item ' + item)
|
||||||
item_dict = \
|
item_dict = \
|
||||||
get_json(signing_priv_key_pem, session, item,
|
get_json(signing_priv_key_pem, session, item,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, domain)
|
__version__, http_prefix, domain)
|
||||||
if not get_json_valid(item_dict):
|
if not get_json_valid(item_dict):
|
||||||
continue
|
continue
|
||||||
item = item_dict
|
item = item_dict
|
||||||
|
@ -283,14 +284,16 @@ def _get_replies_to_post(post_json_object: {},
|
||||||
debug,
|
debug,
|
||||||
http_prefix, base_dir,
|
http_prefix, base_dir,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
depth + 1, ids)
|
depth + 1, ids,
|
||||||
|
mitm_servers)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def download_conversation_posts(authorized: bool, session,
|
def download_conversation_posts(authorized: bool, session,
|
||||||
http_prefix: str, base_dir: str,
|
http_prefix: str, base_dir: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
post_id: str, debug: bool) -> []:
|
post_id: str, debug: bool,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Downloads all posts for a conversation and returns a list of the
|
"""Downloads all posts for a conversation and returns a list of the
|
||||||
json objects
|
json objects
|
||||||
"""
|
"""
|
||||||
|
@ -312,8 +315,8 @@ def download_conversation_posts(authorized: bool, session,
|
||||||
else:
|
else:
|
||||||
post_json_object = \
|
post_json_object = \
|
||||||
get_json(signing_priv_key_pem, session, post_id,
|
get_json(signing_priv_key_pem, session, post_id,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, domain)
|
__version__, http_prefix, domain)
|
||||||
if debug:
|
if debug:
|
||||||
if not get_json_valid(post_json_object):
|
if not get_json_valid(post_json_object):
|
||||||
print(post_id + ' returned no json')
|
print(post_id + ' returned no json')
|
||||||
|
@ -330,7 +333,7 @@ def download_conversation_posts(authorized: bool, session,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
session, as_header, debug,
|
session, as_header, debug,
|
||||||
http_prefix, base_dir, nickname,
|
http_prefix, base_dir, nickname,
|
||||||
domain, 0, [])
|
domain, 0, [], mitm_servers)
|
||||||
|
|
||||||
ids = []
|
ids = []
|
||||||
while get_json_valid(post_json_object):
|
while get_json_valid(post_json_object):
|
||||||
|
@ -418,8 +421,8 @@ def download_conversation_posts(authorized: bool, session,
|
||||||
if authorized:
|
if authorized:
|
||||||
post_json_object = \
|
post_json_object = \
|
||||||
get_json(signing_priv_key_pem, session, post_id,
|
get_json(signing_priv_key_pem, session, post_id,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, domain)
|
__version__, http_prefix, domain)
|
||||||
|
|
||||||
if debug:
|
if debug:
|
||||||
if get_json_valid(post_json_object):
|
if get_json_valid(post_json_object):
|
||||||
|
|
|
@ -481,6 +481,7 @@ class EpicyonServer(ThreadingHTTPServer):
|
||||||
instance_description_short = 'Epicyon'
|
instance_description_short = 'Epicyon'
|
||||||
robots_txt = None
|
robots_txt = None
|
||||||
last_llm_time = None
|
last_llm_time = None
|
||||||
|
mitm_servers = []
|
||||||
watermark_width_percent = 0
|
watermark_width_percent = 0
|
||||||
watermark_position = 0
|
watermark_position = 0
|
||||||
watermark_opacity = 0
|
watermark_opacity = 0
|
||||||
|
@ -710,6 +711,9 @@ def run_daemon(accounts_data_dir: str,
|
||||||
# the last time when an LLM scraper was replied to
|
# the last time when an LLM scraper was replied to
|
||||||
httpd.last_llm_time = None
|
httpd.last_llm_time = None
|
||||||
|
|
||||||
|
# servers with man-in-the-middle transport encryption
|
||||||
|
httpd.mitm_servers = []
|
||||||
|
|
||||||
# default "searchable by" for new posts for each account
|
# default "searchable by" for new posts for each account
|
||||||
httpd.searchable_by_default = load_searchable_by_default(base_dir)
|
httpd.searchable_by_default = load_searchable_by_default(base_dir)
|
||||||
|
|
||||||
|
@ -1362,7 +1366,8 @@ def run_daemon(accounts_data_dir: str,
|
||||||
args=(base_dir, httpd,
|
args=(base_dir, httpd,
|
||||||
http_prefix, httpd.domain_full,
|
http_prefix, httpd.domain_full,
|
||||||
proxy_type, debug,
|
proxy_type, debug,
|
||||||
httpd.system_language), daemon=True)
|
httpd.system_language,
|
||||||
|
httpd.mitm_servers), daemon=True)
|
||||||
|
|
||||||
# flags used when restarting the inbox queue
|
# flags used when restarting the inbox queue
|
||||||
httpd.restart_inbox_queue_in_progress = False
|
httpd.restart_inbox_queue_in_progress = False
|
||||||
|
|
139
daemon_get.py
139
daemon_get.py
|
@ -63,7 +63,6 @@ from fitnessFunctions import html_watch_points_graph
|
||||||
from session import establish_session
|
from session import establish_session
|
||||||
from session import get_session_for_domains
|
from session import get_session_for_domains
|
||||||
from crawlers import blocked_user_agent
|
from crawlers import blocked_user_agent
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
from daemon_utils import etag_exists
|
from daemon_utils import etag_exists
|
||||||
from daemon_utils import has_accept
|
from daemon_utils import has_accept
|
||||||
from daemon_utils import show_person_options
|
from daemon_utils import show_person_options
|
||||||
|
@ -115,6 +114,7 @@ from utils import get_json_content_from_accept
|
||||||
from utils import check_bad_path
|
from utils import check_bad_path
|
||||||
from utils import corp_servers
|
from utils import corp_servers
|
||||||
from utils import decoded_host
|
from utils import decoded_host
|
||||||
|
from utils import detect_mitm
|
||||||
from person import get_person_notes_endpoint
|
from person import get_person_notes_endpoint
|
||||||
from person import get_account_pub_key
|
from person import get_account_pub_key
|
||||||
from shares import actor_attached_shares
|
from shares import actor_attached_shares
|
||||||
|
@ -753,7 +753,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.blocked_cache,
|
self.server.blocked_cache,
|
||||||
self.server.block_federated,
|
self.server.block_federated,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.default_timeline):
|
self.server.default_timeline,
|
||||||
|
self.server.mitm_servers):
|
||||||
fitness_performance(getreq_start_time, self.server.fitness,
|
fitness_performance(getreq_start_time, self.server.fitness,
|
||||||
'_GET', '_show_conversation_thread',
|
'_GET', '_show_conversation_thread',
|
||||||
self.server.debug)
|
self.server.debug)
|
||||||
|
@ -1676,7 +1677,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p,
|
self.server.session_i2p,
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.debug)
|
self.server.debug,
|
||||||
|
self.server.mitm_servers)
|
||||||
if html_str:
|
if html_str:
|
||||||
msg = html_str.encode('utf-8')
|
msg = html_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -3057,7 +3059,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache)
|
self.server.auto_cw_cache,
|
||||||
|
self.server.mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -3160,7 +3163,7 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
ua_str)
|
ua_str, self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3470,7 +3473,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3572,7 +3576,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.followers_sync_cache,
|
self.server.followers_sync_cache,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p,
|
self.server.session_i2p,
|
||||||
self.server.session)
|
self.server.session,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3607,7 +3612,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.session,
|
self.server.session,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3657,7 +3663,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3706,7 +3713,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.iconsCache,
|
self.server.iconsCache,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3757,7 +3765,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3807,7 +3816,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3857,7 +3867,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3901,7 +3912,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.account_timezone,
|
self.server.account_timezone,
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.fitness)
|
self.server.fitness,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3951,7 +3963,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p)
|
self.server.session_i2p,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3996,7 +4009,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.allow_deletion,
|
self.server.allow_deletion,
|
||||||
self.server.session_onion,
|
self.server.session_onion,
|
||||||
self.server.session_i2p,
|
self.server.session_i2p,
|
||||||
self.server.default_timeline)
|
self.server.default_timeline,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4042,7 +4056,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.account_timezone,
|
self.server.account_timezone,
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.default_timeline)
|
self.server.default_timeline,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4088,7 +4103,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.account_timezone,
|
self.server.account_timezone,
|
||||||
self.server.bold_reading,
|
self.server.bold_reading,
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.default_timeline)
|
self.server.default_timeline,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4437,7 +4453,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.searchable_by_default):
|
self.server.searchable_by_default,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4483,7 +4500,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain,
|
self.server.i2p_domain,
|
||||||
self.server.bold_reading):
|
self.server.bold_reading,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4521,7 +4539,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness):
|
self.server.fitness,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4559,7 +4578,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness):
|
self.server.fitness,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4607,7 +4627,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4663,7 +4684,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4720,7 +4742,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.domain_full,
|
self.server.domain_full,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4765,7 +4788,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain,
|
self.server.i2p_domain,
|
||||||
self.server.bold_reading):
|
self.server.bold_reading,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4809,7 +4833,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4871,7 +4896,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain,
|
self.server.i2p_domain,
|
||||||
self.server.hide_announces):
|
self.server.hide_announces,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4931,7 +4957,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -4991,7 +5018,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5053,7 +5081,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.full_width_tl_button_header,
|
self.server.full_width_tl_button_header,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain,
|
self.server.i2p_domain,
|
||||||
self.server.hide_announces):
|
self.server.hide_announces,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5114,7 +5143,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5176,7 +5206,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5235,7 +5266,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5292,7 +5324,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness):
|
self.server.fitness,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5345,7 +5378,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.min_images_for_accounts,
|
self.server.min_images_for_accounts,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness):
|
self.server.fitness,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5387,7 +5421,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.system_language,
|
self.server.system_language,
|
||||||
self.server.signing_priv_key_pem,
|
self.server.signing_priv_key_pem,
|
||||||
None,
|
None,
|
||||||
self.server.block_federated)
|
self.server.block_federated,
|
||||||
|
self.server.mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -5429,7 +5464,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.system_language,
|
self.server.system_language,
|
||||||
self.server.signing_priv_key_pem,
|
self.server.signing_priv_key_pem,
|
||||||
None,
|
None,
|
||||||
self.server.block_federated)
|
self.server.block_federated,
|
||||||
|
self.server.mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -5495,7 +5531,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5559,7 +5596,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain,
|
self.server.i2p_domain,
|
||||||
self.server.hide_announces):
|
self.server.hide_announces,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5620,7 +5658,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5676,7 +5715,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5733,7 +5773,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5789,7 +5830,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5846,7 +5888,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5903,7 +5946,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.fitness,
|
self.server.fitness,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
self.server.i2p_domain):
|
self.server.i2p_domain,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5959,7 +6003,8 @@ def daemon_http_get(self) -> None:
|
||||||
self.server.content_license_url,
|
self.server.content_license_url,
|
||||||
self.server.buy_sites,
|
self.server.buy_sites,
|
||||||
self.server.no_of_books,
|
self.server.no_of_books,
|
||||||
self.server.auto_cw_cache):
|
self.server.auto_cw_cache,
|
||||||
|
self.server.mitm_servers):
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ def follow_approve_button(self, calling_domain: str, path: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
session_onion, session_i2p,
|
session_onion, session_i2p,
|
||||||
session) -> None:
|
session, mitm_servers: []) -> None:
|
||||||
"""Follow approve button was pressed
|
"""Follow approve button was pressed
|
||||||
"""
|
"""
|
||||||
origin_path_str = path.split('/followapprove=')[0]
|
origin_path_str = path.split('/followapprove=')[0]
|
||||||
|
@ -101,7 +101,8 @@ def follow_approve_button(self, calling_domain: str, path: str,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
origin_path_str_absolute = \
|
origin_path_str_absolute = \
|
||||||
http_prefix + '://' + domain_full + origin_path_str
|
http_prefix + '://' + domain_full + origin_path_str
|
||||||
if calling_domain.endswith('.onion') and onion_domain:
|
if calling_domain.endswith('.onion') and onion_domain:
|
||||||
|
@ -133,7 +134,8 @@ def follow_deny_button(self, calling_domain: str, path: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str,
|
system_language: str,
|
||||||
fitness: {},
|
fitness: {},
|
||||||
session, session_onion, session_i2p) -> None:
|
session, session_onion, session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Follow deny button was pressed
|
"""Follow deny button was pressed
|
||||||
"""
|
"""
|
||||||
origin_path_str = path.split('/followdeny=')[0]
|
origin_path_str = path.split('/followdeny=')[0]
|
||||||
|
@ -169,7 +171,8 @@ def follow_deny_button(self, calling_domain: str, path: str,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
origin_path_str_absolute = \
|
origin_path_str_absolute = \
|
||||||
http_prefix + '://' + domain_full + origin_path_str
|
http_prefix + '://' + domain_full + origin_path_str
|
||||||
if calling_domain.endswith('.onion') and onion_domain:
|
if calling_domain.endswith('.onion') and onion_domain:
|
||||||
|
@ -217,7 +220,8 @@ def delete_button(self, calling_domain: str, path: str,
|
||||||
allow_deletion: bool,
|
allow_deletion: bool,
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p,
|
session_i2p,
|
||||||
default_timeline: str) -> None:
|
default_timeline: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Delete button is pressed on a post
|
"""Delete button is pressed on a post
|
||||||
"""
|
"""
|
||||||
if not cookie:
|
if not cookie:
|
||||||
|
@ -311,7 +315,8 @@ def delete_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if delete_str:
|
if delete_str:
|
||||||
delete_str_len = len(delete_str)
|
delete_str_len = len(delete_str)
|
||||||
set_headers(self, 'text/html', delete_str_len,
|
set_headers(self, 'text/html', delete_str_len,
|
||||||
|
|
|
@ -18,13 +18,13 @@ from utils import remove_id_ending
|
||||||
from utils import local_actor_url
|
from utils import local_actor_url
|
||||||
from utils import get_nickname_from_actor
|
from utils import get_nickname_from_actor
|
||||||
from utils import get_instance_url
|
from utils import get_instance_url
|
||||||
|
from utils import detect_mitm
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
from session import establish_session
|
from session import establish_session
|
||||||
from httpcodes import http_404
|
from httpcodes import http_404
|
||||||
from announce import create_announce
|
from announce import create_announce
|
||||||
from posts import save_post_to_box
|
from posts import save_post_to_box
|
||||||
from daemon_utils import post_to_outbox
|
from daemon_utils import post_to_outbox
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
from fitnessFunctions import fitness_performance
|
from fitnessFunctions import fitness_performance
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
from webapp_post import individual_post_as_html
|
from webapp_post import individual_post_as_html
|
||||||
|
@ -69,7 +69,8 @@ def announce_button(self, calling_domain: str, path: str,
|
||||||
account_timezone: {},
|
account_timezone: {},
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: int,
|
min_images_for_accounts: int,
|
||||||
session_onion, session_i2p) -> None:
|
session_onion, session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""The announce/repeat button was pressed on a post
|
"""The announce/repeat button was pressed on a post
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -167,7 +168,8 @@ def announce_button(self, calling_domain: str, path: str,
|
||||||
domain,
|
domain,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain, sites_unavailable,
|
i2p_domain, sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
announce_filename = None
|
announce_filename = None
|
||||||
if announce_json:
|
if announce_json:
|
||||||
# save the announce straight to the outbox
|
# save the announce straight to the outbox
|
||||||
|
@ -258,7 +260,8 @@ def announce_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
actor_absolute = \
|
actor_absolute = \
|
||||||
get_instance_url(calling_domain,
|
get_instance_url(calling_domain,
|
||||||
|
|
|
@ -17,6 +17,7 @@ from utils import is_dm
|
||||||
from utils import get_nickname_from_actor
|
from utils import get_nickname_from_actor
|
||||||
from utils import get_instance_url
|
from utils import get_instance_url
|
||||||
from utils import local_actor_url
|
from utils import local_actor_url
|
||||||
|
from utils import detect_mitm
|
||||||
from session import establish_session
|
from session import establish_session
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
from httpcodes import http_404
|
from httpcodes import http_404
|
||||||
|
@ -25,7 +26,6 @@ from bookmarks import undo_bookmark_post
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
from webapp_post import individual_post_as_html
|
from webapp_post import individual_post_as_html
|
||||||
from fitnessFunctions import fitness_performance
|
from fitnessFunctions import fitness_performance
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
|
|
||||||
|
|
||||||
def bookmark_button(self, calling_domain: str, path: str,
|
def bookmark_button(self, calling_domain: str, path: str,
|
||||||
|
@ -64,7 +64,8 @@ def bookmark_button(self, calling_domain: str, path: str,
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p) -> None:
|
session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Bookmark button was pressed
|
"""Bookmark button was pressed
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -214,7 +215,8 @@ def bookmark_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Bookmarked post not found: ' + bookmark_filename)
|
print('WARN: Bookmarked post not found: ' + bookmark_filename)
|
||||||
actor_absolute = \
|
actor_absolute = \
|
||||||
|
@ -272,7 +274,8 @@ def bookmark_button_undo(self, calling_domain: str, path: str,
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p) -> None:
|
session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Button pressed to undo a bookmark
|
"""Button pressed to undo a bookmark
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -421,7 +424,8 @@ def bookmark_button_undo(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Unbookmarked post not found: ' +
|
print('WARN: Unbookmarked post not found: ' +
|
||||||
bookmark_filename)
|
bookmark_filename)
|
||||||
|
|
|
@ -18,6 +18,7 @@ from utils import locate_post
|
||||||
from utils import local_actor_url
|
from utils import local_actor_url
|
||||||
from utils import get_nickname_from_actor
|
from utils import get_nickname_from_actor
|
||||||
from utils import get_instance_url
|
from utils import get_instance_url
|
||||||
|
from utils import detect_mitm
|
||||||
from daemon_utils import post_to_outbox
|
from daemon_utils import post_to_outbox
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
|
@ -27,7 +28,6 @@ from posts import get_original_post_from_announce_url
|
||||||
from fitnessFunctions import fitness_performance
|
from fitnessFunctions import fitness_performance
|
||||||
from like import update_likes_collection
|
from like import update_likes_collection
|
||||||
from webapp_post import individual_post_as_html
|
from webapp_post import individual_post_as_html
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
|
|
||||||
|
|
||||||
def like_button(self, calling_domain: str, path: str,
|
def like_button(self, calling_domain: str, path: str,
|
||||||
|
@ -66,7 +66,8 @@ def like_button(self, calling_domain: str, path: str,
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p) -> None:
|
session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Press the like button
|
"""Press the like button
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -261,7 +262,8 @@ def like_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Liked post not found: ' + liked_post_filename)
|
print('WARN: Liked post not found: ' + liked_post_filename)
|
||||||
# clear the icon from the cache so that it gets updated
|
# clear the icon from the cache so that it gets updated
|
||||||
|
@ -326,7 +328,8 @@ def like_button_undo(self, calling_domain: str, path: str,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
icons_cache: {},
|
icons_cache: {},
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p) -> None:
|
session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""A button is pressed to undo
|
"""A button is pressed to undo
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -512,7 +515,8 @@ def like_button_undo(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Unliked post not found: ' + liked_post_filename)
|
print('WARN: Unliked post not found: ' + liked_post_filename)
|
||||||
# clear the icon from the cache so that it gets updated
|
# clear the icon from the cache so that it gets updated
|
||||||
|
|
|
@ -15,6 +15,7 @@ from utils import get_cached_post_filename
|
||||||
from utils import load_json
|
from utils import load_json
|
||||||
from utils import locate_post
|
from utils import locate_post
|
||||||
from utils import get_nickname_from_actor
|
from utils import get_nickname_from_actor
|
||||||
|
from utils import detect_mitm
|
||||||
from httpcodes import http_404
|
from httpcodes import http_404
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
from blocking import unmute_post
|
from blocking import unmute_post
|
||||||
|
@ -22,7 +23,6 @@ from blocking import mute_post
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
from webapp_post import individual_post_as_html
|
from webapp_post import individual_post_as_html
|
||||||
from fitnessFunctions import fitness_performance
|
from fitnessFunctions import fitness_performance
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
|
|
||||||
|
|
||||||
def mute_button(self, calling_domain: str, path: str,
|
def mute_button(self, calling_domain: str, path: str,
|
||||||
|
@ -56,7 +56,8 @@ def mute_button(self, calling_domain: str, path: str,
|
||||||
account_timezone: {},
|
account_timezone: {},
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
default_timeline: str) -> None:
|
default_timeline: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Mute button is pressed
|
"""Mute button is pressed
|
||||||
"""
|
"""
|
||||||
mute_url = path.split('?mute=')[1]
|
mute_url = path.split('?mute=')[1]
|
||||||
|
@ -177,7 +178,8 @@ def mute_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Muted post not found: ' + mute_filename)
|
print('WARN: Muted post not found: ' + mute_filename)
|
||||||
|
|
||||||
|
@ -230,7 +232,8 @@ def mute_button_undo(self, calling_domain: str, path: str,
|
||||||
account_timezone: {},
|
account_timezone: {},
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
default_timeline: str) -> None:
|
default_timeline: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Undo mute button is pressed
|
"""Undo mute button is pressed
|
||||||
"""
|
"""
|
||||||
mute_url = path.split('?unmute=')[1]
|
mute_url = path.split('?unmute=')[1]
|
||||||
|
@ -351,7 +354,8 @@ def mute_button_undo(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Unmuted post not found: ' + mute_filename)
|
print('WARN: Unmuted post not found: ' + mute_filename)
|
||||||
if calling_domain.endswith('.onion') and onion_domain:
|
if calling_domain.endswith('.onion') and onion_domain:
|
||||||
|
|
|
@ -19,12 +19,12 @@ from utils import is_dm
|
||||||
from utils import local_actor_url
|
from utils import local_actor_url
|
||||||
from utils import get_instance_url
|
from utils import get_instance_url
|
||||||
from utils import get_nickname_from_actor
|
from utils import get_nickname_from_actor
|
||||||
|
from utils import detect_mitm
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
from session import establish_session
|
from session import establish_session
|
||||||
from httpcodes import http_404
|
from httpcodes import http_404
|
||||||
from posts import get_original_post_from_announce_url
|
from posts import get_original_post_from_announce_url
|
||||||
from daemon_utils import post_to_outbox
|
from daemon_utils import post_to_outbox
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
from fitnessFunctions import fitness_performance
|
from fitnessFunctions import fitness_performance
|
||||||
from reaction import update_reaction_collection
|
from reaction import update_reaction_collection
|
||||||
from follow import follower_approval_active
|
from follow import follower_approval_active
|
||||||
|
@ -65,7 +65,8 @@ def reaction_button(self, calling_domain: str, path: str,
|
||||||
account_timezone: {},
|
account_timezone: {},
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
session_onion, session_i2p) -> None:
|
session_onion, session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Press an emoji reaction button
|
"""Press an emoji reaction button
|
||||||
Note that this is not the emoji reaction selection icon at the
|
Note that this is not the emoji reaction selection icon at the
|
||||||
bottom of the post
|
bottom of the post
|
||||||
|
@ -290,7 +291,8 @@ def reaction_button(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Emoji reaction post not found: ' +
|
print('WARN: Emoji reaction post not found: ' +
|
||||||
reaction_post_filename)
|
reaction_post_filename)
|
||||||
|
@ -352,7 +354,8 @@ def reaction_button_undo(self, calling_domain: str, path: str,
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
session_onion,
|
session_onion,
|
||||||
session_i2p) -> None:
|
session_i2p,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""A button is pressed to undo emoji reaction
|
"""A button is pressed to undo emoji reaction
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -563,7 +566,8 @@ def reaction_button_undo(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
print('WARN: Unreaction post not found: ' +
|
print('WARN: Unreaction post not found: ' +
|
||||||
reaction_post_filename)
|
reaction_post_filename)
|
||||||
|
|
|
@ -69,7 +69,8 @@ def show_shares_feed(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the shares feed for a particular account/actor
|
"""Shows the shares feed for a particular account/actor
|
||||||
"""
|
"""
|
||||||
shares = \
|
shares = \
|
||||||
|
@ -169,7 +170,8 @@ def show_shares_feed(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -251,7 +253,8 @@ def show_following_feed(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the following feed for a particular account/actor
|
"""Shows the following feed for a particular account/actor
|
||||||
"""
|
"""
|
||||||
following = \
|
following = \
|
||||||
|
@ -358,7 +361,8 @@ def show_following_feed(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances).encode('utf-8')
|
known_epicyon_instances,
|
||||||
|
mitm_servers).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html',
|
set_headers(self, 'text/html',
|
||||||
msglen, cookie, calling_domain, False)
|
msglen, cookie, calling_domain, False)
|
||||||
|
@ -446,7 +450,8 @@ def show_moved_feed(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the moved feed for a particular account/actor
|
"""Shows the moved feed for a particular account/actor
|
||||||
"""
|
"""
|
||||||
following = \
|
following = \
|
||||||
|
@ -548,7 +553,8 @@ def show_moved_feed(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances).encode('utf-8')
|
known_epicyon_instances,
|
||||||
|
mitm_servers).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html',
|
set_headers(self, 'text/html',
|
||||||
msglen, cookie, calling_domain, False)
|
msglen, cookie, calling_domain, False)
|
||||||
|
@ -628,7 +634,8 @@ def show_inactive_feed(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the inactive accounts feed for a particular account/actor
|
"""Shows the inactive accounts feed for a particular account/actor
|
||||||
"""
|
"""
|
||||||
following = \
|
following = \
|
||||||
|
@ -731,7 +738,8 @@ def show_inactive_feed(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances).encode('utf-8')
|
known_epicyon_instances,
|
||||||
|
mitm_servers).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html',
|
set_headers(self, 'text/html',
|
||||||
msglen, cookie, calling_domain, False)
|
msglen, cookie, calling_domain, False)
|
||||||
|
@ -813,7 +821,8 @@ def show_followers_feed(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the followers feed for a particular account/actor
|
"""Shows the followers feed for a particular account/actor
|
||||||
"""
|
"""
|
||||||
followers = \
|
followers = \
|
||||||
|
@ -917,7 +926,8 @@ def show_followers_feed(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances).encode('utf-8')
|
known_epicyon_instances,
|
||||||
|
mitm_servers).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
cookie, calling_domain, False)
|
cookie, calling_domain, False)
|
||||||
|
|
|
@ -169,7 +169,8 @@ def hashtag_search2(self, calling_domain: str,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
ua_str: str) -> None:
|
ua_str: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Return the result of a hashtag search
|
"""Return the result of a hashtag search
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -236,7 +237,8 @@ def hashtag_search2(self, calling_domain: str,
|
||||||
'search',
|
'search',
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache, ua_str)
|
auto_cw_cache, ua_str,
|
||||||
|
mitm_servers)
|
||||||
if hashtag_str:
|
if hashtag_str:
|
||||||
msg = hashtag_str.encode('utf-8')
|
msg = hashtag_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
|
|
@ -25,6 +25,7 @@ from utils import get_json_content_from_accept
|
||||||
from utils import convert_domains
|
from utils import convert_domains
|
||||||
from utils import has_object_dict
|
from utils import has_object_dict
|
||||||
from utils import load_json
|
from utils import load_json
|
||||||
|
from utils import detect_mitm
|
||||||
from session import establish_session
|
from session import establish_session
|
||||||
from languages import get_understood_languages
|
from languages import get_understood_languages
|
||||||
from languages import get_reply_language
|
from languages import get_reply_language
|
||||||
|
@ -47,7 +48,6 @@ from fitnessFunctions import fitness_performance
|
||||||
from securemode import secure_mode
|
from securemode import secure_mode
|
||||||
from context import get_individual_post_context
|
from context import get_individual_post_context
|
||||||
from conversation import convthread_id_to_conversation_tag
|
from conversation import convthread_id_to_conversation_tag
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
|
|
||||||
|
|
||||||
def _show_post_from_file(self, post_filename: str, liked_by: str,
|
def _show_post_from_file(self, post_filename: str, liked_by: str,
|
||||||
|
@ -84,7 +84,8 @@ def _show_post_from_file(self, post_filename: str, liked_by: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {}, path: str,
|
fitness: {}, path: str,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows an individual post from its filename
|
"""Shows an individual post from its filename
|
||||||
"""
|
"""
|
||||||
if not os.path.isfile(post_filename):
|
if not os.path.isfile(post_filename):
|
||||||
|
@ -162,7 +163,8 @@ def _show_post_from_file(self, post_filename: str, liked_by: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_html_post_headers(self, msglen,
|
set_html_post_headers(self, msglen,
|
||||||
|
@ -241,7 +243,8 @@ def show_individual_post(self, ssml_getreq: bool, authorized: bool,
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows an individual post
|
"""Shows an individual post
|
||||||
"""
|
"""
|
||||||
liked_by = None
|
liked_by = None
|
||||||
|
@ -346,7 +349,8 @@ def show_individual_post(self, ssml_getreq: bool, authorized: bool,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
fitness, path,
|
fitness, path,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
fitness_performance(getreq_start_time, fitness,
|
fitness_performance(getreq_start_time, fitness,
|
||||||
'_GET', 'show_individual_post',
|
'_GET', 'show_individual_post',
|
||||||
|
@ -394,7 +398,8 @@ def show_new_post(self, edit_post_params: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
searchable_by_default_dict: []) -> bool:
|
searchable_by_default_dict: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the new post screen
|
"""Shows the new post screen
|
||||||
"""
|
"""
|
||||||
searchable_by_default = 'yourself'
|
searchable_by_default = 'yourself'
|
||||||
|
@ -520,7 +525,8 @@ def show_new_post(self, edit_post_params: {},
|
||||||
buy_sites,
|
buy_sites,
|
||||||
default_buy_site,
|
default_buy_site,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
searchable_by_default)
|
searchable_by_default,
|
||||||
|
mitm_servers)
|
||||||
if not msg:
|
if not msg:
|
||||||
print('Error replying to ' + in_reply_to_url)
|
print('Error replying to ' + in_reply_to_url)
|
||||||
http_404(self, 104)
|
http_404(self, 104)
|
||||||
|
@ -570,7 +576,8 @@ def show_individual_at_post(self, ssml_getreq: bool, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
bold_reading_nicknames: {}) -> bool:
|
bold_reading_nicknames: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""get an individual post from the path /@nickname/statusnumber
|
"""get an individual post from the path /@nickname/statusnumber
|
||||||
"""
|
"""
|
||||||
if '/@' not in path:
|
if '/@' not in path:
|
||||||
|
@ -681,7 +688,8 @@ def show_individual_at_post(self, ssml_getreq: bool, authorized: bool,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
fitness, path,
|
fitness, path,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
fitness_performance(getreq_start_time, fitness,
|
fitness_performance(getreq_start_time, fitness,
|
||||||
'_GET', 'show_individual_at_post',
|
'_GET', 'show_individual_at_post',
|
||||||
|
@ -719,7 +727,8 @@ def show_likers_of_post(self, authorized: bool,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {}) -> bool:
|
fitness: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Show the likers of a post
|
"""Show the likers of a post
|
||||||
"""
|
"""
|
||||||
if not authorized:
|
if not authorized:
|
||||||
|
@ -767,7 +776,8 @@ def show_likers_of_post(self, authorized: bool,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache, 'likes')
|
auto_cw_cache, 'likes',
|
||||||
|
mitm_servers)
|
||||||
if not msg:
|
if not msg:
|
||||||
http_404(self, 69)
|
http_404(self, 69)
|
||||||
return True
|
return True
|
||||||
|
@ -812,7 +822,8 @@ def show_announcers_of_post(self, authorized: bool,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {}) -> bool:
|
fitness: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Show the announcers of a post
|
"""Show the announcers of a post
|
||||||
"""
|
"""
|
||||||
if not authorized:
|
if not authorized:
|
||||||
|
@ -861,7 +872,7 @@ def show_announcers_of_post(self, authorized: bool,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
'shares')
|
'shares', mitm_servers)
|
||||||
if not msg:
|
if not msg:
|
||||||
http_404(self, 70)
|
http_404(self, 70)
|
||||||
return True
|
return True
|
||||||
|
@ -908,7 +919,8 @@ def show_replies_to_post(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the replies to a post
|
"""Shows the replies to a post
|
||||||
"""
|
"""
|
||||||
if not ('/statuses/' in path and '/users/' in path):
|
if not ('/statuses/' in path and '/users/' in path):
|
||||||
|
@ -1008,7 +1020,8 @@ def show_replies_to_post(self, authorized: bool,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1120,7 +1133,8 @@ def show_replies_to_post(self, authorized: bool,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1187,7 +1201,8 @@ def show_notify_post(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
bold_reading_nicknames: {}) -> bool:
|
bold_reading_nicknames: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows an individual post from an account which you are following
|
"""Shows an individual post from an account which you are following
|
||||||
and where you have the notify checkbox set on person options
|
and where you have the notify checkbox set on person options
|
||||||
"""
|
"""
|
||||||
|
@ -1245,7 +1260,8 @@ def show_notify_post(self, authorized: bool,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
fitness, path,
|
fitness, path,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
fitness_performance(getreq_start_time, fitness,
|
fitness_performance(getreq_start_time, fitness,
|
||||||
'_GET', 'show_notify_post',
|
'_GET', 'show_notify_post',
|
||||||
debug)
|
debug)
|
||||||
|
@ -1287,7 +1303,8 @@ def show_conversation_thread(self, authorized: bool,
|
||||||
blocked_cache: {},
|
blocked_cache: {},
|
||||||
block_federated: {},
|
block_federated: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
default_timeline: str) -> bool:
|
default_timeline: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""get conversation thread from the date link on a post
|
"""get conversation thread from the date link on a post
|
||||||
"""
|
"""
|
||||||
if not path.startswith('/users/'):
|
if not path.startswith('/users/'):
|
||||||
|
@ -1369,7 +1386,8 @@ def show_conversation_thread(self, authorized: bool,
|
||||||
block_federated,
|
block_federated,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
ua_str,
|
ua_str,
|
||||||
default_timeline)
|
default_timeline,
|
||||||
|
mitm_servers)
|
||||||
if conv_str:
|
if conv_str:
|
||||||
msg = conv_str.encode('utf-8')
|
msg = conv_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
|
|
@ -78,7 +78,8 @@ def show_person_profile(self, authorized: bool,
|
||||||
content_license_url: str,
|
content_license_url: str,
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
no_of_books: int,
|
no_of_books: int,
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the profile for a person
|
"""Shows the profile for a person
|
||||||
"""
|
"""
|
||||||
# look up a person
|
# look up a person
|
||||||
|
@ -150,7 +151,8 @@ def show_person_profile(self, authorized: bool,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances).encode('utf-8')
|
known_epicyon_instances,
|
||||||
|
mitm_servers).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
cookie, calling_domain, False)
|
cookie, calling_domain, False)
|
||||||
|
@ -233,7 +235,8 @@ def show_roles(self, calling_domain: str, referer_domain: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Show roles within profile screen
|
"""Show roles within profile screen
|
||||||
"""
|
"""
|
||||||
named_status = path.split('/users/')[1]
|
named_status = path.split('/users/')[1]
|
||||||
|
@ -308,7 +311,8 @@ def show_roles(self, calling_domain: str, referer_domain: str,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -383,7 +387,8 @@ def show_skills(self, calling_domain: str, referer_domain: str,
|
||||||
fitness: {},
|
fitness: {},
|
||||||
domain_full: str,
|
domain_full: str,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Show skills on the profile screen
|
"""Show skills on the profile screen
|
||||||
"""
|
"""
|
||||||
named_status = path.split('/users/')[1]
|
named_status = path.split('/users/')[1]
|
||||||
|
@ -460,7 +465,8 @@ def show_skills(self, calling_domain: str, referer_domain: str,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
|
|
@ -47,7 +47,8 @@ def reaction_picker2(self, calling_domain: str, path: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
account_timezone: {},
|
account_timezone: {},
|
||||||
bold_reading_nicknames: {},
|
bold_reading_nicknames: {},
|
||||||
fitness: {}) -> None:
|
fitness: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Press the emoji reaction picker icon at the bottom of the post
|
"""Press the emoji reaction picker icon at the bottom of the post
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -149,7 +150,8 @@ def reaction_picker2(self, calling_domain: str, path: str,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
|
|
@ -85,7 +85,8 @@ def show_media_timeline(self, authorized: bool,
|
||||||
full_width_tl_button_header: bool,
|
full_width_tl_button_header: bool,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
hide_announces: {}) -> bool:
|
hide_announces: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the media timeline
|
"""Shows the media timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -203,7 +204,8 @@ def show_media_timeline(self, authorized: bool,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
show_announces,
|
show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -299,7 +301,8 @@ def show_blogs_timeline(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the blogs timeline
|
"""Shows the blogs timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -412,7 +415,8 @@ def show_blogs_timeline(self, authorized: bool,
|
||||||
reverse_sequence, last_post_id,
|
reverse_sequence, last_post_id,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -508,7 +512,8 @@ def show_news_timeline(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the news timeline
|
"""Shows the news timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -626,7 +631,8 @@ def show_news_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -720,7 +726,8 @@ def show_features_timeline(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the features timeline (all local blogs)
|
"""Shows the features timeline (all local blogs)
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -835,7 +842,8 @@ def show_features_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -926,7 +934,8 @@ def show_shares_timeline(self, authorized: bool,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {}) -> bool:
|
fitness: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the shares timeline
|
"""Shows the shares timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -1004,7 +1013,8 @@ def show_shares_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1072,7 +1082,8 @@ def show_wanted_timeline(self, authorized: bool,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {}) -> bool:
|
fitness: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the wanted timeline
|
"""Shows the wanted timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -1149,7 +1160,8 @@ def show_wanted_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1221,7 +1233,8 @@ def show_bookmarks_timeline(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the bookmarks timeline
|
"""Shows the bookmarks timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -1330,7 +1343,8 @@ def show_bookmarks_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1428,7 +1442,8 @@ def show_outbox_timeline(self, authorized: bool,
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
hide_announces: {}) -> bool:
|
hide_announces: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the outbox timeline
|
"""Shows the outbox timeline
|
||||||
"""
|
"""
|
||||||
# get outbox feed for a person
|
# get outbox feed for a person
|
||||||
|
@ -1539,7 +1554,8 @@ def show_outbox_timeline(self, authorized: bool,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
show_announces,
|
show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1622,7 +1638,8 @@ def show_mod_timeline(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the moderation timeline
|
"""Shows the moderation timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -1730,7 +1747,8 @@ def show_mod_timeline(self, authorized: bool,
|
||||||
reverse_sequence,
|
reverse_sequence,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -1823,7 +1841,8 @@ def show_dms(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the DMs timeline
|
"""Shows the DMs timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -1935,7 +1954,8 @@ def show_dms(self, authorized: bool,
|
||||||
reverse_sequence, last_post_id,
|
reverse_sequence, last_post_id,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -2031,7 +2051,8 @@ def show_replies(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
fitness: {},
|
fitness: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the replies timeline
|
"""Shows the replies timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -2144,7 +2165,8 @@ def show_replies(self, authorized: bool,
|
||||||
reverse_sequence, last_post_id,
|
reverse_sequence, last_post_id,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
set_headers(self, 'text/html', msglen,
|
set_headers(self, 'text/html', msglen,
|
||||||
|
@ -2240,7 +2262,8 @@ def show_inbox(self, authorized: bool,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
hide_announces: {}) -> bool:
|
hide_announces: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Shows the inbox timeline
|
"""Shows the inbox timeline
|
||||||
"""
|
"""
|
||||||
if '/users/' in path:
|
if '/users/' in path:
|
||||||
|
@ -2366,7 +2389,8 @@ def show_inbox(self, authorized: bool,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
show_announces,
|
show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
if getreq_start_time:
|
if getreq_start_time:
|
||||||
fitness_performance(getreq_start_time, fitness,
|
fitness_performance(getreq_start_time, fitness,
|
||||||
'_GET', '_show_inbox3',
|
'_GET', '_show_inbox3',
|
||||||
|
|
|
@ -21,6 +21,7 @@ from utils import local_actor_url
|
||||||
from utils import contains_invalid_chars
|
from utils import contains_invalid_chars
|
||||||
from utils import remove_id_ending
|
from utils import remove_id_ending
|
||||||
from utils import check_bad_path
|
from utils import check_bad_path
|
||||||
|
from utils import detect_mitm
|
||||||
from blocking import contains_military_domain
|
from blocking import contains_military_domain
|
||||||
from blocking import contains_government_domain
|
from blocking import contains_government_domain
|
||||||
from blocking import contains_bluesky_domain
|
from blocking import contains_bluesky_domain
|
||||||
|
@ -41,7 +42,6 @@ from httpcodes import http_503
|
||||||
from httpheaders import contains_suspicious_headers
|
from httpheaders import contains_suspicious_headers
|
||||||
from httpheaders import update_headers_catalog
|
from httpheaders import update_headers_catalog
|
||||||
from httpheaders import redirect_headers
|
from httpheaders import redirect_headers
|
||||||
from daemon_utils import detect_mitm
|
|
||||||
from daemon_utils import log_epicyon_instances
|
from daemon_utils import log_epicyon_instances
|
||||||
from daemon_utils import get_user_agent
|
from daemon_utils import get_user_agent
|
||||||
from daemon_utils import post_to_outbox
|
from daemon_utils import post_to_outbox
|
||||||
|
@ -310,7 +310,8 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.translate,
|
self.server.translate,
|
||||||
self.server.theme_name,
|
self.server.theme_name,
|
||||||
self.server.dyslexic_font,
|
self.server.dyslexic_font,
|
||||||
self.server.peertube_instances)
|
self.server.peertube_instances,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -402,7 +403,8 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.access_keys,
|
self.server.access_keys,
|
||||||
self.server.person_cache,
|
self.server.person_cache,
|
||||||
self.server.recent_posts_cache,
|
self.server.recent_posts_cache,
|
||||||
self.server.blocked_cache)
|
self.server.blocked_cache,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -474,7 +476,7 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.max_shares_on_profile,
|
self.server.max_shares_on_profile,
|
||||||
self.server.no_of_books,
|
self.server.no_of_books,
|
||||||
self.server.shared_items_federated_domains,
|
self.server.shared_items_federated_domains,
|
||||||
ua_str)
|
ua_str, self.server.mitm_servers)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -602,7 +604,8 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.cached_webfingers,
|
self.server.cached_webfingers,
|
||||||
self.server.person_cache,
|
self.server.person_cache,
|
||||||
self.server.project_version,
|
self.server.project_version,
|
||||||
self.server.sites_unavailable)
|
self.server.sites_unavailable,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -733,7 +736,8 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.default_post_language,
|
self.server.default_post_language,
|
||||||
self.server.newswire,
|
self.server.newswire,
|
||||||
self.server.block_federated)
|
self.server.block_federated,
|
||||||
|
self.server.mitm_servers)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -903,7 +907,8 @@ def daemon_http_post(self) -> None:
|
||||||
self.server.max_shares_on_profile,
|
self.server.max_shares_on_profile,
|
||||||
self.server.watermark_width_percent,
|
self.server.watermark_width_percent,
|
||||||
self.server.watermark_position,
|
self.server.watermark_position,
|
||||||
self.server.watermark_opacity)
|
self.server.watermark_opacity,
|
||||||
|
self.server.mitm_servers)
|
||||||
if page_number:
|
if page_number:
|
||||||
print(curr_post_type + ' post received')
|
print(curr_post_type + ' post received')
|
||||||
nickname = self.path.split('/users/')[1]
|
nickname = self.path.split('/users/')[1]
|
||||||
|
|
|
@ -153,7 +153,8 @@ def follow_confirm2(self, calling_domain: str, cookie: str,
|
||||||
cached_webfingers: {},
|
cached_webfingers: {},
|
||||||
person_cache: {},
|
person_cache: {},
|
||||||
project_version: str,
|
project_version: str,
|
||||||
sites_unavailable: []) -> None:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Confirm to follow
|
"""Confirm to follow
|
||||||
"""
|
"""
|
||||||
users_path = path.split('/followconfirm')[0]
|
users_path = path.split('/followconfirm')[0]
|
||||||
|
@ -214,7 +215,8 @@ def follow_confirm2(self, calling_domain: str, cookie: str,
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
users_path,
|
users_path,
|
||||||
block_federated)
|
block_federated,
|
||||||
|
mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -305,7 +307,8 @@ def follow_confirm2(self, calling_domain: str, cookie: str,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain,
|
i2p_domain,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if '&submitUnblock=' in follow_confirm_params:
|
if '&submitUnblock=' in follow_confirm_params:
|
||||||
blocking_actor = \
|
blocking_actor = \
|
||||||
|
|
|
@ -48,7 +48,8 @@ def moderator_actions(self, path: str, calling_domain: str, cookie: str,
|
||||||
theme_name: str,
|
theme_name: str,
|
||||||
access_keys: {}, person_cache: {},
|
access_keys: {}, person_cache: {},
|
||||||
recent_posts_cache: {},
|
recent_posts_cache: {},
|
||||||
blocked_cache: {}) -> None:
|
blocked_cache: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Actions on the moderator screen
|
"""Actions on the moderator screen
|
||||||
"""
|
"""
|
||||||
users_path = path.replace('/moderationaction', '')
|
users_path = path.replace('/moderationaction', '')
|
||||||
|
@ -165,7 +166,8 @@ def moderator_actions(self, path: str, calling_domain: str, cookie: str,
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
None,
|
None,
|
||||||
block_federated)
|
block_federated,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
msg = \
|
msg = \
|
||||||
html_moderation_info(translate,
|
html_moderation_info(translate,
|
||||||
|
|
|
@ -246,7 +246,8 @@ def _person_options_view(self, options_confirm_params: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
cookie: str,
|
cookie: str,
|
||||||
calling_domain: str,
|
calling_domain: str,
|
||||||
curr_session, access_keys: {}) -> bool:
|
curr_session, access_keys: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Person options screen, view button
|
"""Person options screen, view button
|
||||||
See html_person_options
|
See html_person_options
|
||||||
"""
|
"""
|
||||||
|
@ -326,7 +327,8 @@ def _person_options_view(self, options_confirm_params: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
max_shares_on_profile,
|
max_shares_on_profile,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if profile_str:
|
if profile_str:
|
||||||
msg = profile_str.encode('utf-8')
|
msg = profile_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -914,7 +916,8 @@ def _person_options_dm(self, options_confirm_params: str,
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
cookie: str, calling_domain: str,
|
cookie: str, calling_domain: str,
|
||||||
access_keys: {}) -> bool:
|
access_keys: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Person options screen, DM button
|
"""Person options screen, DM button
|
||||||
See html_person_options
|
See html_person_options
|
||||||
"""
|
"""
|
||||||
|
@ -995,7 +998,8 @@ def _person_options_dm(self, options_confirm_params: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
default_buy_site,
|
default_buy_site,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
searchable_by_default)
|
searchable_by_default,
|
||||||
|
mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -1014,7 +1018,8 @@ def _person_options_info(self, options_confirm_params: str,
|
||||||
domain: str, system_language: str,
|
domain: str, system_language: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
block_federated: [],
|
block_federated: [],
|
||||||
cookie: str, calling_domain: str) -> bool:
|
cookie: str, calling_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Person options screen, Info button
|
"""Person options screen, Info button
|
||||||
See html_person_options
|
See html_person_options
|
||||||
"""
|
"""
|
||||||
|
@ -1033,7 +1038,8 @@ def _person_options_info(self, options_confirm_params: str,
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
None,
|
None,
|
||||||
block_federated)
|
block_federated,
|
||||||
|
mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -1149,7 +1155,8 @@ def _person_options_report(self, options_confirm_params: str,
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
cookie: str, calling_domain: str,
|
cookie: str, calling_domain: str,
|
||||||
access_keys: {}) -> bool:
|
access_keys: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Person options screen, report button
|
"""Person options screen, report button
|
||||||
See html_person_options
|
See html_person_options
|
||||||
"""
|
"""
|
||||||
|
@ -1230,7 +1237,8 @@ def _person_options_report(self, options_confirm_params: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
default_buy_site,
|
default_buy_site,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
searchable_by_default)
|
searchable_by_default,
|
||||||
|
mitm_servers)
|
||||||
if msg:
|
if msg:
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -1280,7 +1288,8 @@ def person_options2(self, path: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
default_post_language: str,
|
default_post_language: str,
|
||||||
newswire: {},
|
newswire: {},
|
||||||
block_federated: []) -> None:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Receive POST from person options screen
|
"""Receive POST from person options screen
|
||||||
"""
|
"""
|
||||||
page_number = 1
|
page_number = 1
|
||||||
|
@ -1408,7 +1417,8 @@ def person_options2(self, path: str,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
cookie,
|
cookie,
|
||||||
calling_domain,
|
calling_domain,
|
||||||
curr_session, access_keys):
|
curr_session, access_keys,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
|
|
||||||
if _person_option_receive_petname(self, options_confirm_params,
|
if _person_option_receive_petname(self, options_confirm_params,
|
||||||
|
@ -1617,7 +1627,8 @@ def person_options2(self, path: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
cookie, calling_domain,
|
cookie, calling_domain,
|
||||||
access_keys):
|
access_keys,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
|
|
||||||
if _person_options_info(self, options_confirm_params,
|
if _person_options_info(self, options_confirm_params,
|
||||||
|
@ -1627,7 +1638,8 @@ def person_options2(self, path: str,
|
||||||
domain, system_language,
|
domain, system_language,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
block_federated,
|
block_federated,
|
||||||
cookie, calling_domain):
|
cookie, calling_domain,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
|
|
||||||
if _person_options_snooze(self, options_confirm_params,
|
if _person_options_snooze(self, options_confirm_params,
|
||||||
|
@ -1684,7 +1696,8 @@ def person_options2(self, path: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
cookie, calling_domain,
|
cookie, calling_domain,
|
||||||
access_keys):
|
access_keys,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
|
|
||||||
# redirect back from person options screen
|
# redirect back from person options screen
|
||||||
|
|
|
@ -1724,7 +1724,8 @@ def _profile_post_website(curr_session, base_dir: str, http_prefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
actor_json: {}, fields: {},
|
actor_json: {}, fields: {},
|
||||||
actor_changed: bool,
|
actor_changed: bool,
|
||||||
translate: {}, debug: bool) -> bool:
|
translate: {}, debug: bool,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
""" HTTP POST change website
|
""" HTTP POST change website
|
||||||
"""
|
"""
|
||||||
current_website = get_website(actor_json, translate)
|
current_website = get_website(actor_json, translate)
|
||||||
|
@ -1739,7 +1740,8 @@ def _profile_post_website(curr_session, base_dir: str, http_prefix: str,
|
||||||
http_prefix,
|
http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
fields['websiteUrl'],
|
fields['websiteUrl'],
|
||||||
True, debug)
|
True, debug,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
if current_website:
|
if current_website:
|
||||||
set_website(actor_json, '', translate)
|
set_website(actor_json, '', translate)
|
||||||
|
@ -1991,7 +1993,8 @@ def _profile_post_blog_address(curr_session,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
actor_json: {}, fields: {},
|
actor_json: {}, fields: {},
|
||||||
actor_changed: bool,
|
actor_changed: bool,
|
||||||
debug: bool) -> bool:
|
debug: bool,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
""" HTTP POST change blog address
|
""" HTTP POST change blog address
|
||||||
"""
|
"""
|
||||||
current_blog_address = get_blog_address(actor_json)
|
current_blog_address = get_blog_address(actor_json)
|
||||||
|
@ -2004,7 +2007,7 @@ def _profile_post_blog_address(curr_session,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
fields['blogAddress'],
|
fields['blogAddress'],
|
||||||
True, debug)
|
True, debug, mitm_servers)
|
||||||
else:
|
else:
|
||||||
if current_blog_address:
|
if current_blog_address:
|
||||||
set_blog_address(actor_json, '')
|
set_blog_address(actor_json, '')
|
||||||
|
@ -2698,7 +2701,8 @@ def profile_edit(self, calling_domain: str, cookie: str,
|
||||||
person_cache: {}, project_version: str,
|
person_cache: {}, project_version: str,
|
||||||
translate: {}, theme_name: str,
|
translate: {}, theme_name: str,
|
||||||
dyslexic_font: bool,
|
dyslexic_font: bool,
|
||||||
peertube_instances: []) -> None:
|
peertube_instances: [],
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Updates your user profile after editing via the Edit button
|
"""Updates your user profile after editing via the Edit button
|
||||||
on the profile screen
|
on the profile screen
|
||||||
"""
|
"""
|
||||||
|
@ -3075,7 +3079,7 @@ def profile_edit(self, calling_domain: str, cookie: str,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
actor_json, fields,
|
actor_json, fields,
|
||||||
actor_changed,
|
actor_changed,
|
||||||
debug)
|
debug, mitm_servers)
|
||||||
|
|
||||||
actor_changed = \
|
actor_changed = \
|
||||||
_profile_post_show_languages(actor_json, fields,
|
_profile_post_show_languages(actor_json, fields,
|
||||||
|
@ -3134,7 +3138,7 @@ def profile_edit(self, calling_domain: str, cookie: str,
|
||||||
actor_json, fields,
|
actor_json, fields,
|
||||||
actor_changed,
|
actor_changed,
|
||||||
translate,
|
translate,
|
||||||
debug)
|
debug, mitm_servers)
|
||||||
|
|
||||||
actor_changed = \
|
actor_changed = \
|
||||||
_profile_post_gemini_link(actor_json, fields,
|
_profile_post_gemini_link(actor_json, fields,
|
||||||
|
|
|
@ -111,7 +111,8 @@ def _receive_new_post_process_newpost(self, fields: {},
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
max_replies: int,
|
max_replies: int,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
""" A new post has been received from the New Post screen and
|
""" A new post has been received from the New Post screen and
|
||||||
is then sent to the outbox
|
is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -218,7 +219,8 @@ def _receive_new_post_process_newpost(self, fields: {},
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited public post ' +
|
print('DEBUG: sending edited public post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
if fields['schedulePost']:
|
if fields['schedulePost']:
|
||||||
|
@ -524,7 +526,8 @@ def _receive_new_post_process_newunlisted(self, fields: {},
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
max_replies: int,
|
max_replies: int,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Unlisted post has been received from New Post screen
|
"""Unlisted post has been received from New Post screen
|
||||||
and is then sent to the outbox
|
and is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -617,7 +620,8 @@ def _receive_new_post_process_newunlisted(self, fields: {},
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited unlisted post ' +
|
print('DEBUG: sending edited unlisted post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
|
|
||||||
|
@ -678,7 +682,8 @@ def _receive_new_post_process_newfollowers(self, fields: {},
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
max_replies: int,
|
max_replies: int,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Followers only post has been received from New Post screen
|
"""Followers only post has been received from New Post screen
|
||||||
and is then sent to the outbox
|
and is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -781,7 +786,8 @@ def _receive_new_post_process_newfollowers(self, fields: {},
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited followers post ' +
|
print('DEBUG: sending edited followers post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
|
|
||||||
|
@ -843,7 +849,8 @@ def _receive_new_post_process_newdm(self, fields: {},
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
max_replies: int,
|
max_replies: int,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Direct message post has been received from New Post screen
|
"""Direct message post has been received from New Post screen
|
||||||
and is then sent to the outbox
|
and is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -953,7 +960,8 @@ def _receive_new_post_process_newdm(self, fields: {},
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited dm post ' +
|
print('DEBUG: sending edited dm post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
|
|
||||||
|
@ -1014,7 +1022,8 @@ def _receive_new_post_process_newreminder(self, fields: {}, nickname: str,
|
||||||
project_version: str,
|
project_version: str,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Reminder post has been received from New Post screen
|
"""Reminder post has been received from New Post screen
|
||||||
and is then sent to the outbox
|
and is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -1109,7 +1118,8 @@ def _receive_new_post_process_newreminder(self, fields: {}, nickname: str,
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited reminder post ' +
|
print('DEBUG: sending edited reminder post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
if post_to_outbox(self, message_json,
|
if post_to_outbox(self, message_json,
|
||||||
|
@ -1314,7 +1324,8 @@ def _receive_new_post_process_newreading(self, fields: {},
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
max_replies: int,
|
max_replies: int,
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> int:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Reading status post has been received from New Post screen
|
"""Reading status post has been received from New Post screen
|
||||||
and is then sent to the outbox
|
and is then sent to the outbox
|
||||||
"""
|
"""
|
||||||
|
@ -1427,7 +1438,8 @@ def _receive_new_post_process_newreading(self, fields: {},
|
||||||
max_hashtags,
|
max_hashtags,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
print('DEBUG: sending edited reading status post ' +
|
print('DEBUG: sending edited reading status post ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
if fields['schedulePost']:
|
if fields['schedulePost']:
|
||||||
|
@ -1635,7 +1647,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
max_shares_on_profile: int,
|
max_shares_on_profile: int,
|
||||||
watermark_width_percent: int,
|
watermark_width_percent: int,
|
||||||
watermark_position: str,
|
watermark_position: str,
|
||||||
watermark_opacity: int) -> int:
|
watermark_opacity: int,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
# Note: this needs to happen synchronously
|
# Note: this needs to happen synchronously
|
||||||
# 0=this is not a new post
|
# 0=this is not a new post
|
||||||
# 1=new post success
|
# 1=new post success
|
||||||
|
@ -1894,7 +1907,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
proxy_type,
|
proxy_type,
|
||||||
max_replies,
|
max_replies,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type == 'newblog':
|
if post_type == 'newblog':
|
||||||
return _receive_new_post_process_newblog(
|
return _receive_new_post_process_newblog(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -1970,7 +1984,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
proxy_type,
|
proxy_type,
|
||||||
max_replies,
|
max_replies,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type == 'newfollowers':
|
if post_type == 'newfollowers':
|
||||||
return _receive_new_post_process_newfollowers(
|
return _receive_new_post_process_newfollowers(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -2015,7 +2030,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
project_version,
|
project_version,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
max_replies,
|
max_replies,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type == 'newdm':
|
if post_type == 'newdm':
|
||||||
return _receive_new_post_process_newdm(
|
return _receive_new_post_process_newdm(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -2062,7 +2078,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
proxy_type,
|
proxy_type,
|
||||||
max_replies,
|
max_replies,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain)
|
i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type == 'newreminder':
|
if post_type == 'newreminder':
|
||||||
return _receive_new_post_process_newreminder(
|
return _receive_new_post_process_newreminder(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -2106,7 +2123,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
buy_sites,
|
buy_sites,
|
||||||
project_version,
|
project_version,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type == 'newreport':
|
if post_type == 'newreport':
|
||||||
return _receive_new_post_process_newreport(
|
return _receive_new_post_process_newreport(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -2179,7 +2197,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
|
||||||
project_version,
|
project_version,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
max_replies,
|
max_replies,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
if post_type in ('newshare', 'newwanted'):
|
if post_type in ('newshare', 'newwanted'):
|
||||||
return _receive_new_post_process_newshare(
|
return _receive_new_post_process_newshare(
|
||||||
self, fields,
|
self, fields,
|
||||||
|
@ -2241,7 +2260,8 @@ def receive_new_post(self, post_type, path: str,
|
||||||
max_shares_on_profile: int,
|
max_shares_on_profile: int,
|
||||||
watermark_width_percent: int,
|
watermark_width_percent: int,
|
||||||
watermark_position: str,
|
watermark_position: str,
|
||||||
watermark_opacity: int) -> int:
|
watermark_opacity: int,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""A new post has been created
|
"""A new post has been created
|
||||||
This creates a thread to send the new post
|
This creates a thread to send the new post
|
||||||
"""
|
"""
|
||||||
|
@ -2382,7 +2402,8 @@ def receive_new_post(self, post_type, path: str,
|
||||||
max_shares_on_profile,
|
max_shares_on_profile,
|
||||||
watermark_width_percent,
|
watermark_width_percent,
|
||||||
watermark_position,
|
watermark_position,
|
||||||
watermark_opacity)
|
watermark_opacity,
|
||||||
|
mitm_servers)
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: _receive_new_post_process returned ' +
|
print('DEBUG: _receive_new_post_process returned ' +
|
||||||
str(retval))
|
str(retval))
|
||||||
|
|
|
@ -85,7 +85,8 @@ def _receive_search_hashtag(self, actor_str: str,
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
calling_domain: str,
|
calling_domain: str,
|
||||||
ua_str: str) -> bool:
|
ua_str: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receive a search for a hashtag from the search screen
|
"""Receive a search for a hashtag from the search screen
|
||||||
"""
|
"""
|
||||||
nickname = get_nickname_from_actor(actor_str)
|
nickname = get_nickname_from_actor(actor_str)
|
||||||
|
@ -133,7 +134,8 @@ def _receive_search_hashtag(self, actor_str: str,
|
||||||
'search',
|
'search',
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache, ua_str)
|
auto_cw_cache, ua_str,
|
||||||
|
mitm_servers)
|
||||||
if hashtag_str:
|
if hashtag_str:
|
||||||
msg = hashtag_str.encode('utf-8')
|
msg = hashtag_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -215,7 +217,8 @@ def _receive_search_my_posts(self, search_str: str,
|
||||||
min_images_for_accounts: {},
|
min_images_for_accounts: {},
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
calling_domain: str) -> bool:
|
calling_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receive a search for your own posts from the search screen
|
"""Receive a search for your own posts from the search screen
|
||||||
"""
|
"""
|
||||||
# your post history search
|
# your post history search
|
||||||
|
@ -281,7 +284,8 @@ def _receive_search_my_posts(self, search_str: str,
|
||||||
access_keys,
|
access_keys,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if history_str:
|
if history_str:
|
||||||
msg = history_str.encode('utf-8')
|
msg = history_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -326,7 +330,8 @@ def _receive_search_bookmarks(self, search_str: str,
|
||||||
min_images_for_accounts: {},
|
min_images_for_accounts: {},
|
||||||
buy_sites: [],
|
buy_sites: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
calling_domain: str) -> bool:
|
calling_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receive a search for bookmarked posts from the search screen
|
"""Receive a search for bookmarked posts from the search screen
|
||||||
"""
|
"""
|
||||||
# bookmark search
|
# bookmark search
|
||||||
|
@ -392,7 +397,8 @@ def _receive_search_bookmarks(self, search_str: str,
|
||||||
access_keys,
|
access_keys,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if bookmarks_str:
|
if bookmarks_str:
|
||||||
msg = bookmarks_str.encode('utf-8')
|
msg = bookmarks_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -438,7 +444,8 @@ def _receive_search_handle(self, search_str: str,
|
||||||
no_of_books: int,
|
no_of_books: int,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
actor_str: str,
|
actor_str: str,
|
||||||
curr_session, access_keys: {}) -> bool:
|
curr_session, access_keys: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receive a search for a fediverse handle or url from the search screen
|
"""Receive a search for a fediverse handle or url from the search screen
|
||||||
"""
|
"""
|
||||||
remote_only = False
|
remote_only = False
|
||||||
|
@ -511,7 +518,8 @@ def _receive_search_handle(self, search_str: str,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
actor, person_cache,
|
actor, person_cache,
|
||||||
None, True,
|
None, True,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
profile_path_str += \
|
profile_path_str += \
|
||||||
'?options=' + actor + ';1;' + avatar_url
|
'?options=' + actor + ';1;' + avatar_url
|
||||||
|
|
||||||
|
@ -592,7 +600,8 @@ def _receive_search_handle(self, search_str: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
max_shares_on_profile,
|
max_shares_on_profile,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if profile_str:
|
if profile_str:
|
||||||
msg = profile_str.encode('utf-8')
|
msg = profile_str.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
|
@ -754,7 +763,8 @@ def receive_search_query(self, calling_domain: str, cookie: str,
|
||||||
max_shares_on_profile: int,
|
max_shares_on_profile: int,
|
||||||
no_of_books: int,
|
no_of_books: int,
|
||||||
shared_items_federated_domains: [],
|
shared_items_federated_domains: [],
|
||||||
ua_str: str) -> None:
|
ua_str: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Receive a search query
|
"""Receive a search query
|
||||||
"""
|
"""
|
||||||
# get the page number
|
# get the page number
|
||||||
|
@ -860,7 +870,8 @@ def receive_search_query(self, calling_domain: str, cookie: str,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
calling_domain,
|
calling_domain,
|
||||||
ua_str):
|
ua_str,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
elif (search_str.startswith('*') or
|
elif (search_str.startswith('*') or
|
||||||
search_str.endswith(' skill')):
|
search_str.endswith(' skill')):
|
||||||
|
@ -908,7 +919,8 @@ def receive_search_query(self, calling_domain: str, cookie: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
calling_domain):
|
calling_domain,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
elif (search_str.startswith('-') or
|
elif (search_str.startswith('-') or
|
||||||
string_ends_with(search_str, bookmark_endings)):
|
string_ends_with(search_str, bookmark_endings)):
|
||||||
|
@ -945,7 +957,8 @@ def receive_search_query(self, calling_domain: str, cookie: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
calling_domain):
|
calling_domain,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
elif ('@' in search_str or
|
elif ('@' in search_str or
|
||||||
('://' in search_str and
|
('://' in search_str and
|
||||||
|
@ -983,7 +996,8 @@ def receive_search_query(self, calling_domain: str, cookie: str,
|
||||||
max_shares_on_profile,
|
max_shares_on_profile,
|
||||||
no_of_books,
|
no_of_books,
|
||||||
auto_cw_cache, actor_str,
|
auto_cw_cache, actor_str,
|
||||||
curr_session, access_keys):
|
curr_session, access_keys,
|
||||||
|
mitm_servers):
|
||||||
return
|
return
|
||||||
elif (search_str.startswith(':') or
|
elif (search_str.startswith(':') or
|
||||||
search_str.endswith(' emoji')):
|
search_str.endswith(' emoji')):
|
||||||
|
|
|
@ -26,6 +26,7 @@ from blocking import is_blocked_nickname
|
||||||
from blocking import is_blocked_domain
|
from blocking import is_blocked_domain
|
||||||
from content import valid_url_lengths
|
from content import valid_url_lengths
|
||||||
from posts import add_to_field
|
from posts import add_to_field
|
||||||
|
from utils import detect_mitm
|
||||||
from utils import data_dir
|
from utils import data_dir
|
||||||
from utils import load_json
|
from utils import load_json
|
||||||
from utils import save_json
|
from utils import save_json
|
||||||
|
@ -141,7 +142,8 @@ def post_to_outbox(self, message_json: {}, version: str,
|
||||||
self.server.books_cache,
|
self.server.books_cache,
|
||||||
self.server.max_cached_readers,
|
self.server.max_cached_readers,
|
||||||
self.server.auto_cw_cache,
|
self.server.auto_cw_cache,
|
||||||
self.server.block_federated)
|
self.server.block_federated,
|
||||||
|
self.server.mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def _get_outbox_thread_index(self, nickname: str,
|
def _get_outbox_thread_index(self, nickname: str,
|
||||||
|
@ -207,40 +209,6 @@ def post_to_outbox_thread(self, message_json: {},
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def detect_mitm(self) -> bool:
|
|
||||||
"""Detect if a request contains a MiTM
|
|
||||||
"""
|
|
||||||
mitm_domains = ['cloudflare']
|
|
||||||
# look for domains within these headers
|
|
||||||
check_headers = (
|
|
||||||
'Server', 'Report-To', 'Report-to', 'report-to',
|
|
||||||
'Expect-CT', 'Expect-Ct', 'expect-ct'
|
|
||||||
)
|
|
||||||
for interloper in mitm_domains:
|
|
||||||
for header_name in check_headers:
|
|
||||||
if not self.headers.get(header_name):
|
|
||||||
continue
|
|
||||||
if interloper in str(self.headers[header_name]):
|
|
||||||
print('MITM: ' + header_name + ' = ' +
|
|
||||||
str(self.headers[header_name]))
|
|
||||||
return True
|
|
||||||
# The presence of these headers on their own indicates a MiTM
|
|
||||||
mitm_headers = (
|
|
||||||
'CF-Connecting-IP', 'CF-RAY', 'CF-IPCountry', 'CF-Visitor',
|
|
||||||
'CDN-Loop', 'CF-Worker', 'CF-Cache-Status'
|
|
||||||
)
|
|
||||||
for header_name in mitm_headers:
|
|
||||||
if self.headers.get(header_name):
|
|
||||||
print('MITM: ' + header_name + ' = ' +
|
|
||||||
self.headers[header_name])
|
|
||||||
return True
|
|
||||||
if self.headers.get(header_name.lower()):
|
|
||||||
print('MITM: ' + header_name + ' = ' +
|
|
||||||
self.headers[header_name.lower()])
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def update_inbox_queue(self, nickname: str, message_json: {},
|
def update_inbox_queue(self, nickname: str, message_json: {},
|
||||||
message_bytes: str, debug: bool) -> int:
|
message_bytes: str, debug: bool) -> int:
|
||||||
"""Update the inbox queue
|
"""Update the inbox queue
|
||||||
|
|
|
@ -37,7 +37,8 @@ def send_delete_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a delete request message via c2s
|
"""Creates a delete request message via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -68,7 +69,7 @@ def send_delete_via_server(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: delete webfinger failed for ' + handle)
|
print('DEBUG: delete webfinger failed for ' + handle)
|
||||||
|
@ -89,7 +90,7 @@ def send_delete_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 53036,
|
from_domain, post_to_box, 53036,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
|
@ -521,7 +521,8 @@ def _desktop_reply_to_post(session, post_id: str,
|
||||||
content_license_url: str,
|
content_license_url: str,
|
||||||
media_license_url: str, media_creator: str,
|
media_license_url: str, media_creator: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
translate: {}) -> None:
|
translate: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Use the desktop client to send a reply to the most recent post
|
"""Use the desktop client to send a reply to the most recent post
|
||||||
"""
|
"""
|
||||||
if '://' not in post_id:
|
if '://' not in post_id:
|
||||||
|
@ -595,7 +596,7 @@ def _desktop_reply_to_post(session, post_id: str,
|
||||||
translate, buy_url, chat_url, auto_cw_cache,
|
translate, buy_url, chat_url, auto_cw_cache,
|
||||||
debug, post_id, post_id,
|
debug, post_id, post_id,
|
||||||
conversation_id, convthread_id, subject,
|
conversation_id, convthread_id, subject,
|
||||||
searchable_by) == 0:
|
searchable_by, mitm_servers) == 0:
|
||||||
say_str = translate['Sent']
|
say_str = translate['Sent']
|
||||||
else:
|
else:
|
||||||
say_str = translate['Post failed']
|
say_str = translate['Post failed']
|
||||||
|
@ -613,7 +614,8 @@ def _desktop_new_post(session,
|
||||||
content_license_url: str,
|
content_license_url: str,
|
||||||
media_license_url: str, media_creator: str,
|
media_license_url: str, media_creator: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
translate: {}) -> None:
|
translate: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Use the desktop client to create a new post
|
"""Use the desktop client to create a new post
|
||||||
"""
|
"""
|
||||||
conversation_id = None
|
conversation_id = None
|
||||||
|
@ -680,7 +682,7 @@ def _desktop_new_post(session,
|
||||||
translate, buy_url, chat_url, auto_cw_cache,
|
translate, buy_url, chat_url, auto_cw_cache,
|
||||||
debug, None, None,
|
debug, None, None,
|
||||||
conversation_id, convthread_id, subject,
|
conversation_id, convthread_id, subject,
|
||||||
searchable_by) == 0:
|
searchable_by, mitm_servers) == 0:
|
||||||
say_str = translate['Sent']
|
say_str = translate['Sent']
|
||||||
else:
|
else:
|
||||||
say_str = translate['Post failed']
|
say_str = translate['Post failed']
|
||||||
|
@ -816,7 +818,8 @@ def _read_local_box_post(session, nickname: str, domain: str,
|
||||||
domain_full: str, person_cache: {},
|
domain_full: str, person_cache: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
blocked_cache: {}, block_federated: [],
|
blocked_cache: {}, block_federated: [],
|
||||||
bold_reading: bool) -> {}:
|
bold_reading: bool,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Reads a post from the given timeline
|
"""Reads a post from the given timeline
|
||||||
Returns the post json
|
Returns the post json
|
||||||
"""
|
"""
|
||||||
|
@ -868,7 +871,8 @@ def _read_local_box_post(session, nickname: str, domain: str,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
blocked_cache, block_federated, bold_reading,
|
blocked_cache, block_federated, bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood)
|
languages_understood,
|
||||||
|
mitm_servers)
|
||||||
if post_json_object2:
|
if post_json_object2:
|
||||||
if has_object_dict(post_json_object2):
|
if has_object_dict(post_json_object2):
|
||||||
if post_json_object2['object'].get('attributedTo') and \
|
if post_json_object2['object'].get('attributedTo') and \
|
||||||
|
@ -930,7 +934,8 @@ def _read_local_box_post(session, nickname: str, domain: str,
|
||||||
if is_pgp_encrypted(content):
|
if is_pgp_encrypted(content):
|
||||||
say_str = translate['Encrypted message. Please enter your passphrase.']
|
say_str = translate['Encrypted message. Please enter your passphrase.']
|
||||||
_say_command(say_str, say_str, screenreader, system_language, espeak)
|
_say_command(say_str, say_str, screenreader, system_language, espeak)
|
||||||
content = pgp_decrypt(domain, content, actor, signing_priv_key_pem)
|
content = pgp_decrypt(domain, content, actor, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if is_pgp_encrypted(content):
|
if is_pgp_encrypted(content):
|
||||||
say_str = translate['Message could not be decrypted']
|
say_str = translate['Message could not be decrypted']
|
||||||
_say_command(say_str, say_str,
|
_say_command(say_str, say_str,
|
||||||
|
@ -1023,7 +1028,8 @@ def _desktop_show_profile(session, nickname: str,
|
||||||
screenreader: str, espeak,
|
screenreader: str, espeak,
|
||||||
translate: {}, post_json_object: {},
|
translate: {}, post_json_object: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
http_prefix: str) -> {}:
|
http_prefix: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Shows the profile of the actor for the given post
|
"""Shows the profile of the actor for the given post
|
||||||
Returns the actor json
|
Returns the actor json
|
||||||
"""
|
"""
|
||||||
|
@ -1058,7 +1064,8 @@ def _desktop_show_profile(session, nickname: str,
|
||||||
is_ipns = False
|
is_ipns = False
|
||||||
actor_json, _ = \
|
actor_json, _ = \
|
||||||
get_actor_json(domain, actor, is_http, is_gnunet, is_ipfs, is_ipns,
|
get_actor_json(domain, actor, is_http, is_gnunet, is_ipfs, is_ipns,
|
||||||
False, True, signing_priv_key_pem, session)
|
False, True, signing_priv_key_pem, session,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
_desktop_show_actor(http_prefix,
|
_desktop_show_actor(http_prefix,
|
||||||
nickname, domain, domain_full,
|
nickname, domain, domain_full,
|
||||||
|
@ -1074,14 +1081,15 @@ def _desktop_show_profile_from_handle(session, nickname: str, domain: str,
|
||||||
screenreader: str, espeak,
|
screenreader: str, espeak,
|
||||||
translate: {},
|
translate: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
http_prefix: str) -> {}:
|
http_prefix: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Shows the profile for a handle
|
"""Shows the profile for a handle
|
||||||
Returns the actor json
|
Returns the actor json
|
||||||
"""
|
"""
|
||||||
actor_json, _ = \
|
actor_json, _ = \
|
||||||
get_actor_json(domain, handle, False, False, False, False,
|
get_actor_json(domain, handle, False, False, False, False,
|
||||||
False, True,
|
False, True,
|
||||||
signing_priv_key_pem, session)
|
signing_priv_key_pem, session, mitm_servers)
|
||||||
|
|
||||||
_desktop_show_actor(http_prefix, nickname, domain, domain_full,
|
_desktop_show_actor(http_prefix, nickname, domain, domain_full,
|
||||||
base_dir, actor_json, translate,
|
base_dir, actor_json, translate,
|
||||||
|
@ -1342,7 +1350,8 @@ def _desktop_new_dm(session, to_handle: str,
|
||||||
content_license_url: str,
|
content_license_url: str,
|
||||||
media_license_url: str, media_creator: str,
|
media_license_url: str, media_creator: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
translate: {}) -> None:
|
translate: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Use the desktop client to create a new direct message
|
"""Use the desktop client to create a new direct message
|
||||||
which can include multiple destination handles
|
which can include multiple destination handles
|
||||||
"""
|
"""
|
||||||
|
@ -1367,7 +1376,8 @@ def _desktop_new_dm(session, to_handle: str,
|
||||||
espeak, low_bandwidth,
|
espeak, low_bandwidth,
|
||||||
content_license_url,
|
content_license_url,
|
||||||
media_license_url, media_creator,
|
media_license_url, media_creator,
|
||||||
signing_priv_key_pem, translate)
|
signing_priv_key_pem, translate,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def _desktop_new_dm_base(session, to_handle: str,
|
def _desktop_new_dm_base(session, to_handle: str,
|
||||||
|
@ -1381,7 +1391,8 @@ def _desktop_new_dm_base(session, to_handle: str,
|
||||||
content_license_url: str,
|
content_license_url: str,
|
||||||
media_license_url: str, media_creator: str,
|
media_license_url: str, media_creator: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
translate: {}) -> None:
|
translate: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Use the desktop client to create a new direct message
|
"""Use the desktop client to create a new direct message
|
||||||
"""
|
"""
|
||||||
conversation_id = None
|
conversation_id = None
|
||||||
|
@ -1451,7 +1462,7 @@ def _desktop_new_dm_base(session, to_handle: str,
|
||||||
padded_message += ' '
|
padded_message += ' '
|
||||||
cipher_text = \
|
cipher_text = \
|
||||||
pgp_encrypt_to_actor(domain, padded_message, to_handle,
|
pgp_encrypt_to_actor(domain, padded_message, to_handle,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not cipher_text:
|
if not cipher_text:
|
||||||
say_str = \
|
say_str = \
|
||||||
to_handle + ' has no PGP public key. ' + \
|
to_handle + ' has no PGP public key. ' + \
|
||||||
|
@ -1500,7 +1511,7 @@ def _desktop_new_dm_base(session, to_handle: str,
|
||||||
translate, buy_url, chat_url, auto_cw_cache,
|
translate, buy_url, chat_url, auto_cw_cache,
|
||||||
debug, None, None,
|
debug, None, None,
|
||||||
conversation_id, convthread_id, subject,
|
conversation_id, convthread_id, subject,
|
||||||
searchable_by) == 0:
|
searchable_by, mitm_servers) == 0:
|
||||||
say_str = translate['Sent']
|
say_str = translate['Sent']
|
||||||
else:
|
else:
|
||||||
say_str = translate['Post failed']
|
say_str = translate['Post failed']
|
||||||
|
@ -1590,6 +1601,7 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
blocked_cache = {}
|
blocked_cache = {}
|
||||||
block_federated = []
|
block_federated = []
|
||||||
languages_understood = []
|
languages_understood = []
|
||||||
|
mitm_servers = []
|
||||||
|
|
||||||
indent = ' '
|
indent = ' '
|
||||||
if show_new_posts:
|
if show_new_posts:
|
||||||
|
@ -1690,7 +1702,7 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, False,
|
debug, False,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
say_str = indent + translate['PGP Public Key'] + ' uploaded'
|
say_str = indent + translate['PGP Public Key'] + ' uploaded'
|
||||||
_say_command(say_str, say_str, screenreader,
|
_say_command(say_str, say_str, screenreader,
|
||||||
system_language, espeak)
|
system_language, espeak)
|
||||||
|
@ -1699,7 +1711,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
follow_requests_json = \
|
follow_requests_json = \
|
||||||
get_follow_requests_via_server(session,
|
get_follow_requests_via_server(session,
|
||||||
|
@ -1707,14 +1720,16 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, 1,
|
http_prefix, 1,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not (curr_timeline == 'inbox' and page_number == 1):
|
if not (curr_timeline == 'inbox' and page_number == 1):
|
||||||
# monitor the inbox to generate notifications
|
# monitor the inbox to generate notifications
|
||||||
inbox_json = c2s_box_json(session, nickname, password,
|
inbox_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
'inbox', 1, debug,
|
'inbox', 1, debug,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
inbox_json = box_json
|
inbox_json = box_json
|
||||||
if inbox_json:
|
if inbox_json:
|
||||||
|
@ -1783,7 +1798,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
_desktop_show_box(indent, follow_requests_json,
|
_desktop_show_box(indent, follow_requests_json,
|
||||||
your_actor, curr_timeline, box_json,
|
your_actor, curr_timeline, box_json,
|
||||||
|
@ -1797,7 +1813,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
_desktop_show_box(indent, follow_requests_json,
|
_desktop_show_box(indent, follow_requests_json,
|
||||||
your_actor, curr_timeline, box_json,
|
your_actor, curr_timeline, box_json,
|
||||||
|
@ -1811,7 +1828,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
_desktop_show_box(indent, follow_requests_json,
|
_desktop_show_box(indent, follow_requests_json,
|
||||||
your_actor, curr_timeline, box_json,
|
your_actor, curr_timeline, box_json,
|
||||||
|
@ -1826,7 +1844,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
_desktop_show_box(indent, follow_requests_json,
|
_desktop_show_box(indent, follow_requests_json,
|
||||||
your_actor, curr_timeline, box_json,
|
your_actor, curr_timeline, box_json,
|
||||||
|
@ -1850,7 +1869,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
box_json = c2s_box_json(session, nickname, password,
|
box_json = c2s_box_json(session, nickname, password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
curr_timeline, page_number,
|
curr_timeline, page_number,
|
||||||
debug, signing_priv_key_pem)
|
debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
_desktop_show_box(indent, follow_requests_json,
|
_desktop_show_box(indent, follow_requests_json,
|
||||||
your_actor, curr_timeline, box_json,
|
your_actor, curr_timeline, box_json,
|
||||||
|
@ -1886,7 +1906,7 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
domain_full, person_cache,
|
domain_full, person_cache,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
blocked_cache, block_federated,
|
blocked_cache, block_federated,
|
||||||
bold_reading)
|
bold_reading, mitm_servers)
|
||||||
print('')
|
print('')
|
||||||
say_str = translate['Press Enter to continue'] + '...'
|
say_str = translate['Press Enter to continue'] + '...'
|
||||||
say_str2 = _highlight_text(say_str)
|
say_str2 = _highlight_text(say_str)
|
||||||
|
@ -1911,7 +1931,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
espeak, translate,
|
espeak, translate,
|
||||||
post_json_object,
|
post_json_object,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
http_prefix)
|
http_prefix,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
post_index_str = '1'
|
post_index_str = '1'
|
||||||
else:
|
else:
|
||||||
|
@ -1929,7 +1950,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
screenreader,
|
screenreader,
|
||||||
espeak, translate,
|
espeak, translate,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
http_prefix)
|
http_prefix,
|
||||||
|
mitm_servers)
|
||||||
say_str = translate['Press Enter to continue'] + '...'
|
say_str = translate['Press Enter to continue'] + '...'
|
||||||
say_str2 = _highlight_text(say_str)
|
say_str2 = _highlight_text(say_str)
|
||||||
_say_command(say_str2, say_str,
|
_say_command(say_str2, say_str,
|
||||||
|
@ -1951,7 +1973,7 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
system_language, screenreader,
|
system_language, screenreader,
|
||||||
espeak, translate,
|
espeak, translate,
|
||||||
None, signing_priv_key_pem,
|
None, signing_priv_key_pem,
|
||||||
http_prefix)
|
http_prefix, mitm_servers)
|
||||||
say_str = translate['Press Enter to continue'] + '...'
|
say_str = translate['Press Enter to continue'] + '...'
|
||||||
say_str2 = _highlight_text(say_str)
|
say_str2 = _highlight_text(say_str)
|
||||||
_say_command(say_str2, say_str,
|
_say_command(say_str2, say_str,
|
||||||
|
@ -2006,7 +2028,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
media_license_url,
|
media_license_url,
|
||||||
media_creator,
|
media_creator,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
translate)
|
translate,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'post' or command_str == 'p' or
|
elif (command_str == 'post' or command_str == 'p' or
|
||||||
|
@ -2047,7 +2070,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
espeak, low_bandwidth,
|
espeak, low_bandwidth,
|
||||||
content_license_url,
|
content_license_url,
|
||||||
media_license_url, media_creator,
|
media_license_url, media_creator,
|
||||||
signing_priv_key_pem, translate)
|
signing_priv_key_pem, translate,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
else:
|
else:
|
||||||
# public post
|
# public post
|
||||||
|
@ -2061,7 +2085,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
espeak, low_bandwidth,
|
espeak, low_bandwidth,
|
||||||
content_license_url,
|
content_license_url,
|
||||||
media_license_url, media_creator,
|
media_license_url, media_creator,
|
||||||
signing_priv_key_pem, translate)
|
signing_priv_key_pem, translate,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif command_str == 'like' or command_str.startswith('like '):
|
elif command_str == 'like' or command_str.startswith('like '):
|
||||||
|
@ -2095,7 +2120,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'undo mute' or
|
elif (command_str == 'undo mute' or
|
||||||
|
@ -2142,7 +2168,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'mute' or
|
elif (command_str == 'mute' or
|
||||||
|
@ -2180,7 +2207,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'undo bookmark' or
|
elif (command_str == 'undo bookmark' or
|
||||||
|
@ -2230,7 +2258,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'bookmark' or
|
elif (command_str == 'bookmark' or
|
||||||
|
@ -2267,7 +2296,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str.startswith('undo block ') or
|
elif (command_str.startswith('undo block ') or
|
||||||
|
@ -2313,7 +2343,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
False,
|
False,
|
||||||
__version__,
|
__version__,
|
||||||
sign_key_pem,
|
sign_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif command_str.startswith('block '):
|
elif command_str.startswith('block '):
|
||||||
|
@ -2365,7 +2396,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif command_str in ('unlike', 'undo like'):
|
elif command_str in ('unlike', 'undo like'):
|
||||||
|
@ -2402,7 +2434,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str.startswith('announce') or
|
elif (command_str.startswith('announce') or
|
||||||
|
@ -2454,7 +2487,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str.startswith('unannounce') or
|
elif (command_str.startswith('unannounce') or
|
||||||
|
@ -2495,7 +2529,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
elif (command_str == 'follow requests' or
|
elif (command_str == 'follow requests' or
|
||||||
|
@ -2513,7 +2548,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, curr_page,
|
http_prefix, curr_page,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if follow_requests_json:
|
if follow_requests_json:
|
||||||
if isinstance(follow_requests_json, dict):
|
if isinstance(follow_requests_json, dict):
|
||||||
_desktop_show_follow_requests(follow_requests_json,
|
_desktop_show_follow_requests(follow_requests_json,
|
||||||
|
@ -2534,7 +2570,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, curr_page,
|
http_prefix, curr_page,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if following_json:
|
if following_json:
|
||||||
if isinstance(following_json, dict):
|
if isinstance(following_json, dict):
|
||||||
_desktop_show_following(following_json, translate,
|
_desktop_show_following(following_json, translate,
|
||||||
|
@ -2556,7 +2593,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, curr_page,
|
http_prefix, curr_page,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if followers_json:
|
if followers_json:
|
||||||
if isinstance(followers_json, dict):
|
if isinstance(followers_json, dict):
|
||||||
_desktop_show_following(followers_json, translate,
|
_desktop_show_following(followers_json, translate,
|
||||||
|
@ -2597,7 +2635,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
if follow_handle:
|
if follow_handle:
|
||||||
say_str = follow_handle + ' is not valid'
|
say_str = follow_handle + ' is not valid'
|
||||||
|
@ -2634,7 +2673,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
say_str = follow_handle + ' is not valid'
|
say_str = follow_handle + ' is not valid'
|
||||||
_say_command(say_str, say_str,
|
_say_command(say_str, say_str,
|
||||||
|
@ -2662,7 +2702,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
approve_handle,
|
approve_handle,
|
||||||
debug,
|
debug,
|
||||||
__version__,
|
__version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
if approve_handle:
|
if approve_handle:
|
||||||
say_str = approve_handle + ' is not valid'
|
say_str = approve_handle + ' is not valid'
|
||||||
|
@ -2693,7 +2734,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
deny_handle,
|
deny_handle,
|
||||||
debug,
|
debug,
|
||||||
__version__,
|
__version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
else:
|
else:
|
||||||
if deny_handle:
|
if deny_handle:
|
||||||
say_str = deny_handle + ' is not valid'
|
say_str = deny_handle + ' is not valid'
|
||||||
|
@ -2790,7 +2832,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
block_federated,
|
block_federated,
|
||||||
bold_reading,
|
bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood)
|
languages_understood,
|
||||||
|
mitm_servers)
|
||||||
if post_json_object2:
|
if post_json_object2:
|
||||||
post_json_object = post_json_object2
|
post_json_object = post_json_object2
|
||||||
if post_json_object:
|
if post_json_object:
|
||||||
|
@ -2883,7 +2926,8 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
False, __version__,
|
False, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
refresh_timeline = True
|
refresh_timeline = True
|
||||||
print('')
|
print('')
|
||||||
|
|
||||||
|
|
171
epicyon.py
171
epicyon.py
|
@ -107,7 +107,7 @@ from reaction import valid_emoji_content
|
||||||
from skills import send_skill_via_server
|
from skills import send_skill_via_server
|
||||||
from availability import set_availability
|
from availability import set_availability
|
||||||
from availability import send_availability_via_server
|
from availability import send_availability_via_server
|
||||||
from manualapprove import manual_deny_follow_request
|
from manualapprove import manual_deny_follow_request2
|
||||||
from manualapprove import manual_approve_follow_request
|
from manualapprove import manual_approve_follow_request
|
||||||
from shares import send_share_via_server
|
from shares import send_share_via_server
|
||||||
from shares import send_undo_share_via_server
|
from shares import send_undo_share_via_server
|
||||||
|
@ -996,10 +996,12 @@ def _command_options() -> None:
|
||||||
if not argb.language:
|
if not argb.language:
|
||||||
argb.language = 'en'
|
argb.language = 'en'
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, origin_domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, origin_domain)
|
||||||
|
mitm_servers = []
|
||||||
get_public_posts_of_person(base_dir, nickname, domain, False, True,
|
get_public_posts_of_person(base_dir, nickname, domain, False, True,
|
||||||
proxy_type, argb.port, http_prefix, debug,
|
proxy_type, argb.port, http_prefix, debug,
|
||||||
__version__, argb.language,
|
__version__, argb.language,
|
||||||
signing_priv_key_pem, origin_domain)
|
signing_priv_key_pem, origin_domain,
|
||||||
|
mitm_servers)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if argb.moved:
|
if argb.moved:
|
||||||
|
@ -1084,6 +1086,7 @@ def _command_options() -> None:
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = \
|
signing_priv_key_pem = \
|
||||||
get_instance_actor_key(base_dir, origin_domain)
|
get_instance_actor_key(base_dir, origin_domain)
|
||||||
|
mitm_servers = []
|
||||||
domain_list = \
|
domain_list = \
|
||||||
get_public_post_domains(None,
|
get_public_post_domains(None,
|
||||||
base_dir, nickname, domain,
|
base_dir, nickname, domain,
|
||||||
|
@ -1093,7 +1096,8 @@ def _command_options() -> None:
|
||||||
__version__,
|
__version__,
|
||||||
word_frequency, domain_list,
|
word_frequency, domain_list,
|
||||||
argb.language,
|
argb.language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
for post_domain in domain_list:
|
for post_domain in domain_list:
|
||||||
print(post_domain)
|
print(post_domain)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
@ -1137,6 +1141,7 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
domain_list = \
|
domain_list = \
|
||||||
get_public_post_domains_blocked(None,
|
get_public_post_domains_blocked(None,
|
||||||
base_dir, nickname, domain,
|
base_dir, nickname, domain,
|
||||||
|
@ -1145,7 +1150,8 @@ def _command_options() -> None:
|
||||||
__version__,
|
__version__,
|
||||||
word_frequency, domain_list,
|
word_frequency, domain_list,
|
||||||
argb.language,
|
argb.language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
for post_domain in domain_list:
|
for post_domain in domain_list:
|
||||||
print(post_domain)
|
print(post_domain)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
@ -1186,13 +1192,14 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
check_domains(None,
|
check_domains(None,
|
||||||
base_dir, nickname, domain,
|
base_dir, nickname, domain,
|
||||||
proxy_type, argb.port,
|
proxy_type, argb.port,
|
||||||
http_prefix, debug,
|
http_prefix, debug,
|
||||||
__version__,
|
__version__,
|
||||||
max_blocked_domains, False, argb.language,
|
max_blocked_domains, False, argb.language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if argb.socnet:
|
if argb.socnet:
|
||||||
|
@ -1214,11 +1221,12 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
dot_graph = instances_graph(base_dir, argb.socnet,
|
dot_graph = instances_graph(base_dir, argb.socnet,
|
||||||
proxy_type, argb.port,
|
proxy_type, argb.port,
|
||||||
http_prefix, debug,
|
http_prefix, debug,
|
||||||
__version__, argb.language,
|
__version__, argb.language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
try:
|
try:
|
||||||
with open('socnet.dot', 'w+', encoding='utf-8') as fp_soc:
|
with open('socnet.dot', 'w+', encoding='utf-8') as fp_soc:
|
||||||
fp_soc.write(dot_graph)
|
fp_soc.write(dot_graph)
|
||||||
|
@ -1272,10 +1280,12 @@ def _command_options() -> None:
|
||||||
if not argb.language:
|
if not argb.language:
|
||||||
argb.language = 'en'
|
argb.language = 'en'
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, origin_domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, origin_domain)
|
||||||
|
mitm_servers = []
|
||||||
get_public_posts_of_person(base_dir, nickname, domain, False, False,
|
get_public_posts_of_person(base_dir, nickname, domain, False, False,
|
||||||
proxy_type, argb.port, http_prefix, debug,
|
proxy_type, argb.port, http_prefix, debug,
|
||||||
__version__, argb.language,
|
__version__, argb.language,
|
||||||
signing_priv_key_pem, origin_domain)
|
signing_priv_key_pem, origin_domain,
|
||||||
|
mitm_servers)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if argb.json:
|
if argb.json:
|
||||||
|
@ -1301,9 +1311,10 @@ def _command_options() -> None:
|
||||||
print('Obtained instance actor signing key')
|
print('Obtained instance actor signing key')
|
||||||
else:
|
else:
|
||||||
print('Did not obtain instance actor key for ' + domain)
|
print('Did not obtain instance actor key for ' + domain)
|
||||||
|
mitm_servers = []
|
||||||
test_json = get_json(signing_priv_key_pem, session, argb.json,
|
test_json = get_json(signing_priv_key_pem, session, argb.json,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, domain)
|
__version__, http_prefix, domain)
|
||||||
if get_json_valid(test_json):
|
if get_json_valid(test_json):
|
||||||
pprint(test_json)
|
pprint(test_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -1334,9 +1345,11 @@ def _command_options() -> None:
|
||||||
if not nickname:
|
if not nickname:
|
||||||
print('Please specify a nickname with the --nickname option')
|
print('Please specify a nickname with the --nickname option')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
mitm_servers = []
|
||||||
conv_json = download_conversation_posts(True, session, http_prefix,
|
conv_json = download_conversation_posts(True, session, http_prefix,
|
||||||
base_dir, nickname, domain,
|
base_dir, nickname, domain,
|
||||||
post_id, argb.debug)
|
post_id, argb.debug,
|
||||||
|
mitm_servers)
|
||||||
if conv_json:
|
if conv_json:
|
||||||
pprint(conv_json)
|
pprint(conv_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -1360,9 +1373,10 @@ def _command_options() -> None:
|
||||||
print('Obtained instance actor signing key')
|
print('Obtained instance actor signing key')
|
||||||
else:
|
else:
|
||||||
print('Did not obtain instance actor key for ' + domain)
|
print('Did not obtain instance actor key for ' + domain)
|
||||||
|
mitm_servers = []
|
||||||
test_ssml = download_ssml(signing_priv_key_pem, session, argb.ssml,
|
test_ssml = download_ssml(signing_priv_key_pem, session, argb.ssml,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, __version__,
|
||||||
http_prefix, domain)
|
http_prefix, domain, mitm_servers)
|
||||||
if test_ssml:
|
if test_ssml:
|
||||||
print(str(test_ssml))
|
print(str(test_ssml))
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -1414,9 +1428,10 @@ def _command_options() -> None:
|
||||||
print('Obtained instance actor signing key')
|
print('Obtained instance actor signing key')
|
||||||
else:
|
else:
|
||||||
print('Did not obtain instance actor key for ' + domain)
|
print('Did not obtain instance actor key for ' + domain)
|
||||||
|
mitm_servers = []
|
||||||
test_html = download_html(signing_priv_key_pem, session, argb.htmlpost,
|
test_html = download_html(signing_priv_key_pem, session, argb.htmlpost,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, __version__,
|
||||||
http_prefix, domain)
|
http_prefix, domain, mitm_servers)
|
||||||
if test_html:
|
if test_html:
|
||||||
print(test_html)
|
print(test_html)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -1443,9 +1458,11 @@ def _command_options() -> None:
|
||||||
'--domain option')
|
'--domain option')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
session = create_session(None)
|
session = create_session(None)
|
||||||
|
mitm_servers = []
|
||||||
verified = \
|
verified = \
|
||||||
verify_html(session, argb.verifyurl, debug, __version__,
|
verify_html(session, argb.verifyurl, debug, __version__,
|
||||||
http_prefix, argb.nickname, domain)
|
http_prefix, argb.nickname, domain,
|
||||||
|
mitm_servers)
|
||||||
session.close()
|
session.close()
|
||||||
if verified:
|
if verified:
|
||||||
print('Verified')
|
print('Verified')
|
||||||
|
@ -1711,6 +1728,7 @@ def _command_options() -> None:
|
||||||
followers_sync_cache = {}
|
followers_sync_cache = {}
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
|
mitm_servers = []
|
||||||
manual_approve_follow_request(session, session_onion, session_i2p,
|
manual_approve_follow_request(session, session_onion, session_i2p,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
|
@ -1722,7 +1740,8 @@ def _command_options() -> None:
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem, proxy_type,
|
signing_priv_key_pem, proxy_type,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
session.close()
|
session.close()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
@ -1757,20 +1776,21 @@ def _command_options() -> None:
|
||||||
session_i2p = create_session('i2p')
|
session_i2p = create_session('i2p')
|
||||||
followers_sync_cache = {}
|
followers_sync_cache = {}
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
|
mitm_servers = []
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
manual_deny_follow_request(session, session_onion, session_i2p,
|
manual_deny_follow_request2(session, session_onion, session_i2p,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
argb.nickname, domain, port,
|
argb.nickname, domain, port,
|
||||||
argb.deny,
|
argb.deny,
|
||||||
federation_list,
|
federation_list,
|
||||||
send_threads, post_log,
|
send_threads, post_log,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
session.close()
|
session.close()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
@ -1882,6 +1902,7 @@ def _command_options() -> None:
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
# TODO searchable status
|
# TODO searchable status
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
|
|
||||||
print('Sending post to ' + argb.sendto)
|
print('Sending post to ' + argb.sendto)
|
||||||
send_post_via_server(signing_priv_key_pem, __version__,
|
send_post_via_server(signing_priv_key_pem, __version__,
|
||||||
|
@ -1901,7 +1922,8 @@ def _command_options() -> None:
|
||||||
argb.eventLocation, translate, argb.buyUrl,
|
argb.eventLocation, translate, argb.buyUrl,
|
||||||
argb.chatUrl, auto_cw_cache, argb.debug,
|
argb.chatUrl, auto_cw_cache, argb.debug,
|
||||||
reply_to, reply_to, argb.conversationId,
|
reply_to, reply_to, argb.conversationId,
|
||||||
argb.convthreadId, subject, searchable_by)
|
argb.convthreadId, subject, searchable_by,
|
||||||
|
mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -1988,13 +2010,14 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending announce/repeat of ' + argb.announce)
|
print('Sending announce/repeat of ' + argb.announce)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_announce_via_server(base_dir, session,
|
send_announce_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.announce,
|
http_prefix, argb.announce,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2035,10 +2058,12 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
|
||||||
session = create_session(proxy_type)
|
session = create_session(proxy_type)
|
||||||
|
mitm_servers = []
|
||||||
box_json = c2s_box_json(session, argb.nickname, argb.password,
|
box_json = c2s_box_json(session, argb.nickname, argb.password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
argb.box, argb.pageNumber,
|
argb.box, argb.pageNumber,
|
||||||
argb.debug, signing_priv_key_pem)
|
argb.debug, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if box_json:
|
if box_json:
|
||||||
pprint(box_json)
|
pprint(box_json)
|
||||||
else:
|
else:
|
||||||
|
@ -2098,6 +2123,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending shared item: ' + argb.itemName)
|
print('Sending shared item: ' + argb.itemName)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_share_via_server(base_dir, session,
|
send_share_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2114,7 +2140,7 @@ def _command_options() -> None:
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
argb.itemPrice, argb.itemCurrency,
|
argb.itemPrice, argb.itemCurrency,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2144,6 +2170,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo of shared item: ' + argb.undoItemName)
|
print('Sending undo of shared item: ' + argb.undoItemName)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_share_via_server(base_dir, session,
|
send_undo_share_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2151,7 +2178,7 @@ def _command_options() -> None:
|
||||||
argb.undoItemName,
|
argb.undoItemName,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, __version__, signing_priv_key_pem,
|
debug, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2210,6 +2237,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending wanted item: ' + argb.wantedItemName)
|
print('Sending wanted item: ' + argb.wantedItemName)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_wanted_via_server(base_dir, session,
|
send_wanted_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2226,7 +2254,7 @@ def _command_options() -> None:
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
argb.itemPrice, argb.itemCurrency,
|
argb.itemPrice, argb.itemCurrency,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2256,6 +2284,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo of wanted item: ' + argb.undoWantedItemName)
|
print('Sending undo of wanted item: ' + argb.undoWantedItemName)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_wanted_via_server(base_dir, session,
|
send_undo_wanted_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2263,7 +2292,7 @@ def _command_options() -> None:
|
||||||
argb.undoWantedItemName,
|
argb.undoWantedItemName,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, __version__, signing_priv_key_pem,
|
debug, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2293,13 +2322,14 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending like of ' + argb.like)
|
print('Sending like of ' + argb.like)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_like_via_server(base_dir, session,
|
send_like_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.like,
|
http_prefix, argb.like,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2335,13 +2365,14 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending emoji reaction ' + argb.emoji + ' to ' + argb.react)
|
print('Sending emoji reaction ' + argb.emoji + ' to ' + argb.react)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_reaction_via_server(base_dir, session,
|
send_reaction_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.react, argb.emoji,
|
http_prefix, argb.react, argb.emoji,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2371,6 +2402,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo like of ' + argb.undolike)
|
print('Sending undo like of ' + argb.undolike)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_like_via_server(base_dir, session,
|
send_undo_like_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2378,7 +2410,7 @@ def _command_options() -> None:
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2415,6 +2447,7 @@ def _command_options() -> None:
|
||||||
print('Sending undo emoji reaction ' +
|
print('Sending undo emoji reaction ' +
|
||||||
argb.emoji + ' to ' + argb.react)
|
argb.emoji + ' to ' + argb.react)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_reaction_via_server(base_dir, session,
|
send_undo_reaction_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2422,7 +2455,7 @@ def _command_options() -> None:
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2452,6 +2485,7 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending bookmark of ' + argb.bookmark)
|
print('Sending bookmark of ' + argb.bookmark)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_bookmark_via_server(base_dir, session,
|
send_bookmark_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2459,7 +2493,7 @@ def _command_options() -> None:
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2489,13 +2523,14 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo bookmark of ' + argb.unbookmark)
|
print('Sending undo bookmark of ' + argb.unbookmark)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_bookmark_via_server(base_dir, session,
|
send_undo_bookmark_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.unbookmark,
|
http_prefix, argb.unbookmark,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2525,13 +2560,14 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending delete request of ' + argb.delete)
|
print('Sending delete request of ' + argb.delete)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_delete_via_server(base_dir, session,
|
send_delete_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.delete,
|
http_prefix, argb.delete,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -2575,6 +2611,7 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_follow_request_via_server(base_dir, session,
|
send_follow_request_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2583,7 +2620,7 @@ def _command_options() -> None:
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
# TODO some method to know if it worked
|
# TODO some method to know if it worked
|
||||||
|
@ -2628,6 +2665,7 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_unfollow_request_via_server(base_dir, session,
|
send_unfollow_request_via_server(base_dir, session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -2636,7 +2674,7 @@ def _command_options() -> None:
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
# TODO some method to know if it worked
|
# TODO some method to know if it worked
|
||||||
|
@ -2667,12 +2705,14 @@ def _command_options() -> None:
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
following_json = \
|
following_json = \
|
||||||
get_following_via_server(session,
|
get_following_via_server(session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
follow_http_prefix, argb.pageNumber,
|
follow_http_prefix, argb.pageNumber,
|
||||||
debug, __version__, signing_priv_key_pem)
|
debug, __version__, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if following_json:
|
if following_json:
|
||||||
pprint(following_json)
|
pprint(following_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -2701,13 +2741,15 @@ def _command_options() -> None:
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
blocked_json = \
|
blocked_json = \
|
||||||
get_blocks_via_server(session,
|
get_blocks_via_server(session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
blocked_http_prefix, argb.pageNumber,
|
blocked_http_prefix, argb.pageNumber,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if blocked_json:
|
if blocked_json:
|
||||||
pprint(blocked_json)
|
pprint(blocked_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -2735,14 +2777,14 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
followers_json = \
|
followers_json = \
|
||||||
get_followers_via_server(session,
|
get_followers_via_server(session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
follow_http_prefix, argb.pageNumber,
|
follow_http_prefix, argb.pageNumber,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if followers_json:
|
if followers_json:
|
||||||
pprint(followers_json)
|
pprint(followers_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -2771,13 +2813,15 @@ def _command_options() -> None:
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
follow_requests_json = \
|
follow_requests_json = \
|
||||||
get_follow_requests_via_server(session,
|
get_follow_requests_via_server(session,
|
||||||
argb.nickname, argb.password,
|
argb.nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
follow_http_prefix, argb.pageNumber,
|
follow_http_prefix, argb.pageNumber,
|
||||||
debug, __version__,
|
debug, __version__,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if follow_requests_json:
|
if follow_requests_json:
|
||||||
pprint(follow_requests_json)
|
pprint(follow_requests_json)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -2836,10 +2880,11 @@ def _command_options() -> None:
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
block_federated = []
|
block_federated = []
|
||||||
|
mitm_servers = []
|
||||||
ctr = migrate_accounts(base_dir, session,
|
ctr = migrate_accounts(base_dir, session,
|
||||||
http_prefix, cached_webfingers,
|
http_prefix, cached_webfingers,
|
||||||
True, signing_priv_key_pem,
|
True, signing_priv_key_pem,
|
||||||
block_federated)
|
block_federated, mitm_servers)
|
||||||
if ctr == 0:
|
if ctr == 0:
|
||||||
print('No followed accounts have moved')
|
print('No followed accounts have moved')
|
||||||
else:
|
else:
|
||||||
|
@ -2859,9 +2904,11 @@ def _command_options() -> None:
|
||||||
print('Did not obtain instance actor key for ' + domain)
|
print('Did not obtain instance actor key for ' + domain)
|
||||||
if argb.actor.startswith('@'):
|
if argb.actor.startswith('@'):
|
||||||
argb.actor = argb.actor[1:]
|
argb.actor = argb.actor[1:]
|
||||||
|
mitm_servers = []
|
||||||
get_actor_json(domain, argb.actor, argb.http, argb.gnunet,
|
get_actor_json(domain, argb.actor, argb.http, argb.gnunet,
|
||||||
argb.ipfs, argb.ipns,
|
argb.ipfs, argb.ipns,
|
||||||
debug, False, signing_priv_key_pem, None)
|
debug, False, signing_priv_key_pem, None,
|
||||||
|
mitm_servers)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if argb.followers:
|
if argb.followers:
|
||||||
|
@ -2964,10 +3011,11 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
wf_request = webfinger_handle(session, handle,
|
wf_request = webfinger_handle(session, handle,
|
||||||
http_prefix, cached_webfingers,
|
http_prefix, cached_webfingers,
|
||||||
host_domain, __version__, debug, False,
|
host_domain, __version__, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
print('Unable to webfinger ' + handle)
|
print('Unable to webfinger ' + handle)
|
||||||
session.close()
|
session.close()
|
||||||
|
@ -3023,11 +3071,12 @@ def _command_options() -> None:
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
if argb.secure_mode:
|
if argb.secure_mode:
|
||||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||||
|
mitm_servers = []
|
||||||
followers_list = \
|
followers_list = \
|
||||||
download_follow_collection(signing_priv_key_pem,
|
download_follow_collection(signing_priv_key_pem,
|
||||||
'followers', session,
|
'followers', session,
|
||||||
http_prefix, person_url, 1, 3,
|
http_prefix, person_url, 1, 3,
|
||||||
argb.debug)
|
argb.debug, mitm_servers)
|
||||||
if followers_list:
|
if followers_list:
|
||||||
for actor in followers_list:
|
for actor in followers_list:
|
||||||
print(actor)
|
print(actor)
|
||||||
|
@ -3317,6 +3366,7 @@ def _command_options() -> None:
|
||||||
print('Sending ' + argb.skill + ' skill level ' +
|
print('Sending ' + argb.skill + ' skill level ' +
|
||||||
str(argb.skillLevelPercent) + ' for ' + nickname)
|
str(argb.skillLevelPercent) + ' for ' + nickname)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_skill_via_server(base_dir, session,
|
send_skill_via_server(base_dir, session,
|
||||||
nickname, argb.password,
|
nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
|
@ -3324,7 +3374,7 @@ def _command_options() -> None:
|
||||||
argb.skill, argb.skillLevelPercent,
|
argb.skill, argb.skillLevelPercent,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -3355,13 +3405,14 @@ def _command_options() -> None:
|
||||||
print('Sending availability status of ' + nickname +
|
print('Sending availability status of ' + nickname +
|
||||||
' as ' + argb.availability)
|
' as ' + argb.availability)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_availability_via_server(base_dir, session,
|
send_availability_via_server(base_dir, session,
|
||||||
nickname, argb.password,
|
nickname, argb.password,
|
||||||
domain, port, http_prefix,
|
domain, port, http_prefix,
|
||||||
argb.availability,
|
argb.availability,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -3472,12 +3523,13 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending block of ' + argb.block)
|
print('Sending block of ' + argb.block)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_block_via_server(base_dir, session, nickname, argb.password,
|
send_block_via_server(base_dir, session, nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.block,
|
http_prefix, argb.block,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -3507,12 +3559,13 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending mute of ' + argb.mute)
|
print('Sending mute of ' + argb.mute)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_mute_via_server(base_dir, session, nickname, argb.password,
|
send_mute_via_server(base_dir, session, nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.mute,
|
http_prefix, argb.mute,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -3542,12 +3595,13 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo mute of ' + argb.unmute)
|
print('Sending undo mute of ' + argb.unmute)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_mute_via_server(base_dir, session, nickname, argb.password,
|
send_undo_mute_via_server(base_dir, session, nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.unmute,
|
http_prefix, argb.unmute,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -3589,12 +3643,13 @@ def _command_options() -> None:
|
||||||
system_language = argb.language
|
system_language = argb.language
|
||||||
print('Sending undo block of ' + argb.unblock)
|
print('Sending undo block of ' + argb.unblock)
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
send_undo_block_via_server(base_dir, session, nickname, argb.password,
|
send_undo_block_via_server(base_dir, session, nickname, argb.password,
|
||||||
domain, port,
|
domain, port,
|
||||||
http_prefix, argb.unblock,
|
http_prefix, argb.unblock,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
# TODO detect send success/fail
|
# TODO detect send success/fail
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
55
follow.py
55
follow.py
|
@ -763,7 +763,8 @@ def followed_account_accepts(session, base_dir: str, http_prefix: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str):
|
system_language: str,
|
||||||
|
mitm_servers: []):
|
||||||
"""The person receiving a follow request accepts the new follower
|
"""The person receiving a follow request accepts the new follower
|
||||||
and sends back an Accept activity
|
and sends back an Accept activity
|
||||||
"""
|
"""
|
||||||
|
@ -820,7 +821,7 @@ def followed_account_accepts(session, base_dir: str, http_prefix: str,
|
||||||
group_account, signing_priv_key_pem,
|
group_account, signing_priv_key_pem,
|
||||||
7856837, curr_domain, onion_domain, i2p_domain,
|
7856837, curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def followed_account_rejects(session, session_onion, session_i2p,
|
def followed_account_rejects(session, session_onion, session_i2p,
|
||||||
|
@ -836,7 +837,8 @@ def followed_account_rejects(session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str):
|
system_language: str,
|
||||||
|
mitm_servers: []):
|
||||||
"""The person receiving a follow request rejects the new follower
|
"""The person receiving a follow request rejects the new follower
|
||||||
and sends back a Reject activity
|
and sends back a Reject activity
|
||||||
"""
|
"""
|
||||||
|
@ -906,7 +908,7 @@ def followed_account_rejects(session, session_onion, session_i2p,
|
||||||
6393063,
|
6393063,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def send_follow_request(session, base_dir: str,
|
def send_follow_request(session, base_dir: str,
|
||||||
|
@ -923,7 +925,8 @@ def send_follow_request(session, base_dir: str,
|
||||||
curr_domain: str,
|
curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets the json object for sending a follow request
|
"""Gets the json object for sending a follow request
|
||||||
"""
|
"""
|
||||||
if not signing_priv_key_pem:
|
if not signing_priv_key_pem:
|
||||||
|
@ -1012,7 +1015,7 @@ def send_follow_request(session, base_dir: str,
|
||||||
signing_priv_key_pem, 8234389,
|
signing_priv_key_pem, 8234389,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
return new_follow_json
|
return new_follow_json
|
||||||
|
|
||||||
|
@ -1026,7 +1029,8 @@ def send_follow_request_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a follow request via c2s
|
"""Creates a follow request via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1060,7 +1064,7 @@ def send_follow_request_via_server(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: follow request webfinger failed for ' + handle)
|
print('DEBUG: follow request webfinger failed for ' + handle)
|
||||||
|
@ -1081,7 +1085,7 @@ def send_follow_request_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 52025,
|
from_domain, post_to_box, 52025,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1123,7 +1127,8 @@ def send_unfollow_request_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a unfollow request via c2s
|
"""Creates a unfollow request via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1161,7 +1166,7 @@ def send_unfollow_request_via_server(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unfollow webfinger failed for ' + handle)
|
print('DEBUG: unfollow webfinger failed for ' + handle)
|
||||||
|
@ -1183,7 +1188,8 @@ def send_unfollow_request_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
76536, system_language)
|
76536, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1220,7 +1226,8 @@ def get_following_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, page_number: int,
|
http_prefix: str, page_number: int,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets a page from the following collection as json
|
"""Gets a page from the following collection as json
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1242,7 +1249,7 @@ def get_following_via_server(session, nickname: str, password: str,
|
||||||
url = follow_actor + '/following?page=' + str(page_number)
|
url = follow_actor + '/following?page=' + str(page_number)
|
||||||
following_json = \
|
following_json = \
|
||||||
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
||||||
project_version, http_prefix, domain, 10, True)
|
mitm_servers, project_version, http_prefix, domain, 10, True)
|
||||||
if not get_json_valid(following_json):
|
if not get_json_valid(following_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET following list failed for c2s to ' + url)
|
print('DEBUG: GET following list failed for c2s to ' + url)
|
||||||
|
@ -1258,7 +1265,8 @@ def get_followers_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, page_number: int,
|
http_prefix: str, page_number: int,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets a page from the followers collection as json
|
"""Gets a page from the followers collection as json
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1280,7 +1288,7 @@ def get_followers_via_server(session, nickname: str, password: str,
|
||||||
url = follow_actor + '/followers?page=' + str(page_number)
|
url = follow_actor + '/followers?page=' + str(page_number)
|
||||||
followers_json = \
|
followers_json = \
|
||||||
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
||||||
project_version, http_prefix, domain, 10, True)
|
mitm_servers, project_version, http_prefix, domain, 10, True)
|
||||||
if not get_json_valid(followers_json):
|
if not get_json_valid(followers_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET followers list failed for c2s to ' + url)
|
print('DEBUG: GET followers list failed for c2s to ' + url)
|
||||||
|
@ -1297,7 +1305,8 @@ def get_follow_requests_via_server(session,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, page_number: int,
|
http_prefix: str, page_number: int,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets a page from the follow requests collection as json
|
"""Gets a page from the follow requests collection as json
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1319,7 +1328,7 @@ def get_follow_requests_via_server(session,
|
||||||
url = follow_actor + '/followrequests?page=' + str(page_number)
|
url = follow_actor + '/followrequests?page=' + str(page_number)
|
||||||
followers_json = \
|
followers_json = \
|
||||||
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
||||||
project_version, http_prefix, domain, 10, True)
|
mitm_servers, project_version, http_prefix, domain, 10, True)
|
||||||
if not get_json_valid(followers_json):
|
if not get_json_valid(followers_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET follow requests list failed for c2s to ' + url)
|
print('DEBUG: GET follow requests list failed for c2s to ' + url)
|
||||||
|
@ -1336,7 +1345,8 @@ def approve_follow_request_via_server(session,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, approve_handle: int,
|
http_prefix: str, approve_handle: int,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Approves a follow request
|
"""Approves a follow request
|
||||||
This is not exactly via c2s though. It simulates pressing the Approve
|
This is not exactly via c2s though. It simulates pressing the Approve
|
||||||
button on the web interface
|
button on the web interface
|
||||||
|
@ -1359,7 +1369,7 @@ def approve_follow_request_via_server(session,
|
||||||
url = actor + '/followapprove=' + approve_handle
|
url = actor + '/followapprove=' + approve_handle
|
||||||
approve_html = \
|
approve_html = \
|
||||||
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
||||||
project_version, http_prefix, domain, 10, True)
|
mitm_servers, project_version, http_prefix, domain, 10, True)
|
||||||
if not get_json_valid(approve_html):
|
if not get_json_valid(approve_html):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET approve follow request failed for c2s to ' + url)
|
print('DEBUG: GET approve follow request failed for c2s to ' + url)
|
||||||
|
@ -1376,7 +1386,8 @@ def deny_follow_request_via_server(session,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, deny_handle: int,
|
http_prefix: str, deny_handle: int,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Denies a follow request
|
"""Denies a follow request
|
||||||
This is not exactly via c2s though. It simulates pressing the Deny
|
This is not exactly via c2s though. It simulates pressing the Deny
|
||||||
button on the web interface
|
button on the web interface
|
||||||
|
@ -1399,7 +1410,7 @@ def deny_follow_request_via_server(session,
|
||||||
url = actor + '/followdeny=' + deny_handle
|
url = actor + '/followdeny=' + deny_handle
|
||||||
deny_html = \
|
deny_html = \
|
||||||
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
get_json(signing_priv_key_pem, session, url, headers, {}, debug,
|
||||||
project_version, http_prefix, domain, 10, True)
|
mitm_servers, project_version, http_prefix, domain, 10, True)
|
||||||
if not get_json_valid(deny_html):
|
if not get_json_valid(deny_html):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET deny follow request failed for c2s to ' + url)
|
print('DEBUG: GET deny follow request failed for c2s to ' + url)
|
||||||
|
|
|
@ -165,7 +165,8 @@ def _update_import_following(base_dir: str,
|
||||||
httpd.onion_domain,
|
httpd.onion_domain,
|
||||||
httpd.i2p_domain,
|
httpd.i2p_domain,
|
||||||
httpd.sites_unavailable,
|
httpd.sites_unavailable,
|
||||||
httpd.system_language)
|
httpd.system_language,
|
||||||
|
httpd.mitm_servers)
|
||||||
|
|
||||||
# remove the followed handle from the import list
|
# remove the followed handle from the import list
|
||||||
following_str = following_str.replace(orig_line + '\n', '')
|
following_str = following_str.replace(orig_line + '\n', '')
|
||||||
|
|
111
inbox.py
111
inbox.py
|
@ -189,7 +189,8 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> None:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Converts the json post into html and stores it in a cache
|
"""Converts the json post into html and stores it in a cache
|
||||||
This enables the post to be quickly displayed later
|
This enables the post to be quickly displayed later
|
||||||
"""
|
"""
|
||||||
|
@ -219,7 +220,8 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
|
||||||
not_dm, True, True, False, True, False,
|
not_dm, True, True, False, True, False,
|
||||||
cw_lists, lists_enabled, timezone, mitm,
|
cw_lists, lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles, minimize_all_images,
|
bold_reading, dogwhistles, minimize_all_images,
|
||||||
None, buy_sites, auto_cw_cache)
|
None, buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def valid_inbox(base_dir: str, nickname: str, domain: str) -> bool:
|
def valid_inbox(base_dir: str, nickname: str, domain: str) -> bool:
|
||||||
|
@ -801,7 +803,8 @@ def update_edited_post(base_dir: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> None:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
""" When an edited post is created this assigns
|
""" When an edited post is created this assigns
|
||||||
a published and updated date to it, and uses
|
a published and updated date to it, and uses
|
||||||
the previous id
|
the previous id
|
||||||
|
@ -851,7 +854,8 @@ def update_edited_post(base_dir: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
max_hashtags, buy_sites,
|
max_hashtags, buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain)
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
# update the index
|
# update the index
|
||||||
id_str = edited_postid.split('/')[-1]
|
id_str = edited_postid.split('/')[-1]
|
||||||
|
@ -947,7 +951,8 @@ def _obtain_avatar_for_reply_post(session, base_dir: str, http_prefix: str,
|
||||||
i2p_domain: str,
|
i2p_domain: str,
|
||||||
person_cache: {},
|
person_cache: {},
|
||||||
post_json_object: {}, debug: bool,
|
post_json_object: {}, debug: bool,
|
||||||
signing_priv_key_pem: str) -> None:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Tries to obtain the actor for the person being replied to
|
"""Tries to obtain the actor for the person being replied to
|
||||||
so that their avatar can later be shown
|
so that their avatar can later be shown
|
||||||
"""
|
"""
|
||||||
|
@ -980,7 +985,8 @@ def _obtain_avatar_for_reply_post(session, base_dir: str, http_prefix: str,
|
||||||
person_cache, debug,
|
person_cache, debug,
|
||||||
__version__, http_prefix,
|
__version__, http_prefix,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if pub_key:
|
if pub_key:
|
||||||
if not isinstance(pub_key, dict):
|
if not isinstance(pub_key, dict):
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1096,7 +1102,8 @@ def _send_to_group_members(server, session, session_onion, session_i2p,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""When a post arrives for a group send it out to the group members
|
"""When a post arrives for a group send it out to the group members
|
||||||
"""
|
"""
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1153,7 +1160,8 @@ def _send_to_group_members(server, session, session_onion, session_i2p,
|
||||||
person_cache, cached_webfingers,
|
person_cache, cached_webfingers,
|
||||||
debug, __version__, signing_priv_key_pem,
|
debug, __version__, signing_priv_key_pem,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
send_to_followers_thread(server, session, session_onion, session_i2p,
|
send_to_followers_thread(server, session, session_onion, session_i2p,
|
||||||
base_dir, nickname, domain,
|
base_dir, nickname, domain,
|
||||||
|
@ -1165,7 +1173,8 @@ def _send_to_group_members(server, session, session_onion, session_i2p,
|
||||||
shared_items_federated_domains,
|
shared_items_federated_domains,
|
||||||
shared_item_federation_tokens,
|
shared_item_federation_tokens,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def _inbox_update_calendar_from_tag(base_dir: str, handle: str,
|
def _inbox_update_calendar_from_tag(base_dir: str, handle: str,
|
||||||
|
@ -1299,7 +1308,8 @@ def _bounce_dm(sender_post_id: str, session, http_prefix: str,
|
||||||
languages_understood: [],
|
languages_understood: [],
|
||||||
bounce_is_chat: bool,
|
bounce_is_chat: bool,
|
||||||
curr_domain: str, onion_domain: str, i2p_domain: str,
|
curr_domain: str, onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: []) -> bool:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Sends a bounce message back to the sending handle
|
"""Sends a bounce message back to the sending handle
|
||||||
if a DM has been rejected
|
if a DM has been rejected
|
||||||
"""
|
"""
|
||||||
|
@ -1383,7 +1393,8 @@ def _bounce_dm(sender_post_id: str, session, http_prefix: str,
|
||||||
person_cache, debug, __version__, None, group_account,
|
person_cache, debug, __version__, None, group_account,
|
||||||
signing_priv_key_pem, 7238634,
|
signing_priv_key_pem, 7238634,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable, system_language)
|
extra_headers, sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -1401,7 +1412,8 @@ def _is_valid_dm(base_dir: str, nickname: str, domain: str, port: int,
|
||||||
dm_license_url: str,
|
dm_license_url: str,
|
||||||
languages_understood: [],
|
languages_understood: [],
|
||||||
curr_domain: str, onion_domain: str, i2p_domain: str,
|
curr_domain: str, onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: []) -> bool:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Is the given message a valid DM?
|
"""Is the given message a valid DM?
|
||||||
"""
|
"""
|
||||||
if nickname == 'inbox':
|
if nickname == 'inbox':
|
||||||
|
@ -1506,7 +1518,8 @@ def _is_valid_dm(base_dir: str, nickname: str, domain: str, port: int,
|
||||||
bounce_chat,
|
bounce_chat,
|
||||||
curr_domain,
|
curr_domain,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
sites_unavailable)
|
sites_unavailable,
|
||||||
|
mitm_servers)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# dm index will be updated
|
# dm index will be updated
|
||||||
|
@ -1785,7 +1798,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
mitm: bool, bold_reading: bool,
|
mitm: bool, bold_reading: bool,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
max_hashtags: int, buy_sites: {},
|
max_hashtags: int, buy_sites: {},
|
||||||
sites_unavailable: []) -> bool:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
""" Anything which needs to be done after initial checks have passed
|
""" Anything which needs to be done after initial checks have passed
|
||||||
"""
|
"""
|
||||||
# if this is a clearnet instance then replace any onion/i2p
|
# if this is a clearnet instance then replace any onion/i2p
|
||||||
|
@ -1849,7 +1863,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
max_like_count, cw_lists, lists_enabled,
|
max_like_count, cw_lists, lists_enabled,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
buy_sites, server.auto_cw_cache):
|
buy_sites, server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Like accepted from ' + actor)
|
print('DEBUG: Like accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -1876,7 +1891,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
max_like_count, cw_lists, lists_enabled,
|
max_like_count, cw_lists, lists_enabled,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
buy_sites, server.auto_cw_cache):
|
buy_sites, server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Undo like accepted from ' + actor)
|
print('DEBUG: Undo like accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -1904,7 +1920,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
max_like_count, cw_lists, lists_enabled,
|
max_like_count, cw_lists, lists_enabled,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
buy_sites, server.auto_cw_cache):
|
buy_sites, server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Reaction accepted from ' + actor)
|
print('DEBUG: Reaction accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -1932,7 +1949,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
max_like_count, cw_lists, lists_enabled,
|
max_like_count, cw_lists, lists_enabled,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
buy_sites, server.auto_cw_cache):
|
buy_sites, server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Zot reaction accepted from ' + actor)
|
print('DEBUG: Zot reaction accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -1959,7 +1977,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
max_like_count, cw_lists, lists_enabled,
|
max_like_count, cw_lists, lists_enabled,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
buy_sites, server.auto_cw_cache):
|
buy_sites, server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Undo reaction accepted from ' + actor)
|
print('DEBUG: Undo reaction accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -1987,7 +2006,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
server.buy_sites,
|
server.buy_sites,
|
||||||
server.auto_cw_cache):
|
server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Bookmark accepted from ' + actor)
|
print('DEBUG: Bookmark accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -2015,7 +2035,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
server.buy_sites,
|
server.buy_sites,
|
||||||
server.auto_cw_cache):
|
server.auto_cw_cache,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Undo bookmark accepted from ' + actor)
|
print('DEBUG: Undo bookmark accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -2063,7 +2084,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
server.buy_sites,
|
server.buy_sites,
|
||||||
languages_understood,
|
languages_understood,
|
||||||
server.auto_cw_cache,
|
server.auto_cw_cache,
|
||||||
server.block_federated):
|
server.block_federated,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Announce accepted from ' + actor)
|
print('DEBUG: Announce accepted from ' + actor)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -2132,7 +2154,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
server.min_images_for_accounts,
|
server.min_images_for_accounts,
|
||||||
server.buy_sites,
|
server.buy_sites,
|
||||||
server.sites_unavailable,
|
server.sites_unavailable,
|
||||||
server.auto_cw_cache)
|
server.auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
'INBOX', '_receive_question_vote',
|
'INBOX', '_receive_question_vote',
|
||||||
debug)
|
debug)
|
||||||
|
@ -2159,7 +2182,7 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
if not valid_sending_actor(session, base_dir, nickname, domain,
|
if not valid_sending_actor(session, base_dir, nickname, domain,
|
||||||
person_cache, post_json_object,
|
person_cache, post_json_object,
|
||||||
signing_priv_key_pem, debug, unit_test,
|
signing_priv_key_pem, debug, unit_test,
|
||||||
system_language):
|
system_language, mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('Inbox sending actor is not valid ' +
|
print('Inbox sending actor is not valid ' +
|
||||||
str(post_json_object))
|
str(post_json_object))
|
||||||
|
@ -2233,7 +2256,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
languages_understood,
|
languages_understood,
|
||||||
domain,
|
domain,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
server.sites_unavailable):
|
server.sites_unavailable,
|
||||||
|
mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('Invalid DM ' + str(post_json_object))
|
print('Invalid DM ' + str(post_json_object))
|
||||||
return False
|
return False
|
||||||
|
@ -2274,7 +2298,7 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
recent_posts_cache, debug, system_language,
|
recent_posts_cache, debug, system_language,
|
||||||
domain_full, person_cache, signing_priv_key_pem,
|
domain_full, person_cache, signing_priv_key_pem,
|
||||||
bold_reading, show_vote_posts,
|
bold_reading, show_vote_posts,
|
||||||
languages_understood):
|
languages_understood, mitm_servers):
|
||||||
# media index will be updated
|
# media index will be updated
|
||||||
update_index_list.append('tlmedia')
|
update_index_list.append('tlmedia')
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
@ -2290,7 +2314,7 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
http_prefix, domain,
|
http_prefix, domain,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
person_cache, post_json_object, debug,
|
person_cache, post_json_object, debug,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
'INBOX', '_obtain_avatar_for_reply_post',
|
'INBOX', '_obtain_avatar_for_reply_post',
|
||||||
debug)
|
debug)
|
||||||
|
@ -2488,7 +2512,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
min_img_for_accounts,
|
min_img_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
server.auto_cw_cache)
|
server.auto_cw_cache,
|
||||||
|
server.mitm_servers)
|
||||||
fitness_performance(inbox_start_time,
|
fitness_performance(inbox_start_time,
|
||||||
server.fitness,
|
server.fitness,
|
||||||
'INBOX',
|
'INBOX',
|
||||||
|
@ -2556,7 +2581,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
fitness_performance(inbox_start_time,
|
fitness_performance(inbox_start_time,
|
||||||
server.fitness,
|
server.fitness,
|
||||||
'INBOX', '_send_to_group_members',
|
'INBOX', '_send_to_group_members',
|
||||||
|
@ -2827,7 +2853,8 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
||||||
i2p_domain: str, signing_priv_key_pem: str,
|
i2p_domain: str, signing_priv_key_pem: str,
|
||||||
unit_test: bool, system_language: str,
|
unit_test: bool, system_language: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: []) -> bool:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives a follow request within the POST section of HTTPServer
|
"""Receives a follow request within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if not message_json['type'].startswith('Follow'):
|
if not message_json['type'].startswith('Follow'):
|
||||||
|
@ -2958,7 +2985,7 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
||||||
nickname_to_follow, domain_to_follow,
|
nickname_to_follow, domain_to_follow,
|
||||||
person_cache, message_json,
|
person_cache, message_json,
|
||||||
signing_priv_key_pem, debug, unit_test,
|
signing_priv_key_pem, debug, unit_test,
|
||||||
system_language):
|
system_language, mitm_servers):
|
||||||
print('REJECT spam follow request ' + approve_handle)
|
print('REJECT spam follow request ' + approve_handle)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -2996,7 +3023,8 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
||||||
person_cache, debug, project_version,
|
person_cache, debug, project_version,
|
||||||
curr_http_prefix,
|
curr_http_prefix,
|
||||||
this_domain, onion_domain,
|
this_domain, onion_domain,
|
||||||
i2p_domain, signing_priv_key_pem)
|
i2p_domain, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if not pubkey_result:
|
if not pubkey_result:
|
||||||
if debug:
|
if debug:
|
||||||
print('Unable to obtain following actor: ' +
|
print('Unable to obtain following actor: ' +
|
||||||
|
@ -3047,7 +3075,8 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
||||||
person_cache, debug, project_version,
|
person_cache, debug, project_version,
|
||||||
curr_http_prefix, this_domain,
|
curr_http_prefix, this_domain,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if not pubkey_result:
|
if not pubkey_result:
|
||||||
if debug:
|
if debug:
|
||||||
print('Unable to obtain following actor: ' +
|
print('Unable to obtain following actor: ' +
|
||||||
|
@ -3111,7 +3140,7 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
this_domain, onion_domain, i2p_domain,
|
this_domain, onion_domain, i2p_domain,
|
||||||
followers_sync_cache, sites_unavailable,
|
followers_sync_cache, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def run_inbox_queue(server,
|
def run_inbox_queue(server,
|
||||||
|
@ -3381,7 +3410,8 @@ def run_inbox_queue(server,
|
||||||
person_cache, debug,
|
person_cache, debug,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
server.mitm_servers)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
'INBOX', 'get_person_pub_key', debug)
|
'INBOX', 'get_person_pub_key', debug)
|
||||||
inbox_start_time = time.time()
|
inbox_start_time = time.time()
|
||||||
|
@ -3552,7 +3582,8 @@ def run_inbox_queue(server,
|
||||||
signing_priv_key_pem, unit_test,
|
signing_priv_key_pem, unit_test,
|
||||||
system_language,
|
system_language,
|
||||||
server.followers_sync_cache,
|
server.followers_sync_cache,
|
||||||
server.sites_unavailable):
|
server.sites_unavailable,
|
||||||
|
server.mitm_servers):
|
||||||
if os.path.isfile(queue_filename):
|
if os.path.isfile(queue_filename):
|
||||||
try:
|
try:
|
||||||
os.remove(queue_filename)
|
os.remove(queue_filename)
|
||||||
|
@ -3606,7 +3637,8 @@ def run_inbox_queue(server,
|
||||||
server.sites_unavailable,
|
server.sites_unavailable,
|
||||||
server.blocked_cache,
|
server.blocked_cache,
|
||||||
server.block_federated,
|
server.block_federated,
|
||||||
server.system_language):
|
server.system_language,
|
||||||
|
server.mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('Queue: _receive_move_activity ' + key_id)
|
print('Queue: _receive_move_activity ' + key_id)
|
||||||
if os.path.isfile(queue_filename):
|
if os.path.isfile(queue_filename):
|
||||||
|
@ -3647,7 +3679,7 @@ def run_inbox_queue(server,
|
||||||
max_hashtags, server.buy_sites,
|
max_hashtags, server.buy_sites,
|
||||||
server.auto_cw_cache,
|
server.auto_cw_cache,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain):
|
i2p_domain, server.mitm_servers):
|
||||||
if debug:
|
if debug:
|
||||||
print('Queue: Update accepted from ' + key_id)
|
print('Queue: Update accepted from ' + key_id)
|
||||||
if os.path.isfile(queue_filename):
|
if os.path.isfile(queue_filename):
|
||||||
|
@ -3777,7 +3809,8 @@ def run_inbox_queue(server,
|
||||||
languages_understood, mitm,
|
languages_understood, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
max_hashtags, server.buy_sites,
|
max_hashtags, server.buy_sites,
|
||||||
server.sites_unavailable)
|
server.sites_unavailable,
|
||||||
|
server.mitm_servers)
|
||||||
fitness_performance(inbox_start_time, server.fitness,
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
'INBOX', 'handle_after_initial',
|
'INBOX', 'handle_after_initial',
|
||||||
debug)
|
debug)
|
||||||
|
|
|
@ -374,7 +374,8 @@ def receive_edit_to_post(recent_posts_cache: {}, message_json: {},
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""A post was edited
|
"""A post was edited
|
||||||
"""
|
"""
|
||||||
if not has_object_dict(message_json):
|
if not has_object_dict(message_json):
|
||||||
|
@ -515,7 +516,8 @@ def receive_edit_to_post(recent_posts_cache: {}, message_json: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -533,7 +535,8 @@ def receive_move_activity(session, base_dir: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
blocked_cache: [],
|
blocked_cache: [],
|
||||||
block_federated: [],
|
block_federated: [],
|
||||||
system_language: str) -> bool:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives a move activity within the POST section of HTTPServer
|
"""Receives a move activity within the POST section of HTTPServer
|
||||||
https://codeberg.org/fediverse/fep/src/branch/main/fep/7628/fep-7628.md
|
https://codeberg.org/fediverse/fep/src/branch/main/fep/7628/fep-7628.md
|
||||||
"""
|
"""
|
||||||
|
@ -623,7 +626,8 @@ def receive_move_activity(session, base_dir: str,
|
||||||
onion_domain,
|
onion_domain,
|
||||||
i2p_domain,
|
i2p_domain,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -649,7 +653,8 @@ def receive_update_activity(recent_posts_cache: {}, session, base_dir: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
onion_domain: str,
|
onion_domain: str,
|
||||||
i2p_domain: str) -> bool:
|
i2p_domain: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an Update activity within the POST section of HTTPServer
|
"""Receives an Update activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'Update':
|
if message_json['type'] != 'Update':
|
||||||
|
@ -695,7 +700,8 @@ def receive_update_activity(recent_posts_cache: {}, session, base_dir: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
max_hashtags, buy_sites,
|
max_hashtags, buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
onion_domain, i2p_domain):
|
onion_domain, i2p_domain,
|
||||||
|
mitm_servers):
|
||||||
print('EDITPOST: received ' + message_json['object']['id'])
|
print('EDITPOST: received ' + message_json['object']['id'])
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
|
@ -951,7 +957,8 @@ def receive_like(recent_posts_cache: {},
|
||||||
bold_reading: bool, dogwhistles: {},
|
bold_reading: bool, dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives a Like activity within the POST section of HTTPServer
|
"""Receives a Like activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'Like':
|
if message_json['type'] != 'Like':
|
||||||
|
@ -1067,7 +1074,7 @@ def receive_like(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None, buy_sites,
|
minimize_all_images, None, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache, mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -1091,7 +1098,8 @@ def receive_reaction(recent_posts_cache: {},
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an emoji reaction within the POST section of HTTPServer
|
"""Receives an emoji reaction within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'EmojiReact':
|
if message_json['type'] != 'EmojiReact':
|
||||||
|
@ -1228,7 +1236,7 @@ def receive_reaction(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None, buy_sites,
|
minimize_all_images, None, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache, mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -1252,7 +1260,8 @@ def receive_zot_reaction(recent_posts_cache: {},
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an zot-style emoji reaction within the POST section of
|
"""Receives an zot-style emoji reaction within the POST section of
|
||||||
HTTPServer A zot style emoji reaction is an ordinary reply Note whose
|
HTTPServer A zot style emoji reaction is an ordinary reply Note whose
|
||||||
content is exactly one emoji
|
content is exactly one emoji
|
||||||
|
@ -1414,7 +1423,8 @@ def receive_zot_reaction(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -1436,7 +1446,8 @@ def receive_bookmark(recent_posts_cache: {},
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives a bookmark activity within the POST section of HTTPServer
|
"""Receives a bookmark activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if not message_json.get('type'):
|
if not message_json.get('type'):
|
||||||
|
@ -1540,7 +1551,8 @@ def receive_bookmark(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -1643,7 +1655,8 @@ def receive_announce(recent_posts_cache: {},
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
languages_understood: [],
|
languages_understood: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
block_federated: []) -> bool:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an announce activity within the POST section of HTTPServer
|
"""Receives an announce activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'Announce':
|
if message_json['type'] != 'Announce':
|
||||||
|
@ -1811,7 +1824,8 @@ def receive_announce(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if not announce_html:
|
if not announce_html:
|
||||||
print('WARN: Unable to generate html for announce ' +
|
print('WARN: Unable to generate html for announce ' +
|
||||||
str(message_json))
|
str(message_json))
|
||||||
|
@ -1835,7 +1849,8 @@ def receive_announce(recent_posts_cache: {},
|
||||||
blocked_cache, block_federated,
|
blocked_cache, block_federated,
|
||||||
bold_reading,
|
bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood)
|
languages_understood,
|
||||||
|
mitm_servers)
|
||||||
# are annouced/boosted replies allowed?
|
# are annouced/boosted replies allowed?
|
||||||
announce_denied = False
|
announce_denied = False
|
||||||
if post_json_object:
|
if post_json_object:
|
||||||
|
@ -1920,7 +1935,8 @@ def receive_announce(recent_posts_cache: {},
|
||||||
__version__, http_prefix,
|
__version__, http_prefix,
|
||||||
domain, onion_domain,
|
domain, onion_domain,
|
||||||
i2p_domain,
|
i2p_domain,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if pub_key:
|
if pub_key:
|
||||||
if not isinstance(pub_key, dict):
|
if not isinstance(pub_key, dict):
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1964,7 +1980,8 @@ def receive_question_vote(server, base_dir: str, nickname: str, domain: str,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
auto_cw_cache: {}) -> None:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Updates the votes on a Question/poll
|
"""Updates the votes on a Question/poll
|
||||||
"""
|
"""
|
||||||
# if this is a reply to a question then update the votes
|
# if this is a reply to a question then update the votes
|
||||||
|
@ -2023,7 +2040,8 @@ def receive_question_vote(server, base_dir: str, nickname: str, domain: str,
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
# add id to inbox index
|
# add id to inbox index
|
||||||
inbox_update_index('inbox', base_dir, handle,
|
inbox_update_index('inbox', base_dir, handle,
|
||||||
|
@ -2048,4 +2066,5 @@ def receive_question_vote(server, base_dir: str, nickname: str, domain: str,
|
||||||
shared_items_federated_domains,
|
shared_items_federated_domains,
|
||||||
shared_item_federation_tokens,
|
shared_item_federation_tokens,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
|
@ -175,7 +175,8 @@ def receive_undo_like(recent_posts_cache: {},
|
||||||
bold_reading: bool, dogwhistles: {},
|
bold_reading: bool, dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an undo like activity within the POST section of HTTPServer
|
"""Receives an undo like activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'Undo':
|
if message_json['type'] != 'Undo':
|
||||||
|
@ -278,7 +279,8 @@ def receive_undo_like(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -301,7 +303,8 @@ def receive_undo_reaction(recent_posts_cache: {},
|
||||||
bold_reading: bool, dogwhistles: {},
|
bold_reading: bool, dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an undo emoji reaction within the POST section of HTTPServer
|
"""Receives an undo emoji reaction within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if message_json['type'] != 'Undo':
|
if message_json['type'] != 'Undo':
|
||||||
|
@ -422,7 +425,8 @@ def receive_undo_reaction(recent_posts_cache: {},
|
||||||
lists_enabled, timezone, mitm,
|
lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -444,7 +448,8 @@ def receive_undo_bookmark(recent_posts_cache: {},
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> bool:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Receives an undo bookmark activity within the POST section of HTTPServer
|
"""Receives an undo bookmark activity within the POST section of HTTPServer
|
||||||
"""
|
"""
|
||||||
if not message_json.get('type'):
|
if not message_json.get('type'):
|
||||||
|
@ -549,7 +554,8 @@ def receive_undo_bookmark(recent_posts_cache: {},
|
||||||
False, True, False, cw_lists, lists_enabled,
|
False, True, False, cw_lists, lists_enabled,
|
||||||
timezone, mitm, bold_reading,
|
timezone, mitm, bold_reading,
|
||||||
dogwhistles, minimize_all_images, None,
|
dogwhistles, minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
26
like.py
26
like.py
|
@ -82,7 +82,8 @@ def _create_like(recent_posts_cache: {},
|
||||||
curr_domain: str,
|
curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a like
|
"""Creates a like
|
||||||
actor is the person doing the liking
|
actor is the person doing the liking
|
||||||
'to' might be a specific person (actor) whose post was liked
|
'to' might be a specific person (actor) whose post was liked
|
||||||
|
@ -155,7 +156,7 @@ def _create_like(recent_posts_cache: {},
|
||||||
signing_priv_key_pem, 7367374,
|
signing_priv_key_pem, 7367374,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
return new_like_json
|
return new_like_json
|
||||||
|
|
||||||
|
@ -172,7 +173,8 @@ def like_post(recent_posts_cache: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
curr_domain: str, onion_domain: str, i2p_domain: str,
|
curr_domain: str, onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Likes a given status post. This is only used by unit tests
|
"""Likes a given status post. This is only used by unit tests
|
||||||
"""
|
"""
|
||||||
like_domain = get_full_domain(like_domain, like_port)
|
like_domain = get_full_domain(like_domain, like_port)
|
||||||
|
@ -189,7 +191,8 @@ def like_post(recent_posts_cache: {},
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
debug, project_version, signing_priv_key_pem,
|
debug, project_version, signing_priv_key_pem,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def send_like_via_server(base_dir: str, session,
|
def send_like_via_server(base_dir: str, session,
|
||||||
|
@ -199,7 +202,8 @@ def send_like_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a like via c2s
|
"""Creates a like via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -226,7 +230,7 @@ def send_like_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: like webfinger failed for ' + handle)
|
print('DEBUG: like webfinger failed for ' + handle)
|
||||||
|
@ -248,7 +252,7 @@ def send_like_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname, from_domain,
|
from_nickname, from_domain,
|
||||||
post_to_box, 72873,
|
post_to_box, 72873,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -287,7 +291,8 @@ def send_undo_like_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undo a like via c2s
|
"""Undo a like via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -318,7 +323,7 @@ def send_undo_like_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unlike webfinger failed for ' + handle)
|
print('DEBUG: unlike webfinger failed for ' + handle)
|
||||||
|
@ -340,7 +345,8 @@ def send_undo_like_via_server(base_dir: str, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
72625, system_language)
|
72625, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
|
@ -25,20 +25,21 @@ from threads import begin_thread
|
||||||
from session import create_session
|
from session import create_session
|
||||||
|
|
||||||
|
|
||||||
def manual_deny_follow_request(session, session_onion, session_i2p,
|
def manual_deny_follow_request2(session, session_onion, session_i2p,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
base_dir: str, http_prefix: str,
|
base_dir: str, http_prefix: str,
|
||||||
nickname: str, domain: str, port: int,
|
nickname: str, domain: str, port: int,
|
||||||
deny_handle: str,
|
deny_handle: str,
|
||||||
federation_list: [],
|
federation_list: [],
|
||||||
send_threads: [], post_log: [],
|
send_threads: [], post_log: [],
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool,
|
debug: bool,
|
||||||
project_version: str,
|
project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Manually deny a follow request
|
"""Manually deny a follow request
|
||||||
"""
|
"""
|
||||||
accounts_dir = acct_dir(base_dir, nickname, domain)
|
accounts_dir = acct_dir(base_dir, nickname, domain)
|
||||||
|
@ -61,7 +62,7 @@ def manual_deny_follow_request(session, session_onion, session_i2p,
|
||||||
encoding='utf-8') as fp_rejects:
|
encoding='utf-8') as fp_rejects:
|
||||||
fp_rejects.write(deny_handle + '\n')
|
fp_rejects.write(deny_handle + '\n')
|
||||||
except OSError:
|
except OSError:
|
||||||
print('EX: manual_deny_follow_request unable to append ' +
|
print('EX: manual_deny_follow_request2 unable to append ' +
|
||||||
rejected_follows_filename)
|
rejected_follows_filename)
|
||||||
|
|
||||||
deny_nickname = deny_handle.split('@')[0]
|
deny_nickname = deny_handle.split('@')[0]
|
||||||
|
@ -82,7 +83,7 @@ def manual_deny_follow_request(session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
print('Follow request from ' + deny_handle + ' was denied.')
|
print('Follow request from ' + deny_handle + ' was denied.')
|
||||||
|
|
||||||
|
@ -100,13 +101,14 @@ def manual_deny_follow_request_thread(session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Manually deny a follow request, within a thread so that the
|
"""Manually deny a follow request, within a thread so that the
|
||||||
user interface doesn't lag
|
user interface doesn't lag
|
||||||
"""
|
"""
|
||||||
print('THREAD: manual_deny_follow_request')
|
print('THREAD: manual_deny_follow_request2')
|
||||||
thr = \
|
thr = \
|
||||||
thread_with_trace(target=manual_deny_follow_request,
|
thread_with_trace(target=manual_deny_follow_request2,
|
||||||
args=(session, session_onion, session_i2p,
|
args=(session, session_onion, session_i2p,
|
||||||
onion_domain, i2p_domain,
|
onion_domain, i2p_domain,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
|
@ -120,7 +122,8 @@ def manual_deny_follow_request_thread(session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language), daemon=True)
|
system_language,
|
||||||
|
mitm_servers), daemon=True)
|
||||||
begin_thread(thr, 'manual_deny_follow_request_thread')
|
begin_thread(thr, 'manual_deny_follow_request_thread')
|
||||||
send_threads.append(thr)
|
send_threads.append(thr)
|
||||||
|
|
||||||
|
@ -164,7 +167,8 @@ def manual_approve_follow_request(session, session_onion, session_i2p,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Manually approve a follow request
|
"""Manually approve a follow request
|
||||||
"""
|
"""
|
||||||
handle = nickname + '@' + domain
|
handle = nickname + '@' + domain
|
||||||
|
@ -315,7 +319,8 @@ def manual_approve_follow_request(session, session_onion, session_i2p,
|
||||||
i2p_domain,
|
i2p_domain,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
update_approved_followers = True
|
update_approved_followers = True
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
print('EX: manual_approve_follow_request unable to write ' +
|
print('EX: manual_approve_follow_request unable to write ' +
|
||||||
|
@ -390,7 +395,8 @@ def manual_approve_follow_request_thread(session, session_onion, session_i2p,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Manually approve a follow request, in a thread so as not to cause
|
"""Manually approve a follow request, in a thread so as not to cause
|
||||||
the UI to lag
|
the UI to lag
|
||||||
"""
|
"""
|
||||||
|
@ -411,6 +417,7 @@ def manual_approve_follow_request_thread(session, session_onion, session_i2p,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language), daemon=True)
|
system_language,
|
||||||
|
mitm_servers), daemon=True)
|
||||||
begin_thread(thr, 'manual_approve_follow_request_thread')
|
begin_thread(thr, 'manual_approve_follow_request_thread')
|
||||||
send_threads.append(thr)
|
send_threads.append(thr)
|
||||||
|
|
20
migrate.py
20
migrate.py
|
@ -28,7 +28,8 @@ def _move_following_handles_for_account(base_dir: str,
|
||||||
cached_webfingers: {},
|
cached_webfingers: {},
|
||||||
debug: bool,
|
debug: bool,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
block_federated: []) -> int:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Goes through all follows for an account and updates any that have moved
|
"""Goes through all follows for an account and updates any that have moved
|
||||||
"""
|
"""
|
||||||
ctr = 0
|
ctr = 0
|
||||||
|
@ -46,7 +47,7 @@ def _move_following_handles_for_account(base_dir: str,
|
||||||
follow_handle, session,
|
follow_handle, session,
|
||||||
http_prefix, cached_webfingers,
|
http_prefix, cached_webfingers,
|
||||||
debug, signing_priv_key_pem,
|
debug, signing_priv_key_pem,
|
||||||
block_federated)
|
block_federated, mitm_servers)
|
||||||
except OSError:
|
except OSError:
|
||||||
print('EX: _move_following_handles_for_account unable to read ' +
|
print('EX: _move_following_handles_for_account unable to read ' +
|
||||||
following_filename)
|
following_filename)
|
||||||
|
@ -57,7 +58,8 @@ def _update_moved_handle(base_dir: str, nickname: str, domain: str,
|
||||||
handle: str, session,
|
handle: str, session,
|
||||||
http_prefix: str, cached_webfingers: {},
|
http_prefix: str, cached_webfingers: {},
|
||||||
debug: bool, signing_priv_key_pem: str,
|
debug: bool, signing_priv_key_pem: str,
|
||||||
block_federated: []) -> int:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Check if an account has moved, and if so then alter following.txt
|
"""Check if an account has moved, and if so then alter following.txt
|
||||||
for each account.
|
for each account.
|
||||||
Returns 1 if moved, 0 otherwise
|
Returns 1 if moved, 0 otherwise
|
||||||
|
@ -72,7 +74,8 @@ def _update_moved_handle(base_dir: str, nickname: str, domain: str,
|
||||||
wf_request = webfinger_handle(session, handle,
|
wf_request = webfinger_handle(session, handle,
|
||||||
http_prefix, cached_webfingers,
|
http_prefix, cached_webfingers,
|
||||||
domain, __version__, debug, False,
|
domain, __version__, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
print('updateMovedHandle unable to webfinger ' + handle)
|
print('updateMovedHandle unable to webfinger ' + handle)
|
||||||
return ctr
|
return ctr
|
||||||
|
@ -101,10 +104,11 @@ def _update_moved_handle(base_dir: str, nickname: str, domain: str,
|
||||||
ipns = False
|
ipns = False
|
||||||
if http_prefix == 'ipns':
|
if http_prefix == 'ipns':
|
||||||
ipns = True
|
ipns = True
|
||||||
|
mitm_servers = []
|
||||||
person_json = \
|
person_json = \
|
||||||
get_actor_json(domain, person_url, http_prefix, gnunet, ipfs, ipns,
|
get_actor_json(domain, person_url, http_prefix, gnunet, ipfs, ipns,
|
||||||
debug, False,
|
debug, False,
|
||||||
signing_priv_key_pem, None)
|
signing_priv_key_pem, None, mitm_servers)
|
||||||
if not person_json:
|
if not person_json:
|
||||||
return ctr
|
return ctr
|
||||||
if not person_json.get('movedTo'):
|
if not person_json.get('movedTo'):
|
||||||
|
@ -221,7 +225,8 @@ def _update_moved_handle(base_dir: str, nickname: str, domain: str,
|
||||||
def migrate_accounts(base_dir: str, session,
|
def migrate_accounts(base_dir: str, session,
|
||||||
http_prefix: str, cached_webfingers: {},
|
http_prefix: str, cached_webfingers: {},
|
||||||
debug: bool, signing_priv_key_pem: str,
|
debug: bool, signing_priv_key_pem: str,
|
||||||
block_federated: []) -> int:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""If followed accounts change then this modifies the
|
"""If followed accounts change then this modifies the
|
||||||
following lists for each account accordingly.
|
following lists for each account accordingly.
|
||||||
Returns the number of accounts migrated
|
Returns the number of accounts migrated
|
||||||
|
@ -240,6 +245,7 @@ def migrate_accounts(base_dir: str, session,
|
||||||
session, http_prefix,
|
session, http_prefix,
|
||||||
cached_webfingers, debug,
|
cached_webfingers, debug,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
block_federated)
|
block_federated,
|
||||||
|
mitm_servers)
|
||||||
break
|
break
|
||||||
return ctr
|
return ctr
|
||||||
|
|
15
outbox.py
15
outbox.py
|
@ -299,7 +299,8 @@ def post_message_to_outbox(session, translate: {},
|
||||||
books_cache: {},
|
books_cache: {},
|
||||||
max_cached_readers: int,
|
max_cached_readers: int,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
block_federated: []) -> bool:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""post is received by the outbox
|
"""post is received by the outbox
|
||||||
Client to server message post
|
Client to server message post
|
||||||
https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery
|
https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery
|
||||||
|
@ -618,7 +619,8 @@ def post_message_to_outbox(session, translate: {},
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
bold_reading,
|
bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood):
|
languages_understood,
|
||||||
|
mitm_servers):
|
||||||
inbox_update_index('tlmedia', base_dir,
|
inbox_update_index('tlmedia', base_dir,
|
||||||
post_to_nickname + '@' + domain,
|
post_to_nickname + '@' + domain,
|
||||||
saved_filename, debug)
|
saved_filename, debug)
|
||||||
|
@ -679,7 +681,8 @@ def post_message_to_outbox(session, translate: {},
|
||||||
timezone, mitm,
|
timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if is_edited_post:
|
if is_edited_post:
|
||||||
message_json['type'] = 'Update'
|
message_json['type'] = 'Update'
|
||||||
|
@ -728,7 +731,8 @@ def post_message_to_outbox(session, translate: {},
|
||||||
shared_item_federation_tokens,
|
shared_item_federation_tokens,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
followers_threads.append(followers_thread)
|
followers_threads.append(followers_thread)
|
||||||
|
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -864,6 +868,7 @@ def post_message_to_outbox(session, translate: {},
|
||||||
proxy_type,
|
proxy_type,
|
||||||
server.followers_sync_cache,
|
server.followers_sync_cache,
|
||||||
server.sites_unavailable,
|
server.sites_unavailable,
|
||||||
server.system_language)
|
server.system_language,
|
||||||
|
server.mitm_servers)
|
||||||
followers_threads.append(named_addresses_thread)
|
followers_threads.append(named_addresses_thread)
|
||||||
return True
|
return True
|
||||||
|
|
15
person.py
15
person.py
|
@ -1758,7 +1758,7 @@ def get_actor_json(host_domain: str, handle: str, http: bool, gnunet: bool,
|
||||||
ipfs: bool, ipns: bool,
|
ipfs: bool, ipns: bool,
|
||||||
debug: bool, quiet: bool,
|
debug: bool, quiet: bool,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
existing_session) -> ({}, {}):
|
existing_session, mitm_servers: []) -> ({}, {}):
|
||||||
"""Returns the actor json
|
"""Returns the actor json
|
||||||
"""
|
"""
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1887,7 +1887,8 @@ def get_actor_json(host_domain: str, handle: str, http: bool, gnunet: bool,
|
||||||
wf_request = webfinger_handle(session, handle,
|
wf_request = webfinger_handle(session, handle,
|
||||||
http_prefix, cached_webfingers,
|
http_prefix, cached_webfingers,
|
||||||
host_domain, __version__, debug,
|
host_domain, __version__, debug,
|
||||||
group_account, signing_priv_key_pem)
|
group_account, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if not quiet:
|
if not quiet:
|
||||||
print('get_actor_json Unable to webfinger ' + handle +
|
print('get_actor_json Unable to webfinger ' + handle +
|
||||||
|
@ -1949,8 +1950,8 @@ def get_actor_json(host_domain: str, handle: str, http: bool, gnunet: bool,
|
||||||
}
|
}
|
||||||
person_json = \
|
person_json = \
|
||||||
get_json(signing_priv_key_pem, session, person_url, as_header,
|
get_json(signing_priv_key_pem, session, person_url, as_header,
|
||||||
None, debug, __version__, http_prefix, host_domain,
|
None, debug, mitm_servers, __version__, http_prefix,
|
||||||
20, quiet)
|
host_domain, 20, quiet)
|
||||||
if get_json_valid(person_json):
|
if get_json_valid(person_json):
|
||||||
if not quiet:
|
if not quiet:
|
||||||
pprint(person_json)
|
pprint(person_json)
|
||||||
|
@ -2018,7 +2019,8 @@ def valid_sending_actor(session, base_dir: str,
|
||||||
post_json_object: {},
|
post_json_object: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
debug: bool, unit_test: bool,
|
debug: bool, unit_test: bool,
|
||||||
system_language: str) -> bool:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""When a post arrives in the inbox this is used to check that
|
"""When a post arrives in the inbox this is used to check that
|
||||||
the sending actor is valid
|
the sending actor is valid
|
||||||
"""
|
"""
|
||||||
|
@ -2049,7 +2051,8 @@ def valid_sending_actor(session, base_dir: str,
|
||||||
actor_json, _ = get_actor_json(domain, sending_actor,
|
actor_json, _ = get_actor_json(domain, sending_actor,
|
||||||
True, gnunet, ipfs, ipns,
|
True, gnunet, ipfs, ipns,
|
||||||
debug, True,
|
debug, True,
|
||||||
signing_priv_key_pem, session)
|
signing_priv_key_pem, session,
|
||||||
|
mitm_servers)
|
||||||
if not actor_json:
|
if not actor_json:
|
||||||
# if the actor couldn't be obtained then proceed anyway
|
# if the actor couldn't be obtained then proceed anyway
|
||||||
return True
|
return True
|
||||||
|
|
30
pgp.py
30
pgp.py
|
@ -442,21 +442,24 @@ def has_local_pg_pkey() -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def pgp_encrypt_to_actor(domain: str, content: str, toHandle: str,
|
def pgp_encrypt_to_actor(domain: str, content: str, to_handle: str,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""PGP encrypt a message to the given actor or handle
|
"""PGP encrypt a message to the given actor or handle
|
||||||
"""
|
"""
|
||||||
# get the actor and extract the pgp public key from it
|
# get the actor and extract the pgp public key from it
|
||||||
recipient_pub_key = \
|
recipient_pub_key = \
|
||||||
_get_pgp_public_key_from_actor(signing_priv_key_pem, domain, toHandle)
|
_get_pgp_public_key_from_actor(signing_priv_key_pem, domain, to_handle,
|
||||||
|
mitm_servers)
|
||||||
if not recipient_pub_key:
|
if not recipient_pub_key:
|
||||||
return None
|
return None
|
||||||
# encrypt using the recipient public key
|
# encrypt using the recipient public key
|
||||||
return _pgp_encrypt(content, recipient_pub_key)
|
return _pgp_encrypt(content, recipient_pub_key)
|
||||||
|
|
||||||
|
|
||||||
def pgp_decrypt(domain: str, content: str, fromHandle: str,
|
def pgp_decrypt(domain: str, content: str, from_handle: str,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
""" Encrypt using your default pgp key to the given recipient
|
""" Encrypt using your default pgp key to the given recipient
|
||||||
fromHandle can be a handle or actor url
|
fromHandle can be a handle or actor url
|
||||||
"""
|
"""
|
||||||
|
@ -469,7 +472,8 @@ def pgp_decrypt(domain: str, content: str, fromHandle: str,
|
||||||
else:
|
else:
|
||||||
pub_key = \
|
pub_key = \
|
||||||
_get_pgp_public_key_from_actor(signing_priv_key_pem,
|
_get_pgp_public_key_from_actor(signing_priv_key_pem,
|
||||||
domain, content, fromHandle)
|
domain, content, from_handle,
|
||||||
|
mitm_servers)
|
||||||
if pub_key:
|
if pub_key:
|
||||||
_pgp_import_pub_key(pub_key)
|
_pgp_import_pub_key(pub_key)
|
||||||
|
|
||||||
|
@ -522,6 +526,7 @@ def pgp_local_public_key() -> str:
|
||||||
|
|
||||||
def _get_pgp_public_key_from_actor(signing_priv_key_pem: str,
|
def _get_pgp_public_key_from_actor(signing_priv_key_pem: str,
|
||||||
domain: str, handle: str,
|
domain: str, handle: str,
|
||||||
|
mitm_servers: [],
|
||||||
actor_json: {} = None) -> str:
|
actor_json: {} = None) -> str:
|
||||||
"""Searches tags on the actor to see if there is any PGP
|
"""Searches tags on the actor to see if there is any PGP
|
||||||
public key specified
|
public key specified
|
||||||
|
@ -529,7 +534,8 @@ def _get_pgp_public_key_from_actor(signing_priv_key_pem: str,
|
||||||
if not actor_json:
|
if not actor_json:
|
||||||
actor_json, _ = \
|
actor_json, _ = \
|
||||||
get_actor_json(domain, handle, False, False, False, False,
|
get_actor_json(domain, handle, False, False, False, False,
|
||||||
False, True, signing_priv_key_pem, None)
|
False, True, signing_priv_key_pem, None,
|
||||||
|
mitm_servers)
|
||||||
if not actor_json:
|
if not actor_json:
|
||||||
return None
|
return None
|
||||||
if not actor_json.get('attachment'):
|
if not actor_json.get('attachment'):
|
||||||
|
@ -557,7 +563,8 @@ def pgp_public_key_upload(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, test: str,
|
debug: bool, test: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
if debug:
|
if debug:
|
||||||
print('pgp_public_key_upload')
|
print('pgp_public_key_upload')
|
||||||
|
|
||||||
|
@ -590,7 +597,8 @@ def pgp_public_key_upload(base_dir: str, session,
|
||||||
|
|
||||||
actor_json, _ = \
|
actor_json, _ = \
|
||||||
get_actor_json(domain_full, handle, False, False, False, False,
|
get_actor_json(domain_full, handle, False, False, False, False,
|
||||||
debug, True, signing_priv_key_pem, session)
|
debug, True, signing_priv_key_pem, session,
|
||||||
|
mitm_servers)
|
||||||
if not actor_json:
|
if not actor_json:
|
||||||
if debug:
|
if debug:
|
||||||
print('No actor returned for ' + handle)
|
print('No actor returned for ' + handle)
|
||||||
|
@ -661,7 +669,7 @@ def pgp_public_key_upload(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
domain, __version__, debug, False,
|
domain, __version__, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: pgp actor update webfinger failed for ' +
|
print('DEBUG: pgp actor update webfinger failed for ' +
|
||||||
|
@ -683,7 +691,7 @@ def pgp_public_key_upload(base_dir: str, session,
|
||||||
person_cache,
|
person_cache,
|
||||||
__version__, http_prefix, nickname,
|
__version__, http_prefix, nickname,
|
||||||
domain, post_to_box, 35725,
|
domain, post_to_box, 35725,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
206
posts.py
206
posts.py
|
@ -261,7 +261,8 @@ def get_user_url(wf_request: {}, source_id: int, debug: bool) -> str:
|
||||||
def parse_user_feed(signing_priv_key_pem: str,
|
def parse_user_feed(signing_priv_key_pem: str,
|
||||||
session, feed_url: str, as_header: {},
|
session, feed_url: str, as_header: {},
|
||||||
project_version: str, http_prefix: str,
|
project_version: str, http_prefix: str,
|
||||||
origin_domain: str, debug: bool, depth: int) -> []:
|
origin_domain: str, debug: bool, depth: int,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Returns a feed of posts for an account url
|
"""Returns a feed of posts for an account url
|
||||||
"""
|
"""
|
||||||
if depth > 10:
|
if depth > 10:
|
||||||
|
@ -277,7 +278,8 @@ def parse_user_feed(signing_priv_key_pem: str,
|
||||||
|
|
||||||
feed_json = \
|
feed_json = \
|
||||||
get_json(signing_priv_key_pem, session, feed_url, as_header, None,
|
get_json(signing_priv_key_pem, session, feed_url, as_header, None,
|
||||||
debug, project_version, http_prefix, origin_domain)
|
debug, mitm_servers, project_version, http_prefix,
|
||||||
|
origin_domain)
|
||||||
if not get_json_valid(feed_json):
|
if not get_json_valid(feed_json):
|
||||||
profile_str = 'https://www.w3.org/ns/activitystreams'
|
profile_str = 'https://www.w3.org/ns/activitystreams'
|
||||||
accept_str = 'application/ld+json; profile="' + profile_str + '"'
|
accept_str = 'application/ld+json; profile="' + profile_str + '"'
|
||||||
|
@ -286,8 +288,8 @@ def parse_user_feed(signing_priv_key_pem: str,
|
||||||
'Accept': accept_str
|
'Accept': accept_str
|
||||||
}
|
}
|
||||||
feed_json = get_json(signing_priv_key_pem, session, feed_url,
|
feed_json = get_json(signing_priv_key_pem, session, feed_url,
|
||||||
as_header, None, debug, project_version,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, origin_domain)
|
project_version, http_prefix, origin_domain)
|
||||||
if not get_json_valid(feed_json):
|
if not get_json_valid(feed_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('No user feed was returned')
|
print('No user feed was returned')
|
||||||
|
@ -318,7 +320,8 @@ def parse_user_feed(signing_priv_key_pem: str,
|
||||||
parse_user_feed(signing_priv_key_pem,
|
parse_user_feed(signing_priv_key_pem,
|
||||||
session, next_url, as_header,
|
session, next_url, as_header,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
origin_domain, debug, depth + 1)
|
origin_domain, debug, depth + 1,
|
||||||
|
mitm_servers)
|
||||||
if user_feed:
|
if user_feed:
|
||||||
return user_feed
|
return user_feed
|
||||||
elif isinstance(next_url, dict):
|
elif isinstance(next_url, dict):
|
||||||
|
@ -336,7 +339,8 @@ def _get_person_box_actor(session, base_dir: str, actor: str,
|
||||||
http_prefix: str, origin_domain: str,
|
http_prefix: str, origin_domain: str,
|
||||||
person_cache: {},
|
person_cache: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
source_id: int) -> {}:
|
source_id: int,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns the actor json for the given actor url
|
"""Returns the actor json for the given actor url
|
||||||
"""
|
"""
|
||||||
person_json = \
|
person_json = \
|
||||||
|
@ -350,7 +354,8 @@ def _get_person_box_actor(session, base_dir: str, actor: str,
|
||||||
}
|
}
|
||||||
person_json = \
|
person_json = \
|
||||||
get_json(signing_priv_key_pem, session, actor, as_header, None,
|
get_json(signing_priv_key_pem, session, actor, as_header, None,
|
||||||
debug, project_version, http_prefix, origin_domain)
|
debug, mitm_servers, project_version, http_prefix,
|
||||||
|
origin_domain)
|
||||||
if get_json_valid(person_json):
|
if get_json_valid(person_json):
|
||||||
return person_json
|
return person_json
|
||||||
as_header = {
|
as_header = {
|
||||||
|
@ -358,7 +363,8 @@ def _get_person_box_actor(session, base_dir: str, actor: str,
|
||||||
}
|
}
|
||||||
person_json = \
|
person_json = \
|
||||||
get_json(signing_priv_key_pem, session, actor, as_header, None,
|
get_json(signing_priv_key_pem, session, actor, as_header, None,
|
||||||
debug, project_version, http_prefix, origin_domain)
|
debug, mitm_servers, project_version, http_prefix,
|
||||||
|
origin_domain)
|
||||||
if get_json_valid(person_json):
|
if get_json_valid(person_json):
|
||||||
return person_json
|
return person_json
|
||||||
print('Unable to get actor for ' + actor + ' ' + str(source_id))
|
print('Unable to get actor for ' + actor + ' ' + str(source_id))
|
||||||
|
@ -372,8 +378,9 @@ def get_person_box(signing_priv_key_pem: str, origin_domain: str,
|
||||||
project_version: str, http_prefix: str,
|
project_version: str, http_prefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
box_name: str, source_id: int,
|
box_name: str, source_id: int,
|
||||||
system_language: str) -> (str, str, str, str, str,
|
system_language: str,
|
||||||
str, str, bool):
|
mitm_servers: []) -> (str, str, str, str, str,
|
||||||
|
str, str, bool):
|
||||||
debug = False
|
debug = False
|
||||||
profile_str = 'https://www.w3.org/ns/activitystreams'
|
profile_str = 'https://www.w3.org/ns/activitystreams'
|
||||||
as_header = {
|
as_header = {
|
||||||
|
@ -408,7 +415,7 @@ def get_person_box(signing_priv_key_pem: str, origin_domain: str,
|
||||||
debug, project_version,
|
debug, project_version,
|
||||||
http_prefix, origin_domain,
|
http_prefix, origin_domain,
|
||||||
person_cache, signing_priv_key_pem,
|
person_cache, signing_priv_key_pem,
|
||||||
source_id)
|
source_id, mitm_servers)
|
||||||
if not person_json:
|
if not person_json:
|
||||||
return None, None, None, None, None, None, None, None
|
return None, None, None, None, None, None, None, None
|
||||||
|
|
||||||
|
@ -597,7 +604,8 @@ def _get_posts(session, outbox_url: str, max_posts: int,
|
||||||
simple: bool, debug: bool,
|
simple: bool, debug: bool,
|
||||||
project_version: str, http_prefix: str,
|
project_version: str, http_prefix: str,
|
||||||
origin_domain: str, system_language: str,
|
origin_domain: str, system_language: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets public posts from an outbox
|
"""Gets public posts from an outbox
|
||||||
"""
|
"""
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -627,7 +635,8 @@ def _get_posts(session, outbox_url: str, max_posts: int,
|
||||||
user_feed = parse_user_feed(signing_priv_key_pem,
|
user_feed = parse_user_feed(signing_priv_key_pem,
|
||||||
session, outbox_url, as_header,
|
session, outbox_url, as_header,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
origin_domain, debug, 0)
|
origin_domain, debug, 0,
|
||||||
|
mitm_servers)
|
||||||
if user_feed:
|
if user_feed:
|
||||||
for item in user_feed:
|
for item in user_feed:
|
||||||
result.append(item)
|
result.append(item)
|
||||||
|
@ -642,7 +651,8 @@ def _get_posts(session, outbox_url: str, max_posts: int,
|
||||||
user_feed = parse_user_feed(signing_priv_key_pem,
|
user_feed = parse_user_feed(signing_priv_key_pem,
|
||||||
session, outbox_url, as_header,
|
session, outbox_url, as_header,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
origin_domain, debug, 0)
|
origin_domain, debug, 0,
|
||||||
|
mitm_servers)
|
||||||
if not user_feed:
|
if not user_feed:
|
||||||
return person_posts
|
return person_posts
|
||||||
|
|
||||||
|
@ -668,8 +678,8 @@ def _get_posts(session, outbox_url: str, max_posts: int,
|
||||||
}
|
}
|
||||||
this_item = \
|
this_item = \
|
||||||
get_json(signing_priv_key_pem, session, this_item,
|
get_json(signing_priv_key_pem, session, this_item,
|
||||||
as_header2, None, debug, __version__,
|
as_header2, None, debug, mitm_servers,
|
||||||
http_prefix, origin_domain)
|
__version__, http_prefix, origin_domain)
|
||||||
if not get_json_valid(this_item):
|
if not get_json_valid(this_item):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -834,7 +844,8 @@ def _update_word_frequency(content: str, word_frequency: {}) -> None:
|
||||||
def get_post_domains(session, outbox_url: str, max_posts: int, debug: bool,
|
def get_post_domains(session, outbox_url: str, max_posts: int, debug: bool,
|
||||||
project_version: str, http_prefix: str, domain: str,
|
project_version: str, http_prefix: str, domain: str,
|
||||||
word_frequency: {}, domain_list: [],
|
word_frequency: {}, domain_list: [],
|
||||||
system_language: str, signing_priv_key_pem: str) -> []:
|
system_language: str, signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Returns a list of domains referenced within public posts
|
"""Returns a list of domains referenced within public posts
|
||||||
"""
|
"""
|
||||||
if not outbox_url:
|
if not outbox_url:
|
||||||
|
@ -860,7 +871,7 @@ def get_post_domains(session, outbox_url: str, max_posts: int, debug: bool,
|
||||||
user_feed = parse_user_feed(signing_priv_key_pem,
|
user_feed = parse_user_feed(signing_priv_key_pem,
|
||||||
session, outbox_url, as_header,
|
session, outbox_url, as_header,
|
||||||
project_version, http_prefix, domain,
|
project_version, http_prefix, domain,
|
||||||
debug, 0)
|
debug, 0, mitm_servers)
|
||||||
if not user_feed:
|
if not user_feed:
|
||||||
return post_domains
|
return post_domains
|
||||||
|
|
||||||
|
@ -906,7 +917,8 @@ def _get_posts_for_blocked_domains(base_dir: str,
|
||||||
debug: bool,
|
debug: bool,
|
||||||
project_version: str, http_prefix: str,
|
project_version: str, http_prefix: str,
|
||||||
domain: str,
|
domain: str,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns a dictionary of posts for blocked domains
|
"""Returns a dictionary of posts for blocked domains
|
||||||
"""
|
"""
|
||||||
if not outbox_url:
|
if not outbox_url:
|
||||||
|
@ -932,7 +944,7 @@ def _get_posts_for_blocked_domains(base_dir: str,
|
||||||
user_feed = parse_user_feed(signing_priv_key_pem,
|
user_feed = parse_user_feed(signing_priv_key_pem,
|
||||||
session, outbox_url, as_header,
|
session, outbox_url, as_header,
|
||||||
project_version, http_prefix, domain,
|
project_version, http_prefix, domain,
|
||||||
debug, 0)
|
debug, 0, mitm_servers)
|
||||||
if not user_feed:
|
if not user_feed:
|
||||||
return blocked_posts
|
return blocked_posts
|
||||||
|
|
||||||
|
@ -3090,7 +3102,8 @@ def send_post(signing_priv_key_pem: str, project_version: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
debug: bool, in_reply_to: str,
|
debug: bool, in_reply_to: str,
|
||||||
in_reply_to_atom_uri: str, subject: str,
|
in_reply_to_atom_uri: str, subject: str,
|
||||||
searchable_by: []) -> int:
|
searchable_by: [],
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Post to another inbox. Used by unit tests.
|
"""Post to another inbox. Used by unit tests.
|
||||||
"""
|
"""
|
||||||
with_digest = True
|
with_digest = True
|
||||||
|
@ -3109,7 +3122,7 @@ def send_post(signing_priv_key_pem: str, project_version: str,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
return 1
|
return 1
|
||||||
if not isinstance(wf_request, dict):
|
if not isinstance(wf_request, dict):
|
||||||
|
@ -3133,7 +3146,8 @@ def send_post(signing_priv_key_pem: str, project_version: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, post_to_box,
|
nickname, domain, post_to_box,
|
||||||
72533, system_language)
|
72533, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
return 3
|
return 3
|
||||||
|
@ -3299,7 +3313,8 @@ def send_post_via_server(signing_priv_key_pem: str, project_version: str,
|
||||||
debug: bool, in_reply_to: str,
|
debug: bool, in_reply_to: str,
|
||||||
in_reply_to_atom_uri: str,
|
in_reply_to_atom_uri: str,
|
||||||
conversation_id: str, convthread_id: str,
|
conversation_id: str, convthread_id: str,
|
||||||
subject: str, searchable_by: []) -> int:
|
subject: str, searchable_by: [],
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Send a post via a proxy (c2s)
|
"""Send a post via a proxy (c2s)
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -3314,7 +3329,7 @@ def send_post_via_server(signing_priv_key_pem: str, project_version: str,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain_full, project_version, debug, False,
|
from_domain_full, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: post webfinger failed for ' + handle)
|
print('DEBUG: post webfinger failed for ' + handle)
|
||||||
|
@ -3338,7 +3353,8 @@ def send_post_via_server(signing_priv_key_pem: str, project_version: str,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain_full, post_to_box,
|
from_domain_full, post_to_box,
|
||||||
82796, system_language)
|
82796, system_language,
|
||||||
|
mitm_servers)
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: post no ' + post_to_box +
|
print('DEBUG: post no ' + post_to_box +
|
||||||
|
@ -3519,7 +3535,8 @@ def send_signed_json(post_json_object: {}, session, base_dir: str,
|
||||||
source_id: int, curr_domain: str,
|
source_id: int, curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
extra_headers: {}, sites_unavailable: [],
|
extra_headers: {}, sites_unavailable: [],
|
||||||
system_language: str) -> int:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> int:
|
||||||
"""Sends a signed json object to an inbox/outbox
|
"""Sends a signed json object to an inbox/outbox
|
||||||
"""
|
"""
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -3565,7 +3582,8 @@ def send_signed_json(post_json_object: {}, session, base_dir: str,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
ua_domain, project_version, debug,
|
ua_domain, project_version, debug,
|
||||||
group_account, signing_priv_key_pem)
|
group_account, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: send_signed_json webfinger for ' +
|
print('DEBUG: send_signed_json webfinger for ' +
|
||||||
|
@ -3595,7 +3613,8 @@ def send_signed_json(post_json_object: {}, session, base_dir: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, post_to_box,
|
nickname, domain, post_to_box,
|
||||||
source_id, system_language)
|
source_id, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
print("send_signed_json inbox_url: " + str(inbox_url))
|
print("send_signed_json inbox_url: " + str(inbox_url))
|
||||||
print("send_signed_json to_person_id: " + str(to_person_id))
|
print("send_signed_json to_person_id: " + str(to_person_id))
|
||||||
|
@ -3841,7 +3860,8 @@ def _send_to_named_addresses(server, session, session_onion, session_i2p,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""sends a post to the specific named addresses in to/cc
|
"""sends a post to the specific named addresses in to/cc
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -4039,7 +4059,7 @@ def _send_to_named_addresses(server, session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem, 34436782,
|
signing_priv_key_pem, 34436782,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def send_to_named_addresses_thread(server, session, session_onion, session_i2p,
|
def send_to_named_addresses_thread(server, session, session_onion, session_i2p,
|
||||||
|
@ -4057,7 +4077,8 @@ def send_to_named_addresses_thread(server, session, session_onion, session_i2p,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
followers_sync_cache: {},
|
followers_sync_cache: {},
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str):
|
system_language: str,
|
||||||
|
mitm_servers: []):
|
||||||
"""Returns a thread used to send a post to named addresses
|
"""Returns a thread used to send a post to named addresses
|
||||||
"""
|
"""
|
||||||
print('THREAD: _send_to_named_addresses')
|
print('THREAD: _send_to_named_addresses')
|
||||||
|
@ -4077,7 +4098,8 @@ def send_to_named_addresses_thread(server, session, session_onion, session_i2p,
|
||||||
proxy_type,
|
proxy_type,
|
||||||
followers_sync_cache,
|
followers_sync_cache,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language), daemon=True)
|
system_language,
|
||||||
|
mitm_servers), daemon=True)
|
||||||
if not begin_thread(send_thread, 'send_to_named_addresses_thread'):
|
if not begin_thread(send_thread, 'send_to_named_addresses_thread'):
|
||||||
print('WARN: socket error while starting ' +
|
print('WARN: socket error while starting ' +
|
||||||
'thread to send to named addresses.')
|
'thread to send to named addresses.')
|
||||||
|
@ -4087,7 +4109,7 @@ def send_to_named_addresses_thread(server, session, session_onion, session_i2p,
|
||||||
|
|
||||||
def _has_shared_inbox(session, http_prefix: str, domain: str,
|
def _has_shared_inbox(session, http_prefix: str, domain: str,
|
||||||
debug: bool, signing_priv_key_pem: str,
|
debug: bool, signing_priv_key_pem: str,
|
||||||
ua_domain: str) -> bool:
|
ua_domain: str, mitm_servers: []) -> bool:
|
||||||
"""Returns true if the given domain has a shared inbox
|
"""Returns true if the given domain has a shared inbox
|
||||||
This tries the new and the old way of webfingering the shared inbox
|
This tries the new and the old way of webfingering the shared inbox
|
||||||
"""
|
"""
|
||||||
|
@ -4098,7 +4120,7 @@ def _has_shared_inbox(session, http_prefix: str, domain: str,
|
||||||
for handle in try_handles:
|
for handle in try_handles:
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix, {},
|
wf_request = webfinger_handle(session, handle, http_prefix, {},
|
||||||
ua_domain, __version__, debug, False,
|
ua_domain, __version__, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if wf_request:
|
if wf_request:
|
||||||
if isinstance(wf_request, dict):
|
if isinstance(wf_request, dict):
|
||||||
if not wf_request.get('errors'):
|
if not wf_request.get('errors'):
|
||||||
|
@ -4131,7 +4153,8 @@ def send_to_followers(server, session, session_onion, session_i2p,
|
||||||
shared_item_federation_tokens: {},
|
shared_item_federation_tokens: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""sends a post to the followers of the given nickname
|
"""sends a post to the followers of the given nickname
|
||||||
"""
|
"""
|
||||||
print('send_to_followers')
|
print('send_to_followers')
|
||||||
|
@ -4223,7 +4246,8 @@ def send_to_followers(server, session, session_onion, session_i2p,
|
||||||
|
|
||||||
with_shared_inbox = \
|
with_shared_inbox = \
|
||||||
_has_shared_inbox(curr_session, curr_http_prefix, follower_domain,
|
_has_shared_inbox(curr_session, curr_http_prefix, follower_domain,
|
||||||
debug, signing_priv_key_pem, ua_domain)
|
debug, signing_priv_key_pem, ua_domain,
|
||||||
|
mitm_servers)
|
||||||
if debug:
|
if debug:
|
||||||
if with_shared_inbox:
|
if with_shared_inbox:
|
||||||
print(follower_domain + ' has shared inbox')
|
print(follower_domain + ' has shared inbox')
|
||||||
|
@ -4304,7 +4328,7 @@ def send_to_followers(server, session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem, 639342,
|
signing_priv_key_pem, 639342,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
else:
|
else:
|
||||||
# randomize the order of handles, so that we are not
|
# randomize the order of handles, so that we are not
|
||||||
# favoring any particular account in terms of its delivery time
|
# favoring any particular account in terms of its delivery time
|
||||||
|
@ -4339,7 +4363,7 @@ def send_to_followers(server, session, session_onion, session_i2p,
|
||||||
signing_priv_key_pem, 634219,
|
signing_priv_key_pem, 634219,
|
||||||
domain, onion_domain, i2p_domain,
|
domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
time.sleep(4)
|
time.sleep(4)
|
||||||
|
|
||||||
|
@ -4364,7 +4388,8 @@ def send_to_followers_thread(server, session, session_onion, session_i2p,
|
||||||
shared_item_federation_tokens: {},
|
shared_item_federation_tokens: {},
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str):
|
system_language: str,
|
||||||
|
mitm_servers: []):
|
||||||
"""Returns a thread used to send a post to followers
|
"""Returns a thread used to send a post to followers
|
||||||
"""
|
"""
|
||||||
print('THREAD: send_to_followers')
|
print('THREAD: send_to_followers')
|
||||||
|
@ -4382,7 +4407,8 @@ def send_to_followers_thread(server, session, session_onion, session_i2p,
|
||||||
shared_item_federation_tokens,
|
shared_item_federation_tokens,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language), daemon=True)
|
system_language,
|
||||||
|
mitm_servers), daemon=True)
|
||||||
if not begin_thread(send_thread, 'send_to_followers_thread'):
|
if not begin_thread(send_thread, 'send_to_followers_thread'):
|
||||||
print('WARN: error while starting ' +
|
print('WARN: error while starting ' +
|
||||||
'thread to send to followers.')
|
'thread to send to followers.')
|
||||||
|
@ -4577,7 +4603,8 @@ def is_image_media(session, base_dir: str, http_prefix: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
bold_reading: bool,
|
bold_reading: bool,
|
||||||
show_vote_posts: bool,
|
show_vote_posts: bool,
|
||||||
languages_understood: []) -> bool:
|
languages_understood: [],
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Returns true if the given post has attached image media
|
"""Returns true if the given post has attached image media
|
||||||
"""
|
"""
|
||||||
if post_json_object['type'] == 'Announce':
|
if post_json_object['type'] == 'Announce':
|
||||||
|
@ -4597,7 +4624,8 @@ def is_image_media(session, base_dir: str, http_prefix: str,
|
||||||
blocked_cache, block_federated,
|
blocked_cache, block_federated,
|
||||||
bold_reading,
|
bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood)
|
languages_understood,
|
||||||
|
mitm_servers)
|
||||||
if post_json_announce:
|
if post_json_announce:
|
||||||
post_json_object = post_json_announce
|
post_json_object = post_json_announce
|
||||||
if post_json_object['type'] != 'Create':
|
if post_json_object['type'] != 'Create':
|
||||||
|
@ -5721,7 +5749,8 @@ def get_public_posts_of_person(base_dir: str, nickname: str, domain: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
system_language: str,
|
system_language: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
origin_domain: str) -> None:
|
origin_domain: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
""" This is really just for test purposes
|
""" This is really just for test purposes
|
||||||
"""
|
"""
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -5750,7 +5779,7 @@ def get_public_posts_of_person(base_dir: str, nickname: str, domain: str,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
origin_domain, project_version, debug, group_account,
|
origin_domain, project_version, debug, group_account,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('No webfinger result was returned for ' + handle)
|
print('No webfinger result was returned for ' + handle)
|
||||||
|
@ -5769,7 +5798,8 @@ def get_public_posts_of_person(base_dir: str, nickname: str, domain: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, 'outbox',
|
nickname, domain, 'outbox',
|
||||||
62524, system_language)
|
62524, system_language,
|
||||||
|
mitm_servers)
|
||||||
if debug:
|
if debug:
|
||||||
print('Actor url: ' + str(person_id))
|
print('Actor url: ' + str(person_id))
|
||||||
if not person_id:
|
if not person_id:
|
||||||
|
@ -5781,7 +5811,7 @@ def get_public_posts_of_person(base_dir: str, nickname: str, domain: str,
|
||||||
_get_posts(session, person_url, 30, max_mentions, max_emoji,
|
_get_posts(session, person_url, 30, max_mentions, max_emoji,
|
||||||
max_attachments, federation_list, raw, simple, debug,
|
max_attachments, federation_list, raw, simple, debug,
|
||||||
project_version, http_prefix, origin_domain, system_language,
|
project_version, http_prefix, origin_domain, system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def get_public_post_domains(session, base_dir: str, nickname: str, domain: str,
|
def get_public_post_domains(session, base_dir: str, nickname: str, domain: str,
|
||||||
|
@ -5790,7 +5820,8 @@ def get_public_post_domains(session, base_dir: str, nickname: str, domain: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
word_frequency: {}, domain_list: [],
|
word_frequency: {}, domain_list: [],
|
||||||
system_language: str,
|
system_language: str,
|
||||||
signing_priv_key_pem: str) -> []:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
""" Returns a list of domains referenced within public posts
|
""" Returns a list of domains referenced within public posts
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -5805,7 +5836,7 @@ def get_public_post_domains(session, base_dir: str, nickname: str, domain: str,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
return domain_list
|
return domain_list
|
||||||
if not isinstance(wf_request, dict):
|
if not isinstance(wf_request, dict):
|
||||||
|
@ -5820,12 +5851,13 @@ def get_public_post_domains(session, base_dir: str, nickname: str, domain: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, 'outbox',
|
nickname, domain, 'outbox',
|
||||||
92522, system_language)
|
92522, system_language,
|
||||||
|
mitm_servers)
|
||||||
post_domains = \
|
post_domains = \
|
||||||
get_post_domains(session, person_url, 64, debug,
|
get_post_domains(session, person_url, 64, debug,
|
||||||
project_version, http_prefix, domain,
|
project_version, http_prefix, domain,
|
||||||
word_frequency, domain_list, system_language,
|
word_frequency, domain_list, system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
post_domains.sort()
|
post_domains.sort()
|
||||||
return post_domains
|
return post_domains
|
||||||
|
|
||||||
|
@ -5834,7 +5866,8 @@ def download_follow_collection(signing_priv_key_pem: str,
|
||||||
follow_type: str,
|
follow_type: str,
|
||||||
session, http_prefix: str,
|
session, http_prefix: str,
|
||||||
actor: str, page_number: int,
|
actor: str, page_number: int,
|
||||||
no_of_pages: int, debug: bool) -> []:
|
no_of_pages: int, debug: bool,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
"""Returns a list of following/followers for the given actor
|
"""Returns a list of following/followers for the given actor
|
||||||
by downloading the json for their following/followers collection
|
by downloading the json for their following/followers collection
|
||||||
"""
|
"""
|
||||||
|
@ -5859,7 +5892,7 @@ def download_follow_collection(signing_priv_key_pem: str,
|
||||||
actor + '/' + follow_type + '?page=' + str(page_number + page_ctr)
|
actor + '/' + follow_type + '?page=' + str(page_number + page_ctr)
|
||||||
followers_json = \
|
followers_json = \
|
||||||
get_json(signing_priv_key_pem, session, url, session_headers, None,
|
get_json(signing_priv_key_pem, session, url, session_headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix, None)
|
||||||
if get_json_valid(followers_json):
|
if get_json_valid(followers_json):
|
||||||
if followers_json.get('orderedItems'):
|
if followers_json.get('orderedItems'):
|
||||||
for follower_actor in followers_json['orderedItems']:
|
for follower_actor in followers_json['orderedItems']:
|
||||||
|
@ -5881,7 +5914,8 @@ def get_public_post_info(session, base_dir: str, nickname: str, domain: str,
|
||||||
proxy_type: str, port: int, http_prefix: str,
|
proxy_type: str, port: int, http_prefix: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
word_frequency: {}, system_language: str,
|
word_frequency: {}, system_language: str,
|
||||||
signing_priv_key_pem: str) -> []:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
""" Returns a dict of domains referenced within public posts
|
""" Returns a dict of domains referenced within public posts
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -5896,7 +5930,7 @@ def get_public_post_info(session, base_dir: str, nickname: str, domain: str,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
return {}
|
return {}
|
||||||
if not isinstance(wf_request, dict):
|
if not isinstance(wf_request, dict):
|
||||||
|
@ -5911,13 +5945,14 @@ def get_public_post_info(session, base_dir: str, nickname: str, domain: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, 'outbox',
|
nickname, domain, 'outbox',
|
||||||
13863, system_language)
|
13863, system_language,
|
||||||
|
mitm_servers)
|
||||||
max_posts = 64
|
max_posts = 64
|
||||||
post_domains = \
|
post_domains = \
|
||||||
get_post_domains(session, person_url, max_posts, debug,
|
get_post_domains(session, person_url, max_posts, debug,
|
||||||
project_version, http_prefix, domain,
|
project_version, http_prefix, domain,
|
||||||
word_frequency, [], system_language,
|
word_frequency, [], system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
post_domains.sort()
|
post_domains.sort()
|
||||||
domains_info = {}
|
domains_info = {}
|
||||||
for pdomain in post_domains:
|
for pdomain in post_domains:
|
||||||
|
@ -5929,7 +5964,8 @@ def get_public_post_info(session, base_dir: str, nickname: str, domain: str,
|
||||||
person_url, max_posts,
|
person_url, max_posts,
|
||||||
debug,
|
debug,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
domain, signing_priv_key_pem)
|
domain, signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
for blocked_domain, post_url_list in blocked_posts.items():
|
for blocked_domain, post_url_list in blocked_posts.items():
|
||||||
domains_info[blocked_domain] += post_url_list
|
domains_info[blocked_domain] += post_url_list
|
||||||
|
|
||||||
|
@ -5943,7 +5979,8 @@ def get_public_post_domains_blocked(session, base_dir: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
word_frequency: {}, domain_list: [],
|
word_frequency: {}, domain_list: [],
|
||||||
system_language: str,
|
system_language: str,
|
||||||
signing_priv_key_pem: str) -> []:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> []:
|
||||||
""" Returns a list of domains referenced within public posts which
|
""" Returns a list of domains referenced within public posts which
|
||||||
are globally blocked on this instance
|
are globally blocked on this instance
|
||||||
"""
|
"""
|
||||||
|
@ -5954,7 +5991,7 @@ def get_public_post_domains_blocked(session, base_dir: str,
|
||||||
proxy_type, port, http_prefix,
|
proxy_type, port, http_prefix,
|
||||||
debug, project_version,
|
debug, project_version,
|
||||||
word_frequency, domain_list, system_language,
|
word_frequency, domain_list, system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not post_domains:
|
if not post_domains:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
@ -6008,7 +6045,8 @@ def check_domains(session, base_dir: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
max_blocked_domains: int, single_check: bool,
|
max_blocked_domains: int, single_check: bool,
|
||||||
system_language: str,
|
system_language: str,
|
||||||
signing_priv_key_pem: str) -> None:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Checks follower accounts for references to globally blocked domains
|
"""Checks follower accounts for references to globally blocked domains
|
||||||
"""
|
"""
|
||||||
word_frequency = {}
|
word_frequency = {}
|
||||||
|
@ -6043,7 +6081,8 @@ def check_domains(session, base_dir: str,
|
||||||
debug, project_version,
|
debug, project_version,
|
||||||
word_frequency, [],
|
word_frequency, [],
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if blocked_domains:
|
if blocked_domains:
|
||||||
if len(blocked_domains) > max_blocked_domains:
|
if len(blocked_domains) > max_blocked_domains:
|
||||||
follower_warning_str += handle + '\n'
|
follower_warning_str += handle + '\n'
|
||||||
|
@ -6065,7 +6104,8 @@ def check_domains(session, base_dir: str,
|
||||||
debug, project_version,
|
debug, project_version,
|
||||||
word_frequency, [],
|
word_frequency, [],
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
if blocked_domains:
|
if blocked_domains:
|
||||||
print(handle)
|
print(handle)
|
||||||
for bdomain in blocked_domains:
|
for bdomain in blocked_domains:
|
||||||
|
@ -6187,7 +6227,8 @@ def download_announce(session, base_dir: str, http_prefix: str,
|
||||||
blocked_cache: {}, block_federated: [],
|
blocked_cache: {}, block_federated: [],
|
||||||
bold_reading: bool,
|
bold_reading: bool,
|
||||||
show_vote_posts: bool,
|
show_vote_posts: bool,
|
||||||
languages_understood: []) -> {}:
|
languages_understood: [],
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Download the post referenced by an announce
|
"""Download the post referenced by an announce
|
||||||
"""
|
"""
|
||||||
if not post_json_object.get('object'):
|
if not post_json_object.get('object'):
|
||||||
|
@ -6277,8 +6318,8 @@ def download_announce(session, base_dir: str, http_prefix: str,
|
||||||
announced_json = \
|
announced_json = \
|
||||||
get_json(signing_priv_key_pem, session,
|
get_json(signing_priv_key_pem, session,
|
||||||
post_json_object['object'],
|
post_json_object['object'],
|
||||||
as_header, None, debug, project_version,
|
as_header, None, debug, mitm_servers,
|
||||||
http_prefix, domain)
|
project_version, http_prefix, domain)
|
||||||
|
|
||||||
if not get_json_valid(announced_json):
|
if not get_json_valid(announced_json):
|
||||||
return None
|
return None
|
||||||
|
@ -6549,7 +6590,8 @@ def send_block_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a block via c2s
|
"""Creates a block via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -6580,7 +6622,7 @@ def send_block_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: block webfinger failed for ' + handle)
|
print('DEBUG: block webfinger failed for ' + handle)
|
||||||
|
@ -6602,7 +6644,7 @@ def send_block_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 72652,
|
from_domain, post_to_box, 72652,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -6640,7 +6682,8 @@ def send_mute_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a mute via c2s
|
"""Creates a mute via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -6667,7 +6710,7 @@ def send_mute_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: mute webfinger failed for ' + handle)
|
print('DEBUG: mute webfinger failed for ' + handle)
|
||||||
|
@ -6689,7 +6732,7 @@ def send_mute_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 72652,
|
from_domain, post_to_box, 72652,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -6726,7 +6769,8 @@ def send_undo_mute_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undoes a mute via c2s
|
"""Undoes a mute via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -6758,7 +6802,7 @@ def send_undo_mute_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: undo mute webfinger failed for ' + handle)
|
print('DEBUG: undo mute webfinger failed for ' + handle)
|
||||||
|
@ -6780,7 +6824,7 @@ def send_undo_mute_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 72652,
|
from_domain, post_to_box, 72652,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -6818,7 +6862,8 @@ def send_undo_block_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a block via c2s
|
"""Creates a block via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -6853,7 +6898,7 @@ def send_undo_block_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unblock webfinger failed for ' + handle)
|
print('DEBUG: unblock webfinger failed for ' + handle)
|
||||||
|
@ -6875,7 +6920,7 @@ def send_undo_block_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname,
|
from_nickname,
|
||||||
from_domain, post_to_box, 53892,
|
from_domain, post_to_box, 53892,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -6941,7 +6986,8 @@ def c2s_box_json(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str,
|
http_prefix: str,
|
||||||
box_name: str, page_number: int,
|
box_name: str, page_number: int,
|
||||||
debug: bool, signing_priv_key_pem: str) -> {}:
|
debug: bool, signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""C2S Authenticated GET of posts for a timeline
|
"""C2S Authenticated GET of posts for a timeline
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -6964,7 +7010,7 @@ def c2s_box_json(session, nickname: str, password: str,
|
||||||
# GET json
|
# GET json
|
||||||
url = actor + '/' + box_name + '?page=' + str(page_number)
|
url = actor + '/' + box_name + '?page=' + str(page_number)
|
||||||
box_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
box_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix, None)
|
||||||
|
|
||||||
if get_json_valid(box_json) and debug:
|
if get_json_valid(box_json) and debug:
|
||||||
print('DEBUG: GET c2s_box_json success')
|
print('DEBUG: GET c2s_box_json success')
|
||||||
|
|
26
reaction.py
26
reaction.py
|
@ -77,7 +77,8 @@ def _reactionpost(recent_posts_cache: {},
|
||||||
curr_domain: str,
|
curr_domain: str,
|
||||||
onion_domain: str, i2p_domain: str,
|
onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates an emoji reaction
|
"""Creates an emoji reaction
|
||||||
actor is the person doing the reacting
|
actor is the person doing the reacting
|
||||||
'to' might be a specific person (actor) whose post was reaction
|
'to' might be a specific person (actor) whose post was reaction
|
||||||
|
@ -157,7 +158,7 @@ def _reactionpost(recent_posts_cache: {},
|
||||||
signing_priv_key_pem, 7165392,
|
signing_priv_key_pem, 7165392,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
extra_headers, sites_unavailable,
|
extra_headers, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
return new_reaction_json
|
return new_reaction_json
|
||||||
|
|
||||||
|
@ -174,7 +175,8 @@ def reaction_post(recent_posts_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
curr_domain: str, onion_domain: str, i2p_domain: str,
|
curr_domain: str, onion_domain: str, i2p_domain: str,
|
||||||
sites_unavailable: [], system_language: str) -> {}:
|
sites_unavailable: [], system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Adds a reaction to a given status post. This is only used by unit tests
|
"""Adds a reaction to a given status post. This is only used by unit tests
|
||||||
"""
|
"""
|
||||||
reaction_domain = get_full_domain(reaction_domain, reaction_port)
|
reaction_domain = get_full_domain(reaction_domain, reaction_port)
|
||||||
|
@ -192,7 +194,8 @@ def reaction_post(recent_posts_cache: {},
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
debug, project_version, signing_priv_key_pem,
|
debug, project_version, signing_priv_key_pem,
|
||||||
curr_domain, onion_domain, i2p_domain,
|
curr_domain, onion_domain, i2p_domain,
|
||||||
sites_unavailable, system_language)
|
sites_unavailable, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def send_reaction_via_server(base_dir: str, session,
|
def send_reaction_via_server(base_dir: str, session,
|
||||||
|
@ -203,7 +206,8 @@ def send_reaction_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a reaction via c2s
|
"""Creates a reaction via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -235,7 +239,7 @@ def send_reaction_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: reaction webfinger failed for ' + handle)
|
print('DEBUG: reaction webfinger failed for ' + handle)
|
||||||
|
@ -257,7 +261,7 @@ def send_reaction_via_server(base_dir: str, session,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
from_nickname, from_domain,
|
from_nickname, from_domain,
|
||||||
post_to_box, 72873,
|
post_to_box, 72873,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -298,7 +302,8 @@ def send_undo_reaction_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undo a reaction via c2s
|
"""Undo a reaction via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -330,7 +335,7 @@ def send_undo_reaction_via_server(base_dir: str, session,
|
||||||
wf_request = webfinger_handle(session, handle, http_prefix,
|
wf_request = webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unreaction webfinger failed for ' + handle)
|
print('DEBUG: unreaction webfinger failed for ' + handle)
|
||||||
|
@ -352,7 +357,8 @@ def send_undo_reaction_via_server(base_dir: str, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
72625, system_language)
|
72625, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
|
@ -164,7 +164,8 @@ def _update_post_schedule(base_dir: str, handle: str, httpd,
|
||||||
httpd.books_cache,
|
httpd.books_cache,
|
||||||
httpd.max_cached_readers,
|
httpd.max_cached_readers,
|
||||||
httpd.auto_cw_cache,
|
httpd.auto_cw_cache,
|
||||||
httpd.block_federated):
|
httpd.block_federated,
|
||||||
|
httpd.mitm_servers):
|
||||||
index_lines.remove(line)
|
index_lines.remove(line)
|
||||||
try:
|
try:
|
||||||
os.remove(post_filename)
|
os.remove(post_filename)
|
||||||
|
|
|
@ -61,7 +61,8 @@ def secure_mode(curr_session, proxy_type: str,
|
||||||
server.domain,
|
server.domain,
|
||||||
server.onion_domain,
|
server.onion_domain,
|
||||||
server.i2p_domain,
|
server.i2p_domain,
|
||||||
server.signing_priv_key_pem)
|
server.signing_priv_key_pem,
|
||||||
|
server.mitm_servers)
|
||||||
if not pub_key:
|
if not pub_key:
|
||||||
if server.debug:
|
if server.debug:
|
||||||
print('AUTH: secure mode failed to ' +
|
print('AUTH: secure mode failed to ' +
|
||||||
|
|
52
session.py
52
session.py
|
@ -19,6 +19,8 @@ from utils import text_in_file
|
||||||
from utils import acct_dir
|
from utils import acct_dir
|
||||||
from utils import binary_is_image
|
from utils import binary_is_image
|
||||||
from utils import image_mime_types_dict
|
from utils import image_mime_types_dict
|
||||||
|
from utils import detect_mitm
|
||||||
|
from utils import get_domain_from_actor
|
||||||
from httpsig import create_signed_header
|
from httpsig import create_signed_header
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,13 +128,30 @@ def get_resolved_url(session, url: str, timeout_sec: int = 20) -> {}:
|
||||||
def _get_json_request(session, url: str, session_headers: {},
|
def _get_json_request(session, url: str, session_headers: {},
|
||||||
session_params: {}, timeout_sec: int,
|
session_params: {}, timeout_sec: int,
|
||||||
quiet: bool, debug: bool,
|
quiet: bool, debug: bool,
|
||||||
return_json: bool) -> {}:
|
return_json: bool,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""http GET for json
|
"""http GET for json
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
result = session.get(url, headers=session_headers,
|
result = session.get(url, headers=session_headers,
|
||||||
params=session_params, timeout=timeout_sec,
|
params=session_params, timeout=timeout_sec,
|
||||||
allow_redirects=True)
|
allow_redirects=True)
|
||||||
|
mitm = False
|
||||||
|
try:
|
||||||
|
mitm = detect_mitm(result)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
url_domain, _ = get_domain_from_actor(url)
|
||||||
|
if mitm:
|
||||||
|
if url_domain:
|
||||||
|
if url_domain not in mitm_servers:
|
||||||
|
mitm_servers.append(url_domain)
|
||||||
|
print('DEBUG: _get_json_request MITM ' +
|
||||||
|
str(result.headers))
|
||||||
|
else:
|
||||||
|
if url_domain in mitm_servers:
|
||||||
|
mitm_servers.remove(url_domain)
|
||||||
|
|
||||||
if result.status_code != 200:
|
if result.status_code != 200:
|
||||||
if result.status_code == 401:
|
if result.status_code == 401:
|
||||||
print("WARN: get_json " + url + ' rejected by secure mode')
|
print("WARN: get_json " + url + ' rejected by secure mode')
|
||||||
|
@ -188,7 +207,7 @@ def _get_json_request(session, url: str, session_headers: {},
|
||||||
if session_headers2.get('Authorization'):
|
if session_headers2.get('Authorization'):
|
||||||
session_headers2['Authorization'] = 'REDACTED'
|
session_headers2['Authorization'] = 'REDACTED'
|
||||||
if debug and not quiet:
|
if debug and not quiet:
|
||||||
print('EX: get_json failed, url: ' + str(url) + ', ' +
|
print('EX: get_json failed2, url: ' + str(url) + ', ' +
|
||||||
'headers: ' + str(session_headers2) + ', ' +
|
'headers: ' + str(session_headers2) + ', ' +
|
||||||
'params: ' + str(session_params) + ', ' + str(exc))
|
'params: ' + str(session_params) + ', ' + str(exc))
|
||||||
except SocketError as exc:
|
except SocketError as exc:
|
||||||
|
@ -202,7 +221,7 @@ def _get_json_request(session, url: str, session_headers: {},
|
||||||
def _get_json_signed(session, url: str, domain_full: str, session_headers: {},
|
def _get_json_signed(session, url: str, domain_full: str, session_headers: {},
|
||||||
session_params: {}, timeout_sec: int,
|
session_params: {}, timeout_sec: int,
|
||||||
signing_priv_key_pem: str, quiet: bool,
|
signing_priv_key_pem: str, quiet: bool,
|
||||||
debug: bool) -> {}:
|
debug: bool, mitm_servers: []) -> {}:
|
||||||
"""Authorized fetch - a signed version of GET
|
"""Authorized fetch - a signed version of GET
|
||||||
"""
|
"""
|
||||||
if not domain_full:
|
if not domain_full:
|
||||||
|
@ -271,7 +290,7 @@ def _get_json_signed(session, url: str, domain_full: str, session_headers: {},
|
||||||
return_json = False
|
return_json = False
|
||||||
return _get_json_request(session, url, session_headers,
|
return _get_json_request(session, url, session_headers,
|
||||||
session_params, timeout_sec, quiet,
|
session_params, timeout_sec, quiet,
|
||||||
debug, return_json)
|
debug, return_json, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def get_json_valid(test_json: {}) -> bool:
|
def get_json_valid(test_json: {}) -> bool:
|
||||||
|
@ -286,6 +305,7 @@ def get_json_valid(test_json: {}) -> bool:
|
||||||
|
|
||||||
def get_json(signing_priv_key_pem: str,
|
def get_json(signing_priv_key_pem: str,
|
||||||
session, url: str, headers: {}, params: {}, debug: bool,
|
session, url: str, headers: {}, params: {}, debug: bool,
|
||||||
|
mitm_servers: [],
|
||||||
version: str = __version__, http_prefix: str = 'https',
|
version: str = __version__, http_prefix: str = 'https',
|
||||||
domain: str = 'testdomain',
|
domain: str = 'testdomain',
|
||||||
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
||||||
|
@ -318,10 +338,10 @@ def get_json(signing_priv_key_pem: str,
|
||||||
return _get_json_signed(session, url, domain,
|
return _get_json_signed(session, url, domain,
|
||||||
session_headers, session_params,
|
session_headers, session_params,
|
||||||
timeout_sec, signing_priv_key_pem,
|
timeout_sec, signing_priv_key_pem,
|
||||||
quiet, debug)
|
quiet, debug, mitm_servers)
|
||||||
return _get_json_request(session, url, session_headers,
|
return _get_json_request(session, url, session_headers,
|
||||||
session_params, timeout_sec,
|
session_params, timeout_sec,
|
||||||
quiet, debug, True)
|
quiet, debug, True, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def get_vcard(xml_format: bool,
|
def get_vcard(xml_format: bool,
|
||||||
|
@ -407,6 +427,7 @@ def get_vcard(xml_format: bool,
|
||||||
def download_html(signing_priv_key_pem: str,
|
def download_html(signing_priv_key_pem: str,
|
||||||
session, url: str, headers: {}, params: {}, debug: bool,
|
session, url: str, headers: {}, params: {}, debug: bool,
|
||||||
version: str, http_prefix: str, domain: str,
|
version: str, http_prefix: str, domain: str,
|
||||||
|
mitm_servers: [],
|
||||||
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
||||||
"""Download a html document
|
"""Download a html document
|
||||||
"""
|
"""
|
||||||
|
@ -439,14 +460,15 @@ def download_html(signing_priv_key_pem: str,
|
||||||
return _get_json_signed(session, url, domain,
|
return _get_json_signed(session, url, domain,
|
||||||
session_headers, session_params,
|
session_headers, session_params,
|
||||||
timeout_sec, signing_priv_key_pem,
|
timeout_sec, signing_priv_key_pem,
|
||||||
quiet, debug)
|
quiet, debug, mitm_servers)
|
||||||
return _get_json_request(session, url, session_headers,
|
return _get_json_request(session, url, session_headers,
|
||||||
session_params, timeout_sec,
|
session_params, timeout_sec,
|
||||||
quiet, debug, False)
|
quiet, debug, False, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def verify_html(session, url: str, debug: bool,
|
def verify_html(session, url: str, debug: bool,
|
||||||
version: str, http_prefix: str, nickname: str, domain: str,
|
version: str, http_prefix: str, nickname: str, domain: str,
|
||||||
|
mitm_servers: [],
|
||||||
timeout_sec: int = 20, quiet: bool = False) -> bool:
|
timeout_sec: int = 20, quiet: bool = False) -> bool:
|
||||||
"""Verify that the handle for nickname@domain exists within the
|
"""Verify that the handle for nickname@domain exists within the
|
||||||
given url
|
given url
|
||||||
|
@ -464,7 +486,8 @@ def verify_html(session, url: str, debug: bool,
|
||||||
verification_site_html = \
|
verification_site_html = \
|
||||||
download_html(None, session, url,
|
download_html(None, session, url,
|
||||||
as_header, None, debug, version,
|
as_header, None, debug, version,
|
||||||
http_prefix, domain, timeout_sec, quiet)
|
http_prefix, domain, mitm_servers,
|
||||||
|
timeout_sec, quiet)
|
||||||
if not verification_site_html:
|
if not verification_site_html:
|
||||||
if debug:
|
if debug:
|
||||||
print('Verification site could not be contacted ' +
|
print('Verification site could not be contacted ' +
|
||||||
|
@ -512,7 +535,8 @@ def verify_html(session, url: str, debug: bool,
|
||||||
|
|
||||||
def site_is_verified(session, base_dir: str, http_prefix: str,
|
def site_is_verified(session, base_dir: str, http_prefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
url: str, update: bool, debug: bool) -> bool:
|
url: str, update: bool, debug: bool,
|
||||||
|
mitm_servers: []) -> bool:
|
||||||
"""Is the given website verified?
|
"""Is the given website verified?
|
||||||
"""
|
"""
|
||||||
verified_sites_filename = \
|
verified_sites_filename = \
|
||||||
|
@ -527,7 +551,8 @@ def site_is_verified(session, base_dir: str, http_prefix: str,
|
||||||
|
|
||||||
verified = \
|
verified = \
|
||||||
verify_html(session, url, debug,
|
verify_html(session, url, debug,
|
||||||
__version__, http_prefix, nickname, domain)
|
__version__, http_prefix, nickname, domain,
|
||||||
|
mitm_servers)
|
||||||
if verified:
|
if verified:
|
||||||
write_type = 'a+'
|
write_type = 'a+'
|
||||||
if not verified_file_exists:
|
if not verified_file_exists:
|
||||||
|
@ -545,6 +570,7 @@ def site_is_verified(session, base_dir: str, http_prefix: str,
|
||||||
def download_ssml(signing_priv_key_pem: str,
|
def download_ssml(signing_priv_key_pem: str,
|
||||||
session, url: str, headers: {}, params: {}, debug: bool,
|
session, url: str, headers: {}, params: {}, debug: bool,
|
||||||
version: str, http_prefix: str, domain: str,
|
version: str, http_prefix: str, domain: str,
|
||||||
|
mitm_servers: [],
|
||||||
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
timeout_sec: int = 20, quiet: bool = False) -> {}:
|
||||||
"""Download a ssml document
|
"""Download a ssml document
|
||||||
"""
|
"""
|
||||||
|
@ -576,10 +602,10 @@ def download_ssml(signing_priv_key_pem: str,
|
||||||
return _get_json_signed(session, url, domain,
|
return _get_json_signed(session, url, domain,
|
||||||
session_headers, session_params,
|
session_headers, session_params,
|
||||||
timeout_sec, signing_priv_key_pem,
|
timeout_sec, signing_priv_key_pem,
|
||||||
quiet, debug)
|
quiet, debug, mitm_servers)
|
||||||
return _get_json_request(session, url, session_headers,
|
return _get_json_request(session, url, session_headers,
|
||||||
session_params, timeout_sec,
|
session_params, timeout_sec,
|
||||||
quiet, debug, False)
|
quiet, debug, False, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def _set_user_agent(session, http_prefix: str, domain_full: str) -> None:
|
def _set_user_agent(session, http_prefix: str, domain_full: str) -> None:
|
||||||
|
|
60
shares.py
60
shares.py
|
@ -634,7 +634,8 @@ def send_share_via_server(base_dir, session,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
item_price: str, item_currency: str,
|
item_price: str, item_currency: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates an item share via c2s
|
"""Creates an item share via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -688,7 +689,7 @@ def send_share_via_server(base_dir, session,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: share webfinger failed for ' + handle)
|
print('DEBUG: share webfinger failed for ' + handle)
|
||||||
|
@ -709,7 +710,8 @@ def send_share_via_server(base_dir, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
83653, system_language)
|
83653, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -759,7 +761,8 @@ def send_undo_share_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undoes a share via c2s
|
"""Undoes a share via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -796,7 +799,7 @@ def send_undo_share_via_server(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unshare webfinger failed for ' + handle)
|
print('DEBUG: unshare webfinger failed for ' + handle)
|
||||||
|
@ -817,7 +820,8 @@ def send_undo_share_via_server(base_dir: str, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
12663, system_language)
|
12663, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -862,7 +866,8 @@ def send_wanted_via_server(base_dir, session,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
item_max_price: str, item_currency: str,
|
item_max_price: str, item_currency: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Creates a wanted item via c2s
|
"""Creates a wanted item via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -917,7 +922,7 @@ def send_wanted_via_server(base_dir, session,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: share webfinger failed for ' + handle)
|
print('DEBUG: share webfinger failed for ' + handle)
|
||||||
|
@ -938,7 +943,8 @@ def send_wanted_via_server(base_dir, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
23653, system_language)
|
23653, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -988,7 +994,8 @@ def send_undo_wanted_via_server(base_dir: str, session,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Undoes a wanted item via c2s
|
"""Undoes a wanted item via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1025,7 +1032,7 @@ def send_undo_wanted_via_server(base_dir: str, session,
|
||||||
wf_request = \
|
wf_request = \
|
||||||
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
webfinger_handle(session, handle, http_prefix, cached_webfingers,
|
||||||
from_domain, project_version, debug, False,
|
from_domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: unwant webfinger failed for ' + handle)
|
print('DEBUG: unwant webfinger failed for ' + handle)
|
||||||
|
@ -1046,7 +1053,8 @@ def send_undo_wanted_via_server(base_dir: str, session,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, from_nickname,
|
http_prefix, from_nickname,
|
||||||
from_domain, post_to_box,
|
from_domain, post_to_box,
|
||||||
12693, system_language)
|
12693, system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
@ -1083,7 +1091,8 @@ def send_undo_wanted_via_server(base_dir: str, session,
|
||||||
def get_shared_items_catalog_via_server(session, nickname: str, password: str,
|
def get_shared_items_catalog_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, debug: bool,
|
http_prefix: str, debug: bool,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns the shared items catalog via c2s
|
"""Returns the shared items catalog via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1103,7 +1112,8 @@ def get_shared_items_catalog_via_server(session, nickname: str, password: str,
|
||||||
if debug:
|
if debug:
|
||||||
print('Shared items catalog request to: ' + url)
|
print('Shared items catalog request to: ' + url)
|
||||||
catalog_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
catalog_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix,
|
||||||
|
None)
|
||||||
if not get_json_valid(catalog_json):
|
if not get_json_valid(catalog_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET shared items catalog failed for c2s to ' + url)
|
print('DEBUG: GET shared items catalog failed for c2s to ' + url)
|
||||||
|
@ -1118,7 +1128,8 @@ def get_shared_items_catalog_via_server(session, nickname: str, password: str,
|
||||||
def get_offers_via_server(session, nickname: str, password: str,
|
def get_offers_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, debug: bool,
|
http_prefix: str, debug: bool,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns the offers collection for shared items via c2s
|
"""Returns the offers collection for shared items via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1138,7 +1149,7 @@ def get_offers_via_server(session, nickname: str, password: str,
|
||||||
if debug:
|
if debug:
|
||||||
print('Offers collection request to: ' + url)
|
print('Offers collection request to: ' + url)
|
||||||
offers_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
offers_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix, None)
|
||||||
if not get_json_valid(offers_json):
|
if not get_json_valid(offers_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET offers collection failed for c2s to ' + url)
|
print('DEBUG: GET offers collection failed for c2s to ' + url)
|
||||||
|
@ -1153,7 +1164,8 @@ def get_offers_via_server(session, nickname: str, password: str,
|
||||||
def get_wanted_via_server(session, nickname: str, password: str,
|
def get_wanted_via_server(session, nickname: str, password: str,
|
||||||
domain: str, port: int,
|
domain: str, port: int,
|
||||||
http_prefix: str, debug: bool,
|
http_prefix: str, debug: bool,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Returns the wanted collection for shared items via c2s
|
"""Returns the wanted collection for shared items via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -1173,7 +1185,7 @@ def get_wanted_via_server(session, nickname: str, password: str,
|
||||||
if debug:
|
if debug:
|
||||||
print('Wanted collection request to: ' + url)
|
print('Wanted collection request to: ' + url)
|
||||||
wanted_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
wanted_json = get_json(signing_priv_key_pem, session, url, headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix, None)
|
||||||
if not get_json_valid(wanted_json):
|
if not get_json_valid(wanted_json):
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: GET wanted collection failed for c2s to ' + url)
|
print('DEBUG: GET wanted collection failed for c2s to ' + url)
|
||||||
|
@ -1708,7 +1720,8 @@ def _update_federated_shares_cache(session, shared_items_federated_domains: [],
|
||||||
tokens_json: {}, debug: bool,
|
tokens_json: {}, debug: bool,
|
||||||
system_language: str,
|
system_language: str,
|
||||||
shares_file_type: str,
|
shares_file_type: str,
|
||||||
sites_unavailable: []) -> None:
|
sites_unavailable: [],
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Updates the cache of federated shares for the instance.
|
"""Updates the cache of federated shares for the instance.
|
||||||
This enables shared items to be available even when other instances
|
This enables shared items to be available even when other instances
|
||||||
might not be online
|
might not be online
|
||||||
|
@ -1746,7 +1759,8 @@ def _update_federated_shares_cache(session, shared_items_federated_domains: [],
|
||||||
url = http_prefix + '://' + federated_domain_full + '/wantedItems'
|
url = http_prefix + '://' + federated_domain_full + '/wantedItems'
|
||||||
as_header['Authorization'] = tokens_json[federated_domain_full]
|
as_header['Authorization'] = tokens_json[federated_domain_full]
|
||||||
catalog_json = get_json(session, url, as_header, None,
|
catalog_json = get_json(session, url, as_header, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix,
|
||||||
|
None)
|
||||||
if not get_json_valid(catalog_json):
|
if not get_json_valid(catalog_json):
|
||||||
print('WARN: failed to download shared items catalog for ' +
|
print('WARN: failed to download shared items catalog for ' +
|
||||||
federated_domain_full)
|
federated_domain_full)
|
||||||
|
@ -1880,7 +1894,8 @@ def _regenerate_shares_token(base_dir: str, domain_full: str,
|
||||||
|
|
||||||
def run_federated_shares_daemon(base_dir: str, httpd, http_prefix: str,
|
def run_federated_shares_daemon(base_dir: str, httpd, http_prefix: str,
|
||||||
domain_full: str, proxy_type: str, debug: bool,
|
domain_full: str, proxy_type: str, debug: bool,
|
||||||
system_language: str) -> None:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> None:
|
||||||
"""Runs the daemon used to update federated shared items
|
"""Runs the daemon used to update federated shared items
|
||||||
"""
|
"""
|
||||||
seconds_per_hour = 60 * 60
|
seconds_per_hour = 60 * 60
|
||||||
|
@ -1930,7 +1945,8 @@ def run_federated_shares_daemon(base_dir: str, httpd, http_prefix: str,
|
||||||
shared_items_federated_domains,
|
shared_items_federated_domains,
|
||||||
base_dir, domain_full, http_prefix,
|
base_dir, domain_full, http_prefix,
|
||||||
tokens_json, debug, system_language,
|
tokens_json, debug, system_language,
|
||||||
shares_file_type, sites_unavailable)
|
shares_file_type, sites_unavailable,
|
||||||
|
mitm_servers)
|
||||||
time.sleep(seconds_per_hour * 6)
|
time.sleep(seconds_per_hour * 6)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -183,7 +183,8 @@ def send_skill_via_server(base_dir: str, session, nickname: str, password: str,
|
||||||
cached_webfingers: {}, person_cache: {},
|
cached_webfingers: {}, person_cache: {},
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
system_language: str) -> {}:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Sets a skill for a person via c2s
|
"""Sets a skill for a person via c2s
|
||||||
"""
|
"""
|
||||||
if not session:
|
if not session:
|
||||||
|
@ -216,7 +217,7 @@ def send_skill_via_server(base_dir: str, session, nickname: str, password: str,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: skill webfinger failed for ' + handle)
|
print('DEBUG: skill webfinger failed for ' + handle)
|
||||||
|
@ -237,7 +238,7 @@ def send_skill_via_server(base_dir: str, session, nickname: str, password: str,
|
||||||
person_cache, project_version,
|
person_cache, project_version,
|
||||||
http_prefix, nickname, domain,
|
http_prefix, nickname, domain,
|
||||||
post_to_box, 76121,
|
post_to_box, 76121,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
if not inbox_url:
|
if not inbox_url:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
10
socnet.py
10
socnet.py
|
@ -18,7 +18,8 @@ def instances_graph(base_dir: str, handles: str,
|
||||||
proxy_type: str,
|
proxy_type: str,
|
||||||
port: int, http_prefix: str,
|
port: int, http_prefix: str,
|
||||||
debug: bool, project_version: str,
|
debug: bool, project_version: str,
|
||||||
system_language: str, signing_priv_key_pem: str) -> str:
|
system_language: str, signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
""" Returns a dot graph of federating instances
|
""" Returns a dot graph of federating instances
|
||||||
based upon a few sample handles.
|
based upon a few sample handles.
|
||||||
The handles argument should contain a comma separated list
|
The handles argument should contain a comma separated list
|
||||||
|
@ -51,7 +52,7 @@ def instances_graph(base_dir: str, handles: str,
|
||||||
webfinger_handle(session, handle, http_prefix,
|
webfinger_handle(session, handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, project_version, debug, False,
|
domain, project_version, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
if not wf_request:
|
if not wf_request:
|
||||||
return dot_graph_str + '}\n'
|
return dot_graph_str + '}\n'
|
||||||
if not isinstance(wf_request, dict):
|
if not isinstance(wf_request, dict):
|
||||||
|
@ -67,13 +68,14 @@ def instances_graph(base_dir: str, handles: str,
|
||||||
person_cache,
|
person_cache,
|
||||||
project_version, http_prefix,
|
project_version, http_prefix,
|
||||||
nickname, domain, 'outbox',
|
nickname, domain, 'outbox',
|
||||||
27261, system_language)
|
27261, system_language,
|
||||||
|
mitm_servers)
|
||||||
word_frequency = {}
|
word_frequency = {}
|
||||||
post_domains = \
|
post_domains = \
|
||||||
get_post_domains(session, person_url, 64, debug,
|
get_post_domains(session, person_url, 64, debug,
|
||||||
project_version, http_prefix, domain,
|
project_version, http_prefix, domain,
|
||||||
word_frequency, [], system_language,
|
word_frequency, [], system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
post_domains.sort()
|
post_domains.sort()
|
||||||
for fed_domain in post_domains:
|
for fed_domain in post_domains:
|
||||||
dot_line_str = ' "' + domain + '" -> "' + fed_domain + '";\n'
|
dot_line_str = ' "' + domain + '" -> "' + fed_domain + '";\n'
|
||||||
|
|
94
tests.py
94
tests.py
|
@ -1472,6 +1472,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
chat_url = ''
|
chat_url = ''
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_post(signing_priv_key_pem, __version__,
|
send_post(signing_priv_key_pem, __version__,
|
||||||
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
||||||
|
@ -1490,7 +1491,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
content_license_url, media_license_url, media_creator,
|
content_license_url, media_license_url, media_creator,
|
||||||
translate, buy_url, chat_url, auto_cw_cache, True,
|
translate, buy_url, chat_url, auto_cw_cache, True,
|
||||||
in_reply_to, in_reply_to_atom_uri, subject,
|
in_reply_to, in_reply_to_atom_uri, subject,
|
||||||
searchable_by)
|
searchable_by, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
||||||
|
@ -1602,6 +1603,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
outbox_post_filename = outbox_path + '/' + name
|
outbox_post_filename = outbox_path + '/' + name
|
||||||
assert status_number > 0
|
assert status_number > 0
|
||||||
assert outbox_post_filename
|
assert outbox_post_filename
|
||||||
|
mitm_servers = []
|
||||||
assert like_post({}, session_bob, bob_dir, federation_list,
|
assert like_post({}, session_bob, bob_dir, federation_list,
|
||||||
'bob', bob_domain, bob_port, http_prefix,
|
'bob', bob_domain, bob_port, http_prefix,
|
||||||
'alice', alice_domain, alice_port, [],
|
'alice', alice_domain, alice_port, [],
|
||||||
|
@ -1609,7 +1611,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
bob_person_cache, bob_cached_webfingers,
|
bob_person_cache, bob_cached_webfingers,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
bob_domain, None, None, sites_unavailable,
|
bob_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
if text_in_file('likes', outbox_post_filename):
|
if text_in_file('likes', outbox_post_filename):
|
||||||
|
@ -1626,6 +1628,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
print("Bob reacts to Alice's post")
|
print("Bob reacts to Alice's post")
|
||||||
|
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
|
mitm_servers = []
|
||||||
assert reaction_post({}, session_bob, bob_dir, federation_list,
|
assert reaction_post({}, session_bob, bob_dir, federation_list,
|
||||||
'bob', bob_domain, bob_port, http_prefix,
|
'bob', bob_domain, bob_port, http_prefix,
|
||||||
'alice', alice_domain, alice_port, [],
|
'alice', alice_domain, alice_port, [],
|
||||||
|
@ -1634,7 +1637,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
bob_person_cache, bob_cached_webfingers,
|
bob_person_cache, bob_cached_webfingers,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
bob_domain, None, None, sites_unavailable,
|
bob_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
|
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
if text_in_file('reactions', outbox_post_filename):
|
if text_in_file('reactions', outbox_post_filename):
|
||||||
|
@ -1667,6 +1670,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
assert outbox_before_announce_count == 0
|
assert outbox_before_announce_count == 0
|
||||||
assert before_announce_count == 0
|
assert before_announce_count == 0
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
|
mitm_servers = []
|
||||||
announce_public(session_bob, bob_dir, federation_list,
|
announce_public(session_bob, bob_dir, federation_list,
|
||||||
'bob', bob_domain, bob_port, http_prefix,
|
'bob', bob_domain, bob_port, http_prefix,
|
||||||
object_url,
|
object_url,
|
||||||
|
@ -1674,7 +1678,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
|
||||||
bob_person_cache, bob_cached_webfingers,
|
bob_person_cache, bob_cached_webfingers,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
bob_domain, None, None, sites_unavailable,
|
bob_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
announce_message_arrived = False
|
announce_message_arrived = False
|
||||||
outbox_message_arrived = False
|
outbox_message_arrived = False
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
|
@ -1813,6 +1817,7 @@ def test_follow_between_servers(base_dir: str) -> None:
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
bob_actor = http_prefix + '://' + bob_address + '/users/bob'
|
bob_actor = http_prefix + '://' + bob_address + '/users/bob'
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_follow_request(session_alice, alice_dir,
|
send_follow_request(session_alice, alice_dir,
|
||||||
'alice', alice_domain,
|
'alice', alice_domain,
|
||||||
|
@ -1824,7 +1829,7 @@ def test_follow_between_servers(base_dir: str) -> None:
|
||||||
alice_cached_webfingers, alice_person_cache,
|
alice_cached_webfingers, alice_person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
alice_domain, None, None, sites_unavailable,
|
alice_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
alice_dir_str = data_dir(alice_dir)
|
alice_dir_str = data_dir(alice_dir)
|
||||||
|
@ -1871,6 +1876,7 @@ def test_follow_between_servers(base_dir: str) -> None:
|
||||||
video_transcript = None
|
video_transcript = None
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_post(signing_priv_key_pem, __version__,
|
send_post(signing_priv_key_pem, __version__,
|
||||||
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
||||||
|
@ -1886,7 +1892,7 @@ def test_follow_between_servers(base_dir: str) -> None:
|
||||||
content_license_url, media_license_url, media_creator,
|
content_license_url, media_license_url, media_creator,
|
||||||
translate, buy_url, chat_url, auto_cw_cache, True,
|
translate, buy_url, chat_url, auto_cw_cache, True,
|
||||||
in_reply_to, in_reply_to_atom_uri, subject,
|
in_reply_to, in_reply_to_atom_uri, subject,
|
||||||
searchable_by)
|
searchable_by, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
||||||
|
@ -2015,9 +2021,11 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
'host': bob_address,
|
'host': bob_address,
|
||||||
'Accept': 'application/ld+json; profile="' + profile_str + '"'
|
'Accept': 'application/ld+json; profile="' + profile_str + '"'
|
||||||
}
|
}
|
||||||
|
mitm_servers = []
|
||||||
bob_instance_actor_json = \
|
bob_instance_actor_json = \
|
||||||
get_json(signing_priv_key_pem, session_client,
|
get_json(signing_priv_key_pem, session_client,
|
||||||
'http://' + bob_address + '/@actor', test_headers, {}, True,
|
'http://' + bob_address + '/@actor', test_headers, {}, True,
|
||||||
|
mitm_servers,
|
||||||
__version__, 'http', 'somedomain.or.other', 10, False)
|
__version__, 'http', 'somedomain.or.other', 10, False)
|
||||||
if not get_json_valid(bob_instance_actor_json):
|
if not get_json_valid(bob_instance_actor_json):
|
||||||
print('Unable to get json for ' + 'http://' + bob_address + '/@actor')
|
print('Unable to get json for ' + 'http://' + bob_address + '/@actor')
|
||||||
|
@ -2049,6 +2057,7 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
alice_cached_webfingers = {}
|
alice_cached_webfingers = {}
|
||||||
alice_post_log = []
|
alice_post_log = []
|
||||||
sites_unavailable = []
|
sites_unavailable = []
|
||||||
|
mitm_servers = []
|
||||||
bob_actor = http_prefix + '://' + bob_address + '/users/bob'
|
bob_actor = http_prefix + '://' + bob_address + '/users/bob'
|
||||||
send_result = \
|
send_result = \
|
||||||
send_follow_request(session_alice, alice_dir,
|
send_follow_request(session_alice, alice_dir,
|
||||||
|
@ -2061,7 +2070,7 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
alice_cached_webfingers, alice_person_cache,
|
alice_cached_webfingers, alice_person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
alice_domain, None, None, sites_unavailable,
|
alice_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
alice_dir_str = data_dir(alice_dir)
|
alice_dir_str = data_dir(alice_dir)
|
||||||
|
@ -2124,6 +2133,7 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
shared_item_price = "1.30"
|
shared_item_price = "1.30"
|
||||||
shared_item_currency = "EUR"
|
shared_item_currency = "EUR"
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
session_bob = create_session(proxy_type)
|
session_bob = create_session(proxy_type)
|
||||||
share_json = \
|
share_json = \
|
||||||
send_share_via_server(bob_dir, session_bob,
|
send_share_via_server(bob_dir, session_bob,
|
||||||
|
@ -2138,7 +2148,8 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
bob_cached_webfingers, bob_person_cache,
|
bob_cached_webfingers, bob_person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
shared_item_price, shared_item_currency,
|
shared_item_price, shared_item_currency,
|
||||||
signing_priv_key_pem, system_language)
|
signing_priv_key_pem, system_language,
|
||||||
|
mitm_servers)
|
||||||
assert share_json
|
assert share_json
|
||||||
assert isinstance(share_json, dict)
|
assert isinstance(share_json, dict)
|
||||||
shared_item_name = 'Epicyon T-shirt'
|
shared_item_name = 'Epicyon T-shirt'
|
||||||
|
@ -2164,7 +2175,8 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
bob_cached_webfingers, bob_person_cache,
|
bob_cached_webfingers, bob_person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
shared_item_price, shared_item_currency,
|
shared_item_price, shared_item_currency,
|
||||||
signing_priv_key_pem, system_language)
|
signing_priv_key_pem, system_language,
|
||||||
|
mitm_servers)
|
||||||
assert share_json
|
assert share_json
|
||||||
assert isinstance(share_json, dict)
|
assert isinstance(share_json, dict)
|
||||||
shared_item_name = 'Soldering iron'
|
shared_item_name = 'Soldering iron'
|
||||||
|
@ -2190,7 +2202,8 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
bob_cached_webfingers, bob_person_cache,
|
bob_cached_webfingers, bob_person_cache,
|
||||||
True, __version__,
|
True, __version__,
|
||||||
shared_item_price, shared_item_currency,
|
shared_item_price, shared_item_currency,
|
||||||
signing_priv_key_pem, system_language)
|
signing_priv_key_pem, system_language,
|
||||||
|
mitm_servers)
|
||||||
assert share_json
|
assert share_json
|
||||||
assert isinstance(share_json, dict)
|
assert isinstance(share_json, dict)
|
||||||
|
|
||||||
|
@ -2213,33 +2226,39 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
print('\n\n*********************************************************')
|
print('\n\n*********************************************************')
|
||||||
print('Bob can read the shared items catalog on his own instance')
|
print('Bob can read the shared items catalog on his own instance')
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
catalog_json = \
|
catalog_json = \
|
||||||
get_shared_items_catalog_via_server(session_bob,
|
get_shared_items_catalog_via_server(session_bob,
|
||||||
'bob', bob_password,
|
'bob', bob_password,
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, True,
|
http_prefix, True,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
assert catalog_json
|
assert catalog_json
|
||||||
pprint(catalog_json)
|
pprint(catalog_json)
|
||||||
assert 'DFC:supplies' in catalog_json
|
assert 'DFC:supplies' in catalog_json
|
||||||
assert len(catalog_json.get('DFC:supplies')) == 3
|
assert len(catalog_json.get('DFC:supplies')) == 3
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
offers_json = \
|
offers_json = \
|
||||||
get_offers_via_server(session_bob, 'bob', bob_password,
|
get_offers_via_server(session_bob, 'bob', bob_password,
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, True,
|
http_prefix, True,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
assert offers_json
|
assert offers_json
|
||||||
print('Offers collection:')
|
print('Offers collection:')
|
||||||
pprint(offers_json)
|
pprint(offers_json)
|
||||||
assert isinstance(offers_json, dict)
|
assert isinstance(offers_json, dict)
|
||||||
assert len(offers_json['orderedItems']) >= 1
|
assert len(offers_json['orderedItems']) >= 1
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
wanted_json = \
|
wanted_json = \
|
||||||
get_wanted_via_server(session_bob, 'bob', bob_password,
|
get_wanted_via_server(session_bob, 'bob', bob_password,
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, True,
|
http_prefix, True,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
print('Wanted collection:')
|
print('Wanted collection:')
|
||||||
pprint(wanted_json)
|
pprint(wanted_json)
|
||||||
assert isinstance(wanted_json, dict)
|
assert isinstance(wanted_json, dict)
|
||||||
|
@ -2272,6 +2291,7 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
video_transcript = None
|
video_transcript = None
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_post(signing_priv_key_pem, __version__,
|
send_post(signing_priv_key_pem, __version__,
|
||||||
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
||||||
|
@ -2287,7 +2307,7 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
content_license_url, media_license_url, media_creator,
|
content_license_url, media_license_url, media_creator,
|
||||||
translate, buy_url, chat_url, auto_cw_cache, True,
|
translate, buy_url, chat_url, auto_cw_cache, True,
|
||||||
in_reply_to, in_reply_to_atom_uri, subject,
|
in_reply_to, in_reply_to_atom_uri, subject,
|
||||||
searchable_by)
|
searchable_by, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
queue_path = data_dir(bob_dir) + '/bob@' + bob_domain + '/queue'
|
||||||
|
@ -2342,8 +2362,9 @@ def test_shared_items_federation(base_dir: str) -> None:
|
||||||
}
|
}
|
||||||
url = http_prefix + '://' + bob_address + '/catalog'
|
url = http_prefix + '://' + bob_address + '/catalog'
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers: []
|
||||||
catalog_json = get_json(signing_priv_key_pem, session_alice, url, headers,
|
catalog_json = get_json(signing_priv_key_pem, session_alice, url, headers,
|
||||||
None, True)
|
None, True, mitm_servers)
|
||||||
assert get_json_valid(catalog_json)
|
assert get_json_valid(catalog_json)
|
||||||
pprint(catalog_json)
|
pprint(catalog_json)
|
||||||
assert 'DFC:supplies' in catalog_json
|
assert 'DFC:supplies' in catalog_json
|
||||||
|
@ -2493,8 +2514,10 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
'Accept': 'application/ld+json; profile="' + profile_str + '"'
|
'Accept': 'application/ld+json; profile="' + profile_str + '"'
|
||||||
}
|
}
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
outbox_json = get_json(signing_priv_key_pem, session, alice_outbox,
|
outbox_json = get_json(signing_priv_key_pem, session, alice_outbox,
|
||||||
as_header, None, True, __version__, 'http', None)
|
as_header, None, True, mitm_servers,
|
||||||
|
__version__, 'http', None)
|
||||||
assert get_json_valid(outbox_json)
|
assert get_json_valid(outbox_json)
|
||||||
pprint(outbox_json)
|
pprint(outbox_json)
|
||||||
assert outbox_json['type'] == 'OrderedCollection'
|
assert outbox_json['type'] == 'OrderedCollection'
|
||||||
|
@ -2504,9 +2527,10 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
print('Alice outbox totalItems: ' + str(outbox_json['totalItems']))
|
print('Alice outbox totalItems: ' + str(outbox_json['totalItems']))
|
||||||
assert outbox_json['totalItems'] == 3
|
assert outbox_json['totalItems'] == 3
|
||||||
|
|
||||||
|
mitm_servers = []
|
||||||
outbox_json = get_json(signing_priv_key_pem, session,
|
outbox_json = get_json(signing_priv_key_pem, session,
|
||||||
first_page, as_header,
|
first_page, as_header,
|
||||||
None, True, __version__, 'http', None)
|
None, True, mitm_servers, __version__, 'http', None)
|
||||||
assert get_json_valid(outbox_json)
|
assert get_json_valid(outbox_json)
|
||||||
pprint(outbox_json)
|
pprint(outbox_json)
|
||||||
assert 'orderedItems' in outbox_json
|
assert 'orderedItems' in outbox_json
|
||||||
|
@ -2539,6 +2563,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
testgroup_actor = \
|
testgroup_actor = \
|
||||||
http_prefix + '://' + testgroupAddress + '/users/testgroup'
|
http_prefix + '://' + testgroupAddress + '/users/testgroup'
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_follow_request(session_alice, alice_dir,
|
send_follow_request(session_alice, alice_dir,
|
||||||
'alice', alice_domain,
|
'alice', alice_domain,
|
||||||
|
@ -2550,7 +2575,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
alice_cached_webfingers, alice_person_cache,
|
alice_cached_webfingers, alice_person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
alice_domain, None, None, sites_unavailable,
|
alice_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
alice_following_filename = \
|
alice_following_filename = \
|
||||||
|
@ -2619,6 +2644,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
testgroup_actor = \
|
testgroup_actor = \
|
||||||
http_prefix + '://' + testgroupAddress + '/users/testgroup'
|
http_prefix + '://' + testgroupAddress + '/users/testgroup'
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_follow_request(session_bob, bob_dir,
|
send_follow_request(session_bob, bob_dir,
|
||||||
'bob', bob_domain,
|
'bob', bob_domain,
|
||||||
|
@ -2630,7 +2656,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
bob_cached_webfingers, bob_person_cache,
|
bob_cached_webfingers, bob_person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
bob_domain, None, None, sites_unavailable,
|
bob_domain, None, None, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
bob_following_filename = \
|
bob_following_filename = \
|
||||||
|
@ -2715,6 +2741,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
video_transcript = None
|
video_transcript = None
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_post(signing_priv_key_pem, __version__,
|
send_post(signing_priv_key_pem, __version__,
|
||||||
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
session_alice, alice_dir, 'alice', alice_domain, alice_port,
|
||||||
|
@ -2730,7 +2757,7 @@ def test_group_follow(base_dir: str) -> None:
|
||||||
content_license_url, media_license_url, media_creator,
|
content_license_url, media_license_url, media_creator,
|
||||||
translate, buy_url, chat_url, auto_cw_cache, True,
|
translate, buy_url, chat_url, auto_cw_cache, True,
|
||||||
in_reply_to, in_reply_to_atom_uri, subject,
|
in_reply_to, in_reply_to_atom_uri, subject,
|
||||||
searchable_by)
|
searchable_by, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
|
@ -3370,6 +3397,7 @@ def test_client_to_server(base_dir: str):
|
||||||
video_transcript = None
|
video_transcript = None
|
||||||
auto_cw_cache = {}
|
auto_cw_cache = {}
|
||||||
searchable_by = []
|
searchable_by = []
|
||||||
|
mitm_servers = []
|
||||||
send_result = \
|
send_result = \
|
||||||
send_post_via_server(signing_priv_key_pem, __version__,
|
send_post_via_server(signing_priv_key_pem, __version__,
|
||||||
alice_dir, session_alice, 'alice', password,
|
alice_dir, session_alice, 'alice', password,
|
||||||
|
@ -3386,7 +3414,7 @@ def test_client_to_server(base_dir: str):
|
||||||
event_date, event_time, event_end_time, location,
|
event_date, event_time, event_end_time, location,
|
||||||
translate, buy_url, chat_url, auto_cw_cache,
|
translate, buy_url, chat_url, auto_cw_cache,
|
||||||
True, None, None, conversation_id, convthread_id,
|
True, None, None, conversation_id, convthread_id,
|
||||||
None, searchable_by)
|
None, searchable_by, mitm_servers)
|
||||||
print('send_result: ' + str(send_result))
|
print('send_result: ' + str(send_result))
|
||||||
|
|
||||||
for _ in range(30):
|
for _ in range(30):
|
||||||
|
@ -3455,6 +3483,7 @@ def test_client_to_server(base_dir: str):
|
||||||
|
|
||||||
print('\n\nAlice follows Bob')
|
print('\n\nAlice follows Bob')
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
send_follow_request_via_server(alice_dir, session_alice,
|
send_follow_request_via_server(alice_dir, session_alice,
|
||||||
'alice', password,
|
'alice', password,
|
||||||
alice_domain, alice_port,
|
alice_domain, alice_port,
|
||||||
|
@ -3462,7 +3491,7 @@ def test_client_to_server(base_dir: str):
|
||||||
http_prefix,
|
http_prefix,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
alice_petnames_filename = data_dir(alice_dir) + '/' + \
|
alice_petnames_filename = data_dir(alice_dir) + '/' + \
|
||||||
'alice@' + alice_domain + '/petnames.txt'
|
'alice@' + alice_domain + '/petnames.txt'
|
||||||
alice_following_filename = \
|
alice_following_filename = \
|
||||||
|
@ -3497,6 +3526,7 @@ def test_client_to_server(base_dir: str):
|
||||||
alice_domain, alice_port)
|
alice_domain, alice_port)
|
||||||
|
|
||||||
print('\n\nEVENT: Bob follows Alice')
|
print('\n\nEVENT: Bob follows Alice')
|
||||||
|
mitm_servers = []
|
||||||
send_follow_request_via_server(alice_dir, session_alice,
|
send_follow_request_via_server(alice_dir, session_alice,
|
||||||
'bob', 'bobpass',
|
'bob', 'bobpass',
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
|
@ -3504,7 +3534,7 @@ def test_client_to_server(base_dir: str):
|
||||||
http_prefix,
|
http_prefix,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
alice_dir_str = data_dir(alice_dir)
|
alice_dir_str = data_dir(alice_dir)
|
||||||
bob_dir_str = data_dir(bob_dir)
|
bob_dir_str = data_dir(bob_dir)
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
|
@ -3590,13 +3620,14 @@ def test_client_to_server(base_dir: str):
|
||||||
assert 'VEVENT' not in str(result)
|
assert 'VEVENT' not in str(result)
|
||||||
|
|
||||||
print('\n\nEVENT: Bob likes the post')
|
print('\n\nEVENT: Bob likes the post')
|
||||||
|
mitm_servers = []
|
||||||
send_like_via_server(bob_dir, session_bob,
|
send_like_via_server(bob_dir, session_bob,
|
||||||
'bob', 'bobpass',
|
'bob', 'bobpass',
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, outbox_post_id,
|
http_prefix, outbox_post_id,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
||||||
if len([name for name in os.listdir(outbox_path)
|
if len([name for name in os.listdir(outbox_path)
|
||||||
|
@ -3621,13 +3652,14 @@ def test_client_to_server(base_dir: str):
|
||||||
print('EVENT: Post liked')
|
print('EVENT: Post liked')
|
||||||
|
|
||||||
print('\n\nEVENT: Bob reacts to the post')
|
print('\n\nEVENT: Bob reacts to the post')
|
||||||
|
mitm_servers = []
|
||||||
send_reaction_via_server(bob_dir, session_bob,
|
send_reaction_via_server(bob_dir, session_bob,
|
||||||
'bob', 'bobpass',
|
'bob', 'bobpass',
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, outbox_post_id, '😃',
|
http_prefix, outbox_post_id, '😃',
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
||||||
if len([name for name in os.listdir(outbox_path)
|
if len([name for name in os.listdir(outbox_path)
|
||||||
|
@ -3669,13 +3701,14 @@ def test_client_to_server(base_dir: str):
|
||||||
show_test_boxes('bob', bob_inbox_path, bob_outbox_path)
|
show_test_boxes('bob', bob_inbox_path, bob_outbox_path)
|
||||||
print('\n\nEVENT: Bob repeats the post')
|
print('\n\nEVENT: Bob repeats the post')
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
send_announce_via_server(bob_dir, session_bob, 'bob', password,
|
send_announce_via_server(bob_dir, session_bob, 'bob', password,
|
||||||
bob_domain, bob_port,
|
bob_domain, bob_port,
|
||||||
http_prefix, outbox_post_id,
|
http_prefix, outbox_post_id,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
person_cache, True, __version__,
|
person_cache, True, __version__,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(30):
|
for _ in range(30):
|
||||||
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
if os.path.isdir(outbox_path) and os.path.isdir(inbox_path):
|
||||||
if len([name for name in os.listdir(outbox_path)
|
if len([name for name in os.listdir(outbox_path)
|
||||||
|
@ -3711,12 +3744,13 @@ def test_client_to_server(base_dir: str):
|
||||||
print('\n\nEVENT: Alice deletes her post: ' + outbox_post_id + ' ' +
|
print('\n\nEVENT: Alice deletes her post: ' + outbox_post_id + ' ' +
|
||||||
str(alice_posts_before))
|
str(alice_posts_before))
|
||||||
password = 'alicepass'
|
password = 'alicepass'
|
||||||
|
mitm_servers = []
|
||||||
send_delete_via_server(alice_dir, session_alice, 'alice', password,
|
send_delete_via_server(alice_dir, session_alice, 'alice', password,
|
||||||
alice_domain, alice_port,
|
alice_domain, alice_port,
|
||||||
http_prefix, outbox_post_id,
|
http_prefix, outbox_post_id,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(30):
|
for _ in range(30):
|
||||||
if os.path.isdir(inbox_path):
|
if os.path.isdir(inbox_path):
|
||||||
test = len([name for name in os.listdir(inbox_path)
|
test = len([name for name in os.listdir(inbox_path)
|
||||||
|
@ -3741,6 +3775,7 @@ def test_client_to_server(base_dir: str):
|
||||||
|
|
||||||
print('\n\nEVENT: Alice unfollows Bob')
|
print('\n\nEVENT: Alice unfollows Bob')
|
||||||
password = 'alicepass'
|
password = 'alicepass'
|
||||||
|
mitm_servers = []
|
||||||
send_unfollow_request_via_server(base_dir, session_alice,
|
send_unfollow_request_via_server(base_dir, session_alice,
|
||||||
'alice', password,
|
'alice', password,
|
||||||
alice_domain, alice_port,
|
alice_domain, alice_port,
|
||||||
|
@ -3748,7 +3783,7 @@ def test_client_to_server(base_dir: str):
|
||||||
http_prefix,
|
http_prefix,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, __version__, signing_priv_key_pem,
|
True, __version__, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
test_str = 'alice@' + alice_domain + ':' + str(alice_port)
|
test_str = 'alice@' + alice_domain + ':' + str(alice_port)
|
||||||
if not text_in_file(test_str, bob_followers_filename):
|
if not text_in_file(test_str, bob_followers_filename):
|
||||||
|
@ -6592,6 +6627,7 @@ def test_update_actor(base_dir: str):
|
||||||
'=gv5G\n' + \
|
'=gv5G\n' + \
|
||||||
'-----END PGP PUBLIC KEY BLOCK-----'
|
'-----END PGP PUBLIC KEY BLOCK-----'
|
||||||
signing_priv_key_pem = None
|
signing_priv_key_pem = None
|
||||||
|
mitm_servers = []
|
||||||
actor_update = \
|
actor_update = \
|
||||||
pgp_public_key_upload(alice_dir, session_alice,
|
pgp_public_key_upload(alice_dir, session_alice,
|
||||||
'alice', password,
|
'alice', password,
|
||||||
|
@ -6599,7 +6635,7 @@ def test_update_actor(base_dir: str):
|
||||||
http_prefix,
|
http_prefix,
|
||||||
cached_webfingers, person_cache,
|
cached_webfingers, person_cache,
|
||||||
True, pub_key, signing_priv_key_pem,
|
True, pub_key, signing_priv_key_pem,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
print('actor update result: ' + str(actor_update))
|
print('actor update result: ' + str(actor_update))
|
||||||
assert actor_update
|
assert actor_update
|
||||||
|
|
||||||
|
|
34
utils.py
34
utils.py
|
@ -5325,3 +5325,37 @@ def browser_supports_download_filename(ua_str: str) -> bool:
|
||||||
if 'mozilla' in ua_str or 'firefox' in ua_str:
|
if 'mozilla' in ua_str or 'firefox' in ua_str:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def detect_mitm(self) -> bool:
|
||||||
|
"""Detect if a request contains a MiTM
|
||||||
|
"""
|
||||||
|
mitm_domains = ['cloudflare']
|
||||||
|
# look for domains within these headers
|
||||||
|
check_headers = (
|
||||||
|
'Server', 'Report-To', 'Report-to', 'report-to',
|
||||||
|
'Expect-CT', 'Expect-Ct', 'expect-ct'
|
||||||
|
)
|
||||||
|
for interloper in mitm_domains:
|
||||||
|
for header_name in check_headers:
|
||||||
|
if not self.headers.get(header_name):
|
||||||
|
continue
|
||||||
|
if interloper in str(self.headers[header_name]):
|
||||||
|
print('MITM: ' + header_name + ' = ' +
|
||||||
|
str(self.headers[header_name]))
|
||||||
|
return True
|
||||||
|
# The presence of these headers on their own indicates a MiTM
|
||||||
|
mitm_headers = (
|
||||||
|
'CF-Connecting-IP', 'CF-RAY', 'CF-IPCountry', 'CF-Visitor',
|
||||||
|
'CDN-Loop', 'CF-Worker', 'CF-Cache-Status'
|
||||||
|
)
|
||||||
|
for header_name in mitm_headers:
|
||||||
|
if self.headers.get(header_name):
|
||||||
|
print('MITM: ' + header_name + ' = ' +
|
||||||
|
self.headers[header_name])
|
||||||
|
return True
|
||||||
|
if self.headers.get(header_name.lower()):
|
||||||
|
print('MITM: ' + header_name + ' = ' +
|
||||||
|
self.headers[header_name.lower()])
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
|
@ -44,7 +44,8 @@ def html_confirm_delete(server,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Shows a screen asking to confirm the deletion of a post
|
"""Shows a screen asking to confirm the deletion of a post
|
||||||
"""
|
"""
|
||||||
if '/statuses/' not in message_id:
|
if '/statuses/' not in message_id:
|
||||||
|
@ -105,7 +106,7 @@ def html_confirm_delete(server,
|
||||||
cw_lists, lists_enabled, timezone, mitm,
|
cw_lists, lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None, buy_sites,
|
minimize_all_images, None, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache, mitm_servers)
|
||||||
delete_post_str += '<center>'
|
delete_post_str += '<center>'
|
||||||
delete_post_str += \
|
delete_post_str += \
|
||||||
' <p class="followText">' + \
|
' <p class="followText">' + \
|
||||||
|
|
|
@ -55,14 +55,15 @@ def html_conversation_view(authorized: bool, post_id: str,
|
||||||
block_federated: [],
|
block_federated: [],
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
ua_str: str,
|
ua_str: str,
|
||||||
default_timeline: str) -> str:
|
default_timeline: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show a page containing a conversation thread
|
"""Show a page containing a conversation thread
|
||||||
"""
|
"""
|
||||||
conv_posts = \
|
conv_posts = \
|
||||||
download_conversation_posts(authorized,
|
download_conversation_posts(authorized,
|
||||||
session, http_prefix, base_dir,
|
session, http_prefix, base_dir,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
post_id, debug)
|
post_id, debug, mitm_servers)
|
||||||
|
|
||||||
if not conv_posts:
|
if not conv_posts:
|
||||||
return None
|
return None
|
||||||
|
@ -154,7 +155,8 @@ def html_conversation_view(authorized: bool, post_id: str,
|
||||||
timezone, False, bold_reading,
|
timezone, False, bold_reading,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str:
|
if post_str:
|
||||||
conv_str += \
|
conv_str += \
|
||||||
current_reading_str + text_mode_separator + \
|
current_reading_str + text_mode_separator + \
|
||||||
|
|
|
@ -273,7 +273,8 @@ def html_new_post(edit_post_params: {},
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
default_buy_site: str,
|
default_buy_site: str,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
searchable_by_default: str) -> str:
|
searchable_by_default: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""New post screen
|
"""New post screen
|
||||||
"""
|
"""
|
||||||
# get the json if this is an edited post
|
# get the json if this is an edited post
|
||||||
|
@ -466,7 +467,8 @@ def html_new_post(edit_post_params: {},
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
new_post_text += \
|
new_post_text += \
|
||||||
open_content_warning(replied_to_post, translate)
|
open_content_warning(replied_to_post, translate)
|
||||||
# about the author
|
# about the author
|
||||||
|
|
|
@ -42,7 +42,8 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Shows posts on the front screen of a news instance
|
"""Shows posts on the front screen of a news instance
|
||||||
These should only be public blog posts from the features timeline
|
These should only be public blog posts from the features timeline
|
||||||
which is the blog timeline of the news actor
|
which is the blog timeline of the news actor
|
||||||
|
@ -99,7 +100,8 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str:
|
if post_str:
|
||||||
profile_str += post_str + separator_str
|
profile_str += post_str + separator_str
|
||||||
ctr += 1
|
ctr += 1
|
||||||
|
@ -132,7 +134,8 @@ def html_front_screen(signing_priv_key_pem: str,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the news instance front screen
|
"""Show the news instance front screen
|
||||||
"""
|
"""
|
||||||
bold_reading = False
|
bold_reading = False
|
||||||
|
@ -211,7 +214,8 @@ def html_front_screen(signing_priv_key_pem: str,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache) + license_str
|
auto_cw_cache,
|
||||||
|
mitm_servers) + license_str
|
||||||
|
|
||||||
# Footer which is only used for system accounts
|
# Footer which is only used for system accounts
|
||||||
profile_footer_str = ' </td>\n'
|
profile_footer_str = ' </td>\n'
|
||||||
|
|
|
@ -45,7 +45,8 @@ def html_likers_of_post(base_dir: str, nickname: str,
|
||||||
bold_reading: bool, dogwhistles: {},
|
bold_reading: bool, dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {}, auto_cw_cache: {},
|
buy_sites: {}, auto_cw_cache: {},
|
||||||
dict_name: str) -> str:
|
dict_name: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Returns html for a screen showing who liked a post
|
"""Returns html for a screen showing who liked a post
|
||||||
"""
|
"""
|
||||||
css_filename = base_dir + '/epicyon-profile.css'
|
css_filename = base_dir + '/epicyon-profile.css'
|
||||||
|
@ -118,7 +119,8 @@ def html_likers_of_post(base_dir: str, nickname: str,
|
||||||
timezone, mitm, bold_reading,
|
timezone, mitm, bold_reading,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
# show likers beneath the post
|
# show likers beneath the post
|
||||||
obj = post_json_object
|
obj = post_json_object
|
||||||
|
|
|
@ -67,7 +67,8 @@ def html_moderation(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the moderation feed as html
|
"""Show the moderation feed as html
|
||||||
This is what you see when selecting the "mod" timeline
|
This is what you see when selecting the "mod" timeline
|
||||||
"""
|
"""
|
||||||
|
@ -97,7 +98,7 @@ def html_moderation(default_timeline: str,
|
||||||
timezone, bold_reading, dogwhistles, ua_str,
|
timezone, bold_reading, dogwhistles, ua_str,
|
||||||
min_images_for_accounts, reverse_sequence, None,
|
min_images_for_accounts, reverse_sequence, None,
|
||||||
buy_sites, auto_cw_cache, show_announces,
|
buy_sites, auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_account_info(translate: {},
|
def html_account_info(translate: {},
|
||||||
|
@ -106,7 +107,8 @@ def html_account_info(translate: {},
|
||||||
search_handle: str, debug: bool,
|
search_handle: str, debug: bool,
|
||||||
system_language: str, signing_priv_key_pem: str,
|
system_language: str, signing_priv_key_pem: str,
|
||||||
back_url: str,
|
back_url: str,
|
||||||
block_federated: []) -> str:
|
block_federated: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Shows which domains a search handle interacts with.
|
"""Shows which domains a search handle interacts with.
|
||||||
This screen is shown if a moderator enters a handle and selects info
|
This screen is shown if a moderator enters a handle and selects info
|
||||||
on the moderation screen
|
on the moderation screen
|
||||||
|
@ -162,13 +164,15 @@ def html_account_info(translate: {},
|
||||||
http_prefix, debug,
|
http_prefix, debug,
|
||||||
__version__, word_frequency,
|
__version__, word_frequency,
|
||||||
system_language,
|
system_language,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
# get a list of any blocked followers
|
# get a list of any blocked followers
|
||||||
followers_list = \
|
followers_list = \
|
||||||
download_follow_collection(signing_priv_key_pem,
|
download_follow_collection(signing_priv_key_pem,
|
||||||
'followers', session,
|
'followers', session,
|
||||||
http_prefix, search_actor, 1, 5, debug)
|
http_prefix, search_actor, 1, 5, debug,
|
||||||
|
mitm_servers)
|
||||||
blocked_followers = []
|
blocked_followers = []
|
||||||
for follower_actor in followers_list:
|
for follower_actor in followers_list:
|
||||||
follower_nickname = get_nickname_from_actor(follower_actor)
|
follower_nickname = get_nickname_from_actor(follower_actor)
|
||||||
|
@ -187,7 +191,8 @@ def html_account_info(translate: {},
|
||||||
following_list = \
|
following_list = \
|
||||||
download_follow_collection(signing_priv_key_pem,
|
download_follow_collection(signing_priv_key_pem,
|
||||||
'following', session,
|
'following', session,
|
||||||
http_prefix, search_actor, 1, 5, debug)
|
http_prefix, search_actor, 1, 5, debug,
|
||||||
|
mitm_servers)
|
||||||
blocked_following = []
|
blocked_following = []
|
||||||
for following_actor in following_list:
|
for following_actor in following_list:
|
||||||
following_nickname = get_nickname_from_actor(following_actor)
|
following_nickname = get_nickname_from_actor(following_actor)
|
||||||
|
|
|
@ -35,7 +35,8 @@ def _html_podcast_chapters(link_url: str,
|
||||||
session, session_onion, session_i2p,
|
session, session_onion, session_i2p,
|
||||||
http_prefix: str, domain: str,
|
http_prefix: str, domain: str,
|
||||||
podcast_properties: {},
|
podcast_properties: {},
|
||||||
debug: bool) -> str:
|
debug: bool,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Returns html for chapters of a podcast
|
"""Returns html for chapters of a podcast
|
||||||
"""
|
"""
|
||||||
if not podcast_properties:
|
if not podcast_properties:
|
||||||
|
@ -69,7 +70,7 @@ def _html_podcast_chapters(link_url: str,
|
||||||
if 'json' in url_type:
|
if 'json' in url_type:
|
||||||
chapters_json = \
|
chapters_json = \
|
||||||
get_json(None, curr_session, chapters_url,
|
get_json(None, curr_session, chapters_url,
|
||||||
as_header, None, debug, __version__,
|
as_header, None, debug, mitm_servers, __version__,
|
||||||
http_prefix, domain)
|
http_prefix, domain)
|
||||||
if not get_json_valid(chapters_json):
|
if not get_json_valid(chapters_json):
|
||||||
return ''
|
return ''
|
||||||
|
@ -309,7 +310,8 @@ def html_podcast_episode(translate: {},
|
||||||
newswire_item: [],
|
newswire_item: [],
|
||||||
text_mode_banner: str,
|
text_mode_banner: str,
|
||||||
session, session_onion, session_i2p,
|
session, session_onion, session_i2p,
|
||||||
http_prefix: str, debug: bool) -> str:
|
http_prefix: str, debug: bool,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Returns html for a podcast episode, an item from the newswire
|
"""Returns html for a podcast episode, an item from the newswire
|
||||||
"""
|
"""
|
||||||
css_filename = base_dir + '/epicyon-podcast.css'
|
css_filename = base_dir + '/epicyon-podcast.css'
|
||||||
|
@ -513,7 +515,7 @@ def html_podcast_episode(translate: {},
|
||||||
_html_podcast_chapters(link_url,
|
_html_podcast_chapters(link_url,
|
||||||
session, session_onion, session_i2p,
|
session, session_onion, session_i2p,
|
||||||
http_prefix, domain,
|
http_prefix, domain,
|
||||||
podcast_properties, debug)
|
podcast_properties, debug, mitm_servers)
|
||||||
|
|
||||||
podcast_str += ' </center>\n'
|
podcast_str += ' </center>\n'
|
||||||
podcast_str += '</div>\n'
|
podcast_str += '</div>\n'
|
||||||
|
|
|
@ -490,7 +490,8 @@ def _get_post_from_recent_cache(session,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
first_post_id: str,
|
first_post_id: str,
|
||||||
ua_str: str,
|
ua_str: str,
|
||||||
translate: {}) -> str:
|
translate: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Attempts to get the html post from the recent posts cache in memory
|
"""Attempts to get the html post from the recent posts cache in memory
|
||||||
"""
|
"""
|
||||||
if box_name == 'tlmedia':
|
if box_name == 'tlmedia':
|
||||||
|
@ -517,7 +518,7 @@ def _get_post_from_recent_cache(session,
|
||||||
update_avatar_image_cache(signing_priv_key_pem,
|
update_avatar_image_cache(signing_priv_key_pem,
|
||||||
session, base_dir, http_prefix,
|
session, base_dir, http_prefix,
|
||||||
post_actor, avatar_url, person_cache,
|
post_actor, avatar_url, person_cache,
|
||||||
allow_downloads)
|
allow_downloads, mitm_servers)
|
||||||
|
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '2.2')
|
_log_post_timing(enable_timing_log, post_start_time, '2.2')
|
||||||
|
|
||||||
|
@ -1395,7 +1396,8 @@ def _get_post_title_announce_html(base_dir: str,
|
||||||
message_id_str: str,
|
message_id_str: str,
|
||||||
container_class_icons: str,
|
container_class_icons: str,
|
||||||
container_class: str,
|
container_class: str,
|
||||||
mitm: bool) -> (str, str, str, str):
|
mitm: bool,
|
||||||
|
mitm_servers: []) -> (str, str, str, str):
|
||||||
"""Returns the announce title of a post containing names of participants
|
"""Returns the announce title of a post containing names of participants
|
||||||
x announces y
|
x announces y
|
||||||
"""
|
"""
|
||||||
|
@ -1464,7 +1466,7 @@ def _get_post_title_announce_html(base_dir: str,
|
||||||
announce_display_name,
|
announce_display_name,
|
||||||
nickname, announce_handle)
|
nickname, announce_handle)
|
||||||
|
|
||||||
if mitm:
|
if mitm or announce_domain in mitm_servers:
|
||||||
title_str += _mitm_warning_html(translate)
|
title_str += _mitm_warning_html(translate)
|
||||||
|
|
||||||
# show avatar of person replied to
|
# show avatar of person replied to
|
||||||
|
@ -1621,7 +1623,8 @@ def _get_post_title_reply_html(base_dir: str,
|
||||||
container_class: str,
|
container_class: str,
|
||||||
mitm: bool,
|
mitm: bool,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
session, debug: bool) -> (str, str, str, str):
|
session, debug: bool,
|
||||||
|
mitm_servers: []) -> (str, str, str, str):
|
||||||
"""Returns the reply title of a post containing names of participants
|
"""Returns the reply title of a post containing names of participants
|
||||||
x replies to y
|
x replies to y
|
||||||
"""
|
"""
|
||||||
|
@ -1663,7 +1666,7 @@ def _get_post_title_reply_html(base_dir: str,
|
||||||
reply_post_json = \
|
reply_post_json = \
|
||||||
get_json(signing_priv_key_pem,
|
get_json(signing_priv_key_pem,
|
||||||
session, reply_url,
|
session, reply_url,
|
||||||
headers, None, debug,
|
headers, None, debug, mitm_servers,
|
||||||
__version__, http_prefix, domain)
|
__version__, http_prefix, domain)
|
||||||
if get_json_valid(reply_post_json):
|
if get_json_valid(reply_post_json):
|
||||||
if isinstance(reply_post_json, dict):
|
if isinstance(reply_post_json, dict):
|
||||||
|
@ -1742,7 +1745,7 @@ def _get_post_title_reply_html(base_dir: str,
|
||||||
_get_reply_html(translate, in_reply_to, reply_display_name,
|
_get_reply_html(translate, in_reply_to, reply_display_name,
|
||||||
nickname, post_json_object, reply_handle)
|
nickname, post_json_object, reply_handle)
|
||||||
|
|
||||||
if mitm:
|
if mitm or reply_domain in mitm_servers:
|
||||||
title_str += _mitm_warning_html(translate)
|
title_str += _mitm_warning_html(translate)
|
||||||
|
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '13.7')
|
_log_post_timing(enable_timing_log, post_start_time, '13.7')
|
||||||
|
@ -1792,7 +1795,8 @@ def _get_post_title_html(base_dir: str,
|
||||||
mitm: bool,
|
mitm: bool,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
session,
|
session,
|
||||||
debug: bool) -> (str, str, str, str):
|
debug: bool,
|
||||||
|
mitm_servers: []) -> (str, str, str, str):
|
||||||
"""Returns the title of a post containing names of participants
|
"""Returns the title of a post containing names of participants
|
||||||
x replies to y, x announces y, etc
|
x replies to y, x announces y, etc
|
||||||
"""
|
"""
|
||||||
|
@ -1835,7 +1839,8 @@ def _get_post_title_html(base_dir: str,
|
||||||
container_class_icons,
|
container_class_icons,
|
||||||
container_class, mitm,
|
container_class, mitm,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
session, debug)
|
session, debug,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def _get_footer_with_icons(show_icons: bool,
|
def _get_footer_with_icons(show_icons: bool,
|
||||||
|
@ -2127,7 +2132,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
minimize_all_images: bool,
|
minimize_all_images: bool,
|
||||||
first_post_id: str,
|
first_post_id: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
""" Shows a single post as html
|
""" Shows a single post as html
|
||||||
"""
|
"""
|
||||||
if not post_json_object:
|
if not post_json_object:
|
||||||
|
@ -2197,7 +2203,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
max_recent_posts,
|
max_recent_posts,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
first_post_id, ua_str,
|
first_post_id, ua_str,
|
||||||
translate)
|
translate,
|
||||||
|
mitm_servers)
|
||||||
if post_html:
|
if post_html:
|
||||||
return post_html
|
return post_html
|
||||||
if use_cache_only and post_json_object['type'] != 'Announce':
|
if use_cache_only and post_json_object['type'] != 'Announce':
|
||||||
|
@ -2210,7 +2217,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
post_actor, person_cache,
|
post_actor, person_cache,
|
||||||
avatar_url, allow_downloads,
|
avatar_url, allow_downloads,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '5')
|
_log_post_timing(enable_timing_log, post_start_time, '5')
|
||||||
|
|
||||||
|
@ -2230,7 +2238,7 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
webfinger_handle(session, post_actor_handle, http_prefix,
|
webfinger_handle(session, post_actor_handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, __version__, False, False,
|
domain, __version__, False, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
|
|
||||||
avatar_url2 = None
|
avatar_url2 = None
|
||||||
display_name = None
|
display_name = None
|
||||||
|
@ -2246,7 +2254,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
http_prefix,
|
http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
'outbox', 72367,
|
'outbox', 72367,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '6')
|
_log_post_timing(enable_timing_log, post_start_time, '6')
|
||||||
|
|
||||||
|
@ -2318,7 +2327,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
blocked_cache, block_federated,
|
blocked_cache, block_federated,
|
||||||
bold_reading,
|
bold_reading,
|
||||||
show_vote_posts,
|
show_vote_posts,
|
||||||
languages_understood)
|
languages_understood,
|
||||||
|
mitm_servers)
|
||||||
if not post_json_announce:
|
if not post_json_announce:
|
||||||
# if the announce could not be downloaded then mark it as rejected
|
# if the announce could not be downloaded then mark it as rejected
|
||||||
announced_post_id = remove_id_ending(post_json_object['id'])
|
announced_post_id = remove_id_ending(post_json_object['id'])
|
||||||
|
@ -2346,7 +2356,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
max_recent_posts,
|
max_recent_posts,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
first_post_id, ua_str,
|
first_post_id, ua_str,
|
||||||
translate)
|
translate,
|
||||||
|
mitm_servers)
|
||||||
if post_html:
|
if post_html:
|
||||||
return post_html
|
return post_html
|
||||||
|
|
||||||
|
@ -2652,7 +2663,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
container_class_icons,
|
container_class_icons,
|
||||||
container_class, mitm,
|
container_class, mitm,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
session, False)
|
session, False,
|
||||||
|
mitm_servers)
|
||||||
title_str += title_str2
|
title_str += title_str2
|
||||||
|
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '14')
|
_log_post_timing(enable_timing_log, post_start_time, '14')
|
||||||
|
@ -3095,7 +3107,7 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
bold_reading: bool, dogwhistles: {},
|
bold_reading: bool, dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {}, mitm_servers: []) -> str:
|
||||||
"""Show an individual post as html
|
"""Show an individual post as html
|
||||||
"""
|
"""
|
||||||
original_post_json = post_json_object
|
original_post_json = post_json_object
|
||||||
|
@ -3182,7 +3194,7 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
cw_lists, lists_enabled, timezone, mitm,
|
cw_lists, lists_enabled, timezone, mitm,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None, buy_sites,
|
minimize_all_images, None, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache, mitm_servers)
|
||||||
message_id = remove_id_ending(post_json_object['id'])
|
message_id = remove_id_ending(post_json_object['id'])
|
||||||
|
|
||||||
# show the previous posts
|
# show the previous posts
|
||||||
|
@ -3234,7 +3246,8 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images,
|
minimize_all_images,
|
||||||
None, buy_sites,
|
None, buy_sites,
|
||||||
auto_cw_cache) + post_str
|
auto_cw_cache,
|
||||||
|
mitm_servers) + post_str
|
||||||
|
|
||||||
# show the following posts
|
# show the following posts
|
||||||
post_filename = locate_post(base_dir, nickname, domain, message_id)
|
post_filename = locate_post(base_dir, nickname, domain, message_id)
|
||||||
|
@ -3275,7 +3288,8 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
css_filename = base_dir + '/epicyon-profile.css'
|
css_filename = base_dir + '/epicyon-profile.css'
|
||||||
if os.path.isfile(base_dir + '/epicyon.css'):
|
if os.path.isfile(base_dir + '/epicyon.css'):
|
||||||
css_filename = base_dir + '/epicyon.css'
|
css_filename = base_dir + '/epicyon.css'
|
||||||
|
@ -3327,7 +3341,8 @@ def html_post_replies(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the replies to an individual post as html
|
"""Show the replies to an individual post as html
|
||||||
"""
|
"""
|
||||||
replies_str = ''
|
replies_str = ''
|
||||||
|
@ -3359,7 +3374,8 @@ def html_post_replies(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
css_filename = base_dir + '/epicyon-profile.css'
|
css_filename = base_dir + '/epicyon-profile.css'
|
||||||
if os.path.isfile(base_dir + '/epicyon.css'):
|
if os.path.isfile(base_dir + '/epicyon.css'):
|
||||||
|
@ -3394,7 +3410,8 @@ def html_emoji_reaction_picker(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Returns the emoji picker screen
|
"""Returns the emoji picker screen
|
||||||
"""
|
"""
|
||||||
minimize_all_images = False
|
minimize_all_images = False
|
||||||
|
@ -3423,7 +3440,7 @@ def html_emoji_reaction_picker(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
cw_lists, lists_enabled, timezone, False,
|
cw_lists, lists_enabled, timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None, buy_sites,
|
minimize_all_images, None, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache, mitm_servers)
|
||||||
|
|
||||||
reactions_filename = base_dir + '/emoji/reactions.json'
|
reactions_filename = base_dir + '/emoji/reactions.json'
|
||||||
if not os.path.isfile(reactions_filename):
|
if not os.path.isfile(reactions_filename):
|
||||||
|
|
|
@ -248,7 +248,8 @@ def html_profile_after_search(authorized: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
max_shares_on_profile: int,
|
max_shares_on_profile: int,
|
||||||
no_of_books: int,
|
no_of_books: int,
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show a profile page after a search for a fediverse address
|
"""Show a profile page after a search for a fediverse address
|
||||||
"""
|
"""
|
||||||
http = False
|
http = False
|
||||||
|
@ -275,7 +276,8 @@ def html_profile_after_search(authorized: bool,
|
||||||
profile_json, as_header = \
|
profile_json, as_header = \
|
||||||
get_actor_json(from_domain, profile_handle, http,
|
get_actor_json(from_domain, profile_handle, http,
|
||||||
gnunet, ipfs, ipns, debug, False,
|
gnunet, ipfs, ipns, debug, False,
|
||||||
signing_priv_key_pem, session)
|
signing_priv_key_pem, session,
|
||||||
|
mitm_servers)
|
||||||
if not profile_json:
|
if not profile_json:
|
||||||
return None
|
return None
|
||||||
if not profile_json.get('id'):
|
if not profile_json.get('id'):
|
||||||
|
@ -542,7 +544,8 @@ def html_profile_after_search(authorized: bool,
|
||||||
user_feed = \
|
user_feed = \
|
||||||
parse_user_feed(signing_priv_key_pem,
|
parse_user_feed(signing_priv_key_pem,
|
||||||
session, outbox_url, as_header, project_version,
|
session, outbox_url, as_header, project_version,
|
||||||
http_prefix, from_domain, debug, 0)
|
http_prefix, from_domain, debug, 0,
|
||||||
|
mitm_servers)
|
||||||
if not user_feed:
|
if not user_feed:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: no user feed in profile preview')
|
print('DEBUG: no user feed in profile preview')
|
||||||
|
@ -566,8 +569,8 @@ def html_profile_after_search(authorized: bool,
|
||||||
}
|
}
|
||||||
item = \
|
item = \
|
||||||
get_json(signing_priv_key_pem, session, item['object'],
|
get_json(signing_priv_key_pem, session, item['object'],
|
||||||
as_header2, None, debug, __version__,
|
as_header2, None, debug, mitm_servers,
|
||||||
http_prefix, from_domain)
|
__version__, http_prefix, from_domain)
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: resolved public feed announce ' +
|
print('DEBUG: resolved public feed announce ' +
|
||||||
str(item))
|
str(item))
|
||||||
|
@ -609,7 +612,8 @@ def html_profile_after_search(authorized: bool,
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if not profile_post_html:
|
if not profile_post_html:
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: no html produced for profile post: ' +
|
print('DEBUG: no html produced for profile post: ' +
|
||||||
|
@ -1032,7 +1036,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
no_of_books: int,
|
no_of_books: int,
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the profile page as html
|
"""Show the profile page as html
|
||||||
"""
|
"""
|
||||||
show_moved_accounts = False
|
show_moved_accounts = False
|
||||||
|
@ -1065,7 +1070,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
lists_enabled, {},
|
lists_enabled, {},
|
||||||
min_images_for_accounts, buy_sites,
|
min_images_for_accounts, buy_sites,
|
||||||
auto_cw_cache,
|
auto_cw_cache,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
domain, port = get_domain_from_actor(profile_json['id'])
|
domain, port = get_domain_from_actor(profile_json['id'])
|
||||||
if not domain:
|
if not domain:
|
||||||
|
@ -1172,7 +1178,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
if website_url:
|
if website_url:
|
||||||
if site_is_verified(session, base_dir, http_prefix,
|
if site_is_verified(session, base_dir, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
website_url, False, debug):
|
website_url, False, debug,
|
||||||
|
mitm_servers):
|
||||||
donate_section += \
|
donate_section += \
|
||||||
'<p><div class="verified_site">' + \
|
'<p><div class="verified_site">' + \
|
||||||
translate['Website'] + ': ' + \
|
translate['Website'] + ': ' + \
|
||||||
|
@ -1202,7 +1209,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
if blog_address:
|
if blog_address:
|
||||||
if site_is_verified(session, base_dir, http_prefix,
|
if site_is_verified(session, base_dir, http_prefix,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
blog_address, False, debug):
|
blog_address, False, debug,
|
||||||
|
mitm_servers):
|
||||||
donate_section += \
|
donate_section += \
|
||||||
'<p><div class="verified_site">' + \
|
'<p><div class="verified_site">' + \
|
||||||
'Blog: ' + verified_site_checkmark + \
|
'Blog: ' + verified_site_checkmark + \
|
||||||
|
@ -1637,7 +1645,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
max_profile_posts,
|
max_profile_posts,
|
||||||
buy_sites,
|
buy_sites,
|
||||||
auto_cw_cache) + license_str
|
auto_cw_cache,
|
||||||
|
mitm_servers) + license_str
|
||||||
if not is_group:
|
if not is_group:
|
||||||
if selected == 'following':
|
if selected == 'following':
|
||||||
profile_str += \
|
profile_str += \
|
||||||
|
@ -1653,7 +1662,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
dormant_months, debug,
|
dormant_months, debug,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
if show_moved_accounts and selected == 'moved':
|
if show_moved_accounts and selected == 'moved':
|
||||||
profile_str += \
|
profile_str += \
|
||||||
_html_profile_following(translate, base_dir, http_prefix,
|
_html_profile_following(translate, base_dir, http_prefix,
|
||||||
|
@ -1668,7 +1678,8 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
dormant_months, debug,
|
dormant_months, debug,
|
||||||
signing_priv_key_pem,
|
signing_priv_key_pem,
|
||||||
sites_unavailable,
|
sites_unavailable,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
if selected == 'followers':
|
if selected == 'followers':
|
||||||
profile_str += \
|
profile_str += \
|
||||||
_html_profile_following(translate, base_dir, http_prefix,
|
_html_profile_following(translate, base_dir, http_prefix,
|
||||||
|
@ -1680,7 +1691,7 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
selected, users_path, page_number,
|
selected, users_path, page_number,
|
||||||
max_items_per_page, dormant_months, debug,
|
max_items_per_page, dormant_months, debug,
|
||||||
signing_priv_key_pem, sites_unavailable,
|
signing_priv_key_pem, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
if authorized and selected == 'inactive':
|
if authorized and selected == 'inactive':
|
||||||
profile_str += \
|
profile_str += \
|
||||||
_html_profile_following(translate, base_dir, http_prefix,
|
_html_profile_following(translate, base_dir, http_prefix,
|
||||||
|
@ -1692,7 +1703,7 @@ def html_profile(signing_priv_key_pem: str,
|
||||||
selected, users_path, page_number,
|
selected, users_path, page_number,
|
||||||
max_items_per_page, dormant_months, debug,
|
max_items_per_page, dormant_months, debug,
|
||||||
signing_priv_key_pem, sites_unavailable,
|
signing_priv_key_pem, sites_unavailable,
|
||||||
system_language)
|
system_language, mitm_servers)
|
||||||
if not is_group:
|
if not is_group:
|
||||||
if selected == 'roles':
|
if selected == 'roles':
|
||||||
profile_str += \
|
profile_str += \
|
||||||
|
@ -1745,7 +1756,8 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
max_profile_posts: int,
|
max_profile_posts: int,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Shows posts on the profile screen
|
"""Shows posts on the profile screen
|
||||||
These should only be public posts
|
These should only be public posts
|
||||||
"""
|
"""
|
||||||
|
@ -1804,7 +1816,8 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
|
||||||
timezone, False,
|
timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str and item_id not in shown_items:
|
if post_str and item_id not in shown_items:
|
||||||
profile_str += post_str + separator_str
|
profile_str += post_str + separator_str
|
||||||
shown_items.append(item_id)
|
shown_items.append(item_id)
|
||||||
|
@ -1826,7 +1839,8 @@ def _html_profile_following(translate: {}, base_dir: str, http_prefix: str,
|
||||||
dormant_months: int, debug: bool,
|
dormant_months: int, debug: bool,
|
||||||
signing_priv_key_pem: str,
|
signing_priv_key_pem: str,
|
||||||
sites_unavailable: [],
|
sites_unavailable: [],
|
||||||
system_language: str) -> str:
|
system_language: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Shows following on the profile screen
|
"""Shows following on the profile screen
|
||||||
"""
|
"""
|
||||||
profile_str = ''
|
profile_str = ''
|
||||||
|
@ -1874,7 +1888,9 @@ def _html_profile_following(translate: {}, base_dir: str, http_prefix: str,
|
||||||
authorized, nickname,
|
authorized, nickname,
|
||||||
http_prefix, project_version,
|
http_prefix, project_version,
|
||||||
dormant, offline,
|
dormant, offline,
|
||||||
debug, system_language, buttons)
|
debug, system_language,
|
||||||
|
mitm_servers,
|
||||||
|
buttons)
|
||||||
|
|
||||||
if authorized and max_items_per_page and page_number:
|
if authorized and max_items_per_page and page_number:
|
||||||
if len(following_json['orderedItems']) >= max_items_per_page:
|
if len(following_json['orderedItems']) >= max_items_per_page:
|
||||||
|
@ -3657,7 +3673,8 @@ def _individual_follow_as_html(signing_priv_key_pem: str,
|
||||||
offline: bool,
|
offline: bool,
|
||||||
debug: bool,
|
debug: bool,
|
||||||
system_language: str,
|
system_language: str,
|
||||||
buttons=[]) -> str:
|
mitm_servers: [],
|
||||||
|
buttons: list = []) -> str:
|
||||||
"""An individual follow entry on the profile screen
|
"""An individual follow entry on the profile screen
|
||||||
"""
|
"""
|
||||||
follow_url_nickname = get_nickname_from_actor(follow_url)
|
follow_url_nickname = get_nickname_from_actor(follow_url)
|
||||||
|
@ -3683,7 +3700,7 @@ def _individual_follow_as_html(signing_priv_key_pem: str,
|
||||||
webfinger_handle(session, follow_url_handle, http_prefix,
|
webfinger_handle(session, follow_url_handle, http_prefix,
|
||||||
cached_webfingers,
|
cached_webfingers,
|
||||||
domain, __version__, debug, False,
|
domain, __version__, debug, False,
|
||||||
signing_priv_key_pem)
|
signing_priv_key_pem, mitm_servers)
|
||||||
|
|
||||||
origin_domain = domain
|
origin_domain = domain
|
||||||
(_, _, _, _, _, avatar_url2,
|
(_, _, _, _, _, avatar_url2,
|
||||||
|
@ -3696,7 +3713,8 @@ def _individual_follow_as_html(signing_priv_key_pem: str,
|
||||||
http_prefix,
|
http_prefix,
|
||||||
follow_url_nickname,
|
follow_url_nickname,
|
||||||
domain, 'outbox', 43036,
|
domain, 'outbox', 43036,
|
||||||
system_language)
|
system_language,
|
||||||
|
mitm_servers)
|
||||||
if avatar_url2:
|
if avatar_url2:
|
||||||
avatar_url = avatar_url2
|
avatar_url = avatar_url2
|
||||||
|
|
||||||
|
|
|
@ -734,7 +734,8 @@ def html_history_search(translate: {}, base_dir: str,
|
||||||
dogwhistles: {}, access_keys: {},
|
dogwhistles: {}, access_keys: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show a page containing search results for your post history
|
"""Show a page containing search results for your post history
|
||||||
"""
|
"""
|
||||||
if historysearch.startswith("'"):
|
if historysearch.startswith("'"):
|
||||||
|
@ -851,7 +852,8 @@ def html_history_search(translate: {}, base_dir: str,
|
||||||
timezone, False, bold_reading,
|
timezone, False, bold_reading,
|
||||||
dogwhistles,
|
dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str:
|
if post_str:
|
||||||
history_search_form += separator_str + post_str
|
history_search_form += separator_str + post_str
|
||||||
index += 1
|
index += 1
|
||||||
|
@ -881,7 +883,8 @@ def html_hashtag_search(nickname: str, domain: str, port: int,
|
||||||
access_keys: {}, box_name: str,
|
access_keys: {}, box_name: str,
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
buy_sites: {}, auto_cw_cache: {},
|
buy_sites: {}, auto_cw_cache: {},
|
||||||
ua_str: str) -> str:
|
ua_str: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show a page containing search results for a hashtag
|
"""Show a page containing search results for a hashtag
|
||||||
or after selecting a hashtag from the swarm
|
or after selecting a hashtag from the swarm
|
||||||
"""
|
"""
|
||||||
|
@ -1080,7 +1083,8 @@ def html_hashtag_search(nickname: str, domain: str, port: int,
|
||||||
lists_enabled, timezone, False,
|
lists_enabled, timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str:
|
if post_str:
|
||||||
hashtag_search_form += \
|
hashtag_search_form += \
|
||||||
text_mode_separator + separator_str + post_str
|
text_mode_separator + separator_str + post_str
|
||||||
|
@ -1124,7 +1128,8 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
|
||||||
dogwhistles: {},
|
dogwhistles: {},
|
||||||
min_images_for_accounts: [],
|
min_images_for_accounts: [],
|
||||||
debug: bool, buy_sites: {},
|
debug: bool, buy_sites: {},
|
||||||
auto_cw_cache: {}) -> str:
|
auto_cw_cache: {},
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show a page containing search results for a remote hashtag
|
"""Show a page containing search results for a remote hashtag
|
||||||
"""
|
"""
|
||||||
hashtag = urllib.parse.unquote(hashtag_url.split('/')[-1])
|
hashtag = urllib.parse.unquote(hashtag_url.split('/')[-1])
|
||||||
|
@ -1139,7 +1144,7 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
|
||||||
hashtag_json = \
|
hashtag_json = \
|
||||||
get_json(signing_priv_key_pem,
|
get_json(signing_priv_key_pem,
|
||||||
session, hashtag_url_with_page, as_header, None, debug,
|
session, hashtag_url_with_page, as_header, None, debug,
|
||||||
__version__, http_prefix, domain)
|
mitm_servers, __version__, http_prefix, domain)
|
||||||
lines = []
|
lines = []
|
||||||
if get_json_valid(hashtag_json):
|
if get_json_valid(hashtag_json):
|
||||||
if 'orderedItems' in hashtag_json:
|
if 'orderedItems' in hashtag_json:
|
||||||
|
@ -1213,7 +1218,7 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
|
||||||
post_json_object = \
|
post_json_object = \
|
||||||
get_json(signing_priv_key_pem,
|
get_json(signing_priv_key_pem,
|
||||||
session, post_id, as_header, None, debug,
|
session, post_id, as_header, None, debug,
|
||||||
__version__, http_prefix, domain)
|
mitm_servers, __version__, http_prefix, domain)
|
||||||
if not get_json_valid(post_json_object):
|
if not get_json_valid(post_json_object):
|
||||||
print('No hashtag post for ' + post_id)
|
print('No hashtag post for ' + post_id)
|
||||||
continue
|
continue
|
||||||
|
@ -1287,7 +1292,8 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
|
||||||
lists_enabled, timezone, False,
|
lists_enabled, timezone, False,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images, None,
|
minimize_all_images, None,
|
||||||
buy_sites, auto_cw_cache)
|
buy_sites, auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
if post_str:
|
if post_str:
|
||||||
hashtag_search_form += \
|
hashtag_search_form += \
|
||||||
text_mode_separator + separator_str + post_str
|
text_mode_separator + separator_str + post_str
|
||||||
|
|
|
@ -523,7 +523,8 @@ def html_timeline(default_timeline: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
show_announces: bool,
|
show_announces: bool,
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the timeline as html
|
"""Show the timeline as html
|
||||||
"""
|
"""
|
||||||
enable_timing_log = False
|
enable_timing_log = False
|
||||||
|
@ -1136,7 +1137,8 @@ def html_timeline(default_timeline: str,
|
||||||
bold_reading, dogwhistles,
|
bold_reading, dogwhistles,
|
||||||
minimize_all_images,
|
minimize_all_images,
|
||||||
first_post_id, buy_sites,
|
first_post_id, buy_sites,
|
||||||
auto_cw_cache)
|
auto_cw_cache,
|
||||||
|
mitm_servers)
|
||||||
_log_timeline_timing(enable_timing_log,
|
_log_timeline_timing(enable_timing_log,
|
||||||
timeline_start_time, box_name, '12')
|
timeline_start_time, box_name, '12')
|
||||||
|
|
||||||
|
@ -1418,7 +1420,8 @@ def html_shares(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the shares timeline as html
|
"""Show the shares timeline as html
|
||||||
"""
|
"""
|
||||||
manually_approve_followers = \
|
manually_approve_followers = \
|
||||||
|
@ -1454,7 +1457,8 @@ def html_shares(default_timeline: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites,
|
reverse_sequence, None, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_wanted(default_timeline: str,
|
def html_wanted(default_timeline: str,
|
||||||
|
@ -1489,7 +1493,8 @@ def html_wanted(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the wanted timeline as html
|
"""Show the wanted timeline as html
|
||||||
"""
|
"""
|
||||||
manually_approve_followers = \
|
manually_approve_followers = \
|
||||||
|
@ -1525,7 +1530,8 @@ def html_wanted(default_timeline: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites,
|
reverse_sequence, None, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox(default_timeline: str,
|
def html_inbox(default_timeline: str,
|
||||||
|
@ -1563,7 +1569,8 @@ def html_inbox(default_timeline: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
show_announces: bool,
|
show_announces: bool,
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the inbox as html
|
"""Show the inbox as html
|
||||||
"""
|
"""
|
||||||
manually_approve_followers = \
|
manually_approve_followers = \
|
||||||
|
@ -1598,7 +1605,8 @@ def html_inbox(default_timeline: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
reverse_sequence, last_post_id,
|
reverse_sequence, last_post_id,
|
||||||
buy_sites, auto_cw_cache, show_announces,
|
buy_sites, auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_bookmarks(default_timeline: str,
|
def html_bookmarks(default_timeline: str,
|
||||||
|
@ -1634,7 +1642,8 @@ def html_bookmarks(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the bookmarks as html
|
"""Show the bookmarks as html
|
||||||
"""
|
"""
|
||||||
manually_approve_followers = \
|
manually_approve_followers = \
|
||||||
|
@ -1669,7 +1678,8 @@ def html_bookmarks(default_timeline: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites,
|
reverse_sequence, None, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_dms(default_timeline: str,
|
def html_inbox_dms(default_timeline: str,
|
||||||
|
@ -1706,7 +1716,8 @@ def html_inbox_dms(default_timeline: str,
|
||||||
last_post_id: str,
|
last_post_id: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the DM timeline as html
|
"""Show the DM timeline as html
|
||||||
"""
|
"""
|
||||||
artist = is_artist(base_dir, nickname)
|
artist = is_artist(base_dir, nickname)
|
||||||
|
@ -1737,7 +1748,8 @@ def html_inbox_dms(default_timeline: str,
|
||||||
min_images_for_accounts,
|
min_images_for_accounts,
|
||||||
reverse_sequence, last_post_id,
|
reverse_sequence, last_post_id,
|
||||||
buy_sites, auto_cw_cache, show_announces,
|
buy_sites, auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_replies(default_timeline: str,
|
def html_inbox_replies(default_timeline: str,
|
||||||
|
@ -1774,7 +1786,8 @@ def html_inbox_replies(default_timeline: str,
|
||||||
last_post_id: str,
|
last_post_id: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the replies timeline as html
|
"""Show the replies timeline as html
|
||||||
"""
|
"""
|
||||||
artist = is_artist(base_dir, nickname)
|
artist = is_artist(base_dir, nickname)
|
||||||
|
@ -1803,7 +1816,7 @@ def html_inbox_replies(default_timeline: str,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, last_post_id, buy_sites,
|
reverse_sequence, last_post_id, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_media(default_timeline: str,
|
def html_inbox_media(default_timeline: str,
|
||||||
|
@ -1841,7 +1854,8 @@ def html_inbox_media(default_timeline: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
show_announces: bool,
|
show_announces: bool,
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the media timeline as html
|
"""Show the media timeline as html
|
||||||
"""
|
"""
|
||||||
artist = is_artist(base_dir, nickname)
|
artist = is_artist(base_dir, nickname)
|
||||||
|
@ -1869,7 +1883,7 @@ def html_inbox_media(default_timeline: str,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, last_post_id, buy_sites,
|
reverse_sequence, last_post_id, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_blogs(default_timeline: str,
|
def html_inbox_blogs(default_timeline: str,
|
||||||
|
@ -1906,7 +1920,8 @@ def html_inbox_blogs(default_timeline: str,
|
||||||
last_post_id: str,
|
last_post_id: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the blogs timeline as html
|
"""Show the blogs timeline as html
|
||||||
"""
|
"""
|
||||||
artist = is_artist(base_dir, nickname)
|
artist = is_artist(base_dir, nickname)
|
||||||
|
@ -1935,7 +1950,7 @@ def html_inbox_blogs(default_timeline: str,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, last_post_id, buy_sites,
|
reverse_sequence, last_post_id, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_features(default_timeline: str,
|
def html_inbox_features(default_timeline: str,
|
||||||
|
@ -1972,7 +1987,8 @@ def html_inbox_features(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the features timeline as html
|
"""Show the features timeline as html
|
||||||
"""
|
"""
|
||||||
show_announces = True
|
show_announces = True
|
||||||
|
@ -2000,7 +2016,7 @@ def html_inbox_features(default_timeline: str,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites,
|
reverse_sequence, None, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_inbox_news(default_timeline: str,
|
def html_inbox_news(default_timeline: str,
|
||||||
|
@ -2036,7 +2052,8 @@ def html_inbox_news(default_timeline: str,
|
||||||
reverse_sequence: bool,
|
reverse_sequence: bool,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the news timeline as html
|
"""Show the news timeline as html
|
||||||
"""
|
"""
|
||||||
show_announces = True
|
show_announces = True
|
||||||
|
@ -2064,7 +2081,7 @@ def html_inbox_news(default_timeline: str,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites,
|
reverse_sequence, None, buy_sites,
|
||||||
auto_cw_cache, show_announces,
|
auto_cw_cache, show_announces,
|
||||||
known_epicyon_instances)
|
known_epicyon_instances, mitm_servers)
|
||||||
|
|
||||||
|
|
||||||
def html_outbox(default_timeline: str,
|
def html_outbox(default_timeline: str,
|
||||||
|
@ -2101,7 +2118,8 @@ def html_outbox(default_timeline: str,
|
||||||
buy_sites: {},
|
buy_sites: {},
|
||||||
auto_cw_cache: {},
|
auto_cw_cache: {},
|
||||||
show_announces: bool,
|
show_announces: bool,
|
||||||
known_epicyon_instances: []) -> str:
|
known_epicyon_instances: [],
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Show the Outbox as html
|
"""Show the Outbox as html
|
||||||
"""
|
"""
|
||||||
manually_approve_followers = \
|
manually_approve_followers = \
|
||||||
|
@ -2130,4 +2148,5 @@ def html_outbox(default_timeline: str,
|
||||||
cw_lists, lists_enabled, timezone, bold_reading,
|
cw_lists, lists_enabled, timezone, bold_reading,
|
||||||
dogwhistles, ua_str, min_images_for_accounts,
|
dogwhistles, ua_str, min_images_for_accounts,
|
||||||
reverse_sequence, None, buy_sites, auto_cw_cache,
|
reverse_sequence, None, buy_sites, auto_cw_cache,
|
||||||
show_announces, known_epicyon_instances)
|
show_announces, known_epicyon_instances,
|
||||||
|
mitm_servers)
|
||||||
|
|
|
@ -379,6 +379,7 @@ def update_avatar_image_cache(signing_priv_key_pem: str,
|
||||||
session, base_dir: str, http_prefix: str,
|
session, base_dir: str, http_prefix: str,
|
||||||
actor: str, avatar_url: str,
|
actor: str, avatar_url: str,
|
||||||
person_cache: {}, allow_downloads: bool,
|
person_cache: {}, allow_downloads: bool,
|
||||||
|
mitm_servers: [],
|
||||||
force: bool = False, debug: bool = False) -> str:
|
force: bool = False, debug: bool = False) -> str:
|
||||||
"""Updates the cached avatar for the given actor
|
"""Updates the cached avatar for the given actor
|
||||||
"""
|
"""
|
||||||
|
@ -451,7 +452,7 @@ def update_avatar_image_cache(signing_priv_key_pem: str,
|
||||||
person_json = \
|
person_json = \
|
||||||
get_json(signing_priv_key_pem, session, actor,
|
get_json(signing_priv_key_pem, session, actor,
|
||||||
session_headers, None,
|
session_headers, None,
|
||||||
debug, __version__, http_prefix, None)
|
debug, mitm_servers, __version__, http_prefix, None)
|
||||||
if get_json_valid(person_json):
|
if get_json_valid(person_json):
|
||||||
if not person_json.get('id'):
|
if not person_json.get('id'):
|
||||||
return None
|
return None
|
||||||
|
@ -1765,7 +1766,8 @@ def html_highlight_label(label: str, highlight: bool) -> str:
|
||||||
def get_avatar_image_url(session, base_dir: str, http_prefix: str,
|
def get_avatar_image_url(session, base_dir: str, http_prefix: str,
|
||||||
post_actor: str, person_cache: {},
|
post_actor: str, person_cache: {},
|
||||||
avatar_url: str, allow_downloads: bool,
|
avatar_url: str, allow_downloads: bool,
|
||||||
signing_priv_key_pem: str) -> str:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> str:
|
||||||
"""Returns the avatar image url
|
"""Returns the avatar image url
|
||||||
"""
|
"""
|
||||||
# get the avatar image url for the post actor
|
# get the avatar image url for the post actor
|
||||||
|
@ -1776,12 +1778,12 @@ def get_avatar_image_url(session, base_dir: str, http_prefix: str,
|
||||||
update_avatar_image_cache(signing_priv_key_pem,
|
update_avatar_image_cache(signing_priv_key_pem,
|
||||||
session, base_dir, http_prefix,
|
session, base_dir, http_prefix,
|
||||||
post_actor, avatar_url, person_cache,
|
post_actor, avatar_url, person_cache,
|
||||||
allow_downloads)
|
allow_downloads, mitm_servers)
|
||||||
else:
|
else:
|
||||||
update_avatar_image_cache(signing_priv_key_pem,
|
update_avatar_image_cache(signing_priv_key_pem,
|
||||||
session, base_dir, http_prefix,
|
session, base_dir, http_prefix,
|
||||||
post_actor, avatar_url, person_cache,
|
post_actor, avatar_url, person_cache,
|
||||||
allow_downloads)
|
allow_downloads, mitm_servers)
|
||||||
|
|
||||||
if not avatar_url:
|
if not avatar_url:
|
||||||
avatar_url = post_actor + '/avatar.png'
|
avatar_url = post_actor + '/avatar.png'
|
||||||
|
|
|
@ -72,7 +72,8 @@ def webfinger_handle(session, handle: str, http_prefix: str,
|
||||||
cached_webfingers: {},
|
cached_webfingers: {},
|
||||||
from_domain: str, project_version: str,
|
from_domain: str, project_version: str,
|
||||||
debug: bool, group_account: bool,
|
debug: bool, group_account: bool,
|
||||||
signing_priv_key_pem: str) -> {}:
|
signing_priv_key_pem: str,
|
||||||
|
mitm_servers: []) -> {}:
|
||||||
"""Gets webfinger result for the given ActivityPub handle
|
"""Gets webfinger result for the given ActivityPub handle
|
||||||
NOTE: in earlier implementations group_account modified the acct prefix.
|
NOTE: in earlier implementations group_account modified the acct prefix.
|
||||||
This has been left in, because currently there is still no consensus
|
This has been left in, because currently there is still no consensus
|
||||||
|
@ -106,7 +107,8 @@ def webfinger_handle(session, handle: str, http_prefix: str,
|
||||||
try:
|
try:
|
||||||
result = \
|
result = \
|
||||||
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, mitm_servers,
|
||||||
|
project_version, http_prefix, from_domain)
|
||||||
except BaseException as ex:
|
except BaseException as ex:
|
||||||
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
|
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
|
||||||
return None
|
return None
|
||||||
|
@ -126,7 +128,8 @@ def webfinger_handle(session, handle: str, http_prefix: str,
|
||||||
try:
|
try:
|
||||||
result = \
|
result = \
|
||||||
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, mitm_servers,
|
||||||
|
project_version, http_prefix, from_domain)
|
||||||
except BaseException as ex:
|
except BaseException as ex:
|
||||||
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
|
print('ERROR: webfinger_handle ' + wf_handle + ' ' + str(ex))
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue