#!/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 # # Récupèrera l'adresse mail dans la vcard du compte # Le fichier de log logfile='/var/log/jabber/inscriptions.log' ######################################################################## ######################################################################## # Si on a reçu les champs du formulaire # -> l'utilisateur a envoyé 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, sys, fonctions, commands from datetime import datetime form = cgi.FieldStorage() print "content-type: text/html" print erreur = '' host = os.environ['REMOTE_HOST'] html = open('/var/www/jabber/template').read() new_password_form = open('./templates/new_password_form.tpl').read() await_new_password = open('./templates/await_new_password.tpl').read() mail_template = open('./templates/mail.tpl').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='' try : mail = form['mail'].value mail = string.lower(mail) col_mail = 'FFFFFF' 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: r, msg = commands.getstatusoutput('/usr/sbin/ejabberdctl %s%s%s' % ('vcard-get', commands.mkarg(user), ' jabber.crans.org EMAIL USERID')) try: # Paranoia : on loggue file=open(logfile,'a') file.write("%s %s %s %s <%s>\n" % (datetime.now(), host, user, mail)) file.close() except: pass if r == 0 and msg == mail: fn = commands.getoutput('/usr/sbin/ejabberdctl %s%s%s' % ('vcard-get', commands.mkarg(user), ' jabber.crans.org FN')) fonctions.sendmail(mail_template % locals()) # ecrire la confirmation print html % (await_new_password % locals()) sys.exit(0) else: erreur = '

Erreur : Utilisateur inconnu ou adresse mail erronée

' mail = '' user = '' # on affiche le formulaire print html % (new_password_form % locals())