diff -Naur ispconfig//interface/lib/classes/tform.inc.php ispconfig.change//interface/lib/classes/tform.inc.php
--- ispconfig//interface/lib/classes/tform.inc.php 2013-02-26 06:47:54.344019994 +0100
+++ ispconfig.change//interface/lib/classes/tform.inc.php 2013-02-26 13:56:16.416019994 +0100
@@ -887,39 +887,74 @@
}
}
break;
- /*
- case 'ISV6PREFIX':
- $v6_prefix_ok = 0;
- $explode_field_value = explode(':',$field_value);
- if ($explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]=='' ){
- if ( count($explode_field_value) <= 9 ) {
- if(filter_var(substr($field_value,0,strlen($field_value)-2),FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).'::0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).':0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) ) {
- $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){
- $this->errorMessage .= $errmsg."
\r\n";
- }
- break;
- */
+ // check IPv6 against defined prefix - server ip addresses
+ case 'IPV6MATCHPREFIX':
+ $app->uses('getconf');
+ $_server = $app->getconf->get_server_config(1,'server');
+ // check only if the ip is a IPv6-address
+ if ( (filter_var($field_value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) && isset($_server["v6_prefix"]) ) {
+ // return errmsg if the prefix doesn't match the IPv6
+ if (strncmp($field_value,$_server['v6_prefix'],strlen($_server['v6_prefix'])-1) <> 0 ) {
+// echo error;
+ $errmsg = $validator['errmsg'];
+ if(isset($this->wordbook[$errmsg])) {
+ $this->errorMessage .= $this->wordbook[$errmsg].$_server["v6_prefix"]."
\r\n";
+ } else {
+ $this->errorMessage .= $errmsg."
\r\n";
+ }
+ }
+
+ }
+ break;
+ // IPv6-prefix must end with :: - server configuration
+ 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]=='' ){ }
+ else {
+ $errmsg = $validator['errmsg'];
+ if(isset($this->wordbook[$errmsg])) {
+ $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n";
+ } else {
+ $this->errorMessage .= $errmsg."
\r\n";
+ }
+ }
+ break;
+ // IPv6 prefix can't be longer than the shortest IPv6 - server configuration
+ case 'V6PREFIXLENGTH':
+ // find the shortest ipv6 because the prefix 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;");
+print_r($sql_v6);
+ $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]."
\r\n";
+ } else {
+ $this->errorMessage .= $errmsg."
\r\n";
+ }
+ }
+ break;
+ // the prefix must be a valid IPv6 prefix - server configuration
+ case 'ISV6PREFIX':
+ $v6_prefix_ok = 0;
+ $explode_field_value = explode(':',$field_value);
+ if ($explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]=='' ){
+ if ( count($explode_field_value) <= 9 ) {
+ if (filter_var(substr($field_value,0,strlen($field_value)-2),FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).'::0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).':0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) ) {
+ $v6_prefix_ok = 1;
+ }
+ }
+ }
+ if($v6_prefix_ok <> 1){
+ $errmsg = $validator['errmsg'];
+ if(isset($this->wordbook[$errmsg])) {
+ $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n";
+ } else {
+ $this->errorMessage .= $errmsg."
\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)){
diff -Naur ispconfig//interface/web/admin/form/server_config.tform.php ispconfig.change//interface/web/admin/form/server_config.tform.php
--- ispconfig//interface/web/admin/form/server_config.tform.php 2013-02-26 06:47:54.244019992 +0100
+++ ispconfig.change//interface/web/admin/form/server_config.tform.php 2013-02-26 13:58:25.424020010 +0100
@@ -86,16 +86,18 @@
'width' => '15',
'maxlength' => '255'
),
- /*
- 'v6_prefix' => array(
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array(0 => array('type' => 'ISV6PREFIX',
- 'errmsg' => 'v6_prefix_wrong'),
- ),
- 'default' => ''
- ),
- */
+ 'v6_prefix' => array(
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array( 0 => array('type' => 'ISV6PREFIX',
+ 'errmsg' => 'v6_prefix_wrong'),
+ 1 => array('type' => 'V6PREFIXEND',
+ 'errmsg' => 'v6_prefix_end'),
+ 2 => array('type' => 'V6PREFIXLENGTH',
+ 'errmsg' => 'v6_prefix_length')
+ ),
+ 'default' => ''
+ ),
'gateway' => array(
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
@@ -415,14 +417,12 @@
'width' => '40',
'maxlength' => '255'
),
-/*
-'vhost_rewrite_v6' => array (
-'datatype' => 'VARCHAR',
-'formtype' => 'CHECKBOX',
-'default' => 'n',
-'value' => array(0 => 'n',1 => 'y')
-),
-*/
+ 'vhost_rewrite_v6' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
'vhost_conf_dir' => array(
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
diff -Naur ispconfig//interface/web/admin/form/server_ip.tform.php ispconfig.change//interface/web/admin/form/server_ip.tform.php
--- ispconfig//interface/web/admin/form/server_ip.tform.php 2013-02-26 06:47:54.244019992 +0100
+++ ispconfig.change//interface/web/admin/form/server_ip.tform.php 2013-02-26 13:59:24.616019997 +0100
@@ -125,6 +125,7 @@
'errmsg'=> 'ip_error_wrong'),
1 => array ( 'type' => 'UNIQUE',
'errmsg'=> 'ip_error_unique'),
+ 2 => array ( 'type' => 'IPV6MATCHPREFIX', 'errmsg'=> 'ip_error_v6prefix'),
),
'default' => '',
'value' => '',
@@ -161,4 +162,4 @@
##################################
)
);
-?>
\ No newline at end of file
+?>
diff -Naur ispconfig//interface/web/admin/lib/lang/en_server_config.lng ispconfig.change//interface/web/admin/lib/lang/en_server_config.lng
--- ispconfig//interface/web/admin/lib/lang/en_server_config.lng 2013-02-26 06:47:54.172019992 +0100
+++ ispconfig.change//interface/web/admin/lib/lang/en_server_config.lng 2013-02-26 13:59:59.612019974 +0100
@@ -170,4 +170,10 @@
$wb["web_folder_protection_txt"] = 'Make web folders immutable (extended attributes)';
$wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin';
$wb["overtraffic_notify_client_txt"] = 'Send overtraffic notification to client';
+$wb["v6_prefix_txt"] = 'IPv6 Prefix';
+$wb["v6_prefix_note_txt"] = 'only for rewrite on mirrors';
+$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror';
+$wb["v6_prefix_wrong"] = 'Invalid v6 Netmask format.';
+$wb["v6_prefix_end"] = 'Prefix - must end with ::';
+$wb["v6_prefix_length"] = 'Prefix too long according to defined IPv6 ';
?>
diff -Naur ispconfig//interface/web/admin/lib/lang/en_server_ip.lng ispconfig.change//interface/web/admin/lib/lang/en_server_ip.lng
--- ispconfig//interface/web/admin/lib/lang/en_server_ip.lng 2013-02-26 06:47:54.220019992 +0100
+++ ispconfig.change//interface/web/admin/lib/lang/en_server_ip.lng 2013-02-26 14:00:37.020019971 +0100
@@ -7,5 +7,6 @@
$wb["virtualhost_port_txt"] = 'HTTP Ports';
$wb["ip_error_wrong"] = 'The IP address is invalid';
$wb["ip_error_unique"] = 'The IP address must be unique';
+$wb["ip_error_v6prefix"] = 'The IP address must match the IPv6-prefix ';
$wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
-?>
\ No newline at end of file
+?>
diff -Naur ispconfig//interface/web/admin/templates/server_config_server_edit.htm ispconfig.change//interface/web/admin/templates/server_config_server_edit.htm
--- ispconfig//interface/web/admin/templates/server_config_server_edit.htm 2013-02-26 06:47:54.072019992 +0100
+++ ispconfig.change//interface/web/admin/templates/server_config_server_edit.htm 2013-02-26 14:02:04.872020434 +0100
@@ -19,11 +19,10 @@
-