install.php 10.5 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
<?php

/*
Copyright (c) 2007, 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 installer.
*/

35
//** Check for existing installation
tbrehm's avatar
tbrehm committed
36
37
//if(is_dir("/usr/local/ispconfig")) die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.');

38
39
error_reporting(E_ALL|E_STRICT);

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

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

56
//** Include the base class of the installer class
57
58
require_once('lib/installer_base.lib.php');

59
include_once('options.conf.php');
60
61
$distname = get_distname();

62
//** Include the distribution specific installer class library and configuration
63
64
65
include_once('dist/lib/'.$conf['distname'].'.lib.php');
include_once('dist/conf/'.$conf['distname'].'.conf.php');

pedro_morgan's avatar
Janitor    
pedro_morgan committed
66
//TODO: this is not there ????
67
$conf['dist'] = $dist;
68

69
70
define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');

71
72
73
//****************************************************************************************************
//** Installer Interface 
//****************************************************************************************************
74
$inst = new installer();
pedro_morgan's avatar
pedro_morgan committed
75
swriteln($inst->lng('    Following will be a few questions for primary configuration so be careful.'));
76
77
swriteln($inst->lng('    Default values are in [brackets] and can be accepted with <ENTER>.'));
swriteln($inst->lng('    Tap in "quit" (without the quotes) to stop the installer.'."\n\n"));
78

79
//** Check log file is writable (probably not root or sudo)
80
if(!is_writable(ISPC_LOG_FILE)){
81
    die("ERROR: Cannot write to the log file '".ISPC_LOG_FILE."'. Are you root or sudo ?\n\n");
82
83
}

84
85
//** Select the language
$conf['language'] = $inst->simple_query('Select language', array('en','de'), 'en');
86

87
88
//** Select installation mode
$install_mode = $inst->simple_query('Installation mode', array('Standard','Expert'), 'Standard');
89

90

91
//** Get the hostname
tbrehm's avatar
tbrehm committed
92
$tmp_out = array();
93
exec('hostname -f', $tmp_out);
pedro_morgan's avatar
pedro_morgan committed
94
$conf['hostname'] = $inst->free_query('Full qualified hostname (FQDN) of the server, eg foo.example.com ', $tmp_out[0]);
tbrehm's avatar
tbrehm committed
95
unset($tmp_out);
96

97
//** Get MySQL root credentials
tbrehm's avatar
tbrehm committed
98
99
$finished = false;
do {
100
101
102
	$tmp_mysql_server_host = $inst->free_query('MySQL server hostname', $conf['mysql']['host']);
	$tmp_mysql_server_admin_user = $inst->free_query('MySQL root username', $conf['mysql']['admin_user']);
	$tmp_mysql_server_admin_password = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']);
pedro_morgan's avatar
pedro_morgan committed
103
    $tmp_mysql_server_database = $inst->free_query('MySQL database to create', $conf['mysql']['database']);
tbrehm's avatar
tbrehm committed
104
	
105
	//* Initialize the MySQL server connection
tbrehm's avatar
tbrehm committed
106
	if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
107
108
109
		$conf['mysql']['host'] = $tmp_mysql_server_host;
		$conf['mysql']['admin_user'] = $tmp_mysql_server_admin_user;
		$conf['mysql']['admin_password'] = $tmp_mysql_server_admin_password;
pedro_morgan's avatar
pedro_morgan committed
110
        $conf['mysql']['database'] = $tmp_mysql_server_database;
tbrehm's avatar
tbrehm committed
111
		$finished = true;
tbrehm's avatar
tbrehm committed
112
	} else {
113
		swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
tbrehm's avatar
tbrehm committed
114
115
	}
} while ($finished == false);
tbrehm's avatar
tbrehm committed
116
unset($finished);
tbrehm's avatar
tbrehm committed
117

118
//** initializing database connection
tbrehm's avatar
tbrehm committed
119
120
include_once('lib/mysql.lib.php');
$inst->db = new db();
tbrehm's avatar
tbrehm committed
121

122
//** Begin with standard or expert installation
tbrehm's avatar
tbrehm committed
123
124
if($install_mode == 'Standard') {
	
125
	//* Create the mysql database
tbrehm's avatar
tbrehm committed
126
127
	$inst->configure_database();

128
	//* Configure postfix
tbrehm's avatar
tbrehm committed
129
130
	$inst->configure_postfix();

131
	//* Configure saslauthd
tbrehm's avatar
tbrehm committed
132
133
134
	swriteln('Configuring SASL');
	$inst->configure_saslauthd();

135
	//* Configure PAM
tbrehm's avatar
tbrehm committed
136
137
138
	swriteln('Configuring PAM');
	$inst->configure_pam();

139
	//* Configure courier
tbrehm's avatar
tbrehm committed
140
141
142
	swriteln('Configuring Courier');
	$inst->configure_courier();

143
	//* Configure Spamasassin
tbrehm's avatar
tbrehm committed
144
145
146
	swriteln('Configuring Spamassassin');
	$inst->configure_spamassassin();

147
	//* Configure Amavis
tbrehm's avatar
tbrehm committed
148
149
150
	swriteln('Configuring Amavisd');
	$inst->configure_amavis();

151
	//* Configure Getmail
tbrehm's avatar
tbrehm committed
152
153
154
155
	swriteln('Configuring Getmail');
	$inst->configure_getmail();
	

156
	//* Configure Pureftpd
tbrehm's avatar
tbrehm committed
157
158
159
	swriteln('Configuring Pureftpd');
	$inst->configure_pureftpd();

160
	//* Configure MyDNS
tbrehm's avatar
tbrehm committed
161
162
	swriteln('Configuring MyDNS');
	$inst->configure_mydns();
163
	
164
	//* Configure Apache
165
166
	swriteln('Configuring Apache');
	$inst->configure_apache();
tbrehm's avatar
tbrehm committed
167

168
	//* Configure ISPConfig
tbrehm's avatar
tbrehm committed
169
170
171
	swriteln('Installing ISPConfig');
	$inst->install_ispconfig();

172
	//* Configure ISPConfig
tbrehm's avatar
tbrehm committed
173
174
175
176
	swriteln('Installing Crontab');
	$inst->install_crontab();
	
	swriteln('Restarting services ...');
177
178
179
180
181
182
183
184
185
186
187
188
189
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['mysql']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['postfix']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['saslauthd']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['amavis']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['clamav']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-authdaemon'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-imap'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-imap-ssl'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-pop'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-pop-ssl'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['apache']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['pureftpd']['init_script'].' restart');
	system($conf['dist']['init_scripts'].'/'.$conf['dist']['mydns']['init_script'].' restart');
tbrehm's avatar
tbrehm committed
190
	
191
192
193
194
}else{

	//** Get Server ID
	$conf['server_id'] = $inst->free_query('Unique Numeric ID of the server','1');
tbrehm's avatar
tbrehm committed
195
196
	
	if(strtolower($inst->simple_query('Create Database',array('y','n'),'y')) == 'y') {
197
		//* Create the mysql database
tbrehm's avatar
tbrehm committed
198
		$inst->configure_database();
199
		system('/etc/init.d/mysql restart');
tbrehm's avatar
tbrehm committed
200
201
	}
	
202
	if(strtolower($inst->simple_query('Configure Mail', array('y','n') ,'y') ) == 'y') {
tbrehm's avatar
tbrehm committed
203
		
204
		//* Configure Postfix
tbrehm's avatar
tbrehm committed
205
206
207
		swriteln('Configuring Postfix');
		$inst->configure_postfix();
		
208
		//* Configure PAM
tbrehm's avatar
tbrehm committed
209
210
211
		swriteln('Configuring PAM');
		$inst->configure_pam();

212
		//* Configure courier
tbrehm's avatar
tbrehm committed
213
214
215
		swriteln('Configuring Courier');
		$inst->configure_courier();

216
		//* Configure Spamasassin
tbrehm's avatar
tbrehm committed
217
218
219
		swriteln('Configuring Spamassassin');
		$inst->configure_spamassassin();

220
		//* Configure Amavis
tbrehm's avatar
tbrehm committed
221
222
223
		swriteln('Configuring Amavisd');
		$inst->configure_amavis();

224
		//* Configure Getmail
tbrehm's avatar
tbrehm committed
225
226
227
		swriteln('Configuring Getmail');
		$inst->configure_getmail();
		
228
229
230
231
232
233
234
235
236
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['postfix']['init_script'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['saslauthd']['init_script'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['amavis']['init_script'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['clamav']['init_script'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-authdaemon'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-imap'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-imap-ssl'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-pop'].' restart');
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['courier']['courier-pop-ssl'].' restart');
tbrehm's avatar
tbrehm committed
237
238
	}
	
239
240
	//** Configure Pureftpd
	if(strtolower($inst->simple_query('Configure FTP Server', array('y','n'),'y') ) == 'y') {	
tbrehm's avatar
tbrehm committed
241
242
		swriteln('Configuring Pureftpd');
		$inst->configure_pureftpd();
243
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['pureftpd']['init_script'].' restart');
tbrehm's avatar
tbrehm committed
244
245
	}
	
246
	//** Configure MyDNS
tbrehm's avatar
tbrehm committed
247
248
249
	if(strtolower($inst->simple_query('Configure DNS Server',array('y','n'),'y')) == 'y') {
		swriteln('Configuring MyDNS');
		$inst->configure_mydns();
250
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['mydns']['init_script'].' restart');
tbrehm's avatar
tbrehm committed
251
252
	}
	
253
254
	//** Configure Apache
	if(strtolower($inst->simple_query('Configure Apache Server',array('y','n'),'y')) == 'y') {	
255
256
257
258
		swriteln('Configuring Apache');
		$inst->configure_apache();
	}
	
259
	//** Configure ISPConfig :-)
tbrehm's avatar
tbrehm committed
260
261
262
	if(strtolower($inst->simple_query('Install ISPConfig',array('y','n'),'y')) == 'y') {
		swriteln('Installing ISPConfig');
		$inst->install_ispconfig();
263
264
		
		//* Configure ISPConfig
tbrehm's avatar
tbrehm committed
265
266
		swriteln('Installing Crontab');
		$inst->install_crontab();
267
		system($conf['dist']['init_scripts'].'/'.$conf['dist']['apache']['init_script'].' restart');	
tbrehm's avatar
tbrehm committed
268
269
	}
	
270
} //* << $install_mode / 'Standard' or Genius
271
272


273
echo "Installation completed.\n";
274
275


276
?>