diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2012-03-07 14:42:59 +0100 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2012-03-20 17:32:18 +0100 |
commit | 661d82ad75c1a5bca37f225bb7d0f08bbc9be033 (patch) | |
tree | 0ff025927cd5e1d52fce9b70f5722fa6cdbc6d89 | |
parent | 1b0ede0776cf292797ef765fcf04a0edc7f1fec2 (diff) | |
download | freeipa.git-661d82ad75c1a5bca37f225bb7d0f08bbc9be033.tar.gz freeipa.git-661d82ad75c1a5bca37f225bb7d0f08bbc9be033.tar.xz freeipa.git-661d82ad75c1a5bca37f225bb7d0f08bbc9be033.zip |
DNS forwarder validator
DNS forwarder's value can consist of IP address and a port.
The syntax is '<IP ADDRESS> port <PORT>'. A new validator was created for this purpose. It is based on IP address validator.
https://fedorahosted.org/freeipa/ticket/2490
-rw-r--r-- | install/ui/dns.js | 37 | ||||
-rw-r--r-- | install/ui/test/data/ipa_init.json | 1 | ||||
-rw-r--r-- | ipalib/plugins/internal.py | 1 |
3 files changed, 36 insertions, 3 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js index 54683586..33b21e4c 100644 --- a/install/ui/dns.js +++ b/install/ui/dns.js @@ -49,7 +49,7 @@ IPA.dns.config_entity = function(spec) { { type: 'multivalued', name: 'idnsforwarders', - validators: [IPA.ip_address_validator()] + validators: [IPA.dnsforwarder_validator()] }, { type: 'checkboxes', @@ -167,7 +167,7 @@ IPA.dns.zone_entity = function(spec) { { type: 'multivalued', name: 'idnsforwarders', - validators: [IPA.ip_address_validator()] + validators: [IPA.dnsforwarder_validator()] }, { type: 'checkboxes', @@ -2170,7 +2170,6 @@ IPA.dns.ptr_redirection_dialog = function(spec) { return that; }; - IPA.ip_address_validator = function(spec) { spec = spec || {}; @@ -2202,6 +2201,8 @@ IPA.ip_address_validator = function(spec) { (that.address_type === 'IPv6' && net_type === 'v6')); }; + that.ip_address_validate = that.validate; + return that; }; @@ -2221,6 +2222,36 @@ IPA.ip_v6_address_validator = function(spec) { return IPA.ip_address_validator(spec); }; +IPA.dnsforwarder_validator = function(spec) { + + spec = spec || {}; + var that = IPA.ip_address_validator(spec); + + that.validate = function(value) { + + var address_part = value; + + if (value.indexOf(' ') > - 1) { + var parts = value.split(' '); + + if (parts.length !== 3 || parts[1] !== 'port') return that.false_result(); + + address_part = parts[0]; + var port = parts[2]; + + if (!port.match(/^[1-9]\d*$|^0$/) || port < 0 || port > 65535) { + var message = IPA.messages.widget.validation.port; + message = message.replace('${port}', port); + return that.false_result(message); + } + } + + return that.ip_address_validate(address_part); + }; + + return that; +}; + IPA.network_validator = function(spec) { spec = spec || {}; diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index 36a3388d..8aa47608 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -452,6 +452,7 @@ "max_value": "Maximum value is ${value}", "min_value": "Minimum value is ${value}", "net_address": "Not a valid network address", + "port": "'${port}' is not a valid port", "required": "Required field", "unsupported": "Unsupported value" } diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py index 541d85cf..23b52372 100644 --- a/ipalib/plugins/internal.py +++ b/ipalib/plugins/internal.py @@ -591,6 +591,7 @@ class i18n_messages(Command): "max_value": _("Maximum value is ${value}"), "min_value": _("Minimum value is ${value}"), "net_address": _("Not a valid network address"), + "port": _("'${port}' is not a valid port"), "required": _("Required field"), "unsupported": _("Unsupported value"), }, |