#!/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 :
"
page += "- vous pouvez immédiatement vous connecter au serveur jabber du crans
"
page += " - Votre nom d'utilisateur est : %s
" % user
page += " - Le serveur est : jabber.crans.org
"
page += " - Votre JID est %s@jabber.crans.org
" %user
page += " - Le port standard est le 5222
"
page += " - Notre serveur accepte le SSL sur le port 5223 ('ancien SSL')
"
page += "
Bonne utilisation de Jabber :)
"
page += "Plus d'informations pour configurer son client sur le wiki."
else :
page += "
"
print html % page