[jabber] ajout du cgi pour créer un compte jabber

darcs-hash:20090728100655-bd074-9a4cf910f821f6b2dc69d8e9c74fe496ea6a37d7.gz
This commit is contained in:
Antoine Durand-Gasselin 2009-07-28 12:06:55 +02:00
parent e5d6982a1e
commit aaf52989f6
9 changed files with 521 additions and 0 deletions

97
jabber/lostPassword.py Executable file
View file

@ -0,0 +1,97 @@
#!/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+= "<b>Erreur : </b>login inconnu : "+user+"<br><br>"
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+= "<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:
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}))