Skip to content

Commit f439349

Browse files
WebsliceMarius Burkard
authored andcommitted
Exclude IP's from maintenance
1 parent ab8a71f commit f439349

32 files changed

+91
-7
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,4 @@ $web_config = $app->getconf->get_server_config($server_id,'web');
123123

124124
# Learn about the form validators
125125
There are form validators in interface/lib/classes/tform.inc.php to make validating forms easier.
126-
Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,CUSTOM
126+
Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,ISIPV6,ISIP,CUSTOM

install/tpl/system.ini.master

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ tab_change_warning=n
5555
use_loadindicator=y
5656
use_combobox=y
5757
maintenance_mode=n
58+
maintenance_mode_exclude_ips=
5859
admin_dashlets_left=
5960
admin_dashlets_right=
6061
reseller_dashlets_left=

interface/lib/app.inc.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,22 @@ public function tpl_defaults() {
333333
$this->tpl->setVar('globalsearch_noresults_limit_txt', $this->lng('globalsearch_noresults_limit_txt'));
334334
$this->tpl->setVar('globalsearch_searchfield_watermark_txt', $this->lng('globalsearch_searchfield_watermark_txt'));
335335
}
336+
337+
public function is_under_maintenance() {
338+
$system_config_misc = $this->getconf->get_global_config('misc');
339+
$maintenance_mode = 'n';
340+
$maintenance_mode_exclude_ips = [];
341+
342+
if (!empty($system_config_misc['maintenance_mode'])) {
343+
$maintenance_mode = $system_config_misc['maintenance_mode'];
344+
}
345+
346+
if (!empty($system_config_misc['maintenance_mode_exclude_ips'])) {
347+
$maintenance_mode_exclude_ips = array_map('trim', explode(',', $system_config_misc['maintenance_mode_exclude_ips']));
348+
}
349+
350+
return 'y' === $maintenance_mode && !in_array($_SERVER['REMOTE_ADDR'], $maintenance_mode_exclude_ips);
351+
}
336352

337353
private function get_cookie_domain() {
338354
$sec_config = $this->getconf->get_security_config('permissions');

interface/lib/classes/remoting.inc.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ public function login($username, $password, $client_login = false)
7272
global $app, $conf;
7373

7474
// Maintenance mode
75-
$app->uses('ini_parser,getconf');
76-
$server_config_array = $app->getconf->get_global_config('misc');
77-
if($server_config_array['maintenance_mode'] == 'y'){
75+
if($app->is_under_maintenance()){
7876
throw new SoapFault('maintenance_mode', 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.');
7977
return false;
8078
}

interface/web/admin/form/system_config.tform.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,20 @@
606606
'default' => 'n',
607607
'value' => array(0 => 'n', 1 => 'y')
608608
),
609+
'maintenance_mode_exclude_ips' => array (
610+
'datatype' => 'VARCHAR',
611+
'formtype' => 'TEXT',
612+
'validators' => array(
613+
0 => array (
614+
'type' => 'ISIP',
615+
'allowempty' => true,
616+
'separator' => ',',
617+
'errmsg'=> 'maintenance_mode_exclude_ips_error_isip'
618+
),
619+
),
620+
'default' => '',
621+
'value' => ''
622+
),
609623
'admin_dashlets_left' => array (
610624
'datatype' => 'VARCHAR',
611625
'formtype' => 'TEXT',

interface/web/admin/lib/lang/ar_system_config.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
2929
$wb['monitor_key_txt'] = 'Monitor keyword';
3030
$wb['admin_name_txt'] = 'Administrators name';
3131
$wb['maintenance_mode_txt'] = 'Maintenance Mode';
32+
$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
33+
$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
3234
$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
3335
$wb['smtp_host_txt'] = 'SMTP host';
3436
$wb['smtp_port_txt'] = 'SMTP port';

interface/web/admin/lib/lang/bg_system_config.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Администраторски емаил';
2929
$wb['admin_name_txt'] = 'Администраторски имена';
3030
$wb['system_config_desc_txt'] = '';
3131
$wb['maintenance_mode_txt'] = 'Maintenance Mode';
32+
$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
33+
$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
3234
$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
3335
$wb['smtp_host_txt'] = 'SMTP host';
3436
$wb['smtp_port_txt'] = 'SMTP port';

interface/web/admin/lib/lang/br_system_config.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
4040
$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
4141
$wb['admin_name_txt'] = 'Nome do administrador';
4242
$wb['maintenance_mode_txt'] = 'Modo manutenção';
43+
$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
44+
$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
4345
$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
4446
$wb['smtp_host_txt'] = 'Host SMTP';
4547
$wb['smtp_port_txt'] = 'Porta SMTP';

interface/web/admin/lib/lang/ca_system_config.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail';
4040
$wb['monitor_key_txt'] = 'Monitor keyword';
4141
$wb['admin_name_txt'] = 'Administrator\'s name';
4242
$wb['maintenance_mode_txt'] = 'Maintenance Mode';
43+
$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
44+
$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
4345
$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
4446
$wb['smtp_host_txt'] = 'SMTP host';
4547
$wb['smtp_port_txt'] = 'SMTP port';

interface/web/admin/lib/lang/cz_system_config.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ $wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konfe
2929
$wb['mailmailinglist_url_txt'] = 'E-mailové konference URL';
3030
$wb['monitor_key_txt'] = 'Monitor keyword';
3131
$wb['maintenance_mode_txt'] = 'Režim údržby';
32+
$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
33+
$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.';
3234
$wb['smtp_enabled_txt'] = 'Použít (zvolit) SMTP server pro zasílání systémových mailů';
3335
$wb['smtp_host_txt'] = 'SMTP host';
3436
$wb['smtp_port_txt'] = 'SMTP port';

0 commit comments

Comments
 (0)