You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
From 747d4683221b5584f9663695fb48145689b42ceb Mon Sep 17 00:00:00 2001
|
|
From: sebres <info@sebres.de>
|
|
Date: Mon, 4 Jan 2021 02:42:38 +0100
|
|
Subject: [PATCH] fixes century selector of %ExY and %Exy in datepattern for
|
|
tests, considering interval from 2005 (alternate now) to now; + better
|
|
grouping algorithm for resulting century RE
|
|
|
|
---
|
|
fail2ban/server/strptime.py | 24 ++++++++++++++++++++++--
|
|
1 file changed, 22 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/fail2ban/server/strptime.py b/fail2ban/server/strptime.py
|
|
index 1464a96d1..39fc79586 100644
|
|
--- a/fail2ban/server/strptime.py
|
|
+++ b/fail2ban/server/strptime.py
|
|
@@ -36,10 +36,30 @@ def _getYearCentRE(cent=(0,3), distance=3, now=(MyTime.now(), MyTime.alternateNo
|
|
Thereby respect possible run in the test-cases (alternate date used there)
|
|
"""
|
|
cent = lambda year, f=cent[0], t=cent[1]: str(year)[f:t]
|
|
+ def grp(exprset):
|
|
+ c = None
|
|
+ if len(exprset) > 1:
|
|
+ for i in exprset:
|
|
+ if c is None or i[0:-1] == c:
|
|
+ c = i[0:-1]
|
|
+ else:
|
|
+ c = None
|
|
+ break
|
|
+ if not c:
|
|
+ for i in exprset:
|
|
+ if c is None or i[0] == c:
|
|
+ c = i[0]
|
|
+ else:
|
|
+ c = None
|
|
+ break
|
|
+ if c:
|
|
+ return "%s%s" % (c, grp([i[len(c):] for i in exprset]))
|
|
+ return ("(?:%s)" % "|".join(exprset) if len(exprset[0]) > 1 else "[%s]" % "".join(exprset)) \
|
|
+ if len(exprset) > 1 else "".join(exprset)
|
|
exprset = set( cent(now[0].year + i) for i in (-1, distance) )
|
|
if len(now) and now[1]:
|
|
- exprset |= set( cent(now[1].year + i) for i in (-1, distance) )
|
|
- return "(?:%s)" % "|".join(exprset) if len(exprset) > 1 else "".join(exprset)
|
|
+ exprset |= set( cent(now[1].year + i) for i in xrange(-1, now[0].year-now[1].year+1, distance) )
|
|
+ return grp(sorted(list(exprset)))
|
|
|
|
timeRE = TimeRE()
|
|
|