merge-requests/30/head
Bob Mottram 2025-01-22 11:55:44 +00:00
parent d582b5662b
commit a5103c4074
2 changed files with 39 additions and 51 deletions

View File

@ -127,6 +127,7 @@ from blocking import get_blocks_via_server
from poison import html_poisoned from poison import html_poisoned
from poison import load_dictionary from poison import load_dictionary
from poison import load_2grams from poison import load_2grams
from webapp_post import get_instance_software
def str2bool(value_str) -> bool: def str2bool(value_str) -> bool:
@ -1344,45 +1345,29 @@ def _command_options() -> None:
if '/' in instance_domain_name: if '/' in instance_domain_name:
instance_domain_name = instance_domain_name.split('/')[0] instance_domain_name = instance_domain_name.split('/')[0]
session = create_session(proxy_type) session = create_session(proxy_type)
profile_str = 'https://www.w3.org/ns/activitystreams' instance_softw = {}
as_header = {
'Accept': 'application/ld+json; profile="' + profile_str + '"'
}
if not argb.domain: if not argb.domain:
argb.domain = get_config_param(base_dir, 'domain') argb.domain = get_config_param(base_dir, 'domain')
domain = '' domain = ''
if argb.domain: if argb.domain:
domain = 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] = [] mitm_servers: list[str] = []
software_name = \
nodeinfo1_url = \ get_instance_software(base_dir, session,
http_prefix + '://' + instance_domain_name + \ http_prefix,
'/.well-known/nodeinfo' instance_domain_name,
nodeinfo1_json = get_json(signing_priv_key_pem, session, nodeinfo1_url, instance_softw,
as_header, None, debug, mitm_servers, signing_priv_key_pem,
__version__, http_prefix, domain) debug,
nodeinfo_url = None http_prefix, domain,
if get_json_valid(nodeinfo1_json): mitm_servers, False)
if nodeinfo1_json.get('links'): if software_name:
if isinstance(nodeinfo1_json['links'], list): print(software_name.split(' ')[1])
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'])
session.close() session.close()
sys.exit() sys.exit()

View File

@ -152,14 +152,15 @@ def _get_instance_software_html(title_str: str, software_name: str) -> str:
return instance_str return instance_str
def _get_instance_software(base_dir: str, session, def get_instance_software(base_dir: str, session,
instance_http_prefix: str, instance_http_prefix: str,
instance_domain: str, instance_domain: str,
instance_software: {}, instance_software: {},
signing_priv_key_pem: str, signing_priv_key_pem: str,
debug: bool, debug: bool,
http_prefix: str, domain: str, http_prefix: str, domain: str,
mitm_servers: []) -> str: mitm_servers: [],
store: bool) -> str:
"""returns the type of instance software for the given """returns the type of instance software for the given
instance domain eg. mastodon, epicyon, pixelfed instance domain eg. mastodon, epicyon, pixelfed
""" """
@ -216,8 +217,10 @@ def _get_instance_software(base_dir: str, session,
return '' return ''
software_name = remove_html(software_name) software_name = remove_html(software_name)
instance_software[instance_domain] = software_name instance_software[instance_domain] = software_name
instance_software_filename = data_dir(base_dir) + '/instance_software.json' if store:
save_json(instance_software, instance_software_filename) instance_software_filename = \
data_dir(base_dir) + '/instance_software.json'
save_json(instance_software, instance_software_filename)
return instance_domain + ' ' + software_name return instance_domain + ' ' + software_name
@ -2788,14 +2791,14 @@ def individual_post_as_html(signing_priv_key_pem: str,
if '://' in instance_actor: if '://' in instance_actor:
instance_http_prefix = instance_actor.split('://')[0] instance_http_prefix = instance_actor.split('://')[0]
software_name = \ software_name = \
_get_instance_software(base_dir, session, get_instance_software(base_dir, session,
instance_http_prefix, instance_http_prefix,
instance_actor, instance_actor,
instance_software, instance_software,
signing_priv_key_pem, signing_priv_key_pem,
False, False,
http_prefix, domain, http_prefix, domain,
mitm_servers) mitm_servers, True)
# get the title: x replies to y, x announces y, etc # get the title: x replies to y, x announces y, etc
(title_str2, (title_str2,