mirror of https://github.com/fail2ban/fail2ban
55 lines
1.9 KiB
Plaintext
55 lines
1.9 KiB
Plaintext
|
#! /bin/sh /usr/share/dpatch/dpatch-run
|
||
|
## 10_multiple_HOST_regexp.dpatch by Yaroslav Halchenko <debian@onerussian.com>
|
||
|
##
|
||
|
## All lines beginning with `## DP:' are a description of the patch.
|
||
|
## DP: No description.
|
||
|
|
||
|
@DPATCH@
|
||
|
diff -urNad fail2ban-0.7.5~/server/filter.py fail2ban-0.7.5/server/filter.py
|
||
|
--- fail2ban-0.7.5~/server/filter.py 2006-11-26 15:37:31.000000000 -0500
|
||
|
+++ fail2ban-0.7.5/server/filter.py 2006-12-22 13:30:25.000000000 -0500
|
||
|
@@ -170,8 +170,17 @@
|
||
|
self.__failRegex = value
|
||
|
self.__failRegexObj = None
|
||
|
else:
|
||
|
- # Replace "<HOST>" with default regular expression for host.
|
||
|
- regex = value.replace("<HOST>", "(?:::f{4,6}:)?(?P<host>\S+)")
|
||
|
+ # Replace "<HOST>"s with regular expression for a hostname,
|
||
|
+ # naming groups hostX where X is a number starting with 1
|
||
|
+ regex = value
|
||
|
+ oldregex = ''; k = 0
|
||
|
+ while ( regex != oldregex ):
|
||
|
+ oldregex = regex
|
||
|
+ k += 1
|
||
|
+ regex = regex.replace("<HOST>",
|
||
|
+ "(?:::f{4,6}:)?(?P<host%d>\S+)" % k,
|
||
|
+ 1)
|
||
|
+
|
||
|
self.__failRegex = regex
|
||
|
self.__failRegexObj = re.compile(regex)
|
||
|
logSys.info("Set failregex = %s" % self.__failRegex)
|
||
|
@@ -435,12 +444,18 @@
|
||
|
+ "this format")
|
||
|
else:
|
||
|
try:
|
||
|
- ipMatch = DNSUtils.textToIp(match.group("host"))
|
||
|
- if ipMatch:
|
||
|
- for ip in ipMatch:
|
||
|
- failList.append([ip, date])
|
||
|
+ allGroups = match.groupdict()
|
||
|
+ hostRe = re.compile('host\d*$')
|
||
|
+ # Select only groups named host\d*
|
||
|
+ hostGroups = filter(lambda x: hostRe.match(x[0]) and x[1],
|
||
|
+ allGroups.iteritems())
|
||
|
+ for hostGroup, hostEntry in hostGroups:
|
||
|
+ ipMatch = DNSUtils.textToIp(hostEntry)
|
||
|
+ if ipMatch:
|
||
|
+ for ip in ipMatch:
|
||
|
+ failList.append([ip, date])
|
||
|
except IndexError:
|
||
|
- logSys.error("There is no 'host' group in the rule. " +
|
||
|
+ logSys.error("There is no 'hostX' group in the rule. " +
|
||
|
"Please correct your configuration.")
|
||
|
return failList
|
||
|
|