#! /usr/bin/env python # -*- coding: iso-8859-15 -*- import cgi, sys, os, sha, time from html import html from session import session from utilisateurs import users sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap db = crans_ldap() ###################################################### # fontion pour logguer un truc def log (message) : f = open('/var/log/wifiweb.log','a+') f.write( time.strftime('%d/%m/%Y %H:%M:%S',time.localtime(time.time())) + ' ' + message + '\n') f.close() ###################################################### # initialisation des variables # initialisation de la page html page = html() page.sendheaderstobrowser() page.titre("Gestion des bornes wifi") # récupération des données du formulaire form = cgi.FieldStorage() sid = form.getvalue('sid') action = form.getvalue('action','auth') # création de la session try : sess = session(sid) except : sess = session() sid = sess.sid ###################################################### # authentification if action == 'valid-auth' : sess.data['user'] = form.getvalue('user','') sess.data['password'] = sha.new(form.getvalue('password','')).hexdigest() if users.has_key( sess.data['user'] + ':' + sess.data['password'] ) : log(sess.data['user'] + ' s\'est connecté' ) action = 'liste' if action != 'auth' : if users.has_key( sess.data['user'] + ':' + sess.data['password'] ) : bornes = users[ sess.data['user'] + ':' + sess.data['password'] ] else : log(sess.data['user'] + ' erreur d\'authentification' ) page.add('Erreur d\'authentification !

') action = 'auth' ###################################################### # page : authentification if action == 'auth' : page.add("""
Utiliateur :
Mot de passe :
""" % sid ) ###################################################### # désactivation d'un borne if action == 'desactive' : if form.getvalue('borne','') in bornes : log(sess.data['user'] + ' a désactivé %s' % form.getvalue('borne','') ) page.add('La borne %s sera désactivée dans quelques instants

' % form.getvalue('borne','') ) borne = db.search('host=%s.wifi.crans.org' % form.getvalue('borne',''), 'w' )['machine'][0] if int(borne.puissance()) > 0 : borne.puissance(-int(borne.puissance())) borne.save() else : log(sess.data['user'] + ' a tenté de désactiver %s' % form.getvalue('borne','') ) page.add('Vous n\'êtes pas authorisé à modifier la borne %s

' % form.getvalue('borne','') ) action = 'liste' ###################################################### # activation d'un borne if action == 'active' : if form.getvalue('borne','') in bornes : log(sess.data['user'] + ' a activé %s' % form.getvalue('borne','') ) page.add('La borne %s sera réactivée dans quelques instants

' % form.getvalue('borne','') ) borne = db.search('host=%s.wifi.crans.org' % form.getvalue('borne',''),'w' )['machine'][0] if int(borne.puissance()) < 0 : borne.puissance(int(borne.puissance().replace('-',''))) borne.save() else : log(sess.data['user'] + ' a tenté d\'activer %s' % form.getvalue('borne','') ) page.add('Vous n\'êtes pas authorisé à modifier la borne %s

' % form.getvalue('borne','') ) action = 'liste' ###################################################### # page : liste des bornes if action == 'liste' : page.sous_titre('Liste des bornes') for b in bornes : borne = db.search('host=%s.wifi.crans.org' % b)['machine'][0] # formulaire page.add('
') page.add('' % sid ) page.add('' % b) # titre if '-' in borne.puissance() : # réactivation page.add('%s (borne désactivée)' % borne.Nom()) page.add('') else : # désctivation page.add('%s (borne activée)' % borne.Nom()) page.add('') page.add('
') # commentaires page.add('
 ') page.add('
'.join(borne.info())) page.add('
') # bouton de validation if '-' in borne.puissance() : page.add(u'' % b) else : page.add(u'' % b) # fin du formulaire page.add('
') # bouton quitter page.add("""
""" % (sid, sid) ) ###################################################### # page : logout if action == 'logout' : log(sess.data['user'] + ' s\'est déconnecté' ) page.sous_titre('Seen you soon') sess.destroy() ###################################################### # fin du script page.sendtobrowser()