From 47166fc404efd1315efd927b0c8eb3529d0adef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Mon, 14 Apr 2014 19:48:34 +0200 Subject: [PATCH] =?UTF-8?q?[chgpass]=20ldap=5Fcrans=20d=C3=A9pend=20aussi?= =?UTF-8?q?=20de=20chgpass,=20et=20cracklib=20n'est=20pas=20partout.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * On fait donc un import plus lazy et sécurisé --- gestion/chgpass.py | 29 ++++++++++++++++++----------- gestion/ldap_crans.py | 4 ++-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gestion/chgpass.py b/gestion/chgpass.py index e4da6ef2..86bbbf96 100755 --- a/gestion/chgpass.py +++ b/gestion/chgpass.py @@ -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 diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index c036947b..c25573e4 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -19,7 +19,7 @@ import netaddr import time import annuaires_pg as annuaires 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 email_tools import send_email from syslog import openlog, closelog, syslog @@ -1951,7 +1951,7 @@ class BaseProprietaire(BaseClasseCrans): args+= self._data['uid'][0] r = prompt(u"Attribuer tout de suite un mot de passe ? [O/N]", "O") if r == 'O' or r == 'o': - chgpass(self.dn) + change_password(self.dn) else: ret += coul(u' Il faudra penser à attribuer un mot de passe\n', 'jaune')