scripts/wifiweb/bornes.py
chove dcdf92ee6a gestionnaire qui permet de desactiver les bornes wifi avec un einterface web
darcs-hash:20050224011102-4ec08-29a8144812c52abe1bb6e18a42280d21a2f4204b.gz
2005-02-24 02:11:02 +01:00

176 lines
5.8 KiB
Python
Executable file

#! /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' :
try :
if not users.has_key( sess.data['user'] + ':' + sess.data['password'] ) :
log(sess.data['user'] + ' mauvais user/pass' )
raise ValueError, 'Mauvais user/pass'
bornes = users[ sess.data['user'] + ':' + sess.data['password'] ]
except :
page.add('<font color="red">Erreur d\'authentification !</font><br><br>')
log(sess.data['user'] + ' erreur d\'authentification' )
action = 'auth'
######################################################
# page : authentification
if action == 'auth' :
page.add("""<center>
<form method="POST">
<input type="hidden" name="sid" value="%s">
<input type="hidden" name="action" value="valid-auth">
<table>
<tr><td>Utiliateur : </td><td><input type="text" name="user">
<tr><td>Mot de passe : </td><td><input type="password" name="password"><br></td></tr>
<tr><td collspan="2" align="center"><input type="submit" value="Valider"></td></tr>
</table>
</form>
</center>
""" % 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('<font color="blue">La borne <b>%s</b> sera d&eacute;sactiv&eacute;e dans quelques instants</font><br><br>' % 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('<font color="red">Vous n\'&ecirc;tes pas authoris&eacute; à modifier la borne <b>%s</b></font><br><br>' % 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('<font color="blue">La borne <b>%s</b> sera r&eacute;activ&eacute;e dans quelques instants</font><br><br>' % 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('<font color="red">Vous n\'&ecirc;tes pas authoris&eacute; à modifier la borne <b>%s</b></font><br><br>' % 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('<form method=\"POST\">')
page.add('<input type="hidden" name="sid" value="%s">' % sid )
page.add('<input type="hidden" name="borne" value="%s">' % b)
# titre
if '-' in borne.puissance() :
# réactivation
page.add('<b><u>%s</u></b> <font color="red">(borne d&eacute;sactiv&eacute;e)</font>' % borne.Nom())
page.add('<input type="hidden" name="action" value="active">')
else :
# désctivation
page.add('<b><u>%s</u></b> <font color="green">(borne activ&eacute;e)</font>' % borne.Nom())
page.add('<input type="hidden" name="action" value="desactive">')
page.add('<br>')
# commentaires
page.add('<table><tr><td width=\"20\">&nbsp;</td><td>')
page.add('<br>'.join(borne.info()))
page.add('</td></tr></table>')
# bouton de validation
if '-' in borne.puissance() :
page.add(u'<input type="submit" value="Réactiver %s">' % b)
else :
page.add(u'<input type="submit" value="Désactiver %s">' % b)
# fin du formulaire
page.add('</form>')
# bouton quitter
page.add("""<center>
<table><tr>
<td><form method="POST">
<input type="hidden" name="sid" value="%s">
<input type="hidden" name="action" value="liste">
<input type="submit" value="Actualiser">
</form></td>
<td><form method="POST">
<input type="hidden" name="sid" value="%s">
<input type="hidden" name="action" value="logout">
<input type="submit" value="Quitter">
</form></td>
</tr></table>
</center>
""" % (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()