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)'; + ?>