diff --git a/actions/admin/settings/110.accounts.php b/actions/admin/settings/110.accounts.php
index ab5ea43f..6b3dc67c 100644
--- a/actions/admin/settings/110.accounts.php
+++ b/actions/admin/settings/110.accounts.php
@@ -38,6 +38,14 @@ return array(
'default' => false,
'save_method' => 'storeSettingField',
),
+ 'login_domain_login' => array(
+ 'label' => $lng['serversettings']['login_domain_login'],
+ 'settinggroup' => 'login',
+ 'varname' => 'domain_login',
+ 'type' => 'bool',
+ 'default' => false,
+ 'save_method' => 'storeSettingField',
+ ),
'login_maxloginattempts' => array(
'label' => $lng['serversettings']['maxloginattempts'],
'settinggroup' => 'login',
diff --git a/index.php b/index.php
index fc145417..afa59e18 100644
--- a/index.php
+++ b/index.php
@@ -49,7 +49,44 @@ if($action == 'login')
}
else
{
- $is_admin = true;
+ if((int)$settings['login']['domain_login'] == 1)
+ {
+ /**
+ * check if the customer tries to login with a domain, #374
+ */
+ $domainname = $idna_convert->encode(preg_replace(Array('/\:(\d)+$/', '/^https?\:\/\//'), '', $loginname));
+ $row2 = $db->query_first("SELECT `customerid` FROM `".TABLE_PANEL_DOMAINS."` WHERE `domain` = '".$db->escape($domainname)."'");
+
+ if(isset($row2['customerid']) && $row2['customerid'] > 0)
+ {
+ $loginname = getCustomerDetail($row2['customerid'], 'loginname');
+
+ if($loginname !== false)
+ {
+ $row3 = $db->query_first("SELECT `loginname` AS `customer` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `loginname`='" . $db->escape($loginname) . "'");
+
+ if($row3['customer'] == $loginname)
+ {
+ $table = "`" . TABLE_PANEL_CUSTOMERS . "`";
+ $uid = 'customerid';
+ $adminsession = '0';
+ $is_admin = false;
+ }
+ }
+ else
+ {
+ $is_admin = true;
+ }
+ }
+ else
+ {
+ $is_admin = true;
+ }
+ }
+ else
+ {
+ $is_admin = true;
+ }
}
if(hasUpdates($version) && $is_admin == false)
diff --git a/install/froxlor.sql b/install/froxlor.sql
index 88a1a1b7..42cf1a1e 100644
--- a/install/froxlor.sql
+++ b/install/froxlor.sql
@@ -462,7 +462,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (18, 'system', 'vmail_homedir', '/var/customers/mail/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (19, 'system', 'bindconf_directory', '/etc/bind/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (20, 'system', 'bindreload_command', '/etc/init.d/bind9 reload');
-INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.14-svn5');
+INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.14-svn6');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (23, 'system', 'hostname', 'SERVERNAME');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (24, 'login', 'maxloginattempts', '3');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (25, 'login', 'deactivatetime', '900');
@@ -594,6 +594,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (152, 'system', 'mod_fcgid_defaultini_ownvhost', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (153, 'system', 'awstats_icons', '/usr/share/awstats/icon/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (154, 'system', 'ssl_cert_chainfile', '');
+INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (155, 'login', 'domain_login', '0');
# --------------------------------------------------------
diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php
index 55916d2f..570669fb 100644
--- a/install/updates/froxlor/0.9/update_0.9.inc.php
+++ b/install/updates/froxlor/0.9/update_0.9.inc.php
@@ -1150,3 +1150,16 @@ if(isFroxlorVersion('0.9.14-svn4'))
updateToVersion('0.9.14-svn5');
}
+
+if(isFroxlorVersion('0.9.14-svn5'))
+{
+ showUpdateStep("Updating from 0.9.14-svn5 to 0.9.14-svn6", false);
+
+ $update_allow_domain_login = isset($_POST['update_allow_domain_login']) ? (int)$_POST['update_allow_domain_login'] : '0';
+
+ showUpdateStep("Adding domain-login switch to the settings");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('login', 'domain_login', '".(int)$update_allow_domain_login."');");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.14-svn6');
+}
diff --git a/install/updates/preconfig/0.9/preconfig_0.9.inc.php b/install/updates/preconfig/0.9/preconfig_0.9.inc.php
index 3cafbe0e..c17b7d5e 100644
--- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php
+++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php
@@ -334,4 +334,13 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version)
eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
}
}
+
+ if(versionInUpdate($current_version, '0.9.14-svn6'))
+ {
+ $has_preconfig = true;
+ $description = 'You can now allow customers to use any of their domains as username for the login.';
+ $question = 'Do you want to enable domain-login for all customers?: ';
+ $question.= makeyesno('update_allow_domain_login', '1', '0', '0');
+ eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
+ }
}
diff --git a/lib/tables.inc.php b/lib/tables.inc.php
index 4b2494de..ff2bb4ed 100644
--- a/lib/tables.inc.php
+++ b/lib/tables.inc.php
@@ -72,7 +72,7 @@ define('PACKAGE_ENABLED', 2);
// VERSION INFO
-$version = '0.9.14-svn5';
+$version = '0.9.14-svn6';
$dbversion = '2';
$branding = '';
diff --git a/lng/english.lng.php b/lng/english.lng.php
index 5882599d..871486ac 100644
--- a/lng/english.lng.php
+++ b/lng/english.lng.php
@@ -1510,4 +1510,7 @@ $lng['admin']['ipsandports']['ssl_cert_chainfile'] = 'Path to the SSL Certificat
$lng['admin']['ipsandports']['docroot']['title'] = 'Custom docroot (empty = point to Froxlor)';
$lng['admin']['ipsandports']['docroot']['description'] = 'You can define a custom document-root (the destination for a request) for this ip/port combination here.
ATTENTION: Please be careful with what you enter here!';
+// ADDED IN FROXLOR 0.9.14-svn6
+$lng['serversettings']['login_domain_login'] = 'Allow login with domains';
+
?>
diff --git a/lng/german.lng.php b/lng/german.lng.php
index 0655fdd3..05245d36 100644
--- a/lng/german.lng.php
+++ b/lng/german.lng.php
@@ -1493,4 +1493,7 @@ $lng['admin']['ipsandports']['ssl_cert_chainfile'] = 'Pfad zu dem SSL Certificat
$lng['admin']['ipsandports']['docroot']['title'] = 'Benutzerdefinierter Docroot (leer = zeige auf Froxlor)';
$lng['admin']['ipsandports']['docroot']['description'] = 'Hier kann ein benutzerdefinierter Document-Root (der Zeilordner für einen Zugriff) für diese IP/Port Kombination gesetzt werden.
ACHTUNG: Bitte überlege vorher, welchen Pfad du hier angibst!';
+// ADDED IN FROXLOR 0.9.14-svn6
+$lng['serversettings']['login_domain_login'] = 'Erlaube Anmeldung mit Domains';
+
?>