diff --git a/epicyon.py b/epicyon.py index 9a9381f32..82a1fa6bc 100644 --- a/epicyon.py +++ b/epicyon.py @@ -127,6 +127,7 @@ from blocking import get_blocks_via_server from poison import html_poisoned from poison import load_dictionary from poison import load_2grams +from webapp_post import get_instance_software def str2bool(value_str) -> bool: @@ -1344,45 +1345,29 @@ def _command_options() -> None: if '/' in instance_domain_name: instance_domain_name = instance_domain_name.split('/')[0] session = create_session(proxy_type) - profile_str = 'https://www.w3.org/ns/activitystreams' - as_header = { - 'Accept': 'application/ld+json; profile="' + profile_str + '"' - } + instance_softw = {} if not argb.domain: argb.domain = get_config_param(base_dir, 'domain') domain = '' if argb.domain: domain = argb.domain - signing_priv_key_pem = get_instance_actor_key(base_dir, domain) + if not argb.domain: + origin_domain = get_config_param(base_dir, 'domain') + else: + origin_domain = argb.domain + signing_priv_key_pem = get_instance_actor_key(base_dir, origin_domain) mitm_servers: list[str] = [] - - nodeinfo1_url = \ - http_prefix + '://' + instance_domain_name + \ - '/.well-known/nodeinfo' - nodeinfo1_json = get_json(signing_priv_key_pem, session, nodeinfo1_url, - as_header, None, debug, mitm_servers, - __version__, http_prefix, domain) - nodeinfo_url = None - if get_json_valid(nodeinfo1_json): - if nodeinfo1_json.get('links'): - if isinstance(nodeinfo1_json['links'], list): - if len(nodeinfo1_json['links']) > 0: - if nodeinfo1_json['links'][0].get('href'): - href = nodeinfo1_json['links'][0]['href'] - if isinstance(href, str): - nodeinfo_url = href - if nodeinfo_url: - nodeinfo_json = \ - get_json(signing_priv_key_pem, session, nodeinfo_url, - as_header, None, debug, mitm_servers, - __version__, http_prefix, domain) - if get_json_valid(nodeinfo_json): - if nodeinfo_json.get('software'): - if isinstance(nodeinfo_json['software'], dict): - if nodeinfo_json['software'].get('name'): - if isinstance(nodeinfo_json['software']['name'], - str): - print(nodeinfo_json['software']['name']) + software_name = \ + get_instance_software(base_dir, session, + http_prefix, + instance_domain_name, + instance_softw, + signing_priv_key_pem, + debug, + http_prefix, domain, + mitm_servers, False) + if software_name: + print(software_name.split(' ')[1]) session.close() sys.exit() diff --git a/webapp_post.py b/webapp_post.py index bb8f6b0da..7e9d0accb 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -152,14 +152,15 @@ def _get_instance_software_html(title_str: str, software_name: str) -> str: return instance_str -def _get_instance_software(base_dir: str, session, - instance_http_prefix: str, - instance_domain: str, - instance_software: {}, - signing_priv_key_pem: str, - debug: bool, - http_prefix: str, domain: str, - mitm_servers: []) -> str: +def get_instance_software(base_dir: str, session, + instance_http_prefix: str, + instance_domain: str, + instance_software: {}, + signing_priv_key_pem: str, + debug: bool, + http_prefix: str, domain: str, + mitm_servers: [], + store: bool) -> str: """returns the type of instance software for the given instance domain eg. mastodon, epicyon, pixelfed """ @@ -216,8 +217,10 @@ def _get_instance_software(base_dir: str, session, return '' software_name = remove_html(software_name) instance_software[instance_domain] = software_name - instance_software_filename = data_dir(base_dir) + '/instance_software.json' - save_json(instance_software, instance_software_filename) + if store: + instance_software_filename = \ + data_dir(base_dir) + '/instance_software.json' + save_json(instance_software, instance_software_filename) return instance_domain + ' ' + software_name @@ -2788,14 +2791,14 @@ def individual_post_as_html(signing_priv_key_pem: str, if '://' in instance_actor: instance_http_prefix = instance_actor.split('://')[0] software_name = \ - _get_instance_software(base_dir, session, - instance_http_prefix, - instance_actor, - instance_software, - signing_priv_key_pem, - False, - http_prefix, domain, - mitm_servers) + get_instance_software(base_dir, session, + instance_http_prefix, + instance_actor, + instance_software, + signing_priv_key_pem, + False, + http_prefix, domain, + mitm_servers, True) # get the title: x replies to y, x announces y, etc (title_str2,