gestionnaire qui permet de desactiver les bornes wifi avec un einterface web
darcs-hash:20050224011102-4ec08-29a8144812c52abe1bb6e18a42280d21a2f4204b.gz
This commit is contained in:
parent
452e021675
commit
dcdf92ee6a
4 changed files with 378 additions and 0 deletions
91
wifiweb/session.py
Executable file
91
wifiweb/session.py
Executable 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
|
Loading…
Add table
Add a link
Reference in a new issue