diff options
| -rwxr-xr-x | autopeer_shell.py | 4 | ||||
| -rwxr-xr-x | cronjob.py | 12 | ||||
| -rwxr-xr-x | install.sh | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/autopeer_shell.py b/autopeer_shell.py index 2c6eac4..1e13b71 100755 --- a/autopeer_shell.py +++ b/autopeer_shell.py @@ -118,7 +118,7 @@ class AutopeerShell(cmd.Cmd): try: curs = DB.execute( - 'INSERT INTO peers (name, asn, pubkey, endpoint, port, ipll, creator_ip, creator_name, creator_date) VALUES (:name, :asn, :pubkey, :endpoint, :port, :ipll, :creator_ip, :creator_name, :creator_date)', + 'INSERT INTO peers (name, asn, pubkey, endpoint, port, ipll, creator_ip, creator_name, creator_date, deleted) VALUES (:name, :asn, :pubkey, :endpoint, :port, :ipll, :creator_ip, :creator_name, :creator_date, 0)', dict(name=name, asn=SELECTED_ASN, pubkey=pubkey, endpoint=endpoint, port=port, ipll=ipll, creator_ip=os.getenv('SSH_CONNECTION'), creator_name=USER, creator_date=time.time()) ) except sqlite3.IntegrityError as e: @@ -141,7 +141,7 @@ class AutopeerShell(cmd.Cmd): Delete your peering''' sp = subprocess.run(['socat', 'stdio', NOTIFY_TO], input=f"[autopeer {socket.gethostname()}] Deleted peering {name!r} for AS{SELECTED_ASN} by {USER}", text=True) curs = DB.execute( - 'DELETE FROM peers WHERE name = :name AND asn = :asn', + 'UPDATE peers SET deleted = 1 WHERE name = :name AND asn = :asn AND deleted = 0', dict(name=name, asn=SELECTED_ASN) ) if curs.rowcount: @@ -6,7 +6,7 @@ from lib_autopeer import * import os -curs = DB.execute('SELECT name, asn FROM peers') +curs = DB.execute('SELECT name, asn FROM peers WHERE deleted=0') while row := curs.fetchone(): name, asn = row print(f'Processing {asn}-{name}...') @@ -20,4 +20,14 @@ while row := curs.fetchone(): wgcfg.close() os.system(f'systemctl enable --now wg-quick@wg{asn%10000:04}{name}') +curs = DB.execute('SELECT name, asn FROM peers WHERE deleted=1') +while row := curs.fetchone(): + name, asn = row + print(f'Deleting {asn}-{name}...') + try: os.remove(f'/etc/bird/peers/as{asn}{name}.conf') + except FileNotFoundError: pass + try: os.remove(f'/etc/wireguard/wg{asn%10000:04}{name}.conf') + except FileNotFoundError: pass + os.system(f'systemctl disable --now wg-quick@wg{asn%10000:04}{name}') + os.system('birdc configure') @@ -18,7 +18,7 @@ echo '0 * * * * root git -C /opt/autopeer pull' >>/etc/cron.d/autopeer umask 0007 mkdir /opt/autopeer/db -echo 'CREATE TABLE peers (name, asn, ipll, endpoint, port, pubkey, creator_ip, creator_name, creator_date, primary key (name, asn));' | python3 -m sqlite3 /opt/autopeer/db/sqlite3.db +echo 'CREATE TABLE peers (name, asn, ipll, endpoint, port, pubkey, creator_ip, creator_name, creator_date, deleted, primary key (name, asn));' | python3 -m sqlite3 /opt/autopeer/db/sqlite3.db chgrp -R autopeer /opt/autopeer/db/ umask 0077 |
