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 /install/ui/dns.js | |
parent | 1b0ede0776cf292797ef765fcf04a0edc7f1fec2 (diff) | |
download | freeipa-661d82ad75c1a5bca37f225bb7d0f08bbc9be033.tar.gz freeipa-661d82ad75c1a5bca37f225bb7d0f08bbc9be033.tar.xz freeipa-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
Diffstat (limited to 'install/ui/dns.js')
-rw-r--r-- | install/ui/dns.js | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js index 546835860..33b21e4cf 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 || {}; |