diff --git a/admin_domains.php b/admin_domains.php index ce915bb4..95e628d6 100644 --- a/admin_domains.php +++ b/admin_domains.php @@ -1017,8 +1017,7 @@ if ($page == 'domains' // vhost configs $vhostconfigs = ''; - $configsvhost = Database::prepare("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `webserver` = :webserver ORDER BY description ASC"); - Database::pexecute($configsvhost, array('webserver' => Settings::Get('system.webserver'))); + $configsvhost = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` ORDER BY description ASC"); $vhostconfigs.= makeoption($lng['admin']['vhostsettings']['novhostsettings'], 0); while ($row = $configsvhost->fetch(PDO::FETCH_ASSOC)) { @@ -2011,9 +2010,7 @@ if ($page == 'domains' // vhost configs $vhostconfigs = ''; - $vhostconfigs_result_stmt = Database::prepare("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `webserver` = :webserver ORDER BY description ASC"); - Database::pexecute($vhostconfigs_result_stmt, array('webserver' => Settings::Get('system.webserver'))); - + $vhostconfigs_result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` ORDER BY description ASC"); $vhostconfigs .= makeoption($lng['admin']['vhostsettings']['novhostsettings'], 0); while ($vhostconfig_row = $vhostconfigs_result_stmt->fetch(PDO::FETCH_ASSOC)) { $vhostconfigs .= makeoption($vhostconfig_row['description'], $vhostconfig_row['id'], $result['vhostsettingid'], true, true); diff --git a/admin_vhostsettings.php b/admin_vhostsettings.php index 5c223aa4..329c1ab1 100644 --- a/admin_vhostsettings.php +++ b/admin_vhostsettings.php @@ -28,17 +28,17 @@ if (isset($_POST['id'])) { } if ($page == 'overview') { - $supported_webservers = [ 'apache2' => 'Apache 2', 'lighttpd' => 'ligHTTPd', 'nginx' => 'Nginx' ]; - if ($action == '') { $tablecontent = ''; $count = 0; $result = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` ORDER BY description ASC"); while ($row = $result->fetch(PDO::FETCH_ASSOC)) { + + $domainresult = false; $query_params = array('id' => $row['id']); - $query = "SELECT * FROM `" . TABLE_PANEL_DOMAINS . "` + $query = "SELECT * FROM `".TABLE_PANEL_DOMAINS."` WHERE `vhostsettingid` = :id AND `parentdomainid` = '0'"; @@ -76,72 +76,90 @@ if ($page == 'overview') { $domains = $lng['admin']['phpsettings']['notused']; } - $webserver = str_replace(array_keys($supported_webservers), array_values($supported_webservers), $row['webserver']); + // check whether this is our default config + if ((Settings::Get('system.mod_fcgid') == '1' + && Settings::Get('system.mod_fcgid_defaultini') == $row['id']) + || (Settings::Get('phpfpm.enabled') == '1' + && Settings::Get('phpfpm.defaultini') == $row['id']) + ) { + $row['description'] = ''.$row['description'].''; + } $count++; eval("\$tablecontent.=\"" . getTemplate("vhostconfig/overview_overview") . "\";"); } eval("echo \"" . getTemplate("vhostconfig/overview") . "\";"); + } - } else if ($action == 'add') { + if ($action == 'add') { - if ((int)$userinfo['change_serversettings'] != 1) { - standard_error('nopermissionsorinvalidid'); - } + if ((int)$userinfo['change_serversettings'] == 1) { - if (isset($_POST['send']) && $_POST['send'] == 'send') { - $description = validate($_POST['description'], 'description'); - $vhostsettings = validate(trim(str_replace("\r\n", "\n", $_POST['vhostsettings'])), 'vhostsettings', '/^[^\0]*$/'); - $webserver = validate($_POST['webserver'], 'webserver', '/^(' . implode("|", array_keys($supported_webservers)) . ')$/'); + if (isset($_POST['send']) + && $_POST['send'] == 'send' + ) { + $description = validate($_POST['description'], 'description'); + $vhostsettings = validate(trim(str_replace("\r\n", "\n", $_POST['vhostsettings'])), 'vhostsettings', '/^[^\0]*$/'); - if (strlen($description) == 0 || strlen($description) > 50) { - standard_error('descriptioninvalid'); + if (strlen($description) == 0 + || strlen($description) > 50 + ) { + standard_error('descriptioninvalid'); + } + + $ins_stmt = Database::prepare(" + INSERT INTO `" . TABLE_PANEL_VHOSTCONFIGS . "` SET + `description` = :desc, + `vhostsettings` = :vhostsettings" + ); + $ins_data = array( + 'desc' => $description, + 'vhostsettings' => $vhostsettings + ); + Database::pexecute($ins_stmt, $ins_data); + + inserttask('1'); + $log->logAction(ADM_ACTION, LOG_INFO, "vhost config setting with description '" . $description . "' has been created by '" . $userinfo['loginname'] . "'"); + redirectTo($filename, array('page' => $page, 's' => $s)); + + } else { + + $result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = 1"); + $result = $result_stmt->fetch(PDO::FETCH_ASSOC); + + $vhostconfig_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php'; + $vhostconfig_add_form = htmlform::genHTMLForm($vhostconfig_add_data); + + $title = $vhostconfig_add_data['vhostconfig_add']['title']; + $image = $vhostconfig_add_data['vhostconfig_add']['image']; + + eval("echo \"" . getTemplate("vhostconfig/overview_add") . "\";"); } - $ins_stmt = Database::prepare(" - INSERT INTO `" . TABLE_PANEL_VHOSTCONFIGS . "` SET - `description` = :description, - `vhostsettings` = :vhostsettings, - `webserver` = :webserver - "); - $ins_data = array('description' => $description, 'vhostsettings' => $vhostsettings, 'webserver' => $webserver); - Database::pexecute($ins_stmt, $ins_data); - - inserttask('1'); - $log->logAction(ADM_ACTION, LOG_INFO, "vhost config setting with description '" . $description . "' has been created by '" . $userinfo['loginname'] . "'"); - redirectTo($filename, array('page' => $page, 's' => $s)); - } else { - $webserver_options = ''; - while (list($webserver, $webserver_friendlyName) = each($supported_webservers)) { - $webserver_options .= makeoption($webserver_friendlyName, $webserver, Settings::Get('system.webserver'), true); - } - - $vhostconfig_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php'; - $vhostconfig_add_form = htmlform::genHTMLForm($vhostconfig_add_data); - - $title = $vhostconfig_add_data['vhostconfig_add']['title']; - $image = $vhostconfig_add_data['vhostconfig_add']['image']; - - eval("echo \"" . getTemplate("vhostconfig/overview_add") . "\";"); + standard_error('nopermissionsorinvalidid'); } - } else if ($action == 'delete') { + } + + if ($action == 'delete') { $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = :id" ); $result = Database::pexecute_first($result_stmt, array('id' => $id)); - if ($result['id'] != 0 && $result['id'] == $id && (int)$userinfo['change_serversettings'] == 1) { - if (isset($_POST['send']) && $_POST['send'] == 'send') { - // Remove a reference to this template from all domains using it - $upd_stmt = Database::prepare("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET - `vhostsettingid` = 0 WHERE `vhostsettingid` = :id" - ); - Database::pexecute($upd_stmt, array('id' => $id)); + if ($result['id'] != 0 + && $result['id'] == $id + && (int)$userinfo['change_serversettings'] == 1 + ) { - $del_stmt = Database::prepare("DELETE FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = :id"); + if (isset($_POST['send']) + && $_POST['send'] == 'send' + ) { + $del_stmt = Database::prepare(" + DELETE FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = :id" + ); Database::pexecute($del_stmt, array('id' => $id)); inserttask('1'); @@ -154,31 +172,43 @@ if ($page == 'overview') { } else { standard_error('nopermissionsorinvalidid'); } - } else if ($action == 'edit') { + } + + if ($action == 'edit') { $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = :id" ); $result = Database::pexecute_first($result_stmt, array('id' => $id)); - if ($result['id'] != 0 && $result['id'] == $id && (int)$userinfo['change_serversettings'] == 1) { - if (isset($_POST['send']) && $_POST['send'] == 'send') { + if ($result['id'] != 0 + && $result['id'] == $id + && (int)$userinfo['change_serversettings'] == 1 + ) { + + if (isset($_POST['send']) + && $_POST['send'] == 'send' + ) { $description = validate($_POST['description'], 'description'); $vhostsettings = validate(trim(str_replace("\r\n", "\n", $_POST['vhostsettings'])), 'vhostsettings', '/^[^\0]*$/'); - $webserver = validate($_POST['webserver'], 'webserver', '/^(' . implode("|", array_keys($supported_webservers)) . ')$/'); - if (strlen($description) == 0 || strlen($description) > 50) { + if (strlen($description) == 0 + || strlen($description) > 50 + ) { standard_error('descriptioninvalid'); } $upd_stmt = Database::prepare(" UPDATE `" . TABLE_PANEL_VHOSTCONFIGS . "` SET - `description` = :description, - `vhostsettings` = :vhostsettings, - `webserver` = :webserver + `description` = :desc, + `vhostsettings` = :vhostsettings WHERE `id` = :id" ); - $upd_data = array('description' => $description, 'vhostsettings' => $vhostsettings, 'webserver' => $webserver, 'id' => $id); + $upd_data = array( + 'desc' => $description, + 'vhostsettings' => $vhostsettings, + 'id' => $id + ); Database::pexecute($upd_stmt, $upd_data); inserttask('1'); @@ -186,10 +216,6 @@ if ($page == 'overview') { redirectTo($filename, array('page' => $page, 's' => $s)); } else { - $webserver_options = ''; - while (list($webserver, $webserver_friendlyName) = each($supported_webservers)) { - $webserver_options .= makeoption($webserver_friendlyName, $webserver, $result['webserver'], true); - } $vhostconfig_edit_data = include_once dirname(__FILE__).'/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php'; $vhostconfig_edit_form = htmlform::genHTMLForm($vhostconfig_edit_data); @@ -199,6 +225,7 @@ if ($page == 'overview') { eval("echo \"" . getTemplate("vhostconfig/overview_edit") . "\";"); } + } else { standard_error('nopermissionsorinvalidid'); } diff --git a/install/froxlor.sql b/install/froxlor.sql index 81ac24e8..022ff8b9 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -858,6 +858,5 @@ CREATE TABLE IF NOT EXISTS `panel_vhostconfigs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(50) NOT NULL, `vhostsettings` text NOT NULL, - `webserver` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; diff --git a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php index 25c20b96..7e9139ae 100644 --- a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php +++ b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php @@ -29,11 +29,6 @@ return array( 'type' => 'text', 'maxlength' => 50 ), - 'webserver' => array( - 'label' => $lng['admin']['webserver'], - 'type' => 'select', - 'select_var' => $webserver_options - ), 'vhostsettings' => array( 'style' => 'align-top', 'label' => $lng['admin']['vhostsettings']['vhostsettings'], diff --git a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php index dd178b8b..d780ab6d 100644 --- a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php +++ b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php @@ -30,11 +30,6 @@ return array( 'maxlength' => 50, 'value' => $result['description'] ), - 'webserver' => array( - 'label' => $lng['admin']['webserver'], - 'type' => 'select', - 'select_var' => $webserver_options - ), 'vhostsettings' => array( 'style' => 'align-top', 'label' => $lng['admin']['vhostsettings']['vhostsettings'], diff --git a/scripts/jobs/cron_tasks.inc.http.10.apache.php b/scripts/jobs/cron_tasks.inc.http.10.apache.php index 5762a1ff..7b2a5e09 100644 --- a/scripts/jobs/cron_tasks.inc.http.10.apache.php +++ b/scripts/jobs/cron_tasks.inc.http.10.apache.php @@ -868,18 +868,15 @@ class apache extends HttpConfigBase { // check if vhost config template is set and if so, merge it if ($domain['vhostsettingid'] != 0) { - $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " - WHERE `webserver` = 'apache2' AND `id` = :id LIMIT 1;"); + $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " WHERE `id` = :id LIMIT 1;"); $vhostconfig = Database::pexecute_first($vhostsettings_stmt, array('id' => $domain['vhostsettingid'])); - if (is_array($vhostconfig)) { - $vhost_content .= $this->processSpecialConfigTemplate( - $vhostconfig['vhostsettings'], - $domain, - $domain['ip'], - $domain['port'], - $ssl_vhost) . "\n"; - } + $vhost_content .= $this->processSpecialConfigTemplate( + $vhostconfig['vhostsettings'], + $domain, + $domain['ip'], + $domain['port'], + $ssl_vhost) . "\n"; } if ($domain['specialsettings'] != '') { diff --git a/scripts/jobs/cron_tasks.inc.http.20.lighttpd.php b/scripts/jobs/cron_tasks.inc.http.20.lighttpd.php index facb5749..89c1521b 100644 --- a/scripts/jobs/cron_tasks.inc.http.20.lighttpd.php +++ b/scripts/jobs/cron_tasks.inc.http.20.lighttpd.php @@ -457,18 +457,15 @@ class lighttpd extends HttpConfigBase { // check if vhost config template is set and if so, merge it if ($domain['vhostsettingid'] != 0) { - $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " - WHERE `webserver` = 'lighttpd' AND `id` = :id LIMIT 1;"); + $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " WHERE `id` = :id LIMIT 1;"); $vhostconfig = Database::pexecute_first($vhostsettings_stmt, array('id' => $domain['vhostsettingid'])); - if (is_array($vhostconfig)) { - $vhost_content .= $this->processSpecialConfigTemplate( - $vhostconfig['vhostsettings'], - $domain, - $domain['ip'], - $domain['port'], - $ssl_vhost) . "\n"; - } + $vhost_content .= $this->processSpecialConfigTemplate( + $vhostconfig['vhostsettings'], + $domain, + $domain['ip'], + $domain['port'], + $ssl_vhost) . "\n"; } if ($domain['specialsettings'] != "") { @@ -534,7 +531,7 @@ class lighttpd extends HttpConfigBase { if ($domain['ssl_ca_file'] != '') { $ssl_settings.= 'ssl.ca-file = "' . makeCorrectFile($domain['ssl_ca_file']) . '"' . "\n"; } - + if ($domain['hsts'] > 0) { $vhost_content .= '$HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=' . $domain['hsts']; diff --git a/scripts/jobs/cron_tasks.inc.http.30.nginx.php b/scripts/jobs/cron_tasks.inc.http.30.nginx.php index fbfaac8a..2f5a39f3 100644 --- a/scripts/jobs/cron_tasks.inc.http.30.nginx.php +++ b/scripts/jobs/cron_tasks.inc.http.30.nginx.php @@ -207,11 +207,11 @@ class nginx extends HttpConfigBase { $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;\n"; $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_param PATH_INFO \$fastcgi_path_info;\n"; $this->nginx_data[$vhost_filename] .= "\t\ttry_files \$fastcgi_script_name =404;\n"; - + if ($row_ipsandports['ssl'] == '1') { $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_param HTTPS on;\n"; } - + if ((int)Settings::Get('phpfpm.enabled') == 1 && (int)Settings::Get('phpfpm.enabled_ownvhost') == 1) { $domain = array( 'id' => 'none', @@ -225,16 +225,16 @@ class nginx extends HttpConfigBase { 'loginname' => 'froxlor.panel', 'documentroot' => $mypath, ); - + $php = new phpinterface($domain); $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_pass unix:".$php->getInterface()->getSocketFile().";\n"; } else { $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_pass ".Settings::Get('system.nginx_php_backend').";\n"; } - + $this->nginx_data[$vhost_filename] .= "\t\tfastcgi_index index.php;\n"; $this->nginx_data[$vhost_filename] .= "\t}\n"; - + $this->nginx_data[$vhost_filename] .= "}\n\n"; // End of Froxlor server{}-part } @@ -446,23 +446,20 @@ class nginx extends HttpConfigBase { // check if vhost config template is set and if so, merge it if ($domain['vhostsettingid'] != 0) { - $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " - WHERE `webserver` = 'nginx' AND `id` = :id LIMIT 1;"); + $vhostsettings_stmt = Database::prepare("SELECT `description`, `vhostsettings` FROM " . TABLE_PANEL_VHOSTCONFIGS . " WHERE `id` = :id LIMIT 1;"); $vhostconfig = Database::pexecute_first($vhostsettings_stmt, array('id' => $domain['vhostsettingid'])); - if (is_array($vhostconfig)) { - // replace {SOCKET} var with unix socket - $php = new phpinterface($domain); - $vhostconfig['vhostsettings'] = str_replace("{SOCKET}", $php->getInterface()->getSocketFile(), $vhostconfig['vhostsettings']); + // replace {SOCKET} var with unix socket + $php = new phpinterface($domain); + $vhostconfig['vhostsettings'] = str_replace("{SOCKET}", $php->getInterface()->getSocketFile(), $vhostconfig['vhostsettings']); - $vhost_content = $this->mergeVhostCustom($vhost_content, $this->processSpecialConfigTemplate( - $vhostconfig['vhostsettings'], - $domain, - $domain['ip'], - $domain['port'], - $ssl_vhost - )); - } + $vhost_content = $this->mergeVhostCustom($vhost_content, $this->processSpecialConfigTemplate( + $vhostconfig['vhostsettings'], + $domain, + $domain['ip'], + $domain['port'], + $ssl_vhost + )); } if ($domain['specialsettings'] != "") { @@ -583,7 +580,7 @@ class nginx extends HttpConfigBase { } if ($domain_or_ip['ssl_cert_file'] != '') { - + // check for existence, #1485 if (!file_exists($domain_or_ip['ssl_cert_file'])) { $this->logger->logAction(CRON_ACTION, LOG_ERR, $domain_or_ip['domain'] . ' :: certificate file "'.$domain_or_ip['ssl_cert_file'].'" does not exist! Cannot create ssl-directives'); @@ -596,7 +593,7 @@ class nginx extends HttpConfigBase { $sslsettings .= "\t" . 'ssl_ecdh_curve secp384r1;' . "\n"; $sslsettings .= "\t" . 'ssl_prefer_server_ciphers on;' . "\n"; $sslsettings .= "\t" . 'ssl_certificate ' . makeCorrectFile($domain_or_ip['ssl_cert_file']) . ';' . "\n"; - + if ($domain_or_ip['ssl_key_file'] != '') { // check for existence, #1485 if (!file_exists($domain_or_ip['ssl_key_file'])) { @@ -606,7 +603,7 @@ class nginx extends HttpConfigBase { $sslsettings .= "\t" . 'ssl_certificate_key ' .makeCorrectFile($domain_or_ip['ssl_key_file']) . ';' . "\n"; } } - + if ($domain_or_ip['ssl_ca_file'] != '') { // check for existence, #1485 if (!file_exists($domain_or_ip['ssl_ca_file'])) { @@ -616,7 +613,7 @@ class nginx extends HttpConfigBase { $sslsettings.= "\t" . 'ssl_client_certificate ' . makeCorrectFile($domain_or_ip['ssl_ca_file']) . ';' . "\n"; } } - + if (isset($domain_or_ip['hsts']) && $domain_or_ip['hsts'] > 0) { $vhost_content .= 'add_header Strict-Transport-Security "max-age=' . $domain_or_ip['hsts']; @@ -856,11 +853,11 @@ class nginx extends HttpConfigBase { $phpopts .= "\t\tfastcgi_param HTTPS on;\n"; } $phpopts .= "\t}\n\n"; - + } return $phpopts; } - + protected function getWebroot($domain, $ssl) { $webroot_text = ''; diff --git a/templates/Sparkle/admin/vhostconfig/overview.tpl b/templates/Sparkle/admin/vhostconfig/overview.tpl index aaac9f05..4c3066cc 100644 --- a/templates/Sparkle/admin/vhostconfig/overview.tpl +++ b/templates/Sparkle/admin/vhostconfig/overview.tpl @@ -19,9 +19,8 @@ $header {$lng['admin']['phpsettings']['description']} {$lng['admin']['phpsettings']['activedomains']} - {$lng['admin']['webserver']} {$lng['panel']['options']} - + $tablecontent diff --git a/templates/Sparkle/admin/vhostconfig/overview_overview.tpl b/templates/Sparkle/admin/vhostconfig/overview_overview.tpl index b00b89af..b65545bf 100644 --- a/templates/Sparkle/admin/vhostconfig/overview_overview.tpl +++ b/templates/Sparkle/admin/vhostconfig/overview_overview.tpl @@ -1,7 +1,6 @@ {$row['description']} {$domains} - {$webserver} {$lng['panel']['edit']}