From eab2c9d3581537dd76e3ff56030c76d5be3aa391 Mon Sep 17 00:00:00 2001 From: Donald Zou Date: Wed, 20 Aug 2025 14:15:03 +0800 Subject: [PATCH] Fixed the issue where Job and Share link is not delete when peer deleted --- src/dashboard.py | 2 +- src/modules/WireguardConfiguration.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dashboard.py b/src/dashboard.py index bbc4e93a..47cc4965 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -583,7 +583,7 @@ def API_deletePeers(configName: str) -> ResponseObject: if len(peers) == 0: return ResponseObject(False, "Please specify one or more peers", status_code=400) configuration = WireguardConfigurations.get(configName) - status, msg = configuration.deletePeers(peers) + status, msg = configuration.deletePeers(peers, AllPeerJobs, AllPeerShareLinks) return ResponseObject(status, msg) return ResponseObject(False, "Configuration does not exist", status_code=404) diff --git a/src/modules/WireguardConfiguration.py b/src/modules/WireguardConfiguration.py index fd1ff080..4917922e 100644 --- a/src/modules/WireguardConfiguration.py +++ b/src/modules/WireguardConfiguration.py @@ -596,7 +596,7 @@ class WireguardConfiguration: return False, f"Restricted {numOfRestrictedPeers} peer(s) successfully. Failed to restrict {numOfFailedToRestrictPeers} peer(s)" - def deletePeers(self, listOfPublicKeys) -> tuple[bool, str]: + def deletePeers(self, listOfPublicKeys, AllPeerJobs: PeerJobs, AllPeerShareLinks: PeerShareLinks) -> tuple[bool, str]: numOfDeletedPeers = 0 numOfFailedToDeletePeers = 0 if not self.getStatus(): @@ -604,6 +604,10 @@ class WireguardConfiguration: with self.engine.begin() as conn: for p in listOfPublicKeys: found, pf = self.searchPeer(p) + for job in pf.jobs: + AllPeerJobs.deleteJob(job) + for shareLink in pf.ShareLink: + AllPeerShareLinks.updateLinkExpireDate(shareLink.ShareID, datetime.now()) if found: try: subprocess.check_output(f"{self.Protocol} set {self.Name} peer {pf.id} remove",