update.php 25.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
<?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.
Till Brehm's avatar
Till Brehm committed
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
	
	-------------------------------------------------------------------------------------
	- Interactive update
	-------------------------------------------------------------------------------------
	run:
	
	php update.php
	
	-------------------------------------------------------------------------------------
	- Noninteractive (autoupdate) mode
	-------------------------------------------------------------------------------------
	
	The autoupdate mode can read the updater questions from a .ini style file or from
	a php config file. Examples for both file types are in the docs folder. 
	See autoinstall.ini.sample and autoinstall.conf_sample.php.
	
	run:
	
	php update.php --autoinstall=autoinstall.ini
	
	or
	
	php update.php --autoinstall=autoinstall.conf.php
	
57
58
59
60
*/

error_reporting(E_ALL|E_STRICT);

61
62
define('INSTALLER_RUN', true);

63
//** The banner on the command line
64
echo "\n\n".str_repeat('-', 80)."\n";
65
66
67
68
69
70
71
72
echo " _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/ ";
73
echo "\n".str_repeat('-', 80)."\n";
74
75
76
echo "\n\n>> Update  \n\n";

//** Include the library with the basic installer functions
77
require_once 'lib/install.lib.php';
78
79

//** Include the library with the basic updater functions
80
require_once 'lib/update.lib.php';
81
82

//** Include the base class of the installer class
83
require_once 'lib/installer_base.lib.php';
84
85
86
87
88
89
90
91
92

//** 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__).'/../'));

93
94
95
//** Include the templating lib
require_once 'lib/classes/tpl.inc.php';

96
97
98
99
100
//** 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.');
}

101
102
if(!is_installed('patch')) die('The patch command is missing. Install patch command and start installation again.');

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

106
include_once "/usr/local/ispconfig/server/lib/config.inc.php";
107
108
109
110
111
$conf_old = $conf;
unset($conf);

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

112
113
//** Include the autoinstaller configuration (for non-interactive setups)
error_reporting(E_ALL ^ E_NOTICE);
Till Brehm's avatar
Till Brehm committed
114
115
116
117
118
119
120
121
122
123

//** Get commandline options
$cmd_opt = getopt('', array('autoinstall::'));

//** Load autoinstall file
if(isset($cmd_opt['autoinstall']) && is_file($cmd_opt['autoinstall'])) {
	$path_parts = pathinfo($cmd_opt['autoinstall']);
	if($path_parts['extension'] == 'php') {
		include_once $cmd_opt['autoinstall'];
	} elseif($path_parts['extension'] == 'ini') {
124
125
126
127
128
		if(is_file('autoinstall.ini')) {
			$tmp = ini_to_array(file_get_contents('autoinstall.ini'));
		} else {
			$tmp = ini_to_array(file_get_contents($cmd_opt['autoinstall']));
		}
129
130
131
132
		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();
Till Brehm's avatar
Till Brehm committed
133
134
135
136
137
138
139
140
141
		$autoinstall = $tmp['install'] + $tmp['ssl_cert'] + $tmp['expert'] + $tmp['update'];
		unset($tmp);
	}
	unset($path_parts);
	define('AUTOINSTALL', true);
} else {
	$autoinstall = array();
	define('AUTOINSTALL', false);
}
142

143
//** Include the distribution-specific installer class library and configuration
144
145
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';
146
include_once 'dist/conf/'.$dist['confid'].'.conf.php';
147
148
149
150
151
152
153
154
155
156
157
158

//** 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"];
159
160
$conf['mysql']['port'] = $conf_old["db_port"];
if($conf['mysql']['port'] == 0 || $conf['mysql']['port'] == '') $conf['mysql']['port'] = 3306;
161
$conf['language'] = $conf_old['language'];
162
$conf['theme'] = $conf_old['theme'];
163
if($conf['language'] == '{language}') $conf['language'] = 'en';
164
$conf['timezone'] = (isset($conf_old['timezone']))?$conf_old['timezone']:'UTC';
165
if($conf['timezone'] == '{timezone}' or trim($conf['timezone']) == '') $conf['timezone'] = 'UTC';
166
$conf['language_file_import_enabled'] = (isset($conf_old['language_file_import_enabled']))?$conf_old['language_file_import_enabled']:true;
167
168

if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
169
if(isset($conf_old["dbmaster_port"])) $conf["mysql"]["master_port"] = $conf_old["dbmaster_port"];
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
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();
186
if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n");
187
188
$inst->is_update = true;

189
190
191
echo "This application will update ISPConfig 3 on your server.\n\n";

//* Make a backup before we start the update
Till Brehm's avatar
Till Brehm committed
192
$do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes','do_backup');
193

194
if($do_backup == 'yes') {
195

196
	//* Create the backup directory
197
	$backup_path = '/var/backup/ispconfig_'.$conf['hostname'].'_'.@date('Y-m-d_H-i');
198
199
200
201
	$conf['backup_path'] = $backup_path;
	exec("mkdir -p $backup_path");
	exec("chown root:root $backup_path");
	exec("chmod 700 $backup_path");
202

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

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

212
213
214
215
	exec("chown root:root $backup_path/*.tar.gz");
	exec("chmod 700 $backup_path/*.tar.gz");
}

216
217

//** Initialize the MySQL server connection
218
include_once 'lib/mysql.lib.php';
219
220
221
222
223
224

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

/*
 * Try to read the DB-admin settings
 */
225
226
227
228
$clientdb_host   = '';
$clientdb_user   = '';
$clientdb_password  = '';
include_once "/usr/local/ispconfig/server/lib/mysql_clientdb.conf";
229
230
$conf["mysql"]["admin_user"] = $clientdb_user;
$conf["mysql"]["admin_password"] = $clientdb_password;
231
232
233
$clientdb_host   = '';
$clientdb_user   = '';
$clientdb_password  = '';
234

235
236
237
//** Test mysql root connection
$finished = false;
do {
238
	if(@mysqli_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
239
240
		$finished = true;
	} else {
241
		swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
Till Brehm's avatar
Till Brehm committed
242
		$conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password'],'mysql_root_password');
243
244
245
	}
} while ($finished == false);
unset($finished);
246
247

/*
248
 *  Prepare the dump of the database
249
250
251
252
253
254
255
256
 */
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') {
257
258
259
	//** Get MySQL root credentials
	$finished = false;
	do {
Till Brehm's avatar
Till Brehm committed
260
		$tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'],'mysql_master_hostname');
261
		$tmp_mysql_server_port = $inst->free_query('MySQL master server port', $conf['mysql']['master_port'],'mysql_master_port');
Till Brehm's avatar
Till Brehm committed
262
263
264
		$tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'],'mysql_master_root_user');	 
		$tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'],'mysql_master_root_password');
		$tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database');
265
266

		//* Initialize the MySQL server connection
267
		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)) {
268
			$conf['mysql']['master_host'] = $tmp_mysql_server_host;
269
			$conf['mysql']['master_port'] = $tmp_mysql_server_port;
270
271
272
273
274
			$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 {
275
			swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
276
277
278
279
280
281
282
		}
	} while ($finished == false);
	unset($finished);

	// initialize the connection to the master database
	$inst->dbmaster = new db();
	if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
283
	$inst->dbmaster->setDBData($conf['mysql']["master_host"], $conf['mysql']["master_admin_user"], $conf['mysql']["master_admin_password"], $conf['mysql']["master_port"]);
284
	$inst->dbmaster->setDBName($conf['mysql']["master_database"]);
285
286
287
288
289
290
291
292
293
294
295
296
297
298
} else {
	$inst->dbmaster = $inst->db;
}

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

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

299
300
301
302
303
//** read server config from db into $conf['server_config']
$tmp = $inst->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']);
$conf['server_config'] = ini_to_array(stripslashes($tmp['config']));
unset($tmp);

304
305
306
307
308
309
/*
 * 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'] != '') {
310
//** Update master database rights
Till Brehm's avatar
Till Brehm committed
311
$reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no','reconfigure_permissions_in_master_database');
312

313
314
315
if($reconfigure_master_database_rights_answer == 'yes') {
	$inst->grant_master_database_rights();
}
316
317
//}

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

321
//** Check for current service config state and compare to our results
322
323
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']);
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']);
324
$conf['services']['mail'] = check_service_config_state('mail_server', $conf['postfix']['installed']);
325
326
327
328
329
$conf['services']['dns'] = check_service_config_state('dns_server', ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed']));
$conf['services']['web'] = check_service_config_state('web_server', ($conf['apache']['installed'] || $conf['nginx']['installed']));
$conf['services']['xmpp'] = check_service_config_state('xmpp_server', $conf['xmpp']['installed']);
$conf['services']['firewall'] = check_service_config_state('firewall_server', ($conf['ufw']['installed'] || $conf['firewall']['installed']));
$conf['services']['vserver'] = check_service_config_state('vserver_server', $conf['services']['vserver']);
330
$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... */
331
unset($current_svc_config);
332

333
334
335
336
337
338
339
//** Write new decisions into DB
$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 = ?";
$inst->db->query($sql, $conf['mysql']['database'].'.server', $conf['server_id']);
if($conf['mysql']['master_slave_setup'] == 'y') {
	$inst->dbmaster->query($sql, $conf['mysql']['master_database'].'.server', $conf['server_id']);
}

340
341
342
343
344
345
346
//** Is the ISPConfg Panel installed on this host? This might partially override user's preferences later.
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;
}
347

348
//** Shall the services be reconfigured during update
349
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no', 'selected'), 'yes','reconfigure_services');
350

351
if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'selected') {
352

353
	if($conf['services']['mail']) {
354

355
		//** Configure postfix
356
		if($inst->reconfigure_app('Postfix and IMAP/POP3', $reconfigure_services_answer)) {
357
358
			swriteln('Configuring Postfix');
			$inst->configure_postfix('dont-create-certs');
359
360

			if($conf['dovecot']['installed'] == true) {
361
362
363
				//* Configure dovecot
				swriteln('Configuring Dovecot');
				$inst->configure_dovecot();
364
365
366
367
368
369
370
371
372
373
374
375
376
377
			} 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();
			}

378
		}
379

380
		//** Configure mailman
381
		if($conf['mailman']['installed'] == true && $inst->reconfigure_app('Mailman', $reconfigure_services_answer)) {
382
383
384
			swriteln('Configuring Mailman');
			$inst->configure_mailman('update');
		}
385

386
		//** Configure Spamasassin
387
388
389
390
		if($inst->reconfigure_app('Spamassassin', $reconfigure_services_answer)) {
			swriteln('Configuring Spamassassin');
			$inst->configure_spamassassin();
		}
391
392

		//** Configure Amavis
393
		if($conf['amavis']['installed'] == true && $inst->reconfigure_app('Amavisd', $reconfigure_services_answer)) {
394
395
396
			swriteln('Configuring Amavisd');
			$inst->configure_amavis();
		}
397
398

		//** Configure Getmail
399
400
401
402
		if ($inst->reconfigure_app('Getmail', $reconfigure_services_answer)) {
			swriteln('Configuring Getmail');
			$inst->configure_getmail();
		}
403
	}
404

405
	if($conf['services']['dns'] && $inst->reconfigure_app('DNS', $reconfigure_services_answer)) {
406
407
408
409
410
411
412
		//* Configure DNS
		if($conf['powerdns']['installed'] == true) {
			swriteln('Configuring PowerDNS');
			$inst->configure_powerdns();
		} elseif($conf['bind']['installed'] == true) {
			swriteln('Configuring BIND');
			$inst->configure_bind();
Florian Schaal's avatar
Florian Schaal committed
413
			if(!is_installed('haveged')) {
414
415
				swriteln("[INFO] haveged not detected - DNSSEC can fail");
			}
416
417
418
419
420
		} else {
			swriteln('Configuring MyDNS');
			$inst->configure_mydns();
		}
	}
421

422
	if($conf['services']['web'] || $inst->install_ispconfig_interface) {
423
424
425
426
427

		if($conf['pureftpd']['installed'] == true && $inst->reconfigure_app('Pureftpd', $reconfigure_services_answer)) {
			//** Configure Pureftpd
			swriteln('Configuring Pureftpd');
			$inst->configure_pureftpd();
428
		}
429

430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
		if($inst->reconfigure_app('Web-Server', $reconfigure_services_answer)) {
			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();
			}

445
			if ($conf['server_config']['web']['apps_vhost_enabled'] == 'y') {
446
447
448
449
				//** Configure apps vhost
				swriteln('Configuring Apps vhost');
				$inst->configure_apps_vhost();
			} else swriteln('Skipping config of Apps vhost');
450
		}
451
	
452
453
454
455
		//* Configure Jailkit
		if($inst->reconfigure_app('Jailkit', $reconfigure_services_answer)) {
			swriteln('Configuring Jailkit');
			$inst->configure_jailkit();
456
		}
457

458
459
	}

460
    if($conf['services']['xmpp'] && $inst->reconfigure_app('XMPP', $reconfigure_services_answer)) {
Michael Fürmann's avatar
Michael Fürmann committed
461
462
463
464
        //** Configure Metronome XMPP
        $inst->configure_xmpp('dont-create-certs');
    }

465
	if($conf['services']['firewall'] && $inst->reconfigure_app('Firewall', $reconfigure_services_answer)) {
466
467
468
469
470
471
		if($conf['ufw']['installed'] == true) {
			//* Configure Ubuntu Firewall
			$conf['services']['firewall'] = true;
			swriteln('Configuring Ubuntu Firewall');
			$inst->configure_ufw_firewall();
		} else {
472
473
			//* Configure Bastille Firewall
			swriteln('Configuring Bastille Firewall');
474
			$inst->configure_bastille_firewall();
475
476
		}
	}
477

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

482
	/*
483
484
485
486
487
488
489
	if($conf['squid']['installed'] == true) {
		swriteln('Configuring Squid');
		$inst->configure_squid();
	} else if($conf['nginx']['installed'] == true) {
		swriteln('Configuring Nginx');
		$inst->configure_nginx();
	}
490
	*/
491
492
493
494
495
}

//** Configure ISPConfig
swriteln('Updating ISPConfig');

496
if ($inst->install_ispconfig_interface) {
497
498
	//** Customise the port ISPConfig runs on
	$ispconfig_port_number = get_ispconfig_port_number();
499
	if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number;
500
	if($conf['webserver']['server_type'] == 'nginx'){
Till Brehm's avatar
Till Brehm committed
501
		$conf['nginx']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number,'ispconfig_port');
502
	} else {
Till Brehm's avatar
Till Brehm committed
503
		$conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number,'ispconfig_port');
504
	}
505
506


507
	// $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n';
Till Brehm's avatar
Till Brehm committed
508
	if(strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no','create_new_ispconfig_ssl_cert')) == 'yes') {
509
510
511
512
513
514
		$inst->make_ispconfig_ssl_cert();
	}
}

$inst->install_ispconfig();

515
516
517
// Cleanup
$inst->cleanup_ispconfig();

518
//** Configure Crontab
Till Brehm's avatar
Till Brehm committed
519
$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes','reconfigure_crontab');
520
521
522
523
524
525
526
527
if($update_crontab_answer == 'yes') {
	swriteln('Updating Crontab');
	$inst->install_crontab();
}

//** Restart services:
if($reconfigure_services_answer == 'yes') {
	swriteln('Restarting services ...');
528
	if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart').' >/dev/null 2>&1');
529
	if($conf['services']['mail']) {
530
531
532
533
534
535
536
537
538
539
540
541
542
		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 &');
543
	}
544
	if($conf['services']['web'] || $inst->install_ispconfig_interface) {
545
		if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart'));
546
547
		//* Reload is enough for nginx
		if($conf['webserver']['server_type'] == 'nginx'){
548
549
			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'));
550
		}
551
		if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart'));
552
553
	}
	if($conf['services']['dns']) {
554
555
556
		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');
557
	}
558

Michael Fürmann's avatar
Michael Fürmann committed
559
    if($conf['services']['xmpp']) {
Till Brehm's avatar
Till Brehm committed
560
        if($conf['xmpp']['installed'] == true && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null');
Michael Fürmann's avatar
Michael Fürmann committed
561
562
    }

563
	if($conf['services']['proxy']) {
564
		// 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');
565
		if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null');
566
	}
567

568
	if($conf['services']['firewall']) {
569
		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');
570
571
572
	}
}

Marius Cramer's avatar
Marius Cramer committed
573
574
575
//* Set default servers
setDefaultServers();

Marius Cramer's avatar
Marius Cramer committed
576
577
$inst->create_mount_script();

Till Brehm's avatar
Till Brehm committed
578
579
//* Create md5 filelist
$md5_filename = '/usr/local/ispconfig/security/data/file_checksums_'.date('Y-m-d_h-i').'.md5';
580
exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename . ' 2>/dev/null');
Till Brehm's avatar
Till Brehm committed
581
582
chmod($md5_filename,0700);

583
584
585
echo "Update finished.\n";

?>