From 088eef97289c0066b1901d136b10c4434b4d6647 Mon Sep 17 00:00:00 2001 From: Johannes Feichtner Date: Sat, 27 Feb 2016 20:18:16 +0100 Subject: [PATCH] Vhost templates: Added a field to select the target webserver --- admin_domains.php | 7 +- admin_vhostsettings.php | 155 ++++++++---------- install/froxlor.sql | 3 +- .../updates/froxlor/0.9/update_0.9.inc.php | 12 ++ .../vhostconfig/formfield.vhostconfig_add.php | 5 + .../formfield.vhostconfig_edit.php | 5 + lib/version.inc.php | 2 +- .../Sparkle/admin/vhostconfig/overview.tpl | 3 +- .../admin/vhostconfig/overview_overview.tpl | 1 + 9 files changed, 97 insertions(+), 96 deletions(-) diff --git a/admin_domains.php b/admin_domains.php index 43ba8661..4aafd2ac 100644 --- a/admin_domains.php +++ b/admin_domains.php @@ -1012,7 +1012,8 @@ if ($page == 'domains' // vhost configs $vhostconfigs = ''; - $configsvhost = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` ORDER BY description ASC"); + $configsvhost = Database::prepare("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `webserver` = :webserver ORDER BY description ASC"); + Database::pexecute($configsvhost, array('webserver' => Settings::Get('system.webserver'))); $vhostconfigs.= makeoption($lng['admin']['vhostsettings']['novhostsettings'], 0); while ($row = $configsvhost->fetch(PDO::FETCH_ASSOC)) { @@ -1997,7 +1998,9 @@ if ($page == 'domains' // vhost configs $vhostconfigs = ''; - $vhostconfigs_result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` ORDER BY description ASC"); + $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 .= 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 329c1ab1..5c223aa4 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,90 +76,72 @@ if ($page == 'overview') { $domains = $lng['admin']['phpsettings']['notused']; } - // 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'].''; - } + $webserver = str_replace(array_keys($supported_webservers), array_values($supported_webservers), $row['webserver']); $count++; eval("\$tablecontent.=\"" . getTemplate("vhostconfig/overview_overview") . "\";"); } eval("echo \"" . getTemplate("vhostconfig/overview") . "\";"); - } - if ($action == 'add') { + } else if ($action == 'add') { - 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]*$/'); - - 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") . "\";"); - } - - } else { + if ((int)$userinfo['change_serversettings'] != 1) { standard_error('nopermissionsorinvalidid'); } - } - if ($action == 'delete') { + 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) { + standard_error('descriptioninvalid'); + } + + $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") . "\";"); + } + } else 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' - ) { - $del_stmt = Database::prepare(" - DELETE FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `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)); + + $del_stmt = Database::prepare("DELETE FROM `" . TABLE_PANEL_VHOSTCONFIGS . "` WHERE `id` = :id"); Database::pexecute($del_stmt, array('id' => $id)); inserttask('1'); @@ -172,43 +154,31 @@ if ($page == 'overview') { } else { standard_error('nopermissionsorinvalidid'); } - } - - if ($action == 'edit') { + } else 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` = :desc, - `vhostsettings` = :vhostsettings + `description` = :description, + `vhostsettings` = :vhostsettings, + `webserver` = :webserver WHERE `id` = :id" ); - $upd_data = array( - 'desc' => $description, - 'vhostsettings' => $vhostsettings, - 'id' => $id - ); + $upd_data = array('description' => $description, 'vhostsettings' => $vhostsettings, 'webserver' => $webserver, 'id' => $id); Database::pexecute($upd_stmt, $upd_data); inserttask('1'); @@ -216,6 +186,10 @@ 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); @@ -225,7 +199,6 @@ if ($page == 'overview') { eval("echo \"" . getTemplate("vhostconfig/overview_edit") . "\";"); } - } else { standard_error('nopermissionsorinvalidid'); } diff --git a/install/froxlor.sql b/install/froxlor.sql index 5346e4b9..09151f96 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -556,7 +556,7 @@ INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'password_numeric', '0'), ('panel', 'password_special_char_required', '0'), ('panel', 'password_special_char', '!?<>ยง$%+#=@'), - ('panel', 'version', '0.9.35-dev6'); + ('panel', 'version', '0.9.35-dev7'); DROP TABLE IF EXISTS `panel_tasks`; @@ -858,5 +858,6 @@ 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/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 5d889eea..3b9a9d60 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -3124,3 +3124,15 @@ if (isFroxlorVersion('0.9.35-dev5')) { updateToVersion('0.9.35-dev6'); } + +if (isFroxlorVersion('0.9.35-dev6')) { + + showUpdateStep("Updating from 0.9.35-dev6 to 0.9.35-dev7", false); + + showUpdateStep("Adding a new field to the panel_vhostconfigs table"); + $webserver = Settings::Get('system.webserver'); + Database::query("ALTER TABLE `" . TABLE_PANEL_VHOSTCONFIGS ."` ADD `webserver` VARCHAR(255) NOT NULL DEFAULT '" . $webserver . "' AFTER `vhostsettings`;"); + lastStepStatus(0); + + updateToVersion('0.9.35-dev7'); +} diff --git a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php index 7e9139ae..25c20b96 100644 --- a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php +++ b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_add.php @@ -29,6 +29,11 @@ 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 d780ab6d..dd178b8b 100644 --- a/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php +++ b/lib/formfields/admin/vhostconfig/formfield.vhostconfig_edit.php @@ -30,6 +30,11 @@ 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/lib/version.inc.php b/lib/version.inc.php index d0e952d8..ccc89711 100644 --- a/lib/version.inc.php +++ b/lib/version.inc.php @@ -16,7 +16,7 @@ */ // Main version variable -$version = '0.9.35-dev6'; +$version = '0.9.35-dev7'; // Database version (unused, old stuff from SysCP) $dbversion = '2'; diff --git a/templates/Sparkle/admin/vhostconfig/overview.tpl b/templates/Sparkle/admin/vhostconfig/overview.tpl index 4c3066cc..aaac9f05 100644 --- a/templates/Sparkle/admin/vhostconfig/overview.tpl +++ b/templates/Sparkle/admin/vhostconfig/overview.tpl @@ -19,8 +19,9 @@ $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 b65545bf..b00b89af 100644 --- a/templates/Sparkle/admin/vhostconfig/overview_overview.tpl +++ b/templates/Sparkle/admin/vhostconfig/overview_overview.tpl @@ -1,6 +1,7 @@ {$row['description']} {$domains} + {$webserver} {$lng['panel']['edit']}