Module: check_mk
Branch: master
Commit: 5c8a161a28e60452e5a61409f3f903d3e82fbce2
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5c8a161a28e604…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Dec 19 14:41:14 2017 +0100
Add IPNetwork valuespec to configure either IPv4/IPv6 addresses/networks
Change-Id: I1d0befcb2f7b2066fb1e132966fd310a3e0f03c1
---
web/htdocs/valuespec.py | 43 ++++++++++++++++++++++++++++---------------
1 file changed, 28 insertions(+), 15 deletions(-)
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index d9cf42a..559a995 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -657,34 +657,47 @@ class EmailAddressUnicode(TextUnicode, EmailAddress):
ValueSpec.custom_validate(self, value, varprefix)
-# Network as used in routing configuration, such as
-# "10.0.0.0/8" or "192.168.56.1"
-class IPv4Network(TextAscii):
+# Same as IPv4Network, but allowing both IPv4 and IPv6
+class IPNetwork(TextAscii):
def __init__(self, **kwargs):
- kwargs.setdefault("size", 18)
- TextAscii.__init__(self, **kwargs)
+ kwargs.setdefault("size", 34)
+ super(IPNetwork, self).__init__(**kwargs)
+
+
+ def _ip_class(self):
+ return ipaddress.IPInterface
+
def validate_value(self, value, varprefix):
- super(IPv4Network, self).validate_value(value, varprefix)
+ super(IPNetwork, self).validate_value(value, varprefix)
try:
- ipaddress.IPv4Interface(value.decode("utf-8"))
+ self._ip_class()(value.decode("utf-8"))
except ValueError, e:
- raise MKUserError(varprefix, _("Invalid IP network address: %s") %
e)
+ raise MKUserError(varprefix, _("Invalid address: %s") % e)
-class IPv4Address(TextAscii):
+# Network as used in routing configuration, such as
+# "10.0.0.0/8" or "192.168.56.1"
+class IPv4Network(IPNetwork):
+ def __init__(self, **kwargs):
+ kwargs.setdefault("size", 18)
+ super(IPv4Network, self).__init__(**kwargs)
+
+
+ def _ip_class(self):
+ return ipaddress.IPv4Interface
+
+
+
+class IPv4Address(IPNetwork):
def __init__(self, **kwargs):
kwargs.setdefault("size", 16)
super(IPv4Address, self).__init__(**kwargs)
- def validate_value(self, value, varprefix):
- super(IPv4Address, self).validate_value(value, varprefix)
- try:
- ipaddress.IPv4Address(value.decode("utf-8"))
- except ValueError, e:
- raise MKUserError(varprefix, _("Invalid IP address: %s") % e)
+ def _ip_class(self):
+ return ipaddress.IPv4Address