summaryrefslogtreecommitdiffstats
path: root/install/ui
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-03-07 14:42:59 +0100
committerPetr Vobornik <pvoborni@redhat.com>2012-03-20 17:32:18 +0100
commit661d82ad75c1a5bca37f225bb7d0f08bbc9be033 (patch)
tree0ff025927cd5e1d52fce9b70f5722fa6cdbc6d89 /install/ui
parent1b0ede0776cf292797ef765fcf04a0edc7f1fec2 (diff)
downloadfreeipa-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')
-rw-r--r--install/ui/dns.js37
-rw-r--r--install/ui/test/data/ipa_init.json1
2 files changed, 35 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 || {};
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 36a3388d9..8aa476082 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"
}