Skip to content

Commit 504ba30

Browse files
author
Till Brehm
committed
Merge branch 'updater-interactive-service-config' into 'stable-3.1'
Updater interactive service config -> Fixes and improvements This will fix the missing web config if ISPC Panel is to be updated on this host. It simply overrides the $conf['services']['web'] at config decisions. There is still one tiny bug left over: When selection yes to configure a newly detected service the field in database is not switched. Can you, @tbrehm guide me to where I have to search for this or is this simply not possible? But IIRC the updater enabled installed services before... It's not that hard to add a qquery to enable it but if there already si a mechanism I would love to reuse / fix it. fixes ispconfig/ispconfig3#4177 See merge request !438
2 parents 63e4afa + 80b6127 commit 504ba30

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

install/lib/installer_base.lib.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public function find_installed_apps() {
185185
$conf['vlogger']['installed'] = true;
186186
if(is_installed('cron') || is_installed('anacron')) $conf['cron']['installed'] = true;
187187

188-
if ($conf['services']['web'] && (($conf['apache']['installed'] && is_file($conf['apache']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")) || ($conf['nginx']['installed'] && is_file($conf['nginx']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")))) $this->ispconfig_interface_installed = true;
188+
if (($conf['apache']['installed'] && is_file($conf['apache']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")) || ($conf['nginx']['installed'] && is_file($conf['nginx']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost"))) $this->ispconfig_interface_installed = true;
189189
}
190190

191191
public function force_configure_app($service, $enable_force=true) {
@@ -2332,9 +2332,9 @@ public function install_ispconfig() {
23322332
$vserver_server_enabled = ($conf['openvz']['installed'])?1:0;
23332333
$proxy_server_enabled = ($conf['services']['proxy'])?1:0;
23342334
$firewall_server_enabled = ($conf['services']['firewall'])?1:0;
2335-
$xmpp_server_enabled = ($conf['services']['xmpp'])?1:0;
2335+
$xmpp_server_enabled = ($conf['services']['xmpp'])?1:0;
23362336

2337-
$sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled', proxy_server = '$proxy_server_enabled', firewall_server = '$firewall_server_enabled', xmpp_server = '.$xmpp_server_enabled.' WHERE server_id = ?";
2337+
$sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled', proxy_server = '$proxy_server_enabled', firewall_server = '$firewall_server_enabled', xmpp_server = '$xmpp_server_enabled' WHERE server_id = ?";
23382338

23392339
$this->db->query($sql, $conf['server_id']);
23402340
if($conf['mysql']['master_slave_setup'] == 'y') {

install/lib/update.lib.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,10 +429,17 @@ function check_service_config_state($servicename, $detected_value) {
429429

430430
if ($current_svc_config[$servicename] == 1) $current_state = 1;
431431
else $current_state = 0;
432+
433+
if ($detected_value) $detected_value = 1;
434+
else $detected_value = 0;
432435

433436
if ($detected_value != $current_state) {
434-
if ($inst->simple_query('Service \''.$servicename.'\' '.($detected_value ? 'has been' : 'has not been').' detected ('.($current_state ? 'strongly recommended, currently enabled' : 'currently disabled').') do you want to '.($detected_value ? 'enable and configure' : 'disable').' it? ', array('yes', 'no'), ($current_state ? 'yes' : 'no'), 'svc_detect_change_'.$servicename) == 'yes') return $detected_value;
435-
else return $current_state;
437+
$answer = $inst->simple_query('Service \''.$servicename.'\' '.($detected_value ? 'has been' : 'has not been').' detected ('.($current_state ? 'strongly recommended, currently enabled' : 'currently disabled').') do you want to '.($detected_value ? 'enable and configure' : 'disable').' it? ', array('yes', 'no'), ($current_state ? 'yes' : 'no'), 'svc_detect_change_'.$servicename);
438+
if ($answer == 'yes') return $detected_value;
439+
else {
440+
if ($servicename == 'web_server') echo "\033[0;33mWARNING: If ISPConfig-Interface (Webfrontend) is installed on this Server we will configure the Web Server anyways but will not enable it in ISPConfig.\033[0m\n\n";
441+
return $current_state;
442+
}
436443
} else return $current_state;
437444
}
438445

install/update.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@
307307
//** Check for current service config state and compare to our results
308308
if ($conf['mysql']['master_slave_setup'] == 'y') $current_svc_config = $inst->dbmaster->queryOneRecord("SELECT mail_server,web_server,dns_server,xmpp_server,firewall_server,vserver_server,db_server FROM ?? WHERE server_id=?", $conf['mysql']['master_database'] . '.server', $conf['server_id']);
309309
else $current_svc_config = $inst->db->queryOneRecord("SELECT mail_server,web_server,dns_server,xmpp_server,firewall_server,vserver_server,db_server FROM ?? WHERE server_id=?", $conf["mysql"]["database"] . '.server', $conf['server_id']);
310-
$conf['postfix']['installed'] = check_service_config_state('mail_server', $conf['postfix']['installed']);
310+
$conf['services']['mail'] = check_service_config_state('mail_server', $conf['postfix']['installed']);
311311
$conf['services']['dns'] = check_service_config_state('dns_server', ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed']));
312312
$conf['services']['web'] = check_service_config_state('web_server', ($conf['apache']['installed'] || $conf['nginx']['installed']));
313313
$conf['services']['xmpp'] = check_service_config_state('xmpp_server', $conf['xmpp']['installed']);
@@ -316,6 +316,20 @@
316316
$conf['services']['db'] = check_service_config_state('db_server', true); /* Will always offer as MySQL is of course installed on this host as it's a requirement for ISPC to work... */
317317
unset($current_svc_config);
318318

319+
//** Write new decisions into DB
320+
$sql = "UPDATE ?? SET mail_server = '{$conf['services']['mail']}', web_server = '{$conf['services']['web']}', dns_server = '{$conf['services']['dns']}', file_server = '{$conf['services']['file']}', db_server = '{$conf['services']['db']}', vserver_server = '{$conf['services']['vserver']}', proxy_server = '{$conf['services']['proxy']}', firewall_server = '$firewall_server_enabled', xmpp_server = '$xmpp_server_enabled' WHERE server_id = ?";
321+
$inst->db->query($sql, $conf['mysql']['database'].'.server', $conf['server_id']);
322+
if($conf['mysql']['master_slave_setup'] == 'y') {
323+
$inst->dbmaster->query($sql, $conf['mysql']['master_database'].'.server', $conf['server_id']);
324+
}
325+
326+
//** Is the ISPConfg Panel installed on this host? This might partially override user's preferences later.
327+
if($conf['apache']['installed'] == true){
328+
if(!is_file($conf['apache']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
329+
}
330+
if($conf['nginx']['installed'] == true){
331+
if(!is_file($conf['nginx']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
332+
}
319333

320334
//** Shall the services be reconfigured during update
321335
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no', 'selected'), 'yes','reconfigure_services');
@@ -391,7 +405,7 @@
391405
}
392406
}
393407

394-
if($conf['services']['web']) {
408+
if($conf['services']['web'] || $inst->install_ispconfig_interface) {
395409

396410
if($conf['pureftpd']['installed'] == true && $inst->reconfigure_app('Pureftpd', $reconfigure_services_answer)) {
397411
//** Configure Pureftpd
@@ -462,14 +476,8 @@
462476

463477
//** Configure ISPConfig
464478
swriteln('Updating ISPConfig');
465-
if($conf['apache']['installed'] == true){
466-
if(!is_file($conf['apache']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
467-
}
468-
if($conf['nginx']['installed'] == true){
469-
if(!is_file($conf['nginx']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
470-
}
471479

472-
if ($conf['services']['web'] && $inst->install_ispconfig_interface) {
480+
if ($inst->install_ispconfig_interface) {
473481
//** Customise the port ISPConfig runs on
474482
$ispconfig_port_number = get_ispconfig_port_number();
475483
if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number;
@@ -517,7 +525,7 @@
517525
if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
518526
if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
519527
}
520-
if($conf['services']['web']) {
528+
if($conf['services']['web'] || $inst->install_ispconfig_interface) {
521529
if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
522530
//* Reload is enough for nginx
523531
if($conf['webserver']['server_type'] == 'nginx'){

0 commit comments

Comments
 (0)