From be6885d82d703aa147b43b371d55392c948378c7 Mon Sep 17 00:00:00 2001 From: Marko Hauptvogel Date: Tue, 11 Nov 2025 10:54:08 +0100 Subject: [PATCH] fix actions problem Give the BanManager a new method returning a list of banned ips, which can be used to check if a specific ip is currently banned. All testcases pass again. --- fail2ban/server/actions.py | 2 +- fail2ban/server/banmanager.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fail2ban/server/actions.py b/fail2ban/server/actions.py index 581c5724..8e3bb50e 100644 --- a/fail2ban/server/actions.py +++ b/fail2ban/server/actions.py @@ -288,7 +288,7 @@ class Actions(JailThread, Mapping): if not isinstance(ip, IPAddr): ipa = IPAddr(ip) if not ipa.isSingle: # subnet (mask/cidr) or raw (may be dns/hostname): - ips = list(filter(ipa.contains, self.banManager.getBanList())) + ips = list(filter(ipa.contains, self.banManager.getBannedIPs())) if ips: return self.removeBannedIP(ips, db, ifexists) # not found: diff --git a/fail2ban/server/banmanager.py b/fail2ban/server/banmanager.py index d3e89820..bb9f729f 100644 --- a/fail2ban/server/banmanager.py +++ b/fail2ban/server/banmanager.py @@ -115,6 +115,9 @@ class BanManager: ) for t in lst] return [t[0].getID() for t in lst] + def getBannedIPs(self): + return list(sorted(ticket.getIP() for ticket in self.__banList.values())) + ## # Returns a iterator to ban list (used in reload, so idle). #