update.php 20.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
<?php

/*
Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of ISPConfig nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*
	ISPConfig 3 updater.
*/

error_reporting(E_ALL|E_STRICT);

37 38
define('INSTALLER_RUN', true);

39
//** The banner on the command line
40
echo "\n\n".str_repeat('-', 80)."\n";
41 42 43 44 45 46 47 48
echo " _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/ ";
49
echo "\n".str_repeat('-', 80)."\n";
50 51 52
echo "\n\n>> Update  \n\n";

//** Include the library with the basic installer functions
53
require_once 'lib/install.lib.php';
54 55

//** Include the library with the basic updater functions
56
require_once 'lib/update.lib.php';
57 58

//** Include the base class of the installer class
59
require_once 'lib/installer_base.lib.php';
60 61 62 63 64 65 66 67 68

//** Ensure that current working directory is install directory
$cur_dir = getcwd();
if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n");

//** Install logfile
define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));

69 70 71
//** Include the templating lib
require_once 'lib/classes/tpl.inc.php';

72 73 74 75 76 77 78 79
//** Check for ISPConfig 2.x versions
if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) {
	die('This software cannot be installed on a server wich runs ISPConfig 2.x.');
}

//** Get distribution identifier
$dist = get_distname();

80
include_once "/usr/local/ispconfig/server/lib/config.inc.php";
81 82 83 84 85
$conf_old = $conf;
unset($conf);

if($dist['id'] == '') die('Linux distribution or version not recognized.');

86 87 88 89
//** Include the autoinstaller configuration (for non-interactive setups)
error_reporting(E_ALL ^ E_NOTICE);
if(is_file('autoinstall.conf.php')) include_once 'autoinstall.conf.php';

90
//** Include the distribution-specific installer class library and configuration
91 92 93
if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php';
include_once 'dist/lib/'.$dist['id'].'.lib.php';
include_once 'dist/conf/'.$dist['id'].'.conf.php';
94 95 96 97 98 99 100 101 102 103 104 105 106

//** Get hostname
exec('hostname -f', $tmp_out);
$conf['hostname'] = $tmp_out[0];
unset($tmp_out);

//** Set the mysql login information
$conf["mysql"]["host"] = $conf_old["db_host"];
$conf["mysql"]["database"] = $conf_old["db_database"];
$conf['mysql']['charset'] = 'utf8';
$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
$conf['language'] = $conf_old['language'];
107
$conf['theme'] = $conf_old['theme'];
108
if($conf['language'] == '{language}') $conf['language'] = 'en';
109
$conf['timezone'] = (isset($conf_old['timezone']))?$conf_old['timezone']:'UTC';
110
if($conf['timezone'] == '{timezone}' or trim($conf['timezone']) == '') $conf['timezone'] = 'UTC';
111
$conf['language_file_import_enabled'] = (isset($conf_old['language_file_import_enabled']))?$conf_old['language_file_import_enabled']:true;
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];

//* Check if this is a master / slave setup
if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) {
	$conf['mysql']['master_slave_setup'] = 'y';
}

// Resolve the IP address of the mysql hostname.
if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']);

$conf['server_id'] = intval($conf_old["server_id"]);
$conf['ispconfig_log_priority'] = $conf_old["log_priority"];

$inst = new installer();
$inst->is_update = true;

//** Detect the installed applications
$inst->find_installed_apps();

135 136 137
echo "This application will update ISPConfig 3 on your server.\n\n";

//* Make a backup before we start the update
138 139 140 141 142 143 144
if($autoupdate['do_backup'] == 'default') $autoupdate['do_backup'] = 'yes';
if($autoupdate['do_backup'] == 'yes' || $autoupdate['do_backup'] == 'no'){
	$do_backup = $autoupdate['do_backup'];
} else {
	$do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes');
}

145
if($do_backup == 'yes') {
146

147
	//* Create the backup directory
148
	$backup_path = '/var/backup/ispconfig_'.@date('Y-m-d_H-i');
149 150 151 152
	$conf['backup_path'] = $backup_path;
	exec("mkdir -p $backup_path");
	exec("chown root:root $backup_path");
	exec("chmod 700 $backup_path");
153

154 155
	//* Do the backup
	swriteln('Creating backup of "/usr/local/ispconfig" directory...');
156
	exec("tar pcfz $backup_path/ispconfig_software.tar.gz /usr/local/ispconfig 2> /dev/null", $out, $returnvar);
157
	if($returnvar != 0) die("Backup failed. We stop here...\n");
158

159
	swriteln('Creating backup of "/etc" directory...');
160
	exec("tar pcfz $backup_path/etc.tar.gz /etc 2> /dev/null", $out, $returnvar);
161
	if($returnvar != 0) die("Backup failed. We stop here...\n");
162

163 164 165 166
	exec("chown root:root $backup_path/*.tar.gz");
	exec("chmod 700 $backup_path/*.tar.gz");
}

167 168

//** Initialize the MySQL server connection
169
include_once 'lib/mysql.lib.php';
170 171 172 173 174 175

//** Database update is a bit brute force and should be rebuild later ;)

/*
 * Try to read the DB-admin settings
 */
176 177 178 179
$clientdb_host   = '';
$clientdb_user   = '';
$clientdb_password  = '';
include_once "/usr/local/ispconfig/server/lib/mysql_clientdb.conf";
180 181
$conf["mysql"]["admin_user"] = $clientdb_user;
$conf["mysql"]["admin_password"] = $clientdb_password;
182 183 184
$clientdb_host   = '';
$clientdb_user   = '';
$clientdb_password  = '';
185

186 187 188
//** Test mysql root connection
$finished = false;
do {
189
	if(@mysql_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
190 191 192
		$finished = true;
	} else {
		swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
193
		$conf["mysql"]["admin_password"] = (isset($autoupdate['mysql_root_password'])? $autoupdate['mysql_root_password'] : $inst->free_query('MySQL root password', $conf['mysql']['admin_password']));
194 195 196
	}
} while ($finished == false);
unset($finished);
197 198

/*
199
 *  Prepare the dump of the database
200 201 202 203 204 205 206 207
 */
prepareDBDump();

//* initialize the database
$inst->db = new db();

//* initialize the master DB, if we have a multiserver setup
if($conf['mysql']['master_slave_setup'] == 'y') {
208 209 210
	//** Get MySQL root credentials
	$finished = false;
	do {
211 212 213 214 215 216
		if($autoupdate['mysql_master_database'] == 'default') $autoupdate['mysql_master_database'] = $conf['mysql']['master_database'];
		
		$tmp_mysql_server_host = ($autoupdate['mysql_master_hostname'] != ''? $autoupdate['mysql_master_hostname'] : $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']));
		$tmp_mysql_server_admin_user = ($autoupdate['mysql_master_root_user'] != ''? $autoupdate['mysql_master_root_user'] : $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']));
		$tmp_mysql_server_admin_password = (isset($autoupdate['mysql_master_root_password'])? $autoupdate['mysql_master_root_password'] : $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']));
		$tmp_mysql_server_database = ($autoupdate['mysql_master_database'] != ''? $autoupdate['mysql_master_database'] : $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']));
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237

		//* Initialize the MySQL server connection
		if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
			$conf['mysql']['master_host'] = $tmp_mysql_server_host;
			$conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
			$conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
			$conf['mysql']['master_database'] = $tmp_mysql_server_database;
			$finished = true;
		} else {
			swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
		}
	} while ($finished == false);
	unset($finished);

	// initialize the connection to the master database
	$inst->dbmaster = new db();
	if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
	$inst->dbmaster->dbHost = $conf['mysql']["master_host"];
	$inst->dbmaster->dbName = $conf['mysql']["master_database"];
	$inst->dbmaster->dbUser = $conf['mysql']["master_admin_user"];
	$inst->dbmaster->dbPass = $conf['mysql']["master_admin_password"];
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
} else {
	$inst->dbmaster = $inst->db;
}

/*
 *  Check all tables
*/
checkDbHealth();

/*
 *  dump the new Database and reconfigure the server.ini
 */
updateDbAndIni();

/*
 * Reconfigure the permisson if needed
 * (if this is done at client side, only this client is updated.
 * If this is done at server side, all clients are updated.
 */
//if($conf_old['dbmaster_user'] != '' or $conf_old['dbmaster_host'] != '') {
258
//** Update master database rights
259 260 261 262 263 264
if($autoupdate['reconfigure_permissions_in_master_database'] == 'default') $autoupdate['reconfigure_permissions_in_master_database'] = 'no';
if($autoupdate['reconfigure_permissions_in_master_database'] == 'no' || $autoupdate['reconfigure_permissions_in_master_database'] == 'yes'){
	$reconfigure_master_database_rights_answer = $autoupdate['reconfigure_permissions_in_master_database'];
} else {
	$reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no');
}
265

266 267 268
if($reconfigure_master_database_rights_answer == 'yes') {
	$inst->grant_master_database_rights();
}
269 270 271
//}

//** Shall the services be reconfigured during update
272 273 274 275 276 277
if($autoupdate['reconfigure_services'] == 'default') $autoupdate['reconfigure_services'] = 'yes';
if($autoupdate['reconfigure_services'] == 'yes' || $autoupdate['reconfigure_services'] == 'no'){
	$reconfigure_services_answer = $autoupdate['reconfigure_services'];
} else {
	$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes');
}
278 279

if($reconfigure_services_answer == 'yes') {
280

281 282 283 284
	if($conf['services']['mail']) {
		//** Configure postfix
		swriteln('Configuring Postfix');
		$inst->configure_postfix('dont-create-certs');
285

286
		//** Configure mailman
287 288 289 290
		if($conf['mailman']['installed'] == true) {
			swriteln('Configuring Mailman');
			$inst->configure_mailman('update');
		}
291

292 293 294 295 296 297 298 299 300 301 302 303
		//* 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();
304

305 306 307
			//** Configure PAM
			swriteln('Configuring PAM');
			$inst->configure_pam();
308

309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
			//* Configure courier
			swriteln('Configuring Courier');
			$inst->configure_courier();
		}

		//** Configure Spamasassin
		swriteln('Configuring Spamassassin');
		$inst->configure_spamassassin();

		//** Configure Amavis
		swriteln('Configuring Amavisd');
		$inst->configure_amavis();

		//** Configure Getmail
		swriteln('Configuring Getmail');
		$inst->configure_getmail();
	}
326

327 328 329 330 331
	if($conf['services']['web'] && $conf['pureftpd']['installed'] == true) {
		//** Configure Pureftpd
		swriteln('Configuring Pureftpd');
		$inst->configure_pureftpd();
	}
332

333 334 335 336 337 338 339 340 341 342 343 344 345
	if($conf['services']['dns']) {
		//* Configure DNS
		if($conf['powerdns']['installed'] == true) {
			swriteln('Configuring PowerDNS');
			$inst->configure_powerdns();
		} elseif($conf['bind']['installed'] == true) {
			swriteln('Configuring BIND');
			$inst->configure_bind();
		} else {
			swriteln('Configuring MyDNS');
			$inst->configure_mydns();
		}
	}
346

347
	if($conf['services']['web']) {
348 349 350 351
		if($conf['webserver']['server_type'] == 'apache'){
			//** Configure Apache
			swriteln('Configuring Apache');
			$inst->configure_apache();
352

353 354 355 356 357 358 359 360
			//** Configure vlogger
			swriteln('Configuring vlogger');
			$inst->configure_vlogger();
		} else {
			//** Configure nginx
			swriteln('Configuring nginx');
			$inst->configure_nginx();
		}
361

362 363 364 365 366 367 368 369 370 371
		//** Configure apps vhost
		swriteln('Configuring Apps vhost');
		$inst->configure_apps_vhost();
	}


	//* Configure DBServer
	swriteln('Configuring Database');
	$inst->configure_dbserver();

372

373
	if($conf['services']['firewall']) {
374
		if($conf['bastille']['installed'] == true) {
375 376
			//* Configure Bastille Firewall
			swriteln('Configuring Bastille Firewall');
377
			$inst->configure_firewall();
378 379
		}
	}
380

381
	/*
382 383 384 385 386 387 388
	if($conf['squid']['installed'] == true) {
		swriteln('Configuring Squid');
		$inst->configure_squid();
	} else if($conf['nginx']['installed'] == true) {
		swriteln('Configuring Nginx');
		$inst->configure_nginx();
	}
389
	*/
390 391 392 393
}

//** Configure ISPConfig
swriteln('Updating ISPConfig');
394 395 396 397 398 399
if($conf['apache']['installed'] == true){
	if(!is_file($conf['apache']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
}
if($conf['nginx']['installed'] == true){
	if(!is_file($conf['nginx']['vhost_conf_dir'].'/ispconfig.vhost')) $inst->install_ispconfig_interface = false;
}
400

401
if ($conf['services']['web'] && $inst->install_ispconfig_interface) {
402 403
	//** Customise the port ISPConfig runs on
	$ispconfig_port_number = get_ispconfig_port_number();
404
	if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number;
405
	if($conf['webserver']['server_type'] == 'nginx'){
406
		$conf['nginx']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number));
407
	} else {
408
		$conf['apache']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number));
409
	}
410 411


412
	// $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n';
413 414 415 416 417 418 419 420
	$tmp_create_new_ispconfig_ssl_cert = 'no';
	if($autoupdate['create_new_ispconfig_ssl_cert'] == 'default') $autoupdate['create_new_ispconfig_ssl_cert'] = 'no';
	if($autoupdate['create_new_ispconfig_ssl_cert'] == 'no' || $autoupdate['create_new_ispconfig_ssl_cert'] == 'yes'){
		$tmp_create_new_ispconfig_ssl_cert = $autoupdate['create_new_ispconfig_ssl_cert'];
	} else {
		$tmp_create_new_ispconfig_ssl_cert = strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no'));
	}
	if($tmp_create_new_ispconfig_ssl_cert == 'yes') {
421 422 423 424 425 426 427
		$inst->make_ispconfig_ssl_cert();
	}
}

$inst->install_ispconfig();

//** Configure Crontab
428 429 430 431 432 433 434
if($autoupdate['reconfigure_crontab'] == 'default') $autoupdate['reconfigure_crontab'] = 'yes';
if($autoupdate['reconfigure_crontab'] == 'no' || $autoupdate['reconfigure_crontab'] == 'yes'){
	$update_crontab_answer = $autoupdate['reconfigure_crontab'];
} else {
	$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes');
}

435 436 437 438 439 440 441 442
if($update_crontab_answer == 'yes') {
	swriteln('Updating Crontab');
	$inst->install_crontab();
}

//** Restart services:
if($reconfigure_services_answer == 'yes') {
	swriteln('Restarting services ...');
443
	if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart'));
444
	if($conf['services']['mail']) {
445 446 447 448 449 450 451 452 453 454 455 456 457
		if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart'));
		if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart'));
		if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart'));
		if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart'));
		if($conf['courier']['installed'] == true){
			if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart'));
			if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart'));
			if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart'));
			if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart'));
			if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart'));
		}
		if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart'));
		if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &');
458 459
	}
	if($conf['services']['web']) {
460
		if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
461 462
		//* Reload is enough for nginx
		if($conf['webserver']['server_type'] == 'nginx'){
463 464
			if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload'));
			if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload'));
465
		}
466
		if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
467 468
	}
	if($conf['services']['dns']) {
469 470 471
		if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null');
		if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null');
		if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null');
472
	}
473

474
	if($conf['services']['proxy']) {
475
		// if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['squid']['init_script']))     system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
476
		if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null');
477
	}
478

479
	if($conf['services']['firewall']) {
480
		//if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['ufw']['init_script']))     system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
481 482 483 484 485 486
	}
}

echo "Update finished.\n";

?>