From a2156eb5923b4065d29ad164baa038238091cd49 Mon Sep 17 00:00:00 2001 From: tbrehm Date: Wed, 21 Sep 2011 12:28:18 +0000 Subject: [PATCH] Added new namevirtualhost port functions to the installer and apache plugin. --- install/dist/lib/fedora.lib.php | 22 ++++++++++++--- install/dist/lib/opensuse.lib.php | 22 ++++++++++++--- install/lib/installer_base.lib.php | 20 +++++++++++--- interface/web/admin/form/server_ip.tform.php | 6 ++++- interface/web/admin/lib/lang/en_server_ip.lng | 1 + server/conf/apache_ispconfig.conf.master | 3 +-- .../plugins-available/apache2_plugin.inc.php | 27 ++++++++++++++++--- 7 files changed, 84 insertions(+), 17 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index b9581c2d0..ae90f1f89 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -521,14 +521,28 @@ class installer_dist extends installer_base { $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 fb28d31ce..dabddce0a 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -535,14 +535,28 @@ class installer_dist extends installer_base { $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 f3e7ef4be..d1fee8a0a 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1145,15 +1145,29 @@ class installer_base { $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 2832efbc4..a6d9bcf57 100644 --- a/interface/web/admin/form/server_ip.tform.php +++ b/interface/web/admin/form/server_ip.tform.php @@ -137,7 +137,11 @@ $form["tabs"]['server_ip'] = array ( '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 f67e8e82c..fd91fc30d 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_txt"] = 'HTTP NameVirtualHost'; $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 8723d930c..1c0d367ce 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -50,7 +50,6 @@ CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m Alias /awstats-icon "/usr/share/awstats/icon" -NameVirtualHost {tmpl_var name="ip_address"}:80 -NameVirtualHost {tmpl_var name="ip_address"}:443 +NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"} diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 092ba63d0..2f641b1ae 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1181,9 +1181,30 @@ class apache2_plugin { $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'); -- GitLab