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 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()

View File

@ -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,