From 06674bb98981f89c77c435a25528ce90c02670a6 Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 30 Sep 2016 12:26:31 +0200 Subject: [PATCH] use common regex for IP addresses (removed code duplication) --- fail2ban/server/failregex.py | 5 +++-- fail2ban/server/ipdns.py | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fail2ban/server/failregex.py b/fail2ban/server/failregex.py index 56dc7b14c..7c51ddb8a 100644 --- a/fail2ban/server/failregex.py +++ b/fail2ban/server/failregex.py @@ -25,6 +25,7 @@ import re import sre_constants import sys +from .ipdns import IPAddr ## # Regular expression class. @@ -72,12 +73,12 @@ class Regex: def _resolveHostTag(regex, useDns="yes"): # separated ipv4: r_host = [] - r = r"""(?:::f{4,6}:)?(?P(?:\d{1,3}\.){3}\d{1,3})""" + r = r"""(?:::f{4,6}:)?(?P%s)""" % (IPAddr.IP_4_RE,) regex = regex.replace("", r); # self closed regex = regex.replace("", r); # closed r_host.append(r) # separated ipv6: - r = r"""(?P(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):))""" + r = r"""(?P%s)""" % (IPAddr.IP_6_RE,) regex = regex.replace("", r); # self closed regex = regex.replace("", r); # closed r_host.append(r"""\[?%s\]?""" % (r,)); # enclose ipv6 in optional [] in host-regex diff --git a/fail2ban/server/ipdns.py b/fail2ban/server/ipdns.py index cba08d0cc..f8db6a04d 100644 --- a/fail2ban/server/ipdns.py +++ b/fail2ban/server/ipdns.py @@ -124,8 +124,11 @@ class DNSUtils: class IPAddr(object): """Encapsulate functionality for IPv4 and IPv6 addresses """ + + IP_4_RE = r"""(?:\d{1,3}\.){3}\d{1,3}""" + IP_6_RE = r"""(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):)""" IP_4_6_CRE = re.compile( - r"""^(?:(?P(?:\d{1,3}\.){3}\d{1,3})|\[?(?P(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):))\]?)$""") + r"""^(?:(?P%s)|\[?(?P%s)\]?)$""" % (IP_4_RE, IP_6_RE)) # An IPv4 compatible IPv6 to be reused (see below) IP6_4COMPAT = None