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

View file

@ -19,7 +19,7 @@ import netaddr
import time import time
import annuaires_pg as annuaires import annuaires_pg as annuaires
import config, config.impression, iptools, ip6tools, cPickle, config_mail import config, config.impression, iptools, ip6tools, cPickle, config_mail
from chgpass import chgpass from chgpass import change_password
from affich_tools import coul, prompt, cprint from affich_tools import coul, prompt, cprint
from email_tools import send_email from email_tools import send_email
from syslog import openlog, closelog, syslog from syslog import openlog, closelog, syslog
@ -1951,7 +1951,7 @@ class BaseProprietaire(BaseClasseCrans):
args+= self._data['uid'][0] args+= self._data['uid'][0]
r = prompt(u"Attribuer tout de suite un mot de passe ? [O/N]", "O") r = prompt(u"Attribuer tout de suite un mot de passe ? [O/N]", "O")
if r == 'O' or r == 'o': if r == 'O' or r == 'o':
chgpass(self.dn) change_password(self.dn)
else: else:
ret += coul(u' Il faudra penser à attribuer un mot de passe\n', 'jaune') ret += coul(u' Il faudra penser à attribuer un mot de passe\n', 'jaune')