#!/usr/bin/env python # -*- coding: utf-8 -*- ########################################### # Système d'inscription en ligne à jabber # # 14/02/2004 -- Frédéric Pauget # ########################################### import os, cgi, string, time, sys form = cgi.FieldStorage() print "content-type: text/html" print file=open('/var/www/jabber/template') html=file.read() jabberuserdir='/var/lib/jabber/jabber.crans.org/' # Avec un / à la fin logfile='/var/log/jabber/inscriptions.log' page ="

Création d'un compte Jabber.

" try : form['traitement'] # Si ne passe pas c'est que la page est donnés sans arguements # 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 os.path.exists(filename) : page += "Erreur : login déja pris.

" col_user='FFFF00' user='' try : pass1=form['pass1'].value pass2=form['pass2'].value if pass1!=pass2 : raise password=pass1 col_pass='FFFFFF' except : password='' col_pass='FF0000' try : nom=form['nom'].value nom=string.capitalize(nom) for i in nom[:] : if not i in string.letters+' -' : raise if not nom[0] in string.uppercase : raise col_nom='FFFFFF' except : nom='' col_nom='FF0000' try : prenom=form['prenom'].value prenom=string.capitalize(prenom) for i in prenom[:] : if not i in string.letters+' -' : raise if not prenom[0] in string.uppercase : raise col_prenom='FFFFFF' except : prenom='' col_prenom='FF0000' try : mail=form['mail'].value mail = string.lower(mail) if not mail[0] in string.lowercase : raise if string.find(mail,'@')<1 : raise if not (mail[-3] in '.' or mail[-4] in ('.')) : raise for l in mail[:]: if not l in (string.lowercase + string.digits + '-_.@') : raise col_mail='FFFFFF' except : mail='' col_mail='FF0000' # Fin des tests except : user ='' ; col_user='FFFFFF' nom='' ; col_nom='FFFFFF' prenom='' ; col_prenom='FFFFFF' mail='' ; col_mail='FFFFFF' col_pass='FFFFFF' if col_user!='FFFFFF' or col_pass!='FFFFFF' or col_mail!='FFFFFF' or col_nom!='FFFFFF' or col_prenom!='FFFFFF' : page+="Certaines donnes sont incorrectes :

" if user and password and nom and prenom 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] file=open(filename,'w') file.write("%s" % password) file.write("") file.write("%s" % user) file.write("%s" % password) file.write("%s.%s" % (prenom,nom) ) file.write("%s" % mail) file.write("registered" % timestamp) # file.write("\n" % user) # file.write(" Bienvenue !\n") # file.write(" Bienvenue sur le seveur Jabber du Cr@ns -- Nous espérons que vous aprécierez ce service !\n") # file.write(" Offline Storage" % (user, timestamp) ) file.write("") file.close() os.chmod(filename,0600) # 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() page += "Enregistrement réussi :

Bonne utilisation de Jabber :)

" page += "

Plus d'informations pour configurer son client sur le wiki." else : page += "" page += "" page += "
Identifiant souhaité (JID):@jabber.crans.org" % (col_user,user) page += "
Mot de passe :" % col_pass page += "
Retaper mot de passe :" % col_pass page += "
Nom :" % (col_nom,nom) page += "
Prénom :" % (col_prenom,prenom) page += "
Adresse mail :" % (col_mail,mail) page += "
" page += "
" print html % page