From 4569cae57f127afd093794310ccd290d2d9fdf36 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 20 Apr 2016 10:58:46 -0400
Subject: [PATCH] Merge branch 'stable-3.1'

---
 install/update.php |  168 ++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 97 insertions(+), 71 deletions(-)

diff --git a/install/update.php b/install/update.php
index 1fec2cc..8f818df 100644
--- a/install/update.php
+++ b/install/update.php
@@ -120,6 +120,10 @@
 		include_once $cmd_opt['autoinstall'];
 	} elseif($path_parts['extension'] == 'ini') {
 		$tmp = ini_to_array(file_get_contents('autoinstall.ini'));
+		if(!is_array($tmp['install'])) $tmp['install'] = array();
+		if(!is_array($tmp['ssl_cert'])) $tmp['ssl_cert'] = array();
+		if(!is_array($tmp['expert'])) $tmp['expert'] = array();
+		if(!is_array($tmp['update'])) $tmp['update'] = array();
 		$autoinstall = $tmp['install'] + $tmp['ssl_cert'] + $tmp['expert'] + $tmp['update'];
 		unset($tmp);
 	}
@@ -170,10 +174,8 @@
 $conf['ispconfig_log_priority'] = $conf_old["log_priority"];
 
 $inst = new installer();
+if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n");
 $inst->is_update = true;
-
-//** Detect the installed applications
-$inst->find_installed_apps();
 
 echo "This application will update ISPConfig 3 on your server.\n\n";
 
@@ -224,10 +226,10 @@
 //** Test mysql root connection
 $finished = false;
 do {
-	if(@mysql_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
+	if(@mysqli_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
 		$finished = true;
 	} else {
-		swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
+		swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
 		$conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password'],'mysql_root_password');
 	}
 } while ($finished == false);
@@ -253,7 +255,7 @@
 		$tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database');
 
 		//* Initialize the MySQL server connection
-		if(@mysql_connect($tmp_mysql_server_host . ':' . (int)$tmp_mysql_server_port, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
+		if(@mysqli_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password, $tmp_mysql_server_database, (int)$tmp_mysql_server_port)) {
 			$conf['mysql']['master_host'] = $tmp_mysql_server_host;
 			$conf['mysql']['master_port'] = $tmp_mysql_server_port;
 			$conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
@@ -261,7 +263,7 @@
 			$conf['mysql']['master_database'] = $tmp_mysql_server_database;
 			$finished = true;
 		} else {
-			swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
+			swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
 		}
 	} while ($finished == false);
 	unset($finished);
@@ -299,66 +301,76 @@
 }
 //}
 
-//** Shall the services be reconfigured during update
-$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes','reconfigure_services');
+//** Detect the installed applications
+$inst->find_installed_apps();
 
-if($reconfigure_services_answer == 'yes') {
+$conf['services']['mail'] = $conf['postfix']['installed'];
+if ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed']) $conf['services']['dns'] = true;
+if ($conf['apache']['installed'] || $conf['nginx']['installed']) $conf['services']['web'] = true;
+$conf['services']['xmpp'] =  $conf['xmpp']['installed'];;
+if ($conf['ufw']['installed'] || $conf['firewall']['installed']) $conf['services']['firewall'] = true;
+$conf['services']['vserver'] = $conf['services']['vserver'];
+$conf['services']['db'] = true;
+
+
+//** Shall the services be reconfigured during update
+$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no', 'selected'), 'yes','reconfigure_services');
+
+if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'selected') {
 
 	if($conf['services']['mail']) {
+
 		//** Configure postfix
-		swriteln('Configuring Postfix');
-		$inst->configure_postfix('dont-create-certs');
+		if($inst->reconfigure_app('Postfix and IMAP/POP3', $reconfigure_services_answer)) {
+			swriteln('Configuring Postfix');
+			$inst->configure_postfix('dont-create-certs');
+
+			if($conf['dovecot']['installed'] == true) {
+				//* Configure dovecot
+				swriteln('Configuring Dovecot');
+				$inst->configure_dovecot();
+			} elseif ($conf['courier']['installed'] == true) {
+				//** Configure saslauthd
+				swriteln('Configuring SASL');
+				$inst->configure_saslauthd();
+
+				//** Configure PAM
+				swriteln('Configuring PAM');
+				$inst->configure_pam();
+
+				//* Configure courier
+				swriteln('Configuring Courier');
+				$inst->configure_courier();
+			}
+
+		}
 
 		//** Configure mailman
-		if($conf['mailman']['installed'] == true) {
+		if($conf['mailman']['installed'] == true && $inst->reconfigure_app('Mailman', $reconfigure_services_answer)) {
 			swriteln('Configuring Mailman');
 			$inst->configure_mailman('update');
 		}
 
-		//* Configure Jailkit
-		swriteln('Configuring Jailkit');
-		$inst->configure_jailkit();
-
-		if($conf['dovecot']['installed'] == true) {
-			//* Configure dovecot
-			swriteln('Configuring Dovecot');
-			$inst->configure_dovecot();
-		} else {
-			//** Configure saslauthd
-			swriteln('Configuring SASL');
-			$inst->configure_saslauthd();
-
-			//** Configure PAM
-			swriteln('Configuring PAM');
-			$inst->configure_pam();
-
-			//* Configure courier
-			swriteln('Configuring Courier');
-			$inst->configure_courier();
+		//** Configure Spamasassin
+		if($inst->reconfigure_app('Spamassassin', $reconfigure_services_answer)) {
+			swriteln('Configuring Spamassassin');
+			$inst->configure_spamassassin();
 		}
 
-		//** Configure Spamasassin
-		swriteln('Configuring Spamassassin');
-		$inst->configure_spamassassin();
-
 		//** Configure Amavis
-		if($conf['amavis']['installed'] == true) {
+		if($conf['amavis']['installed'] == true && $inst->reconfigure_app('Amavisd', $reconfigure_services_answer)) {
 			swriteln('Configuring Amavisd');
 			$inst->configure_amavis();
 		}
 
 		//** Configure Getmail
-		swriteln('Configuring Getmail');
-		$inst->configure_getmail();
+		if ($inst->reconfigure_app('Getmail', $reconfigure_services_answer)) {
+			swriteln('Configuring Getmail');
+			$inst->configure_getmail();
+		}
 	}
 
-	if($conf['services']['web'] && $conf['pureftpd']['installed'] == true) {
-		//** Configure Pureftpd
-		swriteln('Configuring Pureftpd');
-		$inst->configure_pureftpd();
-	}
-
-	if($conf['services']['dns']) {
+	if($conf['services']['dns'] && $inst->reconfigure_app('DNS', $reconfigure_services_answer)) {
 		//* Configure DNS
 		if($conf['powerdns']['installed'] == true) {
 			swriteln('Configuring PowerDNS');
@@ -373,37 +385,47 @@
 	}
 
 	if($conf['services']['web']) {
-		if($conf['webserver']['server_type'] == 'apache'){
-			//** Configure Apache
-			swriteln('Configuring Apache');
-			$inst->configure_apache();
 
-			//** Configure vlogger
-			swriteln('Configuring vlogger');
-			$inst->configure_vlogger();
-		} else {
-			//** Configure nginx
-			swriteln('Configuring nginx');
-			$inst->configure_nginx();
+		if($conf['pureftpd']['installed'] == true && $inst->reconfigure_app('Pureftpd', $reconfigure_services_answer)) {
+			//** Configure Pureftpd
+			swriteln('Configuring Pureftpd');
+			$inst->configure_pureftpd();
 		}
 
-		//** Configure apps vhost
-		swriteln('Configuring Apps vhost');
-		$inst->configure_apps_vhost();
-	}
+		if($inst->reconfigure_app('Web-Server', $reconfigure_services_answer)) {
+			if($conf['webserver']['server_type'] == 'apache'){
+				//** Configure Apache
+				swriteln('Configuring Apache');
+				$inst->configure_apache();
 
-    if($conf['services']['xmpp']) {
+				//** Configure vlogger
+				swriteln('Configuring vlogger');
+				$inst->configure_vlogger();
+			} else {
+				//** Configure nginx
+				swriteln('Configuring nginx');
+				$inst->configure_nginx();
+			}
+
+			//** Configure apps vhost
+			swriteln('Configuring Apps vhost');
+			$inst->configure_apps_vhost();
+			}
+	
+			//* Configure Jailkit
+			if($inst->reconfigure_app('Jailkit', $reconfigure_services_answer)) {
+				swriteln('Configuring Jailkit');
+				$inst->configure_jailkit();
+			}
+
+		}
+
+    if($conf['services']['xmpp'] && $inst->reconfigure_app('XMPP', $reconfigure_services_answer)) {
         //** Configure Metronome XMPP
         $inst->configure_xmpp('dont-create-certs');
     }
 
-
-	//* Configure DBServer
-	swriteln('Configuring Database');
-	$inst->configure_dbserver();
-
-
-	if($conf['services']['firewall']) {
+	if($conf['services']['firewall'] && $inst->reconfigure_app('Firewall', $reconfigure_services_answer)) {
 		if($conf['ufw']['installed'] == true) {
 			//* Configure Ubuntu Firewall
 			$conf['services']['firewall'] = true;
@@ -415,6 +437,10 @@
 			$inst->configure_bastille_firewall();
 		}
 	}
+
+	//* Configure DBServer
+	swriteln('Configuring Database');
+	$inst->configure_dbserver();
 
 	/*
 	if($conf['squid']['installed'] == true) {
@@ -520,7 +546,7 @@
 
 //* Create md5 filelist
 $md5_filename = '/usr/local/ispconfig/security/data/file_checksums_'.date('Y-m-d_h-i').'.md5';
-exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename);
+exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename . ' 2>/dev/null');
 chmod($md5_filename,0700);
 
 echo "Update finished.\n";

--
Gitblit v1.9.1