diff --git a/actions/admin/settings/110.accounts.php b/actions/admin/settings/110.accounts.php
index 4d9a7a84..ab5ea43f 100644
--- a/actions/admin/settings/110.accounts.php
+++ b/actions/admin/settings/110.accounts.php
@@ -62,6 +62,15 @@ return array(
'default' => 0,
'save_method' => 'storeSettingField',
),
+ 'panel_password_regex' => array(
+ 'label' => $lng['serversettings']['panel_password_regex'],
+ 'settinggroup' => 'panel',
+ 'varname' => 'password_regex',
+ 'type' => 'string',
+ 'default' => '',
+ /* 'plausibility_check_method' => 'checkValidRegEx', */
+ 'save_method' => 'storeSettingField',
+ ),
'customer_accountprefix' => array(
'label' => $lng['serversettings']['accountprefix'],
'settinggroup' => 'customer',
diff --git a/install/froxlor.sql b/install/froxlor.sql
index 4b820ba6..140908d8 100644
--- a/install/froxlor.sql
+++ b/install/froxlor.sql
@@ -452,7 +452,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.10');
+INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.11-svn1');
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');
@@ -573,7 +573,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (141, 'customredirect', 'default', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (142, 'system', 'dns_createmailentry', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (143, 'system', 'froxlordirectlyviahostname', '0');
-
+INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (144, 'panel', 'password_regex', '');
# --------------------------------------------------------
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 dfd49a9a..1afb24e5 100644
--- a/install/updates/froxlor/0.9/update_0.9.inc.php
+++ b/install/updates/froxlor/0.9/update_0.9.inc.php
@@ -884,3 +884,16 @@ if(isFroxlorVersion('0.9.10-svn2'))
updateToVersion('0.9.10');
}
+
+if(isFroxlorVersion('0.9.10'))
+{
+ showUpdateStep("Updating from 0.9.10 to 0.9.11-svn1", false);
+
+ $update_pwdregex = isset($_POST['update_pwdregex']) ? $_POST['update_pwdregex'] : '';
+
+ showUpdateStep("Adding new settings");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'password_regex', '".$db->escape($update_pwdregex)."');");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.11-svn1');
+}
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 43433a16..8f61df08 100644
--- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php
+++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php
@@ -220,4 +220,13 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version)
$question.= makeyesno('update_directlyviahostname', '1', '0', '0');
eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
}
+
+ if(versionInUpdate($current_version, '0.9.11-svn1'))
+ {
+ $has_preconfig = true;
+ $description = 'It is possible to enhance security with setting a regular expression to force your customers to enter more complex passwords.';
+ $question = 'Enter a regular expression to force a higher password complexity (leave empty for none): ';
+ $question.= '';
+ eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
+ }
}
diff --git a/lib/functions/validate/function.checkValidRegEx.php b/lib/functions/validate/function.checkValidRegEx.php
new file mode 100644
index 00000000..00731bfa
--- /dev/null
+++ b/lib/functions/validate/function.checkValidRegEx.php
@@ -0,0 +1,32 @@
+ (2010-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Functions
+ * @version $Id$
+ */
+
+/**
+ * validates a given regex
+ *
+ * @param string $regex regex to validate
+ *
+ * @return boolean
+ */
+function checkValidRegEx($regex = null)
+{
+ if($regex == null || $regex == '') {
+ return true;
+ }
+
+
+}
diff --git a/lib/functions/validate/function.validatePassword.php b/lib/functions/validate/function.validatePassword.php
index f2da31b0..060c00bb 100644
--- a/lib/functions/validate/function.validatePassword.php
+++ b/lib/functions/validate/function.validatePassword.php
@@ -39,5 +39,14 @@ function validatePassword($password = null)
);
}
+ if ($settings['panel']['password_regex'] != '') {
+ $password = validate(
+ $password,
+ $settings['panel']['password_regex'],
+ $settings['panel']['password_regex'],
+ 'notrequiredpasswordcomplexity'
+ );
+ }
+
return $password;
}
diff --git a/lib/tables.inc.php b/lib/tables.inc.php
index a118f4c9..cd724a5a 100644
--- a/lib/tables.inc.php
+++ b/lib/tables.inc.php
@@ -72,7 +72,7 @@ define('PACKAGE_ENABLED', 2);
// VERSION INFO
-$version = '0.9.10';
+$version = '0.9.11-svn1';
$dbversion = '2';
$branding = '';
diff --git a/lng/english.lng.php b/lng/english.lng.php
index a705c838..afcb6f25 100644
--- a/lng/english.lng.php
+++ b/lng/english.lng.php
@@ -1438,4 +1438,9 @@ $lng['admin']['webserver_group'] = 'Webserver group-name';
// ADDED IN FROXLOR 0.9.10
$lng['serversettings']['froxlordirectlyviahostname'] = 'Access Froxlor directly via the hostname';
+// ADDED IN FROXLOR 0.9.11-svn1
+$lng['serversettings']['panel_password_regex']['title'] = 'Regular expression for passwords';
+$lng['serversettings']['panel_password_regex']['description'] = 'Here you can set a regular expression for passwords-complexity.
Empty = no specific requirement
(regex help/examples)';
+$lng['error']['notrequiredpasswordcomplexity'] = 'The specified password-complexity was not satisfied (regex: %s)';
+
?>
diff --git a/lng/german.lng.php b/lng/german.lng.php
index a976d2ac..4784f0d1 100644
--- a/lng/german.lng.php
+++ b/lng/german.lng.php
@@ -1421,4 +1421,9 @@ $lng['admin']['webserver_group'] = 'Gruppenname Webserver';
// ADDED IN FROXLOR 0.9.10
$lng['serversettings']['froxlordirectlyviahostname'] = 'Froxlor direkt über den Hostnamen erreichbar machen';
+// ADDED IN FROXLOR 0.9.11-svn1
+$lng['serversettings']['panel_password_regex']['title'] = 'Regulärer Ausdruck für Passwörter';
+$lng['serversettings']['panel_password_regex']['description'] = 'Hier können Sie einen regulären Ausdruck für Passwort-Komplexität festlegen.
Leer = keine bestimmten Anforderungen
(RegEx Hilfe/Beispiele)';
+$lng['error']['notrequiredpasswordcomplexity'] = 'Die vorgegebene Passwort-Komplexität wurde nicht erfüllt (Regex: %s)';
+
?>