diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook index 967cf508..c4f54df4 100644 --- a/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook +++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook @@ -19,6 +19,9 @@ // d'apparitions égal à 1 ... ), + 'use_pwgen' => [booléen], // Utiliser pwgen pour la génération du mot de passe + 'pwgen_path' => "/path/to/pwgen", + 'pwgen_opts' => "[options à passer à pwgen]", 'verify' => [booléen], // Activation de l'outil de vérification du mot de passe 'viewHash' => [booléen], // Activation de l'outil de visualisation du mot de passe haché 'mail' => array( // Configuration de l'envoi du mot de passe par mail @@ -84,6 +87,29 @@ + + use_pwgen + + Booléen définissant si la commande pwgen doit être + utilisé pour générer le mot de passe. + + + + + pwgen_path + + Chemin d'accès au binaire pwgen. + (Par défaut : pwgen). + + + + + pwgen_opts + + Options à passer à la commande pwgen. + + + verify diff --git a/public_html/includes/class/class.LSformElement_password.php b/public_html/includes/class/class.LSformElement_password.php index 23ac33a6..d810a61c 100644 --- a/public_html/includes/class/class.LSformElement_password.php +++ b/public_html/includes/class/class.LSformElement_password.php @@ -165,6 +165,20 @@ class LSformElement_password extends LSformElement { } function generatePassword($params=NULL) { + if ($params['html_options']['use_pwgen']) { + $args=(isset($params['html_options']['pwgen_opts'])?$params['html_options']['pwgen_opts']:''); + $len=(isset($params['html_options']['lenght'])?$params['html_options']['lenght']:8); + $bin=(isset($params['html_options']['pwgen_path'])?$params['html_options']['pwgen_path']:'pwgen'); + $cmd="$bin ".escapeshellcmd($args)." $len 1"; + exec($cmd,$ret,$retcode); + LSdebug("Generate password using pwgen. Cmd : '$cmd' / Return code : $retcode / Return : ".print_r($ret,1)); + if ($retcode==0 && count($ret)>0) { + return $ret[0]; + } + else { + LSerror :: addErrorCode('LSformElement_password_03'); + } + } return generatePassword($params['html_options']['chars'],$params['html_options']['lenght']); } @@ -329,5 +343,6 @@ _("LSformElement_password : No contact mail available to send password.") LSerror :: defineError('LSformElement_password_02', _("LSformElement_password : Contact mail invalid (%{mail}). Can't send password.") ); - -?> +LSerror :: defineError('LSformElement_password_03', +_("LSformElement_password : Fail to exec pwgen. Check it's correctly installed.") +);