Vhost templates: Added a field to select the target webserver

This commit is contained in:
Johannes Feichtner
2016-02-27 20:18:16 +01:00
parent 9f85074876
commit 088eef9728
9 changed files with 97 additions and 96 deletions

View File

@@ -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);

View File

@@ -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'] = '<b>'.$row['description'].'</b>';
}
$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');
}

View File

@@ -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;

View File

@@ -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');
}

View File

@@ -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'],

View File

@@ -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'],

View File

@@ -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';

View File

@@ -19,8 +19,9 @@ $header
<tr>
<th>{$lng['admin']['phpsettings']['description']}</th>
<th>{$lng['admin']['phpsettings']['activedomains']}</th>
<th>{$lng['admin']['webserver']}</th>
<th>{$lng['panel']['options']}</th>
</tr>
</tr>
</thead>
<tbody>
$tablecontent

View File

@@ -1,6 +1,7 @@
<tr class="top">
<td><strong>{$row['description']}</strong></td>
<td>{$domains}</td>
<td>{$webserver}</td>
<td>
<a href="{$linker->getLink(array('section' => 'vhostsettings', 'page' => $page, 'action' => 'edit', 'id' => $row['id']))}">
<img src="templates/{$theme}/assets/img/icons/edit.png" alt="{$lng['panel']['edit']}" title="{$lng['panel']['edit']}" />