[gestion/*.py] Ré-encodage de certains scripts en UTF-8

Ignore-this: dafa22ed56eaf0d816fd089e42672eb5

darcs-hash:20090309212124-0445d-09ac8ae4052b6f333706be1baa1c7f4d94455fd5.gz
This commit is contained in:
Stephane Glondu 2009-03-09 22:21:24 +01:00
parent 7addc503a8
commit cc31727b60
21 changed files with 1351 additions and 1351 deletions

View file

@ -1,5 +1,5 @@
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
"""
Script de changement de mots de passe LDAP
@ -7,14 +7,14 @@ Script de changement de mots de passe LDAP
Utilisation :
* cas 1 : sans arguements par un utlisateur lambda :
changement de son propre mdp
* cas 2 : avec argument par un utilisateur ayant accès
total à la base LDAP (respbats) mais PAS ROOT :
changement du mdp de l'adhérent fourni en argument,
impossibilité de modifier le mdp d'un compte privilégié
* cas 3 : lancé par root : possibilité de modifier
* cas 2 : avec argument par un utilisateur ayant accès
total à la base LDAP (respbats) mais PAS ROOT :
changement du mdp de l'adhérent fourni en argument,
impossibilité de modifier le mdp d'un compte privilégié
* cas 3 : lancé par root : possibilité de modifier
tous les mots de passe LDAP
Copyright (C) Frédéric Pauget
Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
@ -33,17 +33,17 @@ uri = 'ldap://ldap.adm.crans.org'
syslog.openlog('chgpass',syslog.LOG_PID,syslog.LOG_AUTH)
def decode64(chaine):
""" Décode une chaine de caratère utf8/64 et retourne un unicode """
""" Décode une chaine de caratère utf8/64 et retourne un unicode """
try:
return base64.decodestring(chaine).decode('utf8','ignore')
except:
return chaine.decode('utf8','ignore')
def chgpass(dn) :
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."
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"
try :
@ -60,17 +60,17 @@ Il ne doit pas
try:
mdp = mdp.encode('ascii')
except UnicodeEncodeError:
cprint(u'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
## 2bis - On évite une attaque de type injection de code shell
## 2bis - On évite une attaque de type injection de code shell
if "'" in mdp:
cprint(u'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
## 3 - assez de caractères de types différents ?
## 3 - assez de caractères de types différents ?
chiffres = 0
majuscules = 0
minuscules = 0
@ -94,9 +94,9 @@ Il ne doit pas
test = commands.getoutput("echo '%s' | /usr/sbin/crack_testlib" % mdp)
if test.split(':')[-1] != ' ok' :
commentaire = {
' 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'
' 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')
continue
@ -104,7 +104,7 @@ Il ne doit pas
### On redemande le mot de passe
mdp1 = getpass.getpass('Retaper mot de passe : ')
if mdp != mdp1 :
cprint(u'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
@ -114,7 +114,7 @@ Il ne doit pas
cprint(u'Erreur lors du changement de mot de passe', 'rouge')
syslog.syslog("LDAP password changed for dn=%s" % dn)
else :
cprint(u'Changement effectué avec succès', u'vert')
cprint(u'Changement effectué avec succès', u'vert')
except KeyboardInterrupt :
cprint(u'\nAbandon', 'rouge')
@ -125,7 +125,7 @@ Il ne doit pas
pass
if __name__ == '__main__' :
sys.stdout.write('\r \r') # Pour esthétique lors de l'utilisation par sudo
sys.stdout.write('\r \r') # Pour esthétique lors de l'utilisation par sudo
if len(sys.argv) == 1 :
# Changement de son mot de passe
login = getuser()
@ -136,7 +136,7 @@ if __name__ == '__main__' :
print "Changement du mot de passe du compte choisi."
sys.exit(255)
else :
# Changement du mot de passe par un câbleur ou une nounou
# Changement du mot de passe par un câbleur ou une nounou
login = sys.argv[1]
self_mode = False
for c in login[:] :
@ -153,12 +153,12 @@ 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(u'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
# Plusieurs trouvé : pas normal
cprint(u'Erreur lors de la recherche du login : plusieurs occurences !', 'rouge')
sys.exit(4)
@ -174,7 +174,7 @@ if __name__ == '__main__' :
sys.exit(5)
if self_mode :
# Il faut vérifier l'ancien mot de passe
# Il faut vérifier l'ancien mot de passe
ldap_auth_dn = dn
ldap_password = getpass.getpass('Mot de passe actuel : ')
s = commands.getoutput("/usr/bin/ldapwhoami -H '%s' -x -D '%s' -w '%s'" % ( uri, ldap_auth_dn, ldap_password ) ).strip()
@ -188,7 +188,7 @@ if __name__ == '__main__' :
sys.exit(8)
elif len(s) > 3 and os.getuid()!=0 :
# Adhérent avec droits et on est pas root
# Adhérent avec droits et on est pas root
From = 'roots@crans.org'
To = 'roots@crans.org'
mail = """From: Root <%s>
@ -203,7 +203,7 @@ Tentative de changement du mot de passe de %s par %s.
conn = smtplib.SMTP('localhost')
conn.sendmail(From, To , mail )
conn.quit()
cprint(u'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 !