[jabber] Finalisation de la migration à ejabberd

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
This commit is contained in:
Antoine Durand-Gasselin 2009-08-09 23:34:27 +02:00
parent d65ba27a7f
commit 29e2ecae71
9 changed files with 84 additions and 124 deletions

View file

@ -6,32 +6,30 @@
# 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
# 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 de champs du formulaire
# -> l'utilisateur a envoyer son login et son mail
# 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, time, sys, fonctions
import os, cgi, string, sys, fonctions, commands
from datetime import datetime
form = cgi.FieldStorage()
print "content-type: text/html"
print
erreur = ''
file=open('/var/www/jabber/template')
html=file.read()
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
@ -47,20 +45,10 @@ try :
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=''
@ -72,26 +60,31 @@ except : # si ce n'est pas passé : on a pas reçu le formulaire
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]
r, msg = commands.getstatusoutput('/usr/sbin/ejabberdctl %s%s%s' %
('vcard-get', commands.mkarg(user),
' jabber.crans.org EMAIL USERID'))
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}))
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
# 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}))
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&nbsp:</b> Utilisateur inconnu ou adresse mail erronée</p>'
mail = ''
user = ''
# on affiche le formulaire
print html % (new_password_form % locals())