
Ignore-this: e5b71a7f580e1db950bb30d9d7745fbe * une vcard est automatiquement créée avec FN et EMAIL * lostPassword.py envoie un mail aux nounous * images et css plus accessibles darcs-hash:20090809213427-bd074-19f0565242fb93d2051347eb47289e096bce00d9.gz
90 lines
3.1 KiB
Python
Executable file
90 lines
3.1 KiB
Python
Executable file
#!/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+= "<b>Erreur : </b>adresse mail incorecte.<br><br>"
|
|
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 = '<p><b>Erreur :</b> Utilisateur inconnu ou adresse mail erronée</p>'
|
|
mail = ''
|
|
user = ''
|
|
|
|
# on affiche le formulaire
|
|
print html % (new_password_form % locals())
|