mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-22 13:40:19 +00:00
Added JSON output to rnpath utility
This commit is contained in:
parent
7be6a0e000
commit
169d1921be
@ -79,9 +79,9 @@ def connect_remote(destination_hash, auth_identity, timeout, no_output = False):
|
|||||||
link.set_link_established_callback(remote_link_established)
|
link.set_link_established_callback(remote_link_established)
|
||||||
link.set_link_closed_callback(remote_link_closed)
|
link.set_link_closed_callback(remote_link_closed)
|
||||||
|
|
||||||
def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity, timeout,
|
def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity, timeout, drop_queues,
|
||||||
drop_queues, drop_via, max_hops, remote=None, management_identity=None,
|
drop_via, max_hops, remote=None, management_identity=None, remote_timeout=RNS.Transport.PATH_REQUEST_TIMEOUT,
|
||||||
remote_timeout=RNS.Transport.PATH_REQUEST_TIMEOUT, no_output=False):
|
no_output=False, json=False):
|
||||||
global remote_link, reticulum
|
global remote_link, reticulum
|
||||||
reticulum = RNS.Reticulum(configdir = configdir, loglevel = 3+verbosity)
|
reticulum = RNS.Reticulum(configdir = configdir, loglevel = 3+verbosity)
|
||||||
if remote:
|
if remote:
|
||||||
@ -148,6 +148,16 @@ def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity,
|
|||||||
exit(10)
|
exit(10)
|
||||||
|
|
||||||
displayed = 0
|
displayed = 0
|
||||||
|
if json:
|
||||||
|
import json
|
||||||
|
for p in table:
|
||||||
|
for k in p:
|
||||||
|
if isinstance(p[k], bytes):
|
||||||
|
p[k] = RNS.hexrep(p[k], delimit=False)
|
||||||
|
|
||||||
|
print(json.dumps(table))
|
||||||
|
exit()
|
||||||
|
else:
|
||||||
for path in table:
|
for path in table:
|
||||||
if destination_hash == None or destination_hash == path["hash"]:
|
if destination_hash == None or destination_hash == path["hash"]:
|
||||||
displayed += 1
|
displayed += 1
|
||||||
@ -198,6 +208,16 @@ def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity,
|
|||||||
exit(10)
|
exit(10)
|
||||||
|
|
||||||
table = sorted(table, key=lambda e: e["last"])
|
table = sorted(table, key=lambda e: e["last"])
|
||||||
|
if json:
|
||||||
|
import json
|
||||||
|
for p in table:
|
||||||
|
for k in p:
|
||||||
|
if isinstance(p[k], bytes):
|
||||||
|
p[k] = RNS.hexrep(p[k], delimit=False)
|
||||||
|
|
||||||
|
print(json.dumps(table))
|
||||||
|
exit()
|
||||||
|
else:
|
||||||
if len(table) == 0:
|
if len(table) == 0:
|
||||||
print("No information available")
|
print("No information available")
|
||||||
|
|
||||||
@ -244,10 +264,22 @@ def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity,
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
elif drop_queues:
|
elif drop_queues:
|
||||||
RNS.log("Dropping announce queues on all interfaces...")
|
if remote_link:
|
||||||
|
if not no_output:
|
||||||
|
print("\r \r", end="")
|
||||||
|
print("Dropping announce queues on remote instances not yet implemented")
|
||||||
|
exit(255)
|
||||||
|
|
||||||
|
print("Dropping announce queues on all interfaces...")
|
||||||
reticulum.drop_announce_queues()
|
reticulum.drop_announce_queues()
|
||||||
|
|
||||||
elif drop:
|
elif drop:
|
||||||
|
if remote_link:
|
||||||
|
if not no_output:
|
||||||
|
print("\r \r", end="")
|
||||||
|
print("Dropping path on remote instances not yet implemented")
|
||||||
|
exit(255)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
||||||
if len(destination_hexhash) != dest_len:
|
if len(destination_hexhash) != dest_len:
|
||||||
@ -266,8 +298,13 @@ def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity,
|
|||||||
print("Unable to drop path to "+RNS.prettyhexrep(destination_hash)+". Does it exist?")
|
print("Unable to drop path to "+RNS.prettyhexrep(destination_hash)+". Does it exist?")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
elif drop_via:
|
elif drop_via:
|
||||||
|
if remote_link:
|
||||||
|
if not no_output:
|
||||||
|
print("\r \r", end="")
|
||||||
|
print("Dropping all paths via specific transport instance on remote instances yet not implemented")
|
||||||
|
exit(255)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
||||||
if len(destination_hexhash) != dest_len:
|
if len(destination_hexhash) != dest_len:
|
||||||
@ -286,8 +323,13 @@ def program_setup(configdir, table, rates, drop, destination_hexhash, verbosity,
|
|||||||
print("Unable to drop paths via "+RNS.prettyhexrep(destination_hash)+". Does the transport instance exist?")
|
print("Unable to drop paths via "+RNS.prettyhexrep(destination_hash)+". Does the transport instance exist?")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
if remote_link:
|
||||||
|
if not no_output:
|
||||||
|
print("\r \r", end="")
|
||||||
|
print("Requesting paths on remote instances not implemented")
|
||||||
|
exit(255)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
dest_len = (RNS.Reticulum.TRUNCATED_HASHLENGTH//8)*2
|
||||||
if len(destination_hexhash) != dest_len:
|
if len(destination_hexhash) != dest_len:
|
||||||
@ -438,6 +480,14 @@ def main():
|
|||||||
default=RNS.Transport.PATH_REQUEST_TIMEOUT
|
default=RNS.Transport.PATH_REQUEST_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-j",
|
||||||
|
"--json",
|
||||||
|
action="store_true",
|
||||||
|
help="output in JSON format",
|
||||||
|
default=False
|
||||||
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"destination",
|
"destination",
|
||||||
nargs="?",
|
nargs="?",
|
||||||
@ -474,6 +524,7 @@ def main():
|
|||||||
remote=args.R,
|
remote=args.R,
|
||||||
management_identity=args.i,
|
management_identity=args.i,
|
||||||
remote_timeout=args.W,
|
remote_timeout=args.W,
|
||||||
|
json=args.json,
|
||||||
)
|
)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user