gestionnaire qui permet de desactiver les bornes wifi avec un einterface web

darcs-hash:20050224011102-4ec08-29a8144812c52abe1bb6e18a42280d21a2f4204b.gz
This commit is contained in:
chove 2005-02-24 02:11:02 +01:00
parent 452e021675
commit dcdf92ee6a
4 changed files with 378 additions and 0 deletions

91
wifiweb/session.py Executable file
View file

@ -0,0 +1,91 @@
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
import os, random
from time import time
class session :
def __init__ (self, sid = None) :
"""
Si sid est fournit, on regarde si la session est valide ;
on soulève un exeption si il y a un problème
Si sid n'est pas fourni un créé une nouvelle session
"""
self.save = True
if sid :
# on vérifie la validité
if not os.access( self._sess_file(sid), os.W_OK ) :
raise ValueError, 'Session inconnue'
# on exporte le sid
self.sid = sid
# on lit les données
self.data = {}
f = open(self._sess_file(sid))
for i in f.readlines() :
if not i.strip() :
continue
key = i.split(' ')[0]
value = ' '.join(i.split(' ')[1:]).strip()
self.data[key] = value
if int(self.data['perime']) < int(time()) :
self.destroy()
raise ValueError, 'Session périmée'
else :
# on créé un nouveau sid
self.data = {}
ok = False
while not ok :
sid = ''.join( [ random.choice('abcdefghijklmnopqrstuvwxyz0123456789') for i in range(0,30) ])
# est ce que la session existe ?
if not os.path.exists(self._sess_file(sid)) :
# on créé un nouveau fichier avec un timeout de 60
f = os.open(self._sess_file(sid), os.O_WRONLY + os.O_CREAT , 0600)
f
# on valide
ok = True
self.sid = sid
# on initialise les données
self.data = {'timeout' : '600'}
def _sess_file (self, sid = None) :
""" Retourne le nom du fichier correspondant à la session """
if not sid :
sid = self.sid
return '/tmp/pysession-%s' % sid
def __del__ (self) :
""" On enregsitre la session à la destruction de l'instance """
if self.save :
# epok de peromption
self.data['perime'] = str(int(time() + int(self.data['timeout'])))
f = open(self._sess_file(), 'w')
for k in self.data.keys() :
f.write( '%s %s\n' % (k,self.data[k]) )
f.close()
def destroy(self) :
""" Supprime la session """
self.save = False
os.remove( self._sess_file() )
# on supprime toutes les vieilles sessions
for file in os.listdir('/tmp') :
if file[0:10] == 'pysession-' :
#print file[10:]
try :
s = session(file[10:])
s.save = False
except :
continue