Unicode.
darcs-hash:20060404224746-68412-c02859958ebb6c759a67a40516661d2ed40b1a7a.gz
This commit is contained in:
parent
bf58f3db6c
commit
fffbed84f9
6 changed files with 35 additions and 35 deletions
|
@ -39,8 +39,8 @@ def decode64(chaine):
|
|||
return chaine.decode('utf8','ignore')
|
||||
|
||||
def chgpass(dn) :
|
||||
cprint("""Le nouveau mot de passe doit comporter au minimum 6 caractères.
|
||||
Il ne doit pas être basé sur un mot du dictionnaire.""",'jaune')
|
||||
cprint(u"""Le nouveau mot de passe doit comporter au minimum 6 caractères.
|
||||
Il ne doit pas être basé sur un mot du dictionnaire.""", 'jaune')
|
||||
print "Il est conseillé d'utiliser une combinaison de minuscules, majuscules,\nde chiffres et d'au moins un caractère spécial."
|
||||
print "Le mot de passe tapé ne sera pas écrit à l'écran."
|
||||
print "Taper Ctrl-D pour abandonner"
|
||||
|
@ -52,14 +52,14 @@ Il ne doit pas
|
|||
### Test du mdp
|
||||
## 1 - Longueur
|
||||
if len(mdp) < 6 :
|
||||
cprint('Mot de passe trop court','rouge')
|
||||
cprint(u'Mot de passe trop court', 'rouge')
|
||||
continue
|
||||
|
||||
## 2 - Empeche les mots de passe non ASCII
|
||||
try:
|
||||
mdp = mdp.encode('ascii')
|
||||
except UnicodeDecodeError:
|
||||
cprint('Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
cprint(u'Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
'rouge')
|
||||
continue
|
||||
|
||||
|
@ -80,41 +80,41 @@ Il ne doit pas
|
|||
autres += 4
|
||||
if len(mdp) < 16 - minuscules - majuscules - chiffres - autres or \
|
||||
(not majuscules and not minuscules) :
|
||||
cprint('Mot de passe trop simple.','rouge')
|
||||
cprint(u'Mot de passe trop simple.', 'rouge')
|
||||
continue
|
||||
|
||||
## 4 - Cracklib
|
||||
test = commands.getoutput("echo '%s' | /usr/sbin/crack_testlib" % mdp)
|
||||
if test.split(':')[-1] != ' ok' :
|
||||
commentaire = {
|
||||
' it does not contain enough DIFFERENT characters' : 'Il y a trop de caractères identiques.' ,
|
||||
' it is based on a dictionary word' : 'Le mot de passe est basé sur un mot du dictionnaire' ,
|
||||
' it is too simplistic/systematic' : 'Le mot de passe est trop simple/répétitif'
|
||||
' it does not contain enough DIFFERENT characters': u'Il y a trop de caractères identiques.' ,
|
||||
' it is based on a dictionary word': u'Le mot de passe est basé sur un mot du dictionnaire' ,
|
||||
' it is too simplistic/systematic': u'Le mot de passe est trop simple/répétitif'
|
||||
}.get(test.split(':')[-1],test.split(':')[-1])
|
||||
cprint(commentaire,'rouge')
|
||||
cprint(commentaire, 'rouge')
|
||||
continue
|
||||
|
||||
### On redemande le mot de passe
|
||||
mdp1 = getpass.getpass('Retaper mot de passe : ')
|
||||
if mdp != mdp1 :
|
||||
cprint('Les deux mots de passe entrés sont différents, réesayer','rouge')
|
||||
cprint(u'Les deux mots de passe entrés sont différents, réesayer', 'rouge')
|
||||
continue
|
||||
|
||||
break
|
||||
|
||||
# Changement mdp
|
||||
if os.system("/usr/bin/ldappasswd -H '%s' -x -D '%s' -w '%s' '%s' -s '%s' > /dev/null" % (uri, ldap_auth_dn, ldap_password, dn, mdp) ):
|
||||
cprint('Erreur lors du changement de mot de passe','rouge')
|
||||
cprint(u'Erreur lors du changement de mot de passe', 'rouge')
|
||||
syslog.syslog("LDAP password changed for dn=%s" % dn)
|
||||
else :
|
||||
cprint('Changement effectué avec succès','vert')
|
||||
cprint(u'Changement effectué avec succès', u'vert')
|
||||
|
||||
except KeyboardInterrupt :
|
||||
cprint('\nAbandon','rouge')
|
||||
cprint(u'\nAbandon', 'rouge')
|
||||
pass
|
||||
except EOFError :
|
||||
# Un Ctrl-D
|
||||
cprint('\nAbandon','rouge')
|
||||
cprint(u'\nAbandon', 'rouge')
|
||||
pass
|
||||
|
||||
if __name__ == '__main__' :
|
||||
|
@ -134,11 +134,11 @@ if __name__ == '__main__' :
|
|||
self_mode = False
|
||||
for c in login[:] :
|
||||
if not c.isalnum() and not c=='-' :
|
||||
cprint('Login incorrect','rouge')
|
||||
cprint(u'Login incorrect', 'rouge')
|
||||
sys.exit(1)
|
||||
|
||||
if getuser() == login :
|
||||
cprint('Utiliser passwd pour changer son propre mot de passe','rouge')
|
||||
cprint(u'Utiliser passwd pour changer son propre mot de passe', 'rouge')
|
||||
sys.exit(2)
|
||||
|
||||
if self_mode :
|
||||
|
@ -146,24 +146,24 @@ if __name__ == '__main__' :
|
|||
else :
|
||||
s = commands.getoutput("/usr/bin/ldapsearch -D cn=readonly,dc=crans,dc=org -y/etc/ldap/readonly -x -LLL '(&(objectClass=posixAccount)(uid=%s))' dn nom prenom droits | grep -v MultiMachines" % login).strip()
|
||||
if not s :
|
||||
cprint('Login non trouvé dans la base LDAP','rouge')
|
||||
cprint(u'Login non trouvé dans la base LDAP', 'rouge')
|
||||
sys.exit(3)
|
||||
|
||||
# Ca a l'air bon
|
||||
if s.find('\n\n') != -1 :
|
||||
# Plusieurs trouvé : pas normal
|
||||
cprint('Erreur lors de la recherche du login : plusieurs occurences !','rouge')
|
||||
cprint(u'Erreur lors de la recherche du login : plusieurs occurences !', 'rouge')
|
||||
sys.exit(4)
|
||||
|
||||
s = s.split('\n')
|
||||
try :
|
||||
dn = s[0].split()[1]
|
||||
if len(s) == 2 :
|
||||
cprint("Changement du mot de passe du club %s "%decode64(' '.join(s[1].split()[1:])),'vert')
|
||||
cprint(u"Changement du mot de passe du club %s "%decode64(' '.join(s[1].split()[1:])), 'vert')
|
||||
else :
|
||||
cprint("Changement du mot de passe de %s %s " % ( s[2].split()[1], s[1].split()[1] ),'vert')
|
||||
cprint(u"Changement du mot de passe de %s %s " % ( s[2].split()[1], s[1].split()[1] ), 'vert')
|
||||
except :
|
||||
cprint('Erreur lors de la recherche du login','rouge')
|
||||
cprint(u'Erreur lors de la recherche du login', 'rouge')
|
||||
sys.exit(5)
|
||||
|
||||
if self_mode :
|
||||
|
@ -174,10 +174,10 @@ if __name__ == '__main__' :
|
|||
try :
|
||||
resultat = s.split(':')[1].strip()
|
||||
except :
|
||||
cprint("Erreur lors de l'authentification",'rouge')
|
||||
cprint(u"Erreur lors de l'authentification", 'rouge')
|
||||
sys.exit(7)
|
||||
if resultat != dn :
|
||||
cprint({ 'Invalid credentials (49)' : 'Mot de passe invalide' }.get(resultat,resultat),'rouge')
|
||||
cprint({ 'Invalid credentials (49)': u'Mot de passe invalide' }.get(resultat, resultat), 'rouge')
|
||||
sys.exit(8)
|
||||
|
||||
elif len(s) > 3 and os.getuid()!=0 :
|
||||
|
@ -196,7 +196,7 @@ Tentative de changement du mot de passe de %s par %s.
|
|||
conn = smtplib.SMTP('localhost')
|
||||
conn.sendmail(From, To , mail )
|
||||
conn.quit()
|
||||
cprint('Impossible de changer le mot de passe de cet adhérent : compte privilégié','rouge')
|
||||
cprint(u'Impossible de changer le mot de passe de cet adhérent : compte privilégié', 'rouge')
|
||||
sys.exit(6)
|
||||
|
||||
# Finalement !
|
||||
|
|
|
@ -129,7 +129,7 @@ class gen_config :
|
|||
def reconfigure(self) :
|
||||
""" Génère les fichiers puis redémarre le service
|
||||
si la génération c'est bien passée """
|
||||
cprint('Reconfiguration %s :' % self.__str__() , 'gras')
|
||||
cprint(u'Reconfiguration %s :' % self.__str__(), 'gras')
|
||||
if self.gen_conf() :
|
||||
return self.restart()
|
||||
else : return 1
|
||||
|
|
|
@ -15,7 +15,7 @@ class del_user :
|
|||
def __init__(self,args) :
|
||||
self.args=args
|
||||
def reconfigure(self) :
|
||||
cprint('Archivage fichiers utilisateur','gras')
|
||||
cprint(u'Archivage fichiers utilisateur', 'gras')
|
||||
for args in self.args :
|
||||
anim('\t' + args)
|
||||
try:
|
||||
|
@ -54,7 +54,7 @@ class home:
|
|||
def __init__(self,args) :
|
||||
self.args = args
|
||||
def reconfigure(self) :
|
||||
cprint('Création home','gras')
|
||||
cprint(u'Création home', 'gras')
|
||||
for args in self.args :
|
||||
anim('\t' + args)
|
||||
try:
|
||||
|
@ -99,7 +99,7 @@ class mail_bienvenue :
|
|||
self.mails = mails
|
||||
|
||||
def reconfigure(self) :
|
||||
cprint('Envoi mail de bienvenue','gras')
|
||||
cprint(u'Envoi mail de bienvenue', 'gras')
|
||||
for mail in self.mails :
|
||||
anim('\t' + mail)
|
||||
try:
|
||||
|
@ -122,7 +122,7 @@ class ML_ens :
|
|||
self.mails = mails
|
||||
|
||||
def reconfigure(self) :
|
||||
cprint('Inscription ML-ENS','gras')
|
||||
cprint(u'Inscription ML-ENS', 'gras')
|
||||
for mail in self.mails :
|
||||
anim('\t'+mail)
|
||||
status, output = commands.getstatusoutput("echo '%s' | /usr/sbin/add_members -r - com-ens >/dev/null 2>&1" % mail)
|
||||
|
|
|
@ -152,17 +152,17 @@ class firewall_crans :
|
|||
|
||||
def restart(self):
|
||||
""" Rédémarrage du firewall """
|
||||
cprint(u'Redémarrage firewall','gras')
|
||||
cprint(u'Redémarrage firewall', 'gras')
|
||||
self.start(False)
|
||||
|
||||
def start(self,aff_txt_intro=True) :
|
||||
""" Construction du firewall
|
||||
aff_txt_intro s'occupe uniquement de l'esthétisme
|
||||
"""
|
||||
if aff_txt_intro : cprint('Démarrage firewall','gras')
|
||||
if aff_txt_intro: cprint(u'Démarrage firewall', 'gras')
|
||||
# Préliminaires
|
||||
if not self.__machines() or self.exception_catcher(self.__stop) :
|
||||
cprint("Abandon",'rouge')
|
||||
cprint(u"Abandon", 'rouge')
|
||||
return
|
||||
|
||||
# Initialisation
|
||||
|
@ -179,7 +179,7 @@ class firewall_crans :
|
|||
|
||||
def stop(self):
|
||||
""" Arrête le firewall """
|
||||
cprint("Arręt du firewall",'gras')
|
||||
cprint(u"Arrêt du firewall", 'gras')
|
||||
self.pre_stop_hook()
|
||||
self.exception_catcher(self.__stop)
|
||||
cprint(u"\t -> fin de la procédure d'arrêt",'vert')
|
||||
|
|
|
@ -34,7 +34,7 @@ Subject: %(Subject)s
|
|||
|
||||
def reconfigure(self) :
|
||||
""" Envoi le mail """
|
||||
cprint('Mail de notification de modifications','gras')
|
||||
cprint(u'Mail de notification de modifications', 'gras')
|
||||
a = anim('\tRecherches dans la base',len(self.recherches))
|
||||
|
||||
db = crans_ldap()
|
||||
|
|
|
@ -797,7 +797,7 @@ class crans_ldap:
|
|||
if graphic: from affich_tools import anim, cprint, OK
|
||||
if not self.__machines:
|
||||
# Récolte des données
|
||||
if graphic: cprint('Lecture base LDAP', 'gras')
|
||||
if graphic: cprint(u'Lecture base LDAP', 'gras')
|
||||
# Machines de l'assoce
|
||||
self.__machines = AssociationCrans(self.conn).machines()
|
||||
# Machines des adhérents et clubs de l'année en cours
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue