Marius Cramer
2013-12-27 6b1d788d1d50fd38f68f152285f3fa816a9d7880
interface/lib/classes/tform_base.inc.php
@@ -941,6 +941,32 @@
               }
            }
            break;
         case 'V6PREFIXEND':
            $explode_field_value = explode(':',$field_value);
//            if ($explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]=='' ){ }
            if (!$explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]!='' ) {
               $errmsg = $validator['errmsg'];
               if(isset($this->wordbook[$errmsg])) {
                  $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
               } else {
                  $this->errorMessage .= $errmsg."<br />\r\n";
               }
            }
            break;
         case 'V6PREFIXLENGTH':
            // find shortes ipv6 subnet can`t be longer
            $sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' ORDER BY CHAR_LENGTH(ip_address) ASC LIMIT 0,1;");
            $sql_v6_explode=explode(':',$sql_v6['ip_address']);
            $explode_field_value = explode(':',$field_value);
            if (count($sql_v6_explode) < count($explode_field_value) && isset($sql_v6['ip_address'])) {
               $errmsg = $validator['errmsg'];
               if(isset($this->wordbook[$errmsg])) {
                  $this->errorMessage .= $this->wordbook[$errmsg].$sql_v6[ip_address]."<br />\r\n";
               } else {
                  $this->errorMessage .= $errmsg."<br />\r\n";
               }
            }
            break;
         case 'ISV6PREFIX':
            $v6_prefix_ok = 0;
            $explode_field_value = explode(':', $field_value);
@@ -950,28 +976,19 @@
                     $v6_prefix_ok = 1;
                  }
               }
            } else {
               $v6_prefix_ok = 2;
            }
            // check subnet against defined server-ipv6
            $sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' LIMIT 0,1");
            $sql_v6_explode=explode(':', $sql_v6['ip_address']);
            if ( count($sql_v6_explode) < count($explode_field_value) && isset($sql_v6['ip_address']) )  {
               $v6_prefix_ok = 3;
            }
            if($v6_prefix_ok == 0) {
               $errmsg = $validator['errmsg'];
            }
            if($v6_prefix_ok == 2) {
               $errmsg = 'IPv6 Prefix must end with ::';
            }
            if($v6_prefix_ok == 3) {
               $errmsg = 'IPv6 Prefix too long (according to Server IP Addresses)';
            }
            if($v6_prefix_ok <> 1){
               $errmsg = $validator['errmsg'];
               if(isset($this->wordbook[$errmsg])) {
                  $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
               } else {
               $this->errorMessage .= $errmsg."<br />\r\n";
            }
            }
            break;
         case 'ISIPV4':
            $vip=1;
            if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){