Till Brehm
2014-03-13 3d3f986d13a0bfa8cd9578b8ce7401759b736808
Implemented: FS#3235 - Allow 'any' value in zone xfer field
4 files modified
57 ■■■■■ changed files
interface/lib/classes/validate_dns.inc.php 44 ●●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_soa.tform.php 9 ●●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/de_dns_soa.lng 2 ●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_soa.lng 2 ●●● patch | view | raw | blame | history
interface/lib/classes/validate_dns.inc.php
@@ -283,5 +283,49 @@
        }
        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;
    }
}
interface/web/dns/form/dns_soa.tform.php
@@ -217,11 +217,20 @@
        'xfer' => array (
            'datatype' => 'VARCHAR',
            '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',
                    'allowempty' => 'y',
                    'separator' => ',',
                    'errmsg'=> 'xfer_error_regex'),
            ),
            */
            'default' => '',
            'value'  => '',
            'width'  => '30',
interface/web/dns/lib/lang/de_dns_soa.lng
@@ -34,5 +34,5 @@
$wb['expire_range_error'] = 'Min. Expire ist 60 Sekunden.';
$wb['minimum_range_error'] = 'Min. Minimum 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.';
?>
interface/web/dns/lib/lang/en_dns_soa.lng
@@ -23,7 +23,7 @@
$wb["mbox_error_regex"] = 'Email format invalid.';
$wb["also_notify_txt"] = 'Also Notify';
$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['seconds_txt'] = 'Seconds';
$wb['eg_domain_tld'] = 'e.g. domain.tld';