|
@ -7,6 +7,7 @@ import argparse |
|
|
import socket |
|
|
import socket |
|
|
import json |
|
|
import json |
|
|
import collections |
|
|
import collections |
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class JsonUDP(): |
|
|
class JsonUDP(): |
|
@ -171,6 +172,24 @@ def str_table(rows, columns, orderby): |
|
|
return ''.join(result) |
|
|
return ''.join(result) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def num2timestr(seconds): |
|
|
|
|
|
"""Convert a number of seconds into a human time""" |
|
|
|
|
|
days, seconds = divmod(seconds, (60*60*24)) |
|
|
|
|
|
hours, seconds = divmod(seconds, (60*60)) |
|
|
|
|
|
minutes, seconds = divmod(seconds, 60) |
|
|
|
|
|
|
|
|
|
|
|
r = [] |
|
|
|
|
|
if days: |
|
|
|
|
|
r += [f"{days}d"] |
|
|
|
|
|
if hours: |
|
|
|
|
|
r += [f"{hours}h"] |
|
|
|
|
|
if minutes: |
|
|
|
|
|
r += [f"{minutes}m"] |
|
|
|
|
|
if seconds: |
|
|
|
|
|
r += [f"{seconds}s"] |
|
|
|
|
|
return "".join(r) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def subcmd_show_supernodes(rpc, args): |
|
|
def subcmd_show_supernodes(rpc, args): |
|
|
rows = rpc.read('supernodes') |
|
|
rows = rpc.read('supernodes') |
|
|
columns = [ |
|
|
columns = [ |
|
@ -179,8 +198,13 @@ def subcmd_show_supernodes(rpc, args): |
|
|
'macaddr', |
|
|
'macaddr', |
|
|
'sockaddr', |
|
|
'sockaddr', |
|
|
'uptime', |
|
|
'uptime', |
|
|
|
|
|
'last_seen', |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
now = int(time.time()) |
|
|
|
|
|
for row in rows: |
|
|
|
|
|
row["last_seen"] = num2timestr(now - row["last_seen"]) |
|
|
|
|
|
|
|
|
return str_table(rows, columns, args.orderby) |
|
|
return str_table(rows, columns, args.orderby) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -192,8 +216,13 @@ def subcmd_show_edges(rpc, args): |
|
|
'macaddr', |
|
|
'macaddr', |
|
|
'sockaddr', |
|
|
'sockaddr', |
|
|
'desc', |
|
|
'desc', |
|
|
|
|
|
'last_seen', |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
now = int(time.time()) |
|
|
|
|
|
for row in rows: |
|
|
|
|
|
row["last_seen"] = num2timestr(now - row["last_seen"]) |
|
|
|
|
|
|
|
|
return str_table(rows, columns, args.orderby) |
|
|
return str_table(rows, columns, args.orderby) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|