Skip to content
Snippets Groups Projects
Commit 3d3f986d authored by Till Brehm's avatar Till Brehm
Browse files

Implemented: FS#3235 - Allow 'any' value in zone xfer field

parent 8433d033
No related branches found
No related tags found
No related merge requests found
...@@ -283,5 +283,49 @@ class validate_dns { ...@@ -283,5 +283,49 @@ class validate_dns {
} }
return $new_serial; return $new_serial;
} }
function validate_xfer($field_name, $field_value, $validator) {
global $app;
$errorMessage = '';
if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
if($validator['allowempty'] == 'y' && $field_value == '') {
//* Do nothing
} elseif ($field_value == 'any') {
//* Do nothing
} else {
//* Check if its a IPv4 or IPv6 address
if(isset($validator['separator']) && $validator['separator'] != '') {
//* When the field may contain several IP addresses, split them by the char defined as separator
$field_value_array = explode($validator['separator'], $field_value);
} else {
$field_value_array[] = $field_value;
}
foreach($field_value_array as $field_value) {
$field_value = trim($field_value);
if(function_exists('filter_var')) {
if(!filter_var($field_value, FILTER_VALIDATE_IP)) {
$errmsg = $validator['errmsg'];
$errorMessage .= $app->tform->lng($errmsg)."<br />\r\n";
}
} else {
//* Check content with regex, if we use php < 5.2
$ip_ok = 0;
if(preg_match("/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i", $field_value)){
$ip_ok = 1;
}
if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){
$ip_ok = 1;
}
if($ip_ok == 0) {
$errmsg = $validator['errmsg'];
$errorMessage .= $app->tform->lng($errmsg)."<br />\r\n";
}
}
}
}
return $errorMessage;
}
} }
...@@ -217,11 +217,20 @@ $form["tabs"]['dns_soa'] = array ( ...@@ -217,11 +217,20 @@ $form["tabs"]['dns_soa'] = array (
'xfer' => array ( 'xfer' => array (
'datatype' => 'VARCHAR', 'datatype' => 'VARCHAR',
'formtype' => 'TEXT', 'formtype' => 'TEXT',
'validators' => array ( 0 => array ( 'type' => 'CUSTOM',
'class' => 'validate_dns',
'function' => 'validate_xfer',
'allowempty' => 'y',
'separator' => ',',
'errmsg'=> 'xfer_error_regex'),
),
/*
'validators' => array ( 0 => array ( 'type' => 'ISIP', 'validators' => array ( 0 => array ( 'type' => 'ISIP',
'allowempty' => 'y', 'allowempty' => 'y',
'separator' => ',', 'separator' => ',',
'errmsg'=> 'xfer_error_regex'), 'errmsg'=> 'xfer_error_regex'),
), ),
*/
'default' => '', 'default' => '',
'value' => '', 'value' => '',
'width' => '30', 'width' => '30',
......
...@@ -34,5 +34,5 @@ $wb['retry_range_error'] = 'Min. Refresh ist 60 Sekunden.'; ...@@ -34,5 +34,5 @@ $wb['retry_range_error'] = 'Min. Refresh ist 60 Sekunden.';
$wb['expire_range_error'] = 'Min. Expire ist 60 Sekunden.'; $wb['expire_range_error'] = 'Min. Expire ist 60 Sekunden.';
$wb['minimum_range_error'] = 'Min. Minimum ist 60 Sekunden.'; $wb['minimum_range_error'] = 'Min. Minimum ist 60 Sekunden.';
$wb['ttl_range_error'] = 'Min. TTL ist 60 Sekunden.'; $wb['ttl_range_error'] = 'Min. TTL ist 60 Sekunden.';
$wb['xfer_error_regex'] = 'Bitte Beachten: Verwenden Sie eine IP Adresse.'; $wb['xfer_error_regex'] = 'Zonentransfer: Verwenden Sie eine oder mehrere durch Komma getrennte IP Adressen oder das Wort: any.';
?> ?>
\ No newline at end of file
...@@ -23,7 +23,7 @@ $wb["mbox_error_empty"] = 'Email is empty.'; ...@@ -23,7 +23,7 @@ $wb["mbox_error_empty"] = 'Email is empty.';
$wb["mbox_error_regex"] = 'Email format invalid.'; $wb["mbox_error_regex"] = 'Email format invalid.';
$wb["also_notify_txt"] = 'Also Notify'; $wb["also_notify_txt"] = 'Also Notify';
$wb['also_notify_error_regex'] = 'Also notify: Please use an IP address.'; $wb['also_notify_error_regex'] = 'Also notify: Please use an IP address.';
$wb['xfer_error_regex'] = 'Xfer: Please use an IP address.'; $wb['xfer_error_regex'] = 'Xfer: Please use one or more IP addresses, separated by , or use the keyword: any';
$wb["update_acl_txt"] = 'Update ACL'; $wb["update_acl_txt"] = 'Update ACL';
$wb['seconds_txt'] = 'Seconds'; $wb['seconds_txt'] = 'Seconds';
$wb['eg_domain_tld'] = 'e.g. domain.tld'; $wb['eg_domain_tld'] = 'e.g. domain.tld';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment