From 78d219bb43a03e0d256ce038accceceae5fda160 Mon Sep 17 00:00:00 2001 From: Henri Date: Sat, 5 Dec 2020 09:25:05 +0100 Subject: [PATCH] Introduce capability to react on config changes --- src/wgfrontend/wgcfg.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/wgfrontend/wgcfg.py b/src/wgfrontend/wgcfg.py index 76faf08..223c3d7 100644 --- a/src/wgfrontend/wgcfg.py +++ b/src/wgfrontend/wgcfg.py @@ -16,10 +16,11 @@ logger = logging.getLogger(__name__) class WGCfg(): """Class for reading/writing the WireGuard configuration file""" - def __init__(self, filename, libdir): + def __init__(self, filename, libdir, on_change_func=None): """Initialize instance for the given config file""" self.filename = filename self.libdir = libdir + self.on_change_func = on_change_func self.wc = wgconfig.WGConfig(self.filename) self.wc.read_file() @@ -108,6 +109,7 @@ class WGCfg(): self.wc.add_attr(peer, 'PersistentKeepalive', 25) self.wc.write_file() self.write_qrcode(peer) + self.config_change_done() return peer def update_peer(self, peer, description): @@ -119,12 +121,15 @@ class WGCfg(): self.wc.lines[first_line] = '# ' + description self.wc.invalidate_data() self.wc.write_file() + self.write_qrcode(peer) + self.config_change_done() return self.get_peer(peer) def delete_peer(self, peer): """Delete the given peer""" self.wc.del_peer(peer) self.wc.write_file() + self.config_change_done() def find_free_ip(self): """Find the first free address in the given network""" @@ -155,6 +160,11 @@ class WGCfg(): img = qr.make_image(fill_color='black', back_color='white') img.save(peerdata['QRCode']) + def config_change_done(self): + """React on config changes""" + if self.on_change_func is not None: + self.on_change_func() + if __name__ == '__main__': import pprint