Skip to content

Commit ce95440

Browse files
committed
Enhanced the installer.
1 parent c066126 commit ce95440

File tree

3 files changed

+223
-80
lines changed

3 files changed

+223
-80
lines changed

install/install.php

Lines changed: 171 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
ISPConfig 3 installer.
3333
*/
3434

35+
// Check for existing installation
36+
//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.');
37+
38+
3539
// Include the library with the basic installer functions
3640
require_once('lib/install.lib.php');
3741

@@ -49,90 +53,180 @@
4953

5054

5155

52-
echo "This application will install ISPConfig 3 on your server.\n";
53-
54-
// $conf["language"] = $inst->request_language();
55-
56-
// TODO: all other queries, for testing I will setup everything in $conf
57-
58-
// Initialize the MySQL server connection
59-
include_once('lib/mysql.lib.php');
60-
$inst->db = new db();
61-
62-
// Create the mysql database
63-
$inst->configure_database();
64-
65-
// Configure postfix
66-
$inst->configure_postfix();
67-
68-
// Configure saslauthd
69-
swriteln('Configuring SASL');
70-
$inst->configure_saslauthd();
56+
swriteln($inst->lng("This application will install ISPConfig 3 on your server.");
7157

58+
// Select the language
59+
$conf["language"] = $inst->simple_query('Select language',array('en','de'),'en');
7260

73-
// Configure PAM
74-
swriteln('Configuring PAM');
75-
$inst->configure_pam();
61+
// Select installation mode
62+
$install_mode = $inst->simple_query('Installation mode',array('Standard','Expert'),'Standard');
7663

77-
// Configure courier
78-
swriteln('Configuring Courier');
79-
$inst->configure_courier();
64+
// Get the hostname
65+
$tmp_out = array();
66+
exec("hostname -f",$tmp_out);
67+
$conf["hostname"] = $inst->free_query('Full qualified hostname (FQDN) of the server',$tmp_out[0]);
68+
unset($tmp_out);
8069

81-
// Configure Spamasassin
82-
swriteln('Configuring Spamassassin');
83-
$inst->configure_spamassassin();
8470

85-
// Configure Amavis
86-
swriteln('Configuring Amavisd');
87-
$inst->configure_amavis();
8871

89-
// Configure Getmail
90-
swriteln('Configuring Getmail');
91-
$inst->configure_getmail();
92-
93-
// Configure Pureftpd
94-
swriteln('Configuring Pureftpd');
95-
$inst->configure_pureftpd();
96-
97-
// Configure MyDNS
98-
swriteln('Configuring MyDNS');
99-
$inst->configure_mydns();
100-
101-
// Configure ISPConfig
102-
swriteln('Installing ISPConfig');
103-
$inst->install_ispconfig();
104-
105-
// Configure ISPConfig
106-
swriteln('Installing Crontab');
107-
$inst->install_crontab();
108-
109-
110-
/*
111-
Restart services:
112-
113-
saslauthd
114-
all courier
115-
apache2
116-
postfix
117-
amavisd
118-
calmd
119-
spamd
120-
*/
72+
// Get MySQL root password
73+
include_once('lib/mysql.lib.php');
74+
$finished = false;
75+
do {
76+
$conf["mysql_server_admin_password"] = $inst->free_query('MySQL root password','');
77+
// Initialize the MySQL server connection
78+
$inst->db = new db();
79+
if($inst->db->connect() == false) {
80+
swriteln($inst->db->errorMessage);
81+
} else {
82+
$finished = true;
83+
}
84+
} while ($finished == false);
85+
86+
87+
88+
// Begin with standard or expert installation
89+
if($install_mode == 'Standard') {
90+
91+
// Create the mysql database
92+
$inst->configure_database();
93+
94+
// Configure postfix
95+
$inst->configure_postfix();
96+
97+
// Configure saslauthd
98+
swriteln('Configuring SASL');
99+
$inst->configure_saslauthd();
100+
101+
// Configure PAM
102+
swriteln('Configuring PAM');
103+
$inst->configure_pam();
104+
105+
// Configure courier
106+
swriteln('Configuring Courier');
107+
$inst->configure_courier();
108+
109+
// Configure Spamasassin
110+
swriteln('Configuring Spamassassin');
111+
$inst->configure_spamassassin();
112+
113+
// Configure Amavis
114+
swriteln('Configuring Amavisd');
115+
$inst->configure_amavis();
116+
117+
// Configure Getmail
118+
swriteln('Configuring Getmail');
119+
$inst->configure_getmail();
120+
121+
122+
// Configure Pureftpd
123+
swriteln('Configuring Pureftpd');
124+
$inst->configure_pureftpd();
125+
126+
// Configure MyDNS
127+
swriteln('Configuring MyDNS');
128+
$inst->configure_mydns();
129+
130+
// Configure ISPConfig
131+
swriteln('Installing ISPConfig');
132+
$inst->install_ispconfig();
133+
134+
// Configure ISPConfig
135+
swriteln('Installing Crontab');
136+
$inst->install_crontab();
137+
138+
swriteln('Restarting services ...');
139+
system("/etc/init.d/mysql restart");
140+
system("/etc/init.d/postfix restart");
141+
system("/etc/init.d/saslauthd restart");
142+
system("/etc/init.d/amavis restart");
143+
system("/etc/init.d/clamav-daemon restart");
144+
system("/etc/init.d/courier-authdaemon restart");
145+
system("/etc/init.d/courier-imap restart");
146+
system("/etc/init.d/courier-imap-ssl restart");
147+
system("/etc/init.d/courier-pop restart");
148+
system("/etc/init.d/courier-pop-ssl restart");
149+
system("/etc/init.d/apache2 restart");
150+
system("/etc/init.d/pure-ftpd-mysql restart");
151+
system("/etc/init.d/mydns restart");
152+
153+
} else {
154+
155+
// Get Server ID
156+
$conf["server_id"] = $inst->free_query('Unique Numeric ID of the server','1');
157+
158+
if(strtolower($inst->simple_query('Create Database',array('y','n'),'y')) == 'y') {
159+
// Create the mysql database
160+
$inst->configure_database();
161+
system("/etc/init.d/mysql restart");
162+
}
163+
164+
if(strtolower($inst->simple_query('Configure Mail',array('y','n'),'y')) == 'y') {
165+
166+
// Configure Postfix
167+
swriteln('Configuring Postfix');
168+
$inst->configure_postfix();
169+
170+
// Configure PAM
171+
swriteln('Configuring PAM');
172+
$inst->configure_pam();
173+
174+
// Configure courier
175+
swriteln('Configuring Courier');
176+
$inst->configure_courier();
177+
178+
// Configure Spamasassin
179+
swriteln('Configuring Spamassassin');
180+
$inst->configure_spamassassin();
181+
182+
// Configure Amavis
183+
swriteln('Configuring Amavisd');
184+
$inst->configure_amavis();
185+
186+
// Configure Getmail
187+
swriteln('Configuring Getmail');
188+
$inst->configure_getmail();
189+
190+
system("/etc/init.d/postfix restart");
191+
system("/etc/init.d/saslauthd restart");
192+
system("/etc/init.d/amavis restart");
193+
system("/etc/init.d/clamav-daemon restart");
194+
system("/etc/init.d/courier-authdaemon restart");
195+
system("/etc/init.d/courier-imap restart");
196+
system("/etc/init.d/courier-imap-ssl restart");
197+
system("/etc/init.d/courier-pop restart");
198+
system("/etc/init.d/courier-pop-ssl restart");
199+
}
200+
201+
if(strtolower($inst->simple_query('Configure FTP Server',array('y','n'),'y')) == 'y') {
202+
// Configure Pureftpd
203+
swriteln('Configuring Pureftpd');
204+
$inst->configure_pureftpd();
205+
system("/etc/init.d/pure-ftpd-mysql restart");
206+
}
207+
208+
if(strtolower($inst->simple_query('Configure DNS Server',array('y','n'),'y')) == 'y') {
209+
// Configure MyDNS
210+
swriteln('Configuring MyDNS');
211+
$inst->configure_mydns();
212+
system("/etc/init.d/mydns restart");
213+
}
214+
215+
if(strtolower($inst->simple_query('Install ISPConfig',array('y','n'),'y')) == 'y') {
216+
// Configure ISPConfig
217+
swriteln('Installing ISPConfig');
218+
$inst->install_ispconfig();
219+
220+
// Configure ISPConfig
221+
swriteln('Installing Crontab');
222+
$inst->install_crontab();
223+
224+
system("/etc/init.d/apache2 restart");
225+
}
226+
227+
228+
}
121229

122-
swriteln('Restarting services ...');
123-
system("/etc/init.d/mysql restart");
124-
system("/etc/init.d/postfix restart");
125-
system("/etc/init.d/saslauthd restart");
126-
system("/etc/init.d/amavis restart");
127-
system("/etc/init.d/clamav-daemon restart");
128-
system("/etc/init.d/courier-authdaemon restart");
129-
system("/etc/init.d/courier-imap restart");
130-
system("/etc/init.d/courier-imap-ssl restart");
131-
system("/etc/init.d/courier-pop restart");
132-
system("/etc/init.d/courier-pop-ssl restart");
133-
system("/etc/init.d/apache2 restart");
134-
system("/etc/init.d/pure-ftpd-mysql restart");
135-
system("/etc/init.d/mydns restart");
136230

137231
echo "Installation finished.\n";
138232

install/lib/install.lib.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ function get_distname() {
4141
return $distname;
4242
}
4343

44-
4544
function sread() {
4645
$fp=fopen("/dev/stdin", "r");
4746
$input=fgets($fp, 255);

install/lib/installer_base.lib.php

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,64 @@ class installer_base {
3838
3939
*/
4040

41-
function lng() {
42-
41+
function lng($text) {
42+
return $text;
4343
}
4444

4545
function error($msg) {
4646
die("ERROR: ".$msg."\n");
4747
}
4848

49+
function simple_query($query,$answers,$default) {
50+
global $conf;
51+
52+
$finished = false;
53+
do {
54+
$answers_str = implode(",",$answers);
55+
swriteln($this->lng($query).' ('.$answers_str.') ['.$default.']:');
56+
$input = sread();
57+
58+
// Stop the installation
59+
if($input == 'quit') {
60+
die($this->lng('Installation interrupted.'));
61+
}
62+
63+
// Select the default
64+
if($input == '') {
65+
$answer = $default;
66+
$finished = true;
67+
}
68+
69+
if(in_array($input,$answers)) {
70+
$answer = $input;
71+
$finished = true;
72+
}
73+
74+
} while ($finished == false);
75+
return $answer;
76+
}
77+
78+
function free_query($query,$default) {
79+
global $conf;
80+
81+
$answers_str = implode(",",$answers);
82+
swriteln($this->lng($query).' ['.$default.']:');
83+
$input = sread();
84+
85+
// Stop the installation
86+
if($input == 'quit') {
87+
die($this->lng('Installation interrupted.'));
88+
}
89+
90+
// Select the default
91+
if($input == '') {
92+
$answer = $default;
93+
}
94+
95+
return $answer;
96+
}
97+
98+
4999
function request_language() {
50100

51101
swriteln(lng('Enter your language'));

0 commit comments

Comments
 (0)