mirror of
https://github.com/markqvist/Reticulum.git
synced 2026-07-24 00:38:16 -07:00
Added path request frequency display to rnstatus
This commit is contained in:
+50
-13
@@ -143,9 +143,9 @@ def get_remote_status(destination_hash, include_lstats, identity, no_output=Fals
|
|||||||
|
|
||||||
return request_result
|
return request_result
|
||||||
|
|
||||||
def program_setup(configdir, dispall=False, verbosity=0, name_filter=None, json=False, astats=False, lstats=False, sorting=None, sort_reverse=False,
|
def program_setup(configdir, dispall=False, verbosity=0, name_filter=None, json=False, astats=False, pstats=False, lstats=False, sorting=None,
|
||||||
remote=None, management_identity=None, remote_timeout=RNS.Transport.PATH_REQUEST_TIMEOUT, must_exit=True, rns_instance=None,
|
sort_reverse=False, remote=None, management_identity=None, remote_timeout=RNS.Transport.PATH_REQUEST_TIMEOUT, must_exit=True,
|
||||||
traffic_totals=False, discovered_interfaces=False, config_entries=False):
|
rns_instance=None, traffic_totals=False, discovered_interfaces=False, config_entries=False):
|
||||||
|
|
||||||
if remote: require_shared = False
|
if remote: require_shared = False
|
||||||
else: require_shared = True
|
else: require_shared = True
|
||||||
@@ -549,26 +549,62 @@ def program_setup(configdir, dispall=False, verbosity=0, name_filter=None, json=
|
|||||||
for_str = RNS.prettytime(time.time()-ifstat["burst_activated"])
|
for_str = RNS.prettytime(time.time()-ifstat["burst_activated"])
|
||||||
burst_str = f" burst for {for_str}"
|
burst_str = f" burst for {for_str}"
|
||||||
|
|
||||||
|
pburst_str = ""
|
||||||
|
if "pr_burst_active" in ifstat and ifstat["pr_burst_active"]:
|
||||||
|
for_str = RNS.prettytime(time.time()-ifstat["pr_burst_activated"])
|
||||||
|
pburst_str = f" burst for {for_str}"
|
||||||
|
|
||||||
rxb_str = "↓"+RNS.prettysize(ifstat["rxb"])
|
rxb_str = "↓"+RNS.prettysize(ifstat["rxb"])
|
||||||
txb_str = "↑"+RNS.prettysize(ifstat["txb"])
|
txb_str = "↑"+RNS.prettysize(ifstat["txb"])
|
||||||
|
|
||||||
asr = False
|
asr = False
|
||||||
if astats and "incoming_announce_frequency" in ifstat and ifstat["incoming_announce_frequency"] != None:
|
if astats and "incoming_announce_frequency" in ifstat and ifstat["incoming_announce_frequency"] != None:
|
||||||
oaf = RNS.prettyfrequency(ifstat["outgoing_announce_frequency"])+"↑"
|
oan = ifstat["outgoing_announce_frequency"]
|
||||||
iaf = RNS.prettyfrequency(ifstat["incoming_announce_frequency"])+"↓"
|
ian = ifstat["incoming_announce_frequency"]
|
||||||
|
if name.startswith("Shared Instance[") and clients and clients > 0: oan = oan-(oan/clients) # Sub rnstatus own part
|
||||||
|
oaf = RNS.prettyfrequency(oan, d=1, lpf=True)
|
||||||
|
iaf = RNS.prettyfrequency(ian, d=1, lpf=True)
|
||||||
|
|
||||||
cspec = "c"
|
cspec = "c"
|
||||||
if clients == None and "peers" in ifstat and ifstat["peers"]: clients = ifstat["peers"]; cspec = "p"
|
if clients == None and "peers" in ifstat and ifstat["peers"]: clients = ifstat["peers"]; cspec = "p"
|
||||||
if clients != None and clients > 0: pc_str = f"{RNS.prettyfrequency(ifstat['outgoing_announce_frequency']/clients)}/{cspec}"
|
if clients != None and clients > 0: pc_str = f"{RNS.prettyfrequency(ifstat['outgoing_announce_frequency']/clients, d=1, lpf=True)}/{cspec}"
|
||||||
else: pc_str = ""
|
else: pc_str = ""
|
||||||
asr = True
|
asr = True
|
||||||
|
|
||||||
|
psr = False
|
||||||
|
if pstats and "incoming_pr_frequency" in ifstat and ifstat["incoming_pr_frequency"] != None:
|
||||||
|
opn = ifstat["outgoing_pr_frequency"]
|
||||||
|
ipn = ifstat["incoming_pr_frequency"]
|
||||||
|
if name.startswith("Shared Instance[") and clients and clients > 0: opn = opn-(opn/clients) # Sub rnstatus own part
|
||||||
|
if astats:
|
||||||
|
opf = "↑"+RNS.prettyfrequency(opn, d=1, lpf=True)
|
||||||
|
ipf = "↓"+RNS.prettyfrequency(ipn, d=1, lpf=True)
|
||||||
|
else:
|
||||||
|
opf = RNS.prettyfrequency(opn,d=1, lpf=True)+"↑"
|
||||||
|
ipf = RNS.prettyfrequency(ipn,d=1, lpf=True)+"↓"
|
||||||
|
cspec = "c"
|
||||||
|
if clients == None and "peers" in ifstat and ifstat["peers"]: clients = ifstat["peers"]; cspec = "p"
|
||||||
|
if clients != None and clients > 0: rpc_str = f"{RNS.prettyfrequency(ifstat['outgoing_pr_frequency']/clients, d=1, lpf=True)}/{cspec}"
|
||||||
|
else: rpc_str = ""
|
||||||
|
psr = True
|
||||||
|
|
||||||
if not asr: iaf = ""; oaf = ""
|
if not asr: iaf = ""; oaf = ""
|
||||||
mlen = max(len(iaf), len(oaf), len(rxb_str), len(txb_str))
|
if not psr: ipf = ""; opf = ""
|
||||||
|
amlen = max(len(iaf), len(oaf))
|
||||||
|
iaf += (amlen-len(iaf))*" "+"↓"
|
||||||
|
oaf += (amlen-len(oaf))*" "+"↑"
|
||||||
|
mlen = max(max(len(iaf), len(oaf), len(rxb_str), len(txb_str), len(ipf), len(opf)), 10)
|
||||||
iaf += (mlen-len(iaf))*" "
|
iaf += (mlen-len(iaf))*" "
|
||||||
oaf += (mlen-len(oaf))*" "
|
oaf += (mlen-len(oaf))*" "
|
||||||
|
ipf += (mlen-len(ipf))*" "
|
||||||
|
opf += (mlen-len(opf))*" "
|
||||||
rxb_str += (mlen-len(rxb_str))*" "
|
rxb_str += (mlen-len(rxb_str))*" "
|
||||||
txb_str += (mlen-len(txb_str))*" "
|
txb_str += (mlen-len(txb_str))*" "
|
||||||
|
|
||||||
|
if psr:
|
||||||
|
print(f" Path Rqs. : {opf} {rpc_str}")
|
||||||
|
print(f" {ipf} {pburst_str}")
|
||||||
|
|
||||||
if asr:
|
if asr:
|
||||||
print(f" Announces : {oaf} {pc_str}")
|
print(f" Announces : {oaf} {pc_str}")
|
||||||
print(f" {iaf} {art_str}{burst_str}")
|
print(f" {iaf} {art_str}{burst_str}")
|
||||||
@@ -634,6 +670,7 @@ def main(must_exit=True, rns_instance=None):
|
|||||||
|
|
||||||
parser.add_argument("-a", "--all", action="store_true", help="show all interfaces", default=False)
|
parser.add_argument("-a", "--all", action="store_true", help="show all interfaces", default=False)
|
||||||
parser.add_argument("-A", "--announce-stats", action="store_true", help="show announce stats", default=False)
|
parser.add_argument("-A", "--announce-stats", action="store_true", help="show announce stats", default=False)
|
||||||
|
parser.add_argument("-P", "--pr-stats", action="store_true", help="show path request stats", default=False)
|
||||||
parser.add_argument("-l", "--link-stats", action="store_true", help="show link stats", default=False)
|
parser.add_argument("-l", "--link-stats", action="store_true", help="show link stats", default=False)
|
||||||
parser.add_argument("-t", "--totals", action="store_true", help="display traffic totals", default=False)
|
parser.add_argument("-t", "--totals", action="store_true", help="display traffic totals", default=False)
|
||||||
parser.add_argument("-s", "--sort", action="store", help="sort interfaces by [rate, traffic, rx, tx, rxs, txs, announces, arx, atx, held]", default=None, type=str)
|
parser.add_argument("-s", "--sort", action="store", help="sort interfaces by [rate, traffic, rx, tx, rxs, txs, announces, arx, atx, held]", default=None, type=str)
|
||||||
@@ -670,9 +707,9 @@ def main(must_exit=True, rns_instance=None):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
program_setup(configdir = configarg, dispall = args.all, verbosity=args.verbose, name_filter=args.filter, json=args.json,
|
program_setup(configdir = configarg, dispall = args.all, verbosity=args.verbose, name_filter=args.filter, json=args.json,
|
||||||
astats=args.announce_stats, lstats=args.link_stats, sorting=args.sort, sort_reverse=args.reverse, remote=args.R,
|
astats=args.announce_stats, pstats=args.pr_stats, lstats=args.link_stats, sorting=args.sort, sort_reverse=args.reverse,
|
||||||
management_identity=args.i, remote_timeout=args.w, must_exit=False, rns_instance=reticulum, traffic_totals=args.totals,
|
remote=args.R, management_identity=args.i, remote_timeout=args.w, must_exit=False, rns_instance=reticulum,
|
||||||
discovered_interfaces=args.discovered, config_entries=args.D)
|
traffic_totals=args.totals, discovered_interfaces=args.discovered, config_entries=args.D)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
sys.stdout = old_stdout
|
sys.stdout = old_stdout
|
||||||
@@ -685,9 +722,9 @@ def main(must_exit=True, rns_instance=None):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
program_setup(configdir = configarg, dispall = args.all, verbosity=args.verbose, name_filter=args.filter, json=args.json,
|
program_setup(configdir = configarg, dispall = args.all, verbosity=args.verbose, name_filter=args.filter, json=args.json,
|
||||||
astats=args.announce_stats, lstats=args.link_stats, sorting=args.sort, sort_reverse=args.reverse, remote=args.R,
|
astats=args.announce_stats, pstats=args.pr_stats, lstats=args.link_stats, sorting=args.sort, sort_reverse=args.reverse,
|
||||||
management_identity=args.i, remote_timeout=args.w, must_exit=must_exit, rns_instance=rns_instance, traffic_totals=args.totals,
|
remote=args.R, management_identity=args.i, remote_timeout=args.w, must_exit=must_exit, rns_instance=rns_instance,
|
||||||
discovered_interfaces=args.discovered, config_entries=args.D)
|
traffic_totals=args.totals, discovered_interfaces=args.discovered, config_entries=args.D)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("")
|
print("")
|
||||||
|
|||||||
+6
-4
@@ -225,15 +225,17 @@ def prettysize(num, suffix='B'):
|
|||||||
|
|
||||||
return "%.2f%s%s" % (num, last_unit, suffix)
|
return "%.2f%s%s" % (num, last_unit, suffix)
|
||||||
|
|
||||||
def prettyfrequency(hz, suffix="Hz"):
|
def prettyfrequency(hz, suffix="Hz", d=2, lpf=False):
|
||||||
if hz == 0: return "0 Hz"
|
if hz == 0: return "0 Hz"
|
||||||
num = hz*1e6
|
if not lpf: num = hz*1e6
|
||||||
units = ["µ", "m", "", "K","M","G","T","P","E","Z"]
|
else: num = hz
|
||||||
|
if not lpf: units = ["µ", "m", "", "K","M","G","T","P","E","Z"]
|
||||||
|
else: units = ["", "K","M","G","T","P","E","Z"]
|
||||||
last_unit = "Y"
|
last_unit = "Y"
|
||||||
|
|
||||||
for unit in units:
|
for unit in units:
|
||||||
if abs(num) < 1000.0:
|
if abs(num) < 1000.0:
|
||||||
return "%.2f %s%s" % (num, unit, suffix)
|
return "%s %s%s" % (str(round(num,d)), unit, suffix)
|
||||||
num /= 1000.0
|
num /= 1000.0
|
||||||
|
|
||||||
return "%.2f%s%s" % (num, last_unit, suffix)
|
return "%.2f%s%s" % (num, last_unit, suffix)
|
||||||
|
|||||||
Reference in New Issue
Block a user