diff --git a/ChangeLog b/ChangeLog index 2693d61b..b5075eea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -82,6 +82,14 @@ ver. 0.10.5-dev-1 (20??/??/??) - development edition ### Enhancements * jail-reader extended (amend to gh-1622): actions support multi-line options now (interpolations containing new-line); +* fail2ban-client: extended to ban/unban multiple tickets (see gh-2351, gh-2349); + Syntax: + - `fail2ban-client set banip ... ` + - `fail2ban-client set unbanip [--report-absent] ... ` +* fail2ban-client: extended with new feature which allows to inform fail2ban about single or multiple + attempts (failure) for IP (resp. failure-ID), see gh-2351; + Syntax: + - `fail2ban-client set attempt [ ... ]` ver. 0.10.4 (2018/10/04) - ten-four-on-due-date-ten-four diff --git a/MANIFEST b/MANIFEST index 3ea2816b..d528ea7f 100644 --- a/MANIFEST +++ b/MANIFEST @@ -220,6 +220,7 @@ fail2ban/tests/actiontestcase.py fail2ban/tests/banmanagertestcase.py fail2ban/tests/clientbeautifiertestcase.py fail2ban/tests/clientreadertestcase.py +fail2ban/tests/config/action.d/action.conf fail2ban/tests/config/action.d/brokenaction.conf fail2ban/tests/config/fail2ban.conf fail2ban/tests/config/filter.d/simple.conf diff --git a/fail2ban/client/fail2banclient.py b/fail2ban/client/fail2banclient.py index 73abacb2..7c90ca40 100755 --- a/fail2ban/client/fail2banclient.py +++ b/fail2ban/client/fail2banclient.py @@ -186,8 +186,7 @@ class Fail2banClient(Fail2banCmdLine, Thread): logSys.error("Fail2ban seems to be in unexpected state (not running but the socket exists)") return None - stream.append(['server-status']) - return stream + return [["server-stream", stream], ['server-status']] ## def __startServer(self, background=True): diff --git a/fail2ban/client/jailreader.py b/fail2ban/client/jailreader.py index c650d9d0..f6b4b9b1 100644 --- a/fail2ban/client/jailreader.py +++ b/fail2ban/client/jailreader.py @@ -253,8 +253,7 @@ class JailReader(ConfigReader): elif opt == "backend": backend = value elif opt == "ignoreip": - for ip in splitwords(value): - stream.append(["set", self.__name, "addignoreip", ip]) + stream.append(["set", self.__name, "addignoreip"] + splitwords(value)) elif opt in ("failregex", "ignoreregex"): multi = [] for regex in value.split('\n'): diff --git a/fail2ban/protocol.py b/fail2ban/protocol.py index f9ec5b71..3f7024a0 100644 --- a/fail2ban/protocol.py +++ b/fail2ban/protocol.py @@ -99,8 +99,9 @@ protocol = [ ["set bantime