Classe BorneWifi.
darcs-hash:20060302155728-68412-e2be9bb3a445573dbb34adddfe21be33ca96de96.gz
This commit is contained in:
parent
32d2199d4b
commit
be3d9b49b0
3 changed files with 150 additions and 129 deletions
|
@ -28,7 +28,7 @@ import re
|
||||||
|
|
||||||
import affich_tools, config
|
import affich_tools, config
|
||||||
from lock import make_lock, remove_lock
|
from lock import make_lock, remove_lock
|
||||||
from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, smtpserv, script_utilisateur
|
from ldap_crans import adherent, Machine, BorneWifi, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, smtpserv, script_utilisateur
|
||||||
|
|
||||||
def dialog(arg) :
|
def dialog(arg) :
|
||||||
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg)
|
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg)
|
||||||
|
@ -1178,7 +1178,7 @@ def set_machine(machine) :
|
||||||
arg+= u'"PortsTCP machine->ext :" 5 1 "%s" 5 25 50 0 ' % machine.portTCPout()
|
arg+= u'"PortsTCP machine->ext :" 5 1 "%s" 5 25 50 0 ' % machine.portTCPout()
|
||||||
arg+= u'"PortsUDP ext->machine :" 6 1 "%s" 6 25 50 0 ' % machine.portUDPin()
|
arg+= u'"PortsUDP ext->machine :" 6 1 "%s" 6 25 50 0 ' % machine.portUDPin()
|
||||||
arg+= u'"PortsUDP machine->ext :" 7 1 "%s" 7 25 50 0 ' % machine.portUDPout()
|
arg+= u'"PortsUDP machine->ext :" 7 1 "%s" 7 25 50 0 ' % machine.portUDPout()
|
||||||
if machine.puissance()!=None and isadm :
|
if isinstance(machine, BorneWifi) and isadm :
|
||||||
# Borne wifi
|
# Borne wifi
|
||||||
p = u'Mettre le lieu de la borne comme première remarque.'
|
p = u'Mettre le lieu de la borne comme première remarque.'
|
||||||
arg+= u'"Canaux :" 2 35 "%s" 2 43 14 0 ' % machine.canal(None,False)
|
arg+= u'"Canaux :" 2 35 "%s" 2 43 14 0 ' % machine.canal(None,False)
|
||||||
|
@ -1230,7 +1230,7 @@ def set_machine(machine) :
|
||||||
machine.portUDPout(result[6])
|
machine.portUDPout(result[6])
|
||||||
except ValueError, c : err += c.args[0] + '\n'
|
except ValueError, c : err += c.args[0] + '\n'
|
||||||
|
|
||||||
if isadm and machine.puissance()!=None :
|
if isadm and isinstance(machine, BorneWifi):
|
||||||
try : machine.canal(result[7])
|
try : machine.canal(result[7])
|
||||||
except ValueError, c : err += c.args[0] + '\n'
|
except ValueError, c : err += c.args[0] + '\n'
|
||||||
try : machine.puissance(result[8])
|
try : machine.puissance(result[8])
|
||||||
|
@ -1828,13 +1828,13 @@ def menu_principal() :
|
||||||
|
|
||||||
elif choix=='aKM' :
|
elif choix=='aKM' :
|
||||||
# Ajout machine au crans
|
# Ajout machine au crans
|
||||||
becane = machine(crans(),"fixe")
|
becane = Machine(crans(),"fixe")
|
||||||
if set_machine(becane) :
|
if set_machine(becane) :
|
||||||
becane.restore()
|
becane.restore()
|
||||||
|
|
||||||
elif choix=='aKB' :
|
elif choix=='aKB' :
|
||||||
# Ajout borne wifi
|
# Ajout borne wifi
|
||||||
becane = machine(crans(),"borne")
|
becane = BorneWifi(crans(),"borne")
|
||||||
if set_machine(becane) :
|
if set_machine(becane) :
|
||||||
becane.restore()
|
becane.restore()
|
||||||
|
|
||||||
|
@ -1901,9 +1901,9 @@ def menu_principal() :
|
||||||
choix = 'Wifi'
|
choix = 'Wifi'
|
||||||
try :
|
try :
|
||||||
if choix=='Fixe' :
|
if choix=='Fixe' :
|
||||||
becane = machine(proprio,'fixe')
|
becane = Machine(proprio, 'fixe')
|
||||||
elif choix=='Wifi' :
|
elif choix=='Wifi' :
|
||||||
becane = machine(proprio,'wifi')
|
becane = Machine(proprio, 'wifi')
|
||||||
except ValueError, c:
|
except ValueError, c:
|
||||||
arg = '--title "Nouvelle machine" '
|
arg = '--title "Nouvelle machine" '
|
||||||
arg += '--msgbox "%s\n\n\n" 0 0' % c.args[0]
|
arg += '--msgbox "%s\n\n\n" 0 0' % c.args[0]
|
||||||
|
|
|
@ -639,7 +639,10 @@ class crans_ldap:
|
||||||
# Il n'y avait seulement un filtre machine
|
# Il n'y avait seulement un filtre machine
|
||||||
# => on retourne uniquement les machines trouvées
|
# => on retourne uniquement les machines trouvées
|
||||||
for m in r['machine']:
|
for m in r['machine']:
|
||||||
result['machine'].append(machine(m,mode,self.conn) )
|
if m[1].has_key('puissance'):
|
||||||
|
result['machine'].append(BorneWifi(m, mode, self.conn))
|
||||||
|
else:
|
||||||
|
result['machine'].append(Machine(m, mode, self.conn))
|
||||||
elif not r['machine']:
|
elif not r['machine']:
|
||||||
# Il n'y avait pas de filtre machine
|
# Il n'y avait pas de filtre machine
|
||||||
# => on retourne uniquement les adhérents
|
# => on retourne uniquement les adhérents
|
||||||
|
@ -678,7 +681,10 @@ class crans_ldap:
|
||||||
dn = string.join(a[0].split(',')[-4:],',')
|
dn = string.join(a[0].split(',')[-4:],',')
|
||||||
if dn in bons_dn and not a[0] in bons_dn2:
|
if dn in bons_dn and not a[0] in bons_dn2:
|
||||||
bons_dn2.append(dn)
|
bons_dn2.append(dn)
|
||||||
result['machine'].append(machine(a,mode,self.conn) )
|
if a[1].has_key('puissance'):
|
||||||
|
result['machine'].append(BorneWifi(a, mode, self.conn))
|
||||||
|
else:
|
||||||
|
result['machine'].append(Machine(a, mode, self.conn))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
### Recherche d'une chaine sur tous les champs
|
### Recherche d'une chaine sur tous les champs
|
||||||
|
@ -1206,7 +1212,10 @@ class base_proprietaire(base_classes_crans):
|
||||||
res = []
|
res = []
|
||||||
try:
|
try:
|
||||||
for r in self.conn.search_s('%s=%s,%s' % ( self.idn,self.id() , self.base_dn ),1,'objectClass=machine'):
|
for r in self.conn.search_s('%s=%s,%s' % ( self.idn,self.id() , self.base_dn ),1,'objectClass=machine'):
|
||||||
res.append(machine(r, self._modifiable,self.conn) )
|
if r[1].has_key('puissance'):
|
||||||
|
res.append(BorneWifi(r, self._modifiable, self.conn))
|
||||||
|
else:
|
||||||
|
res.append(Machine(r, self._modifiable, self.conn))
|
||||||
return res
|
return res
|
||||||
except:
|
except:
|
||||||
return []
|
return []
|
||||||
|
@ -2029,23 +2038,25 @@ class club(base_proprietaire):
|
||||||
""" Retourne l'adresse mail du responsable """
|
""" Retourne l'adresse mail du responsable """
|
||||||
return self.responsable().email()
|
return self.responsable().email()
|
||||||
|
|
||||||
class machine(base_classes_crans):
|
class Machine(base_classes_crans):
|
||||||
""" Classe de définition d'une machine """
|
""" Classe de définition d'une machine """
|
||||||
idn = 'mid'
|
idn = 'mid'
|
||||||
|
|
||||||
def __init__(self,parent_or_tuple,typ='fixe',conn=None):
|
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
||||||
"""
|
"""
|
||||||
parent_or_tuple est :
|
parent_or_tuple est :
|
||||||
*soit une instance d'une classe pouvant posséder une machine
|
* soit une instance d'une classe pouvant posséder une machine
|
||||||
(adherent, club ou crans), la nouvelle machine lui sera alors associé.
|
(adherent, club ou crans), la nouvelle machine lui sera alors
|
||||||
*soit directement le tuple définissant une machine (tel que
|
associée.
|
||||||
retourné par les fonctions de recherche ldap)
|
* soit directement le tuple définissant une machine (tel que
|
||||||
typ permet de définir le type de machine : wifi ou fixe,
|
retourné par les fonctions de recherche ldap)
|
||||||
pris en compte uniquement pour une nouvelle machine (parent donné)
|
typ permet de définir le type de machine : wifi ou fixe,
|
||||||
|
pris en compte uniquement pour une nouvelle machine (parent donné)
|
||||||
|
|
||||||
Pour édition d'une machine, typ devra être égal à 'w'
|
Pour édition d'une machine, typ devra être égal à 'w'
|
||||||
Attention, si typ ='w' mais si l'objet est déja locké il n'y a pas d'erreur
|
Attention, si typ ='w' mais si l'objet est déja locké il n'y a pas
|
||||||
vérifier l'obtetion du lock grace à la valeur de _modifiable (si =w c'est bon)
|
d'erreur, vérifier l'obtention du lock grâce à la valeur de _modifiable
|
||||||
|
(si ='w' c'est bon)
|
||||||
|
|
||||||
conn est une instance de la classe de connexion à la base LDAP
|
conn est une instance de la classe de connexion à la base LDAP
|
||||||
"""
|
"""
|
||||||
|
@ -2064,7 +2075,8 @@ class machine(base_classes_crans):
|
||||||
self._modifiable = 0
|
self._modifiable = 0
|
||||||
else:
|
else:
|
||||||
self._modifiable = 0
|
self._modifiable = 0
|
||||||
self._init_data = parent_or_tuple[1].copy() # Utile pour construire l'instruction LDAP de modif
|
# Utile pour construire l'instruction LDAP de modif
|
||||||
|
self._init_data = parent_or_tuple[1].copy()
|
||||||
self._data = parent_or_tuple[1]
|
self._data = parent_or_tuple[1]
|
||||||
|
|
||||||
# Type de machine
|
# Type de machine
|
||||||
|
@ -2109,7 +2121,7 @@ class machine(base_classes_crans):
|
||||||
""" Retourne le nom de la machine """
|
""" Retourne le nom de la machine """
|
||||||
return self.nom()
|
return self.nom()
|
||||||
|
|
||||||
def mac(self,mac=None,multi_ok=0):
|
def mac(self, mac=None, multi_ok=0):
|
||||||
"""
|
"""
|
||||||
Défini ou retourne l'adresse mac de la machine
|
Défini ou retourne l'adresse mac de la machine
|
||||||
Adresse valide si:
|
Adresse valide si:
|
||||||
|
@ -2119,7 +2131,7 @@ class machine(base_classes_crans):
|
||||||
Si multi_ok = 1 permet d'avoir plusieur fois la même mac sur le réseau
|
Si multi_ok = 1 permet d'avoir plusieur fois la même mac sur le réseau
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if mac==None:
|
if mac == None:
|
||||||
return decode(self._data.get('macAddress',[''])[0])
|
return decode(self._data.get('macAddress',[''])[0])
|
||||||
|
|
||||||
mac = format_mac(mac)
|
mac = format_mac(mac)
|
||||||
|
@ -2135,7 +2147,7 @@ class machine(base_classes_crans):
|
||||||
raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
|
raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
|
||||||
|
|
||||||
# Le test final : vendeur connu
|
# Le test final : vendeur connu
|
||||||
prefix=mac[:8].upper() + ' '
|
prefix = mac[:8].upper() + ' '
|
||||||
vendor = ''
|
vendor = ''
|
||||||
try:
|
try:
|
||||||
for line in open('/usr/scripts/gestion/ethercodes.dat').readlines():
|
for line in open('/usr/scripts/gestion/ethercodes.dat').readlines():
|
||||||
|
@ -2155,13 +2167,7 @@ class machine(base_classes_crans):
|
||||||
self._set('macAddress',[mac])
|
self._set('macAddress',[mac])
|
||||||
return mac
|
return mac
|
||||||
|
|
||||||
def mac2(self):
|
def __host_alias(self, champ, new):
|
||||||
"""Retourne l'adresse MAC + 2"""
|
|
||||||
mac = self.mac().split(":")
|
|
||||||
mac[-1] = "%0.2x" % (int(mac[-1], 16) + 2)
|
|
||||||
return ":".join(mac)
|
|
||||||
|
|
||||||
def __host_alias(self,champ,new):
|
|
||||||
""" Vérification de la validité d'un nom de machine """
|
""" Vérification de la validité d'un nom de machine """
|
||||||
# Supression des accents
|
# Supression des accents
|
||||||
new = strip_accents(unicode(new,'iso-8859-15'))
|
new = strip_accents(unicode(new,'iso-8859-15'))
|
||||||
|
@ -2186,14 +2192,14 @@ class machine(base_classes_crans):
|
||||||
raise ValueError(u"Le premier caractère du champ %s doit être alphanumérique" % champ)
|
raise ValueError(u"Le premier caractère du champ %s doit être alphanumérique" % champ)
|
||||||
|
|
||||||
# Ajout du domaine si necessaire
|
# Ajout du domaine si necessaire
|
||||||
if new.find('.')==-1:
|
if new.find('.') == -1:
|
||||||
try:
|
try:
|
||||||
new += '.' + config.domains[self.__typ]
|
new += '.' + config.domains[self.__typ]
|
||||||
except:
|
except:
|
||||||
raise RuntimeError(u"%s : domaine non trouvé" % champ.capitalize() )
|
raise RuntimeError(u"%s : domaine non trouvé" % champ.capitalize() )
|
||||||
|
|
||||||
# Pas déja pris ?
|
# Pas déja pris ?
|
||||||
if self.exist('(|(host=%s)(hostAlias=%s))' % (new,new)):
|
if self.exist('(|(host=%s)(hostAlias=%s))' % (new, new)):
|
||||||
raise ValueError(u"%s : nom déjà pris" % champ.capitalize())
|
raise ValueError(u"%s : nom déjà pris" % champ.capitalize())
|
||||||
|
|
||||||
# Lock host
|
# Lock host
|
||||||
|
@ -2201,7 +2207,7 @@ class machine(base_classes_crans):
|
||||||
|
|
||||||
return new
|
return new
|
||||||
|
|
||||||
def nom(self,new=None):
|
def nom(self, new=None):
|
||||||
"""
|
"""
|
||||||
Défini ou retourne le nom de machine.
|
Défini ou retourne le nom de machine.
|
||||||
Un nom de machine valide ne comporte que des caractères
|
Un nom de machine valide ne comporte que des caractères
|
||||||
|
@ -2277,7 +2283,7 @@ class machine(base_classes_crans):
|
||||||
self._set('hostAlias',liste)
|
self._set('hostAlias',liste)
|
||||||
return liste
|
return liste
|
||||||
|
|
||||||
def ip(self,ip=None):
|
def ip(self, ip=None):
|
||||||
"""
|
"""
|
||||||
Défini ou retourne l'IP de la machine.
|
Défini ou retourne l'IP de la machine.
|
||||||
Les IP sont stoquées sous forme xxx.xxx.xxx.xxx et doivent être fournies ainsi.
|
Les IP sont stoquées sous forme xxx.xxx.xxx.xxx et doivent être fournies ainsi.
|
||||||
|
@ -2364,7 +2370,7 @@ class machine(base_classes_crans):
|
||||||
self._set('ipHostNumber',[ip])
|
self._set('ipHostNumber',[ip])
|
||||||
return ip
|
return ip
|
||||||
|
|
||||||
def exempt(self,new=None):
|
def exempt(self, new=None):
|
||||||
"""
|
"""
|
||||||
Liste des réseaux vers lesquels on ne compte pas l'upload
|
Liste des réseaux vers lesquels on ne compte pas l'upload
|
||||||
Cette liste est transférée dans la base postgres de komaz
|
Cette liste est transférée dans la base postgres de komaz
|
||||||
|
@ -2375,11 +2381,11 @@ class machine(base_classes_crans):
|
||||||
l'index est celui obtenu dans la liste retournée par exempt()
|
l'index est celui obtenu dans la liste retournée par exempt()
|
||||||
"""
|
"""
|
||||||
if not self._data.has_key('exempt'):
|
if not self._data.has_key('exempt'):
|
||||||
self._data['exempt']=[]
|
self._data['exempt'] = []
|
||||||
liste = list(self._data['exempt'])
|
liste = list(self._data['exempt'])
|
||||||
if new==None: return map(decode,liste)
|
if new == None: return map(decode, liste)
|
||||||
|
|
||||||
if type(new)==list:
|
if type(new) == list:
|
||||||
# Modif
|
# Modif
|
||||||
index = new[0]
|
index = new[0]
|
||||||
l, new = preattr(new[1])
|
l, new = preattr(new[1])
|
||||||
|
@ -2388,8 +2394,8 @@ class machine(base_classes_crans):
|
||||||
liste.pop(index)
|
liste.pop(index)
|
||||||
else:
|
else:
|
||||||
# Modif remarque
|
# Modif remarque
|
||||||
liste[index]=new
|
liste[index] = new
|
||||||
elif type(new)==str:
|
elif type(new) == str:
|
||||||
# Réseau supplémentaire
|
# Réseau supplémentaire
|
||||||
l, new = preattr(new)
|
l, new = preattr(new)
|
||||||
if not new:
|
if not new:
|
||||||
|
@ -2420,7 +2426,7 @@ class machine(base_classes_crans):
|
||||||
|
|
||||||
return self.__proprietaire
|
return self.__proprietaire
|
||||||
|
|
||||||
def ipsec(self,clef=0):
|
def ipsec(self, clef=0):
|
||||||
""" Génération (clef=1) ou affichage de la clef IPsec de la machine
|
""" Génération (clef=1) ou affichage de la clef IPsec de la machine
|
||||||
Si clef!=1: prend la clef fournie.
|
Si clef!=1: prend la clef fournie.
|
||||||
"""
|
"""
|
||||||
|
@ -2440,82 +2446,6 @@ class machine(base_classes_crans):
|
||||||
|
|
||||||
return clef
|
return clef
|
||||||
|
|
||||||
def canal(self,new=None,raw=False):
|
|
||||||
""" Attribution ou visualisation du canal d'une borne wifi """
|
|
||||||
if self.__typ != 'borne': return None
|
|
||||||
if not new:
|
|
||||||
canaux = self._data.get('canal',[''])[0]
|
|
||||||
if raw:
|
|
||||||
return canaux
|
|
||||||
else:
|
|
||||||
canaux = int(canaux)
|
|
||||||
if canaux < 14:
|
|
||||||
# Compatibilité ascendante
|
|
||||||
return str(canaux)
|
|
||||||
lcanal1 = []
|
|
||||||
for i in range(1,14):
|
|
||||||
found = False
|
|
||||||
if canaux & (1 << (i - 1)):
|
|
||||||
lcanal2 = []
|
|
||||||
for c in lcanal1:
|
|
||||||
if c[1] == i - 1:
|
|
||||||
lcanal2.append((c[0], i))
|
|
||||||
found = True
|
|
||||||
else:
|
|
||||||
lcanal2.append(c)
|
|
||||||
if not found:
|
|
||||||
lcanal2.append((i,i))
|
|
||||||
lcanal1 = lcanal2
|
|
||||||
lcanal3 = []
|
|
||||||
for c in lcanal1:
|
|
||||||
if c[0] == c[1]:
|
|
||||||
lcanal3.append("%d" % c[0])
|
|
||||||
else:
|
|
||||||
lcanal3.append("%d-%d" % (c[0],c[1]))
|
|
||||||
return ",".join(lcanal3)
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
new = int(new)
|
|
||||||
if new < 0 or new > 13: raise
|
|
||||||
except:
|
|
||||||
# Nouveau système, il doit s'agir d'une liste de canaux
|
|
||||||
try:
|
|
||||||
lcanal3 = str(new).split(",")
|
|
||||||
lcanal = []
|
|
||||||
for c in lcanal3:
|
|
||||||
c2 = c.split("-")
|
|
||||||
if len(c2) == 1:
|
|
||||||
lcanal.append(int(c2[0]))
|
|
||||||
else:
|
|
||||||
for i in range(int(c2[0]), int(c2[1]) + 1):
|
|
||||||
lcanal.append(i)
|
|
||||||
new = 0
|
|
||||||
for c in lcanal:
|
|
||||||
if c not in range(0,14):
|
|
||||||
raise
|
|
||||||
new = new + (1 << (c - 1))
|
|
||||||
except:
|
|
||||||
raise ValueError(u'Canal invalide : doit être entre 0 et 13 ou une liste de canaux')
|
|
||||||
|
|
||||||
self._set('canal',[str(new)])
|
|
||||||
return new
|
|
||||||
|
|
||||||
def puissance(self,new=None):
|
|
||||||
""" Attribution ou visualisation de la puissance d'une borne wifi """
|
|
||||||
if self.__typ != 'borne': return None
|
|
||||||
if not new:
|
|
||||||
return self._data.get('puissance',[''])[0]
|
|
||||||
|
|
||||||
try:
|
|
||||||
new = int(new)
|
|
||||||
if new < -99 or new > 99: raise
|
|
||||||
except:
|
|
||||||
raise ValueError(u'Puissance invalide : doit être entre -99 et 99')
|
|
||||||
|
|
||||||
self._set('puissance',[str(new)])
|
|
||||||
return new
|
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Enregistre la machine courante dans la base LDAP
|
Enregistre la machine courante dans la base LDAP
|
||||||
|
@ -2649,6 +2579,94 @@ class machine(base_classes_crans):
|
||||||
if 'ports' not in self.modifs:
|
if 'ports' not in self.modifs:
|
||||||
self.modifs.setdefault('ports', None)
|
self.modifs.setdefault('ports', None)
|
||||||
|
|
||||||
|
|
||||||
|
class BorneWifi(Machine):
|
||||||
|
""" Classe de définition d'une borne wifi """
|
||||||
|
|
||||||
|
def __init__(self, parent_or_tuple, typ='borne', conn=None):
|
||||||
|
Machine.__init__(self, parent_or_tuple, typ, conn)
|
||||||
|
|
||||||
|
def mac2(self):
|
||||||
|
""" Retourne l'adresse MAC + 2 """
|
||||||
|
mac = self.mac().split(":")
|
||||||
|
mac[-1] = "%0.2x" % (int(mac[-1], 16) + 2)
|
||||||
|
return ":".join(mac)
|
||||||
|
|
||||||
|
def canal(self, new=None, raw=False):
|
||||||
|
""" Attribution ou visualisation du canal d'une borne wifi """
|
||||||
|
if not new:
|
||||||
|
canaux = self._data.get('canal', [''])[0]
|
||||||
|
if raw:
|
||||||
|
return canaux
|
||||||
|
else:
|
||||||
|
canaux = int(canaux)
|
||||||
|
if canaux < 14:
|
||||||
|
# Compatibilité ascendante
|
||||||
|
return str(canaux)
|
||||||
|
lcanal1 = []
|
||||||
|
for i in range(1, 14):
|
||||||
|
found = False
|
||||||
|
if canaux & (1 << (i - 1)):
|
||||||
|
lcanal2 = []
|
||||||
|
for c in lcanal1:
|
||||||
|
if c[1] == i - 1:
|
||||||
|
lcanal2.append((c[0], i))
|
||||||
|
found = True
|
||||||
|
else:
|
||||||
|
lcanal2.append(c)
|
||||||
|
if not found:
|
||||||
|
lcanal2.append((i, i))
|
||||||
|
lcanal1 = lcanal2
|
||||||
|
lcanal3 = []
|
||||||
|
for c in lcanal1:
|
||||||
|
if c[0] == c[1]:
|
||||||
|
lcanal3.append("%d" % c[0])
|
||||||
|
else:
|
||||||
|
lcanal3.append("%d-%d" % (c[0], c[1]))
|
||||||
|
return ",".join(lcanal3)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
new = int(new)
|
||||||
|
if new < 0 or new > 13: raise
|
||||||
|
except:
|
||||||
|
# Nouveau système, il doit s'agir d'une liste de canaux
|
||||||
|
try:
|
||||||
|
lcanal3 = str(new).split(",")
|
||||||
|
lcanal = []
|
||||||
|
for c in lcanal3:
|
||||||
|
c2 = c.split("-")
|
||||||
|
if len(c2) == 1:
|
||||||
|
lcanal.append(int(c2[0]))
|
||||||
|
else:
|
||||||
|
for i in range(int(c2[0]), int(c2[1]) + 1):
|
||||||
|
lcanal.append(i)
|
||||||
|
new = 0
|
||||||
|
for c in lcanal:
|
||||||
|
if c not in range(0,14):
|
||||||
|
raise
|
||||||
|
new = new + (1 << (c - 1))
|
||||||
|
except:
|
||||||
|
raise ValueError(u'Canal invalide : doit être entre 0 et 13 ou une liste de canaux')
|
||||||
|
|
||||||
|
self._set('canal',[str(new)])
|
||||||
|
return new
|
||||||
|
|
||||||
|
def puissance(self, new=None):
|
||||||
|
""" Attribution ou visualisation de la puissance d'une borne wifi """
|
||||||
|
if not new:
|
||||||
|
return self._data.get('puissance', [''])[0]
|
||||||
|
|
||||||
|
try:
|
||||||
|
new = int(new)
|
||||||
|
if new < -99 or new > 99: raise
|
||||||
|
except:
|
||||||
|
raise ValueError(u'Puissance invalide : doit être entre -99 et 99')
|
||||||
|
|
||||||
|
self._set('puissance', [str(new)])
|
||||||
|
return new
|
||||||
|
|
||||||
|
|
||||||
class _fake_proprio(crans_ldap):
|
class _fake_proprio(crans_ldap):
|
||||||
""" Définitions de base d'un propriétaire virtuel """
|
""" Définitions de base d'un propriétaire virtuel """
|
||||||
idn = ''
|
idn = ''
|
||||||
|
@ -2672,7 +2690,10 @@ class _fake_proprio(crans_ldap):
|
||||||
res = s.conn.search_s(s.dn,1,'objectClass=machine')
|
res = s.conn.search_s(s.dn,1,'objectClass=machine')
|
||||||
m = []
|
m = []
|
||||||
for r in res:
|
for r in res:
|
||||||
m.append(machine(r,'',s.conn))
|
if r[1].has_key('puissance'):
|
||||||
|
m.append(BorneWifi(r, '', s.conn))
|
||||||
|
else:
|
||||||
|
m.append(Machine(r, '', s.conn))
|
||||||
return m
|
return m
|
||||||
|
|
||||||
class crans(_fake_proprio):
|
class crans(_fake_proprio):
|
||||||
|
@ -2688,7 +2709,7 @@ class crans(_fake_proprio):
|
||||||
|
|
||||||
class invite(_fake_proprio):
|
class invite(_fake_proprio):
|
||||||
""" Propriétaire des machines invité """
|
""" Propriétaire des machines invité """
|
||||||
def __init__(s,conn=None):
|
def __init__(s, conn=None):
|
||||||
s.conn = conn
|
s.conn = conn
|
||||||
if not s.conn: s.connect()
|
if not s.conn: s.connect()
|
||||||
s.dn = "ou=invites," + s.base_dn
|
s.dn = "ou=invites," + s.base_dn
|
||||||
|
|
|
@ -47,7 +47,7 @@ except:
|
||||||
|
|
||||||
base = None
|
base = None
|
||||||
|
|
||||||
from ldap_crans import is_actif , crans_ldap, ann_scol, crans, hostname
|
from ldap_crans import is_actif, crans_ldap, ann_scol, crans, hostname, BorneWifi
|
||||||
from affich_tools import *
|
from affich_tools import *
|
||||||
import user_tests
|
import user_tests
|
||||||
import popen2, commands
|
import popen2, commands
|
||||||
|
@ -453,10 +453,10 @@ def machine_details(machine) :
|
||||||
f+= coul(u'mid=%s ' % machine.id(),'bleu')
|
f+= coul(u'mid=%s ' % machine.id(),'bleu')
|
||||||
|
|
||||||
# Type de machine
|
# Type de machine
|
||||||
if machine.ipsec() : a='Machine wifi'
|
if machine.ipsec(): a = 'Machine wifi'
|
||||||
elif machine.canal() : a='Borne wifi'
|
elif isinstance(machine, BorneWifi): a = 'Borne wifi'
|
||||||
else : a='Machine fixe'
|
else: a = 'Machine fixe'
|
||||||
f+= coul(a+' : ' ,'gras')
|
f += coul(a + ' : ', 'gras')
|
||||||
|
|
||||||
f+= "%s\n" % machine.nom()
|
f+= "%s\n" % machine.nom()
|
||||||
|
|
||||||
|
@ -494,7 +494,7 @@ def machine_details(machine) :
|
||||||
f += '\n'
|
f += '\n'
|
||||||
|
|
||||||
# Borne wifi
|
# Borne wifi
|
||||||
if machine.puissance() :
|
if isinstance(machine, BorneWifi):
|
||||||
f += coul(u'Puissance : ','gras') + u"%4.d" % int(machine.puissance())
|
f += coul(u'Puissance : ','gras') + u"%4.d" % int(machine.puissance())
|
||||||
f += coul(u'\tCanaux : ', 'gras') + machine.canal()
|
f += coul(u'\tCanaux : ', 'gras') + machine.canal()
|
||||||
f += coul(u'\tÉtat : ', 'gras')
|
f += coul(u'\tÉtat : ', 'gras')
|
||||||
|
@ -683,7 +683,7 @@ def __bases_machines(m) :
|
||||||
""" Retourne [ type de la machines, blacklist ] """
|
""" Retourne [ type de la machines, blacklist ] """
|
||||||
#Type
|
#Type
|
||||||
if m.ipsec() : t='wifi'
|
if m.ipsec() : t='wifi'
|
||||||
elif m.canal() : t='born'
|
elif isinstance(m, BorneWifi): t='born'
|
||||||
else : t='fixe'
|
else : t='fixe'
|
||||||
|
|
||||||
# Déconnectée ?
|
# Déconnectée ?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue