tbrehm
2013-02-06 b5f119957e32fbcb31f21b473396f0478d6f56ac
Fixed: FS#2607 - DNS Form IPv6 issues
- Extended the tform ISIP check and added the options 'allowempty' and 'separator'
3 files modified
73 ■■■■■ changed files
interface/lib/classes/tform.inc.php 57 ●●●●● patch | view | raw | blame | history
interface/web/dns/form/dns_soa.tform.php 13 ●●●● patch | view | raw | blame | history
interface/web/dns/lib/lang/en_dns_soa.lng 3 ●●●● patch | view | raw | blame | history
interface/lib/classes/tform.inc.php
@@ -939,31 +939,44 @@
                                        }
                                break;
                                case 'ISIP':
                                //* Check if its a IPv4 or IPv6 address
                                if(function_exists('filter_var')) {
                                    if(!filter_var($field_value,FILTER_VALIDATE_IP)) {
                                        $errmsg = $validator['errmsg'];
                                        if(isset($this->wordbook[$errmsg])) {
                                            $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
                                        } else {
                                            $this->errorMessage .= $errmsg."<br />\r\n";
                                        }
                                    }
                                if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
                                if($validator['allowempty'] == 'y' && $field_value == '') {
                                    //* Do nothing
                                } 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;
                                //* 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;
                                    }
                                    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'];
                                        if(isset($this->wordbook[$errmsg])) {
                                            $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
                                    foreach($field_value_array as $field_value) {
                                        if(function_exists('filter_var')) {
                                            if(!filter_var($field_value,FILTER_VALIDATE_IP)) {
                                                $errmsg = $validator['errmsg'];
                                                if(isset($this->wordbook[$errmsg])) {
                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
                                                } else {
                                                    $this->errorMessage .= $errmsg."<br />\r\n";
                                                }
                                            }
                                        } else {
                                            $this->errorMessage .= $errmsg."<br />\r\n";
                                            //* 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'];
                                                if(isset($this->wordbook[$errmsg])) {
                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
                                                } else {
                                                    $this->errorMessage .= $errmsg."<br />\r\n";
                                                }
                                            }
                                        }
                                    }
                                }
interface/web/dns/form/dns_soa.tform.php
@@ -217,8 +217,9 @@
        'xfer' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'validators'    => array (     0 => array (    'type'    => 'REGEX',
                                                        'regex' => '/^[0-9\.\,]{0,255}$/',
            'validators'    => array (     0 => array (    'type'    => 'ISIP',
                                                        'allowempty' => 'y',
                                                        'separator' => ',',
                                                        'errmsg'=> 'xfer_error_regex'),
                                    ),
            'default'    => '',
@@ -229,13 +230,11 @@
        'also_notify' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'validators'    => array (  0 => array (    'type'    => 'REGEX',
                                                        'regex' => '/^(((25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(;){0,1}(\ ){0,1}){0,10}$/',
            'validators'    => array (  0 => array (    'type'    => 'ISIP',
                                                        'allowempty' => 'y',
                                                        'separator' => ',',
                                                        'errmsg'=> 'also_notify_error_regex'
                                                    ),
//                                        0 => array (    'type'  => 'ISIPV4',
//                                                        'errmsg'=> 'also_notify_error_regex'
//                                                    ),
                                    ),
            'default'    => '',
            'value'        => '',
interface/web/dns/lib/lang/en_dns_soa.lng
@@ -22,7 +22,8 @@
$wb["mbox_error_empty"] = 'Email is empty.';
$wb["mbox_error_regex"] = 'Email format invalid.';
$wb["also_notify_txt"] = 'Also Notify';
$wb['also_notify_error_regex'] = 'Please use an IP address.';
$wb['also_notify_error_regex'] = 'Also notify: Please use an IP address.';
$wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
$wb["update_acl_txt"] = 'Update ACL';
$wb['seconds_txt'] = 'Seconds';
$wb['eg_domain_tld'] = 'e.g. domain.tld';