diff options
| -rwxr-xr-x | autopeer_shell.py | 30 | ||||
| -rw-r--r-- | lib_autopeer.py | 6 |
2 files changed, 26 insertions, 10 deletions
diff --git a/autopeer_shell.py b/autopeer_shell.py index abb4100..1939348 100755 --- a/autopeer_shell.py +++ b/autopeer_shell.py @@ -2,7 +2,7 @@ #TODO: capture ^C during commands -import cmd, functools, getpass, os, re, subprocess, sys, time +import cmd, functools, getpass, os, re, subprocess, sys, time, traceback try: import readline except: pass @@ -70,6 +70,16 @@ class AutopeerShell(cmd.Cmd): self.prompt = f'{getpass.getuser()}@{socket.gethostname()}:{SELECTED_ASN}> ' return stop + def onecmd(self, line): + try: + return super().onecmd(line) + except Exception as e: + traceback.print_exc() + return False + + def emptyline(self): + return False + @parse(0) def do_ls(self): '''(no args) @@ -121,9 +131,7 @@ class AutopeerShell(cmd.Cmd): print() self.do_showpeer(name) print() - self.do_showbird(name) - print() - self.do_showwg(name) + self.do_showtemplates(name) print() print() @@ -142,6 +150,8 @@ class AutopeerShell(cmd.Cmd): @parse(1) def do_showpeer(self, name): + '''<name> + Show textual info about a peering''' me = _get_my_info(SELECTED_ASN) you = _get_peer_info(name, SELECTED_ASN) print(f''' @@ -159,17 +169,19 @@ Your Tunnel IPv6LL: {you.ipll} ''') @parse(1) - def do_showbird(self, name): + def do_showtemplates(self, name): '''<name> - Show basic bird config''' + Show basic config templates for your side''' print(_bird_config(name, _get_my_info(SELECTED_ASN), _get_peer_info(name, SELECTED_ASN))) + print(_wg_config(name, _get_my_info(SELECTED_ASN), _get_peer_info(name, SELECTED_ASN))) @parse(1) - def do_showwg(self, name): + def do_showconf(self, name): '''<name> - Show basic Wireguard config + Show my side config ''' - print(_wg_config(name, _get_my_info(SELECTED_ASN), _get_peer_info(name, SELECTED_ASN))) + print(_bird_config(name, _get_peer_info(name, SELECTED_ASN), _get_my_info(SELECTED_ASN))) + print(_wg_config(name, _get_peer_info(name, SELECTED_ASN), _get_my_info(SELECTED_ASN))) @parse(1) def do_as(self, asn): diff --git a/lib_autopeer.py b/lib_autopeer.py index 3d1652f..84f9a74 100644 --- a/lib_autopeer.py +++ b/lib_autopeer.py @@ -9,7 +9,11 @@ Peerdata = namedtuple('Peerdata', 'asn ipll endpoint port pubkey privkey', defau def _get_peer_info(name, asn): pass #TODO curs = DB.execute('SELECT asn, ipll, endpoint, port, pubkey FROM peers WHERE name=:name AND asn=:asn', dict(name=name, asn=asn)) - return Peerdata(*curs.fetchone()) + row = curs.fetchone() + if row is not None: + return Peerdata(*row) + else: + raise Exception(f'{asn}-{name} not found in database') def _get_my_info(asn): return Peerdata( asn=MY_ASN, |
