mirror of https://gitlab.com/bashrc2/epicyon
Getting server software type
parent
c341f87816
commit
43d70e842d
66
epicyon.py
66
epicyon.py
|
@ -837,6 +837,10 @@ def _command_options() -> None:
|
|||
help='Category of item being shared')
|
||||
parser.add_argument('--location', dest='location', type=str, default=None,
|
||||
help='Location/City of item being shared')
|
||||
parser.add_argument('--software', dest='instance_software',
|
||||
type=str, default=None,
|
||||
help='Returns the type of instance software for the' +
|
||||
'given domain. eg mastodon, epicyon, pixelfed')
|
||||
parser.add_argument('--mapFormat', dest='mapFormat', type=str,
|
||||
default='kml',
|
||||
help='Format for hashtag maps GPX/KML')
|
||||
|
@ -1320,6 +1324,68 @@ def _command_options() -> None:
|
|||
session.close()
|
||||
sys.exit()
|
||||
|
||||
if argb.instance_software:
|
||||
debug = False
|
||||
http_prefix = 'https'
|
||||
if '127.0.0.1' in argb.instance_software or \
|
||||
'localhost' in argb.instance_software:
|
||||
http_prefix = 'http'
|
||||
proxy_type = None
|
||||
if '.onion' in argb.instance_software:
|
||||
proxy_type = 'tor'
|
||||
http_prefix = 'http'
|
||||
elif '.i2p' in argb.instance_software:
|
||||
proxy_type = 'i2p'
|
||||
http_prefix = 'http'
|
||||
if '://' not in argb.instance_software:
|
||||
argb.instance_software = \
|
||||
http_prefix + '://' + argb.instance_software
|
||||
instance_domain_name = argb.instance_software.split('://')[1]
|
||||
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 + '"'
|
||||
}
|
||||
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)
|
||||
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'])
|
||||
session.close()
|
||||
sys.exit()
|
||||
|
||||
if argb.conversation:
|
||||
post_id = argb.conversation
|
||||
if '://' not in post_id:
|
||||
|
|
|
@ -146,8 +146,9 @@ def _get_json_request(session, url: str, session_headers: {},
|
|||
if url_domain:
|
||||
if url_domain not in mitm_servers:
|
||||
mitm_servers.append(url_domain)
|
||||
print('DEBUG: _get_json_request MITM ' +
|
||||
str(result.headers))
|
||||
if debug:
|
||||
print('DEBUG: _get_json_request MITM ' +
|
||||
str(result.headers))
|
||||
else:
|
||||
if url_domain in mitm_servers:
|
||||
mitm_servers.remove(url_domain)
|
||||
|
|
Loading…
Reference in New Issue