From a2156eb5923b4065d29ad164baa038238091cd49 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 21 Sep 2011 08:28:18 -0400 Subject: [PATCH] Added new namevirtualhost port functions to the installer and apache plugin. --- install/lib/installer_base.lib.php | 20 ++++++++- install/dist/lib/fedora.lib.php | 22 +++++++++-- interface/web/admin/form/server_ip.tform.php | 6 ++ server/conf/apache_ispconfig.conf.master | 3 - server/plugins-available/apache2_plugin.inc.php | 27 ++++++++++++- install/dist/lib/opensuse.lib.php | 22 +++++++++-- interface/web/admin/lib/lang/en_server_ip.lng | 1 7 files changed, 84 insertions(+), 17 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index b9581c2..ae90f1f 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -521,14 +521,28 @@ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rf("tpl/apache_ispconfig.conf.master"); - $records = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ".$conf["server_id"]." AND virtualhost = 'y'"); + $content = rf('tpl/apache_ispconfig.conf.master'); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { - $content .= "NameVirtualHost ".$rec["ip_address"].":80\n"; - $content .= "NameVirtualHost ".$rec["ip_address"].":443\n"; + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',',$rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + } + } + } } } + $content .= "\n"; wf($vhost_conf_dir.'/ispconfig.conf',$content); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index fb28d31..dabddce 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -535,14 +535,28 @@ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; //copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rf("tpl/apache_ispconfig.conf.master"); - $records = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ".$conf["server_id"]." AND virtualhost = 'y'"); + $content = rf('tpl/apache_ispconfig.conf.master'); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { - $content .= "NameVirtualHost ".$rec["ip_address"].":80\n"; - $content .= "NameVirtualHost ".$rec["ip_address"].":443\n"; + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',',$rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + } + } + } } } + $content .= "\n"; wf($vhost_conf_dir.'/ispconfig.conf',$content); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index f3e7ef4..d1fee8a 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1145,15 +1145,29 @@ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - + $content = rf('tpl/apache_ispconfig.conf.master'); $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { - $content .= 'NameVirtualHost '.$rec['ip_address'].":80\n"; - $content .= 'NameVirtualHost '.$rec['ip_address'].":443\n"; + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',',$rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + } + } + } } } + $content .= "\n"; wf($vhost_conf_dir.'/ispconfig.conf',$content); diff --git a/interface/web/admin/form/server_ip.tform.php b/interface/web/admin/form/server_ip.tform.php index 2832efb..a6d9bcf 100644 --- a/interface/web/admin/form/server_ip.tform.php +++ b/interface/web/admin/form/server_ip.tform.php @@ -137,7 +137,11 @@ 'virtualhost_port' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', - 'default' => '', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^([0-9]{1,5}\,{0,1}){1,}$/i', + 'errmsg'=> 'error_port_syntax'), + ), + 'default' => '80,443', 'value' => '', 'separator' => '', 'width' => '15', diff --git a/interface/web/admin/lib/lang/en_server_ip.lng b/interface/web/admin/lib/lang/en_server_ip.lng index f67e8e8..fd91fc3 100644 --- a/interface/web/admin/lib/lang/en_server_ip.lng +++ b/interface/web/admin/lib/lang/en_server_ip.lng @@ -7,4 +7,5 @@ $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["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; ?> \ No newline at end of file diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index 8723d93..1c0d367 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -50,7 +50,6 @@ Alias /awstats-icon "/usr/share/awstats/icon" <tmpl_loop name="ip_adresses"> -NameVirtualHost {tmpl_var name="ip_address"}:80 -NameVirtualHost {tmpl_var name="ip_address"}:443 +NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"} </tmpl_loop> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 092ba63..2f641b1 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1181,9 +1181,30 @@ $tpl = new tpl(); $tpl->newTemplate('apache_ispconfig.conf.master'); $records = $app->db->queryAllRecords('SELECT * FROM server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - - if(count($records) > 0) { - $tpl->setLoop('ip_adresses',$records); + + $records_out= array(); + if(is_array($records)) { + foreach($records as $rec) { + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',',$rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $records_out[] = array('ip_address' => $ip_address, 'port' => $port); + } + } + } + } + } + + + if(count($records_out) > 0) { + $tpl->setLoop('ip_adresses',$records_out); } $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/ispconfig.conf'); -- Gitblit v1.9.1