[chgpass] ldap_crans dépend aussi de chgpass, et cracklib n'est pas partout.

* On fait donc un import plus lazy et sécurisé
This commit is contained in:
Pierre-Elliott Bécue 2014-04-14 19:48:34 +02:00
parent 1dc52d6fa0
commit 47166fc404
2 changed files with 20 additions and 13 deletions

View file

@ -19,7 +19,6 @@ import gestion.config as config
import config.password
import getpass
import argparse
import cracklib
import gestion.affich_tools as affich_tools
import lc_ldap.shortcuts
import lc_ldap.attributs
@ -103,16 +102,24 @@ def check_password(password, no_cracklib=False, dialog=False):
if not problem:
try:
# Le mot vient-il du dico (à améliorer, on voudrait pouvoir préciser
# la rigueur du test) ?
password = cracklib.VeryFascistCheck(password)
return True, ""
except ValueError as e:
if not dialog:
affich_tools.cprint(str(e).decode(), "rouge")
else:
msg += affich_tools.coul(str(e).decode(), "rouge", dialog=dialog)
return False, msg
import cracklib
except ImportError:
affichtools.cprint("Attention : la librairie python cracklib n'est pas accessible sur ce serveur.", "rouge")
if sys.modules.get('cracklib', ''):
try:
# Le mot vient-il du dico (à améliorer, on voudrait pouvoir préciser
# la rigueur du test) ?
password = cracklib.VeryFascistCheck(password)
return True, msg
except ValueError as e:
if not dialog:
affich_tools.cprint(str(e).decode(), "rouge")
else:
msg += affich_tools.coul(str(e).decode(), "rouge", dialog=dialog)
return False, msg
else:
return True, msg
else:
return False, msg