diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f6c528479a75f9dc20e4d7ea070b15d4e02c4be5..d8eac80ebd08e7199185c255e531555ae45f47a4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -123,4 +123,4 @@ $web_config = $app->getconf->get_server_config($server_id,'web');
 
 # Learn about the form validators
 There are form validators in interface/lib/classes/tform.inc.php to make validating forms easier.
-Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,CUSTOM
+Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,ISIPV6,ISIP,CUSTOM
diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index c916a6254792bb55369f825a462ad9e40b22f997..4df1a877dc1333fa09fec5975ba76d9c13313ec3 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -55,6 +55,7 @@ tab_change_warning=n
 use_loadindicator=y
 use_combobox=y
 maintenance_mode=n
+maintenance_mode_exclude_ips=
 admin_dashlets_left=
 admin_dashlets_right=
 reseller_dashlets_left=
diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index e817fcbd44b3cdcaa7518b6c6f4ed8a8ee697398..be6c15666c0d4facb9acbe2f2ebcfaab54f2ace9 100755
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -333,6 +333,22 @@ class app {
 		$this->tpl->setVar('globalsearch_noresults_limit_txt', $this->lng('globalsearch_noresults_limit_txt'));
 		$this->tpl->setVar('globalsearch_searchfield_watermark_txt', $this->lng('globalsearch_searchfield_watermark_txt'));
 	}
+
+	public function is_under_maintenance() {
+		$system_config_misc = $this->getconf->get_global_config('misc');
+		$maintenance_mode = 'n';
+		$maintenance_mode_exclude_ips = [];
+
+		if (!empty($system_config_misc['maintenance_mode'])) {
+			$maintenance_mode = $system_config_misc['maintenance_mode'];
+		}
+
+		if (!empty($system_config_misc['maintenance_mode_exclude_ips'])) {
+			$maintenance_mode_exclude_ips = array_map('trim', explode(',', $system_config_misc['maintenance_mode_exclude_ips']));
+		}
+
+		return 'y' === $maintenance_mode && !in_array($_SERVER['REMOTE_ADDR'], $maintenance_mode_exclude_ips);
+	}
 	
 	private function get_cookie_domain() {
 		$sec_config = $this->getconf->get_security_config('permissions');
diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index e1fc1ada863f1cdc02c89a68dafe6f703096dee9..47aa517de8d76e347ead06db8a6ea7c12c6996d2 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -72,9 +72,7 @@ class remoting {
 		global $app, $conf;
 
 		// Maintenance mode
-		$app->uses('ini_parser,getconf');
-		$server_config_array = $app->getconf->get_global_config('misc');
-		if($server_config_array['maintenance_mode'] == 'y'){
+		if($app->is_under_maintenance()){
 			throw new SoapFault('maintenance_mode', 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.');
 			return false;
 		}
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index cb37cbefdd241ef9227eb596a4d64dc4ee6132df..d1b0a793e7926a0bfef0ff846c4dc75c58c23a9d 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -606,6 +606,20 @@ $form["tabs"]['misc'] = array (
 			'default' => 'n',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'maintenance_mode_exclude_ips' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array(
+				 0 => array (
+					'type' => 'ISIP',
+					'allowempty' => true,
+					'separator' => ',',
+					'errmsg'=> 'maintenance_mode_exclude_ips_error_isip'
+				),
+			),
+			'default' => '',
+			'value'  => ''
+		),
 		'admin_dashlets_left' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index 0a830014d8459104d5d61eccab6720f609b1bdd6..4ea9a6891940e531d8b030b8412c98a048cbb157 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index 130cb596aabd7c6bf2b268293d0fbb16cd12f335..1ea00be94f8ddcd27f5e2e5fa0f4d709188c55c5 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Администраторски емаил';
 $wb['admin_name_txt'] = 'Администраторски имена';
 $wb['system_config_desc_txt'] = '';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index 98bd4c9614c6732f9df036b7884606fe4f1d40cd..f1feae4768dfec085fd752c8bf8a07a7d2e03cf5 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrador(es) de e-mails';
 $wb['monitor_key_txt'] = 'Palavras reservadas a monitorar';
 $wb['admin_name_txt'] = 'Nome do administrador';
 $wb['maintenance_mode_txt'] = 'Modo manutenção';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema';
 $wb['smtp_host_txt'] = 'Host SMTP';
 $wb['smtp_port_txt'] = 'Porta SMTP';
diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng
index cc3c11c6c5ac86fe60180a49430fbc1963f9675e..d9dfcfaa664c9458020e38eabfbdf2ae21d44405 100644
--- a/interface/web/admin/lib/lang/ca_system_config.lng
+++ b/interface/web/admin/lib/lang/ca_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrator\'s name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index 3660e1b689ff41613eb360826e4776321ab69700..e85b8ab9a5c617f966341ef7716afef790bc4ec7 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konfe
 $wb['mailmailinglist_url_txt'] = 'E-mailové konference URL';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['maintenance_mode_txt'] = 'Režim údržby';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Použít (zvolit) SMTP server pro zasílání systémových mailů';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index 76910e1db38f08283a060c67429355118ad643f6..21169ddf08f2a5c9bdc726edb98264ea2b50f87a 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -37,6 +37,8 @@ $wb['admin_mail_txt'] = 'Administrator E-Mail';
 $wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort';
 $wb['admin_name_txt'] = 'Name des Administrators';
 $wb['maintenance_mode_txt'] = 'Wartungsmodus';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen';
 $wb['smtp_host_txt'] = 'SMTP Server';
 $wb['smtp_port_txt'] = 'SMTP Port';
diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng
index 26b0fe7e78d1ba19b2799749ec357bdd17f2c71c..eb725ac5196a8d79f19cebe956e064ed965e4091 100644
--- a/interface/web/admin/lib/lang/dk_system_config.lng
+++ b/interface/web/admin/lib/lang/dk_system_config.lng
@@ -35,6 +35,8 @@ $wb['admin_mail_txt'] = 'Administratorer e-mail';
 $wb['monitor_key_txt'] = 'Monitor nøgleord';
 $wb['admin_name_txt'] = 'Administratorer navn';
 $wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index 640d6f00a9e13e73a37b2e3797b48f1300d66cda..583bef7d39cfa96ec1909fd135e67dafbd1f5bf2 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'e-mail Διαχειριστών';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Όνομα Administrator';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP θύρα';
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index ef34493c9daed786fa16f342b056de52c3b58234..f43603f6b64eb541b28c935d10c6d0efa2204db1 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail';
 $wb["monitor_key_txt"] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrator\'s name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index 043c52cfddc3b983f8d53b8f0bdeae6b5fa24b8f..f788117fd41376f357bd5a235e401a333e7006c0 100755
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -40,6 +40,8 @@ $wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzon
 $wb['mailmailinglist_link_txt'] = 'Vínculo a la lista de correos en la lista de la Lista de correos';
 $wb['mailmailinglist_url_txt'] = 'URL a la lista de correos';
 $wb['maintenance_mode_txt'] = 'Modo de mantenimiento';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['min_password_length_txt'] = 'Longitud mínima de la contraseña';
 $wb['min_password_strength_txt'] = 'Fortaleza mínima de la contraseña';
 $wb['monitor_key_txt'] = 'Palabra clave del Monitor';
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index c0972c49d87434a1ee1425df1258c4d9d759c612..9def05e14a764d20a6d6ea770c8e882b7c256489 100644
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index 18f0dbbed4e3dad9d5afc722473f3158f8525633..7150804aafac935eef912d03afb7f539dabd1da1 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'E-mail de l’administrateur';
 $wb['monitor_key_txt'] = 'Mot-clé du moniteur';
 $wb['admin_name_txt'] = 'Nom des administrateurs';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index a7735647b17077ee3c84639d791fb1057959f3bc..21b79530356a62c17705d2569cf3a36d6f227592 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL mailing liste';
 $wb['admin_mail_txt'] = 'e-mail administratora';
 $wb['admin_name_txt'] = 'Ime administratora';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index cee497fe19daec3e77a93771dcddd9bca237eb63..8ef0acdeaec87acb75158ad0bc9eae1e23a4d57a 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_name_txt'] = 'Administrators name';
 $wb['enable_custom_login_txt'] = 'Allow custom login name';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index 344185b84db08846103736929e6a8e341aa60799..5e76d45bf7e90d3f30a81db94597400aacb988a0 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 311b7c957c4f813008dfd9654cd6675f82d5a8b0..85464c3739f2249fb06a8380c21f85d071ab0a6c 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'Mailing list URL';
 $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index aa5cc6a7a3e69963e8204e22aff4ff6f2fc756e9..744db787b80e81c5d8eb13855eabc4226e59d85c 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index 44a58b7646e09c8fc06c112f3c1aa19dbeb9a7b4..f4b778d3379d3d470f40ca647611cc9af2382066 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -32,6 +32,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index a809251ec1bb6d301742d7f0f2c216db7a8f2f00..95bf2f6ffce9898fc1116991a4cd2bd7ed3b7563 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -37,6 +37,8 @@ $wb['vhost_subdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak
 $wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web';
 $wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty aliasdomen.';
 $wb['maintenance_mode_txt'] = 'Tryb serwisowy';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyłania powiadomień systemowych';
 $wb['smtp_host_txt'] = 'Host SMTP';
 $wb['smtp_port_txt'] = 'Port SMTP';
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index 6fc26344c002abc772de985e3a2b835fad1d5b94..faaebeca2aa28bc833e1773c223d790494cf5c87 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index 2a39a454e8cde25155f4e6cbf2c0abfd9212a692..e6ed186de75edfb6df10b17437646e42d57f161b 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index baed497b0eb238c8e3709656bbabc5a0842711c7..792628d49263bbf8b226db6f8f1a1e7cbe6f63b8 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL почтовой рассылки';
 $wb['admin_mail_txt'] = 'E-mail администратора';
 $wb['admin_name_txt'] = 'Имя администратора';
 $wb['maintenance_mode_txt'] = 'Режим технического бслуживания';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Использовать SMTP для отправки системных сообщений';
 $wb['smtp_host_txt'] = 'Хост SMTP';
 $wb['smtp_port_txt'] = 'Порт SMTP';
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index 74ae16734fcf6936765dc7b6f59eab95a86a8f23..8f6c9a63f0fdca302c714636ea7a6752e8e40bb6 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administratörens epostadress';
 $wb['monitor_key_txt'] = 'Bevakning nyckelord';
 $wb['admin_name_txt'] = 'Administratörens namn';
 $wb['maintenance_mode_txt'] = 'Underhållsläge';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail';
 $wb['smtp_host_txt'] = 'SMTP-värd';
 $wb['smtp_port_txt'] = 'SMTP-port';
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index 90418e87d5562c20909e541fa9bcfcdf0fc1f0db..2ea9666db5f22d7879d003a051d7071d942059e9 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail';
 $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['admin_name_txt'] = 'Administrators name';
 $wb['maintenance_mode_txt'] = 'Maintenance Mode';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
 $wb['smtp_host_txt'] = 'SMTP host';
 $wb['smtp_port_txt'] = 'SMTP port';
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index 3ef8e26875e8b9bb38cf765a9c226e53ab62c220..0ccf846c1cacbdf488fd9fd3bfe8b784987ee0f0 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Yönetici E-posta Adresi';
 $wb['monitor_key_txt'] = 'Ä°zlenecek Kelime';
 $wb['admin_name_txt'] = 'Yönetici Adı';
 $wb['maintenance_mode_txt'] = 'Bakım Kipi';
+$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance';
+$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.';
 $wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin';
 $wb['smtp_host_txt'] = 'SMTP Sunucusu';
 $wb['smtp_port_txt'] = 'SMTP Kapısı';
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 45bdfcd2758b8a757f12b589e7ded692b1f284a5..00debd66dcee3cd0dd197c247081e6a15092a564 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -113,6 +113,12 @@
                     {tmpl_var name='maintenance_mode'}
                 </div>
             </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">{tmpl_var name='maintenance_mode_exclude_ips_txt'}</label>
+                <div class="col-sm-9">
+                    <input type="text" name="maintenance_mode_exclude_ips" id="maintenance_mode_exclude_ips" value="{tmpl_var name='maintenance_mode_exclude_ips'}" class="form-control" />
+                </div>
+            </div>
 			
 			<tmpl_if name="msg">
                 <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
diff --git a/interface/web/login/index.php b/interface/web/login/index.php
index 47030e438d8b6e8fca07394519736b72e3a10119..b5d5abc27bcad7a3f42b328709ade27e6ec1c7c3 100644
--- a/interface/web/login/index.php
+++ b/interface/web/login/index.php
@@ -48,9 +48,8 @@ $app->load_language_file('web/login/lib/lang/'.$conf["language"].'.lng');
 // Maintenance mode
 $maintenance_mode = false;
 $maintenance_mode_error = '';
-$app->uses('ini_parser,getconf');
 $server_config_array = $app->getconf->get_global_config('misc');
-if($server_config_array['maintenance_mode'] == 'y'){
+if($app->is_under_maintenance()) {
 	$maintenance_mode = true;
 	$maintenance_mode_error = $app->lng('error_maintenance_mode');
 }
@@ -208,7 +207,7 @@ if(count($_POST) > 0) {
 			if($user) {
 				if($user['active'] == 1) {
 					// Maintenance mode - allow logins only when maintenance mode is off or if the user is admin
-					if(!$maintenance_mode || $user['typ'] == 'admin'){
+					if(!$app->is_under_maintenance() || $user['typ'] == 'admin'){
 						
 						// User login right, so attempts can be deleted
 						$sql = "DELETE FROM `attempts_login` WHERE `ip`=?";