Skip to content

Commit 80e3c9a

Browse files
committed
- Improved nginx reverse proxy support.
- Added UFW firewall support.
1 parent a285fa6 commit 80e3c9a

40 files changed

+2259
-45
lines changed

install/dist/conf/debian40.conf.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
$conf['services']['file'] = true;
5252
$conf['services']['db'] = true;
5353
$conf['services']['vserver'] = true;
54+
$conf['services']['proxy'] = false;
55+
$conf['services']['firewall'] = false;
5456

5557
//* MySQL
5658
$conf['mysql']['installed'] = false; // will be detected automatically during installation
@@ -183,6 +185,28 @@
183185
$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
184186
$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
185187

188+
//* Squid
189+
$conf['squid']['installed'] = false; // will be detected automatically during installation
190+
$conf['squid']['config_dir'] = '/etc/squid';
191+
$conf['squid']['init_script'] = 'squid';
192+
193+
//* Nginx
194+
$conf['nginx']['installed'] = false; // will be detected automatically during installation
195+
$conf['nginx']['config_dir'] = '/etc/nginx';
196+
$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available';
197+
$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled';
198+
$conf['nginx']['init_script'] = 'nginx';
199+
200+
//*Ufw
201+
$conf['ufw']['installed'] = false;
202+
$conf['ufw']['config_dir'] = '/etc/ufw';
203+
$conf['ufw']['init_script'] = 'ufw';
204+
205+
//*Bastille-Firwall
206+
$conf['bastille']['installed'] = false;
207+
$conf['bastille']['config_dir'] = '/etc/Bastille';
208+
209+
186210
//* vlogger
187211
$conf['vlogger']['config_dir'] = '/etc';
188212

install/dist/conf/debian60.conf.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
$conf['services']['file'] = true;
5252
$conf['services']['db'] = true;
5353
$conf['services']['vserver'] = true;
54+
$conf['services']['proxy'] = false;
55+
$conf['services']['firewall'] = false;
5456

5557
//* MySQL
5658
$conf['mysql']['installed'] = false; // will be detected automatically during installation
@@ -183,6 +185,27 @@
183185
$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
184186
$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
185187

188+
//* Squid
189+
$conf['squid']['installed'] = false; // will be detected automatically during installation
190+
$conf['squid']['config_dir'] = '/etc/squid';
191+
$conf['squid']['init_script'] = 'squid';
192+
193+
//* Nginx
194+
$conf['nginx']['installed'] = false; // will be detected automatically during installation
195+
$conf['nginx']['config_dir'] = '/etc/nginx';
196+
$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available';
197+
$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled';
198+
$conf['nginx']['init_script'] = 'nginx';
199+
200+
//* Ufw
201+
$conf['ufw']['installed'] = false;
202+
$conf['squid']['config_dir'] = '/etc/ufw';
203+
$conf['squid']['init_script'] = 'ufw';
204+
205+
//*Bastille-Firwall
206+
$conf['bastille']['installed'] = false;
207+
$conf['bastille']['config_dir'] = '/etc/Bastille';
208+
186209
//* vlogger
187210
$conf['vlogger']['config_dir'] = '/etc';
188211

install/install.php

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,31 @@
230230
$inst->configure_apps_vhost();
231231

232232
//* Configure Firewall
233-
swriteln('Configuring Firewall');
234-
$inst->configure_firewall();
235-
233+
//swriteln('Configuring Firewall');
234+
//$inst->configure_firewall();
235+
//** Configure Firewall
236+
if($conf['bastille']['installed'] == true) {
237+
//* Configure Bastille Firewall
238+
$conf['services']['firewall'] = true;
239+
swriteln('Configuring Bastille Firewall');
240+
$inst->configure_firewall();
241+
} elseif($conf['ufw']['installed'] == true) {
242+
//* Configure Ubuntu Firewall
243+
$conf['services']['firewall'] = true;
244+
swriteln('Configuring Ubuntu Firewall');
245+
$inst->configure_ufw_firewall();
246+
}
247+
248+
if($conf['squid']['installed'] == true) {
249+
$conf['services']['proxy'] = true;
250+
swriteln('Configuring Squid');
251+
$inst->configure_squid();
252+
} else if($conf['nginx']['installed'] == true) {
253+
$conf['services']['proxy'] = true;
254+
swriteln('Configuring Nginx');
255+
$inst->configure_nginx();
256+
}
257+
236258
//* Configure ISPConfig
237259
swriteln('Installing ISPConfig');
238260

@@ -267,14 +289,18 @@
267289
if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
268290
if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
269291
if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
270-
292+
if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
293+
if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['nginx']['init_script'])) system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' restart &> /dev/null');
294+
if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['ufw']['init_script'])) system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
271295
}else{
272296

273297
//* In expert mode, we select the services in the following steps, only db is always available
274298
$conf['services']['mail'] = false;
275299
$conf['services']['web'] = false;
276300
$conf['services']['dns'] = false;
277301
$conf['services']['db'] = true;
302+
$conf['services']['firewall'] = false;
303+
$conf['services']['proxy'] = false;
278304

279305

280306
//** Get Server ID
@@ -416,6 +442,21 @@
416442

417443
}
418444

445+
//** Configure Squid
446+
if(strtolower($inst->simple_query('Configure Proxy Server', array('y','n'),'y') ) == 'y') {
447+
if($conf['squid']['installed'] == true) {
448+
$conf['services']['proxy'] = true;
449+
swriteln('Configuring Squid');
450+
$inst->configure_squid();
451+
if($conf['squid']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['squid']['init_script']))system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
452+
} else if($conf['nginx']['installed'] == true) {
453+
$conf['services']['proxy'] = true;
454+
swriteln('Configuring Nginx');
455+
$inst->configure_nginx();
456+
if($conf['nginx']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['nginx']['init_script']))system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' restart &> /dev/null');
457+
}
458+
}
459+
419460
//** Configure Apache
420461
swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure Apache Server' option.\n");
421462
if(strtolower($inst->simple_query('Configure Apache Server',array('y','n'),'y')) == 'y') {
@@ -434,9 +475,25 @@
434475

435476
//** Configure Firewall
436477
if(strtolower($inst->simple_query('Configure Firewall Server',array('y','n'),'y')) == 'y') {
478+
if($conf['bastille']['installed'] == true) {
479+
//* Configure Bastille Firewall
480+
$conf['services']['firewall'] = true;
481+
swriteln('Configuring Bastille Firewall');
482+
$inst->configure_firewall();
483+
} elseif($conf['ufw']['installed'] == true) {
484+
//* Configure Ubuntu Firewall
485+
$conf['services']['firewall'] = true;
486+
swriteln('Configuring Ubuntu Firewall');
487+
$inst->configure_ufw_firewall();
488+
}
489+
}
490+
491+
//** Configure Firewall
492+
/*if(strtolower($inst->simple_query('Configure Firewall Server',array('y','n'),'y')) == 'y') {
437493
swriteln('Configuring Firewall');
438494
$inst->configure_firewall();
439-
}
495+
}*/
496+
440497
//** Configure ISPConfig :-)
441498
if(strtolower($inst->simple_query('Install ISPConfig Web Interface',array('y','n'),'y')) == 'y') {
442499
swriteln('Installing ISPConfig');

install/lib/installer_base.lib.php

Lines changed: 80 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,12 @@ public function find_installed_apps() {
130130
if(is_installed('jk_chrootsh')) $conf['jailkit']['installed'] = true;
131131
if(is_installed('pdns_server') || is_installed('pdns_control')) $conf['powerdns']['installed'] = true;
132132
if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true;
133-
133+
if(is_installed('squid')) $conf['squid']['installed'] = true;
134+
if(is_installed('nginx')) $conf['nginx']['installed'] = true;
135+
if(is_installed('iptables') && is_installed('ufw')) $conf['ufw']['installed'] = true;
136+
if(is_dir("/etc/Bastille")) $conf['bastille']['installed'] = true;
137+
138+
if ($conf['services']['web'] && $conf['apache']['installed'] && is_file($conf['apache']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")) $this->ispconfig_interface_installed = true;
134139
}
135140

136141
/** Create the database for ISPConfig */
@@ -227,6 +232,11 @@ public function add_database_server_record() {
227232
$tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path'];
228233
$tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path'];
229234

235+
if ($conf['nginx']['installed'] == true) {
236+
$tpl_ini_array['nginx']['vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir'];
237+
$tpl_ini_array['nginx']['vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir'];
238+
}
239+
230240
if (array_key_exists('awstats', $conf)) {
231241
foreach ($conf['awstats'] as $aw_sett => $aw_value) {
232242
$tpl_ini_array['web']['awstats_'.$aw_sett] = $aw_value;
@@ -242,6 +252,8 @@ public function add_database_server_record() {
242252
$file_server_enabled = ($conf['services']['file'])?1:0;
243253
$db_server_enabled = ($conf['services']['db'])?1:0;
244254
$vserver_server_enabled = ($conf['services']['vserver'])?1:0;
255+
$proxy_server_enabled = ($conf['services']['proxy'])?1:0;
256+
$firewall_server_enabled = ($conf['services']['firewall'])?1:0;
245257

246258
//** Get the database version number based on the patchfiles
247259
$found = true;
@@ -261,13 +273,13 @@ public function add_database_server_record() {
261273
if($conf['mysql']['master_slave_setup'] == 'y') {
262274

263275
//* Insert the server record in master DB
264-
$sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
276+
$sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version, $proxy_server_enabled, $firewall_server_enabled);";
265277
$this->dbmaster->query($sql);
266278
$conf['server_id'] = $this->dbmaster->insertID();
267279
$conf['server_id'] = $conf['server_id'];
268280

269281
//* Insert the same record in the local DB
270-
$sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES ('".$conf['server_id']."',1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
282+
$sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES ('".$conf['server_id']."',1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version, $proxy_server_enabled, $firewall_server_enabled);";
271283
$this->db->query($sql);
272284

273285
//* username for the ispconfig user
@@ -277,7 +289,7 @@ public function add_database_server_record() {
277289

278290
} else {
279291
//* Insert the server, if its not a mster / slave setup
280-
$sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
292+
$sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version, $proxy_server_enabled, $firewall_server_enabled);";
281293
$this->db->query($sql);
282294
$conf['server_id'] = $this->db->insertID();
283295
$conf['server_id'] = $conf['server_id'];
@@ -1108,6 +1120,67 @@ public function configure_apache() {
11081120
if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
11091121

11101122
}
1123+
1124+
public function configure_nginx()
1125+
{
1126+
global $conf;
1127+
$row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$conf["server_id"]."");
1128+
$ip_address = gethostbyname($row["server_name"]);
1129+
$server_name = $row["server_name"];
1130+
1131+
//setup proxy.conf
1132+
$configfile = 'proxy.conf';
1133+
if(is_file($conf["nginx"]["config_dir"].'/'.$configfile)) copy($conf["nginx"]["config_dir"].'/'.$configfile,$conf["nginx"]["config_dir"].'/'.$configfile.'~');
1134+
if(is_file($conf["nginx"]["config_dir"].'/'.$configfile.'~')) exec('chmod 400 '.$conf["nginx"]["config_dir"].'/'.$configfile.'~');
1135+
$content = rf("tpl/nginx_".$configfile.".master");
1136+
wf($conf["nginx"]["config_dir"].'/'.$configfile,$content);
1137+
exec('chmod 600 '.$conf["nginx"]["config_dir"].'/'.$configfile);
1138+
exec('chown root:root '.$conf["nginx"]["config_dir"].'/'.$configfile);
1139+
1140+
//setup conf.d/cache.conf
1141+
$configfile = 'cache.conf';
1142+
if(is_file($conf["nginx"]["config_dir"].'/conf.d/'.$configfile)) copy($conf["nginx"]["config_dir"].'/conf.d/'.$configfile,$conf["nginx"]["config_dir"].'/conf.d/'.$configfile.'~');
1143+
if(is_file($conf["nginx"]["config_dir"].'/conf.d/'.$configfile.'~')) exec('chmod 400 '.$conf["nginx"]["config_dir"].'/conf.d/'.$configfile.'~');
1144+
$content = rf("tpl/nginx_".$configfile.".master");
1145+
wf($conf["nginx"]["config_dir"].'/conf.d/'.$configfile,$content);
1146+
exec('chmod 600 '.$conf["nginx"]["config_dir"].'/conf.d/'.$configfile);
1147+
exec('chown root:root '.$conf["nginx"]["config_dir"].'/conf.d/'.$configfile);
1148+
1149+
//setup cache directories
1150+
mkdir('/var/cache/nginx/cache');
1151+
exec('chown www-data:www-data /var/cache/nginx/cache');
1152+
mkdir('/var/cache/nginx/temp');
1153+
exec('chown www-data:www-data /var/cache/nginx/temp');
1154+
}
1155+
1156+
public function configure_squid()
1157+
{
1158+
global $conf;
1159+
$row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$conf["server_id"]."");
1160+
$ip_address = gethostbyname($row["server_name"]);
1161+
$server_name = $row["server_name"];
1162+
1163+
$configfile = 'squid.conf';
1164+
if(is_file($conf["squid"]["config_dir"].'/'.$configfile)) copy($conf["squid"]["config_dir"].'/'.$configfile,$conf["squid"]["config_dir"].'/'.$configfile.'~');
1165+
if(is_file($conf["squid"]["config_dir"].'/'.$configfile.'~')) exec('chmod 400 '.$conf["squid"]["config_dir"].'/'.$configfile.'~');
1166+
$content = rf("tpl/".$configfile.".master");
1167+
$content = str_replace('{server_name}',$server_name,$content);
1168+
$content = str_replace('{ip_address}',$ip_address, $content);
1169+
$content = str_replace('{config_dir}',$conf['squid']['config_dir'], $content);
1170+
wf($conf["squid"]["config_dir"].'/'.$configfile,$content);
1171+
exec('chmod 600 '.$conf["squid"]["config_dir"].'/'.$configfile);
1172+
exec('chown root:root '.$conf["squid"]["config_dir"].'/'.$configfile);
1173+
}
1174+
1175+
public function configure_ufw_firewall()
1176+
{
1177+
$configfile = 'ufw.conf';
1178+
if(is_file('/etc/ufw/ufw.conf')) copy('/etc/ufw/ufw.conf','/etc/ufw/ufw.conf~');
1179+
$content = rf("tpl/".$configfile.".master");
1180+
wf('/etc/ufw/ufw.conf',$content);
1181+
exec('chmod 600 /etc/ufw/ufw.conf');
1182+
exec('chown root:root /etc/ufw/ufw.conf');
1183+
}
11111184

11121185
public function configure_firewall() {
11131186
global $conf;
@@ -1426,13 +1499,14 @@ public function install_ispconfig() {
14261499
$file_server_enabled = ($conf['services']['file'])?1:0;
14271500
$db_server_enabled = ($conf['services']['db'])?1:0;
14281501
$vserver_server_enabled = ($conf['services']['vserver'])?1:0;
1502+
$proxy_server_enabled = ($conf['services']['proxy'])?1:0;
1503+
$firewall_server_enabled = ($conf['services']['firewall'])?1:0;
14291504

14301505

14311506

14321507

14331508

1434-
1435-
$sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled' WHERE server_id = ".intval($conf['server_id']);
1509+
$sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled', proxy_server = '$proxy_server_enabled', firewall_server = '$firewall_server_enabled' WHERE server_id = ".intval($conf['server_id']);
14361510

14371511
if($conf['mysql']['master_slave_setup'] == 'y') {
14381512
$this->dbmaster->query($sql);

install/lib/update.lib.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ function updateDbAndIni() {
9595
$conf['services']['file'] = ($tmp['file_server'] == 1)?true:false;
9696
$conf['services']['db'] = ($tmp['db_server'] == 1)?true:false;
9797
$conf['services']['vserver'] = ($tmp['vserver_server'] == 1)?true:false;
98+
$conf['services']['proxy'] = ($tmp['proxy_server'] == 1)?true:false;
99+
$conf['services']['firewall'] = ($tmp['firewall_server'] == 1)?true:false;
100+
98101
$conf['postfix']['vmail_mailbox_base'] = $ini_array['mail']['homedir_path'];
99102

100103
//* Do incremental DB updates only on installed ISPConfig versions > 3.0.3

0 commit comments

Comments
 (0)