#!/usr/bin/env python # -*- coding: utf-8 -*- ############################################## # Système d'inscription en ligne à jabber # # 14/02/2004 -- Frédéric Pauget # # Migration à ejabberd le 9 août 2009 -- adg # ############################################## import os, cgi, string, time, sys, commands, datetime form = cgi.FieldStorage() print "content-type: text/html" print file=open('/var/www/jabber/template') html=file.read() logfile='/var/log/ejabberd/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='' # vérification des mots de passe try : pass1=form['pass1'].value pass2=form['pass2'].value if pass1!=pass2 : raise password=pass1 col_pass='FFFFFF' except : password='' col_pass='FF0000' # vérification du nom 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' # vérification du prénom 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' # vérification du mail 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: r, msg = commands.getstatusoutput('/usr/sbin/ejabberdctl %s%s%s%s' % ('register', commands.mkarg(user), ' jabber.crans.org', commands.mkarg(password))) if msg: page += '

ejabberdctl : %s

' % msg if r == 0: r, msg = commands.getstatusoutput('/usr/sbin/ejabberdctl %s%s%s%s' % ('vcard-set', commands.mkarg(user), ' jabber.crans.org EMAIL USERID', commands.mkarg(mail))) if r and msg: page += '

ejabberdctl : %s

' % msg r, msg = commands.getstatusoutput('/usr/sbin/ejabberdctl %s%s%s%s' % ('vcard-set', commands.mkarg(user), ' jabber.crans.org FN', commands.mkarg('%s %s' % (prenom,nom)))) if r and msg: page += '

ejabberdctl : %s

' % msg try: log = open(logfile, 'a') now = datetime.datetime.now() log.write('%(now)s Creation de %(user)s@jabber.crans.org par %(prenom)s %(nom)s <%(mail)s>\n' % locals()) log.close() except Exception, e: page+= str(e) page += "Enregistrement réussi :

Bonne utilisation de Jabber :)

" page += "

Plus d'informations pour configurer son client sur le wiki." print html % page sys.exit(0) else: # page += "Erreur : login déja pris.

" col_user='FF0000' user='' 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