#!/usr/bin/env python # -*- coding: utf-8 -*- ######################################################################## # Fichier : lostPassword.py # Qu'est-ce que ça fait : génère automatiquement un nouveau mot de passe # et l'envoie à l'utilisateur # # Configuration : # # le répertoire où sont stoqués les fichiers xml des comptes jabber #jabberuserdir='/var/lib/jabber/jabber.crans.org/' # Avec un / à la fin from fonctions import jabberuserdir # Le fichier de log logfile='/var/log/jabber/inscriptions.log' ######################################################################## ######################################################################## # Si on a reçu de champs du formulaire # -> l'utilisateur a envoyer son login et son mail # -> s'ils correspondent bien à un fichier xml # on envoie le mail avec le nouveau mot de passe # -> s'il y a une erreur, on réaffiche le formulaire # Sinon on affiche juste la template du formulaire import os, cgi, string, time, sys, fonctions form = cgi.FieldStorage() print "content-type: text/html" print erreur = '' file=open('/var/www/jabber/template') html=file.read() try : form['traitement'] # Si ne passe pas c'est que la page est donnée sans arguments # Récupération des arguments et test try : user=form['user'].value user=string.lower(user) for i in user[:] : if not i in string.lowercase+string.digits : raise if not user[0] in string.lowercase : raise col_user='FFFFFF' except : col_user='FF0000' user='' filename=jabberuserdir+user+".xml" if user: if not os.path.exists(filename) : erreur+= "Erreur : login inconnu : "+user+"

" col_user='FFFF00' user='' try : mail = form['mail'].value mail = string.lower(mail) col_mail = 'FFFFFF' if user: if not mail == fonctions.XMLMailForUser(user): raise except : erreur+= "Erreur : adresse mail incorecte.

" mail='' col_mail='FF0000' # Fin des tests except : # si ce n'est pas passé : on a pas reçu le formulaire user = '' ; col_user='FFFFFF' mail = '' ; col_mail='FFFFFF' if user and mail: t=time.localtime() timestamp='' for i in [0,1,2,3,4,5] : if t[i]<10 : timestamp += "0%s" % t[i] else : timestamp += "%s" % t[i] timestamp=timestamp[0:8]+"T"+timestamp[8:10]+':'+timestamp[10:12]+':'+timestamp[12:14] newPassword = fonctions.GenPasswd() # enregistrer le nouveau mot de passe fonctions.chgePasswordForUser(user,newPassword) # envoyer un mail fonctions.sendmail(fonctions.parse_file('./templates/mail.tpl', {'mail':mail, 'password':newPassword})) # ecrire la confirmation print html % (fonctions.parse_file('./templates/new_password_confirm.tpl',{'mail':mail})) # Paranoia : on loggue #file=open(logfile,'a') #file.write("%s %s %s %s.%s\n" % (timestamp, os.environ['REMOTE_HOST'], user, prenom, nom) ) #file.close() else: # on affiche le formulaire print html % (fonctions.parse_file('./templates/new_password_form.tpl',{'mail':mail, 'user':user, 'col_user':col_user, 'col_mail':col_mail, 'erreur':erreur}))