Esthtisme.
darcs-hash:20060319181713-68412-20a0d10ba8997d1cf10fc241e4b8cad72a289a42.gz
This commit is contained in:
parent
9ecffdc4fe
commit
f9af7f43ae
1 changed files with 71 additions and 66 deletions
|
@ -2295,14 +2295,14 @@ class Machine(base_classes_crans):
|
|||
Un nom de machine valide ne comporte que des caractères
|
||||
alphabétiques minuscules et le -
|
||||
"""
|
||||
if new==None:
|
||||
return decode(self._data.get('host',[''])[0])
|
||||
if new == None:
|
||||
return decode(self._data.get('host', [''])[0])
|
||||
|
||||
new = self.__host_alias('nom de machine',new)
|
||||
self._set('host',[new])
|
||||
new = self.__host_alias('nom de machine', new)
|
||||
self._set('host', [new])
|
||||
return new.split('.')[0]
|
||||
|
||||
def prise(self,new=None):
|
||||
def prise(self, new=None):
|
||||
""" Retourne ou défini la prise associée à la machine
|
||||
La définition n'est possible que si la machine est
|
||||
une machine de l'assoce.
|
||||
|
@ -2310,7 +2310,7 @@ class Machine(base_classes_crans):
|
|||
"""
|
||||
if new == None:
|
||||
if self.proprietaire().__class__ == crans:
|
||||
return decode(self._data.get('prise',['N/A'])[0])
|
||||
return decode(self._data.get('prise', ['N/A'])[0])
|
||||
else:
|
||||
chbre = self.proprietaire().chbre()
|
||||
if chbre and chbre[0].lower() in annuaires.chbre_prises.keys():
|
||||
|
@ -2321,48 +2321,49 @@ class Machine(base_classes_crans):
|
|||
|
||||
# Attribution de la prise
|
||||
new=preattr(new)[1]
|
||||
if new == 'N/A' :
|
||||
if self._data.has_key('prise') :
|
||||
self._set('prise',[])
|
||||
if new == 'N/A':
|
||||
if self._data.has_key('prise'):
|
||||
self._set('prise', [])
|
||||
self._data.pop('prise')
|
||||
return
|
||||
|
||||
if not sre.match('^[a-cg-jmp][0-6][0-5][0-9]$',new.lower()):
|
||||
if not sre.match('^[a-cg-jmp][0-6][0-5][0-9]$', new.lower()):
|
||||
raise ValueError('Prise incorrecte')
|
||||
|
||||
self._set('prise',[new.upper()])
|
||||
self._set('prise', [new.upper()])
|
||||
return new
|
||||
|
||||
def alias(self,new=None):
|
||||
def alias(self, new=None):
|
||||
"""
|
||||
Création ou visualisation des alias d'une machine.
|
||||
Même sytème d'argument que la méthode info.
|
||||
"""
|
||||
if not self._data.has_key('hostAlias'):
|
||||
self._data['hostAlias']=[]
|
||||
self._data['hostAlias'] = []
|
||||
liste = list(self._data['hostAlias'])
|
||||
if new==None: return map(decode,liste)
|
||||
if new == None:
|
||||
return map(decode, liste)
|
||||
|
||||
if type(new)==list:
|
||||
if type(new) == list:
|
||||
# Modif
|
||||
index = new[0]
|
||||
new = new[1]
|
||||
if new=='':
|
||||
if new == '':
|
||||
liste.pop(index)
|
||||
self._set('hostAlias',liste)
|
||||
self._set('hostAlias', liste)
|
||||
return liste
|
||||
else:
|
||||
index=-1
|
||||
index = -1
|
||||
|
||||
# Test si valide
|
||||
new = self.__host_alias('alias',new)
|
||||
new = self.__host_alias('alias', new)
|
||||
|
||||
if index!=-1:
|
||||
liste[index] = new
|
||||
else:
|
||||
liste = liste + [ new ]
|
||||
liste = liste + [new]
|
||||
|
||||
self._set('hostAlias',liste)
|
||||
self._set('hostAlias', liste)
|
||||
return liste
|
||||
|
||||
def ip(self, ip=None):
|
||||
|
@ -2372,7 +2373,7 @@ class Machine(base_classes_crans):
|
|||
Si l'IP n'est pas définie retourne <automatique>.
|
||||
Si ip=<automatique> attribue la permière IP libre du sous réseau.
|
||||
"""
|
||||
if ip==None:
|
||||
if ip == None:
|
||||
if self._data.has_key('ipHostNumber'):
|
||||
return decode(self._data['ipHostNumber'][0])
|
||||
elif self.proprietaire().__class__ == crans and self.__typ != 'borne':
|
||||
|
@ -2401,12 +2402,12 @@ class Machine(base_classes_crans):
|
|||
except:
|
||||
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
|
||||
|
||||
if ip=='<automatique>':
|
||||
if ip == '<automatique>':
|
||||
pool_ip = [] # Pool d'IP à tester
|
||||
for ne in net:
|
||||
ip = ne.split('/')[0]
|
||||
ip = ip.split('.')
|
||||
n=[]
|
||||
n = []
|
||||
for i in ip:
|
||||
n.append(int(i))
|
||||
while 1:
|
||||
|
@ -2415,9 +2416,9 @@ class Machine(base_classes_crans):
|
|||
else:
|
||||
n[2] += 1
|
||||
n[3] = 0
|
||||
if n[2]==255: break
|
||||
if n[2] == 255: break
|
||||
ip = "%d.%d.%d.%d" % tuple(n)
|
||||
if not iptools.AddrInNet(ip,ne):
|
||||
if not iptools.AddrInNet(ip, ne):
|
||||
# On est allé trop loin
|
||||
break
|
||||
pool_ip.append(ip)
|
||||
|
@ -2432,14 +2433,14 @@ class Machine(base_classes_crans):
|
|||
break
|
||||
|
||||
if not len(pool_ip):
|
||||
raise RuntimeError(u'Plus d\'IP libres dans %s.' % string.join(net,' et ') )
|
||||
raise RuntimeError(u'Plus d\'IP libres dans %s.' % string.join(net, ' et '))
|
||||
|
||||
else:
|
||||
# L'ip est elle dans le bon sous réseau ?
|
||||
# (accessoirement teste si l'IP est valide et ne correspond pas
|
||||
# à l'adresse de broadcast ou de réseau)
|
||||
if not iptools.AddrInNet(ip,net):
|
||||
raise ValueError(u'IP invalide ou en dehors du sous réseau alloué.',1)
|
||||
raise ValueError(u'IP invalide ou en dehors du sous réseau alloué.', 1)
|
||||
# Reformatage
|
||||
ip = iptools.DecToQuad(iptools.QuadToDec(ip))
|
||||
# L'ip est-elle déja allouée ?
|
||||
|
@ -2449,7 +2450,7 @@ class Machine(base_classes_crans):
|
|||
# Lock ip
|
||||
self.lock('ipHostNumber',ip)
|
||||
|
||||
self._set('ipHostNumber',[ip])
|
||||
self._set('ipHostNumber', [ip])
|
||||
return ip
|
||||
|
||||
def exempt(self, new=None):
|
||||
|
@ -2484,11 +2485,11 @@ class Machine(base_classes_crans):
|
|||
# On ajoute pas de réseau vide
|
||||
return liste
|
||||
# Ajout à la liste
|
||||
liste = liste + [ new ]
|
||||
liste = liste + [new]
|
||||
else:
|
||||
raise TypeError
|
||||
|
||||
self._set('exempt',liste)
|
||||
self._set('exempt', liste)
|
||||
return liste
|
||||
|
||||
def proprietaire(self):
|
||||
|
@ -2496,11 +2497,11 @@ class Machine(base_classes_crans):
|
|||
retroune le propriétaire de la machine (classe adherent, club ou crans ou invite)
|
||||
"""
|
||||
if not self.__proprietaire:
|
||||
res = self.conn.search_s(','.join(self.dn.split(',')[1:]),0)
|
||||
if 'adherent' in res[0][1]['objectClass'] :
|
||||
self.__proprietaire = adherent(res[0],self._modifiable,self.conn)
|
||||
elif 'club' in res[0][1]['objectClass'] :
|
||||
self.__proprietaire = club(res[0],self._modifiable,self.conn)
|
||||
res = self.conn.search_s(','.join(self.dn.split(',')[1:]), 0)
|
||||
if 'adherent' in res[0][1]['objectClass']:
|
||||
self.__proprietaire = adherent(res[0], self._modifiable, self.conn)
|
||||
elif 'club' in res[0][1]['objectClass']:
|
||||
self.__proprietaire = club(res[0], self._modifiable, self.conn)
|
||||
elif 'invite' in res[0][0]:
|
||||
self.__proprietaire = invite(self.conn)
|
||||
else:
|
||||
|
@ -2513,24 +2514,24 @@ class Machine(base_classes_crans):
|
|||
Enregistre la machine courante dans la base LDAP
|
||||
Retourne une chaîne indiquant les opération effectuées.
|
||||
"""
|
||||
if self.proprietaire().__class__ == crans and not ( isadm or user_tests.getuser() == 'www-data' ):
|
||||
if self.proprietaire().__class__ == crans and not (isadm or user_tests.getuser() == 'www-data'):
|
||||
raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')
|
||||
|
||||
if not self._init_data:
|
||||
# Nouvelle machine => configuration prise
|
||||
self.services_to_restart('switch',[self.proprietaire().chbre()])
|
||||
self.services_to_restart('switch', [self.proprietaire().chbre()])
|
||||
|
||||
ret =''
|
||||
ret = ''
|
||||
|
||||
# Besoin de redémarrer les firewalls ?
|
||||
if 'ipHostNumber' in self.modifs or 'macAddress' in self.modifs:
|
||||
reconf_ip = self._init_data.get('ipHostNumber',[])
|
||||
reconf_ip += self._data.get('ipHostNumber',[])
|
||||
reconf_ip = self._init_data.get('ipHostNumber', [])
|
||||
reconf_ip += self._data.get('ipHostNumber', [])
|
||||
else:
|
||||
reconf_ip = []
|
||||
|
||||
# On vire les doublons dans reconf_ip
|
||||
reconf_ip = list(dict(zip(reconf_ip,[None]*len(reconf_ip))))
|
||||
reconf_ip = list(dict(zip(reconf_ip, [None]*len(reconf_ip))))
|
||||
|
||||
# Enregistrement
|
||||
self._save()
|
||||
|
@ -2542,14 +2543,14 @@ class Machine(base_classes_crans):
|
|||
|
||||
# Reconfiguration firewalls et dhcps
|
||||
if reconf_ip:
|
||||
self.services_to_restart('macip',reconf_ip )
|
||||
self.services_to_restart('macip', reconf_ip)
|
||||
if self.__typ == 'wifi' :
|
||||
self.services_to_restart('ragnarok-dhcp')
|
||||
else:
|
||||
self.services_to_restart('rouge-dhcp')
|
||||
if 'ports' in self.modifs:
|
||||
self.services_to_restart('komaz-ports', [ self.ip() ] )
|
||||
self.services_to_restart('mail_modif',['ip=%s' % self.ip()])
|
||||
self.services_to_restart('komaz-ports', [self.ip()])
|
||||
self.services_to_restart('mail_modif', ['ip=%s' % self.ip()])
|
||||
|
||||
# Reconfiguration DNS ?
|
||||
if 'host' in self.modifs or 'ipHostNumber' in self.modifs or 'hostAlias' in self.modifs:
|
||||
|
@ -2560,19 +2561,20 @@ class Machine(base_classes_crans):
|
|||
self.services_to_restart('conf_wifi_ng')
|
||||
|
||||
# Reconfiguration clients wifi ?
|
||||
if self.__typ in ('wifi','borne') and ( 'ipHostNumber' in self.modifs or 'host' in self.modifs or 'macAddress' in self.modifs ):
|
||||
if self.__typ in ('wifi', 'borne') \
|
||||
and ('ipHostNumber' in self.modifs or 'host' in self.modifs or 'macAddress' in self.modifs):
|
||||
self.services_to_restart('conf_wifi_ng')
|
||||
|
||||
# Regénération blackliste nécessaire ?
|
||||
bl = self.blacklist_actif()
|
||||
if bl and ( 'ipHostNumber' in self.modifs or 'host' in self.modifs ):
|
||||
if bl and ('ipHostNumber' in self.modifs or 'host' in self.modifs):
|
||||
for s in bl:
|
||||
self.services_to_restart(s,[ self.ip() ] )
|
||||
self.services_to_restart(s, [self.ip()])
|
||||
|
||||
# Regénération de l'autostatus et mail de changmement ?
|
||||
if self.proprietaire().__class__ == crans:
|
||||
self.services_to_restart('autostatus')
|
||||
self.services_to_restart('mail_modif',['ip=%s' % self.ip()])
|
||||
self.services_to_restart('mail_modif', ['ip=%s' % self.ip()])
|
||||
|
||||
# Synchronisation avec la base pgsql pour les exemptions
|
||||
if 'exempt' in self.modifs or ('ipHostNumber' in self.modifs and self.exempt()):
|
||||
|
@ -2586,19 +2588,19 @@ class Machine(base_classes_crans):
|
|||
self.modifs = {}
|
||||
|
||||
# Message de sortie
|
||||
ret += coul(u"Machine %s enregistrée avec succès." % self._data['host'][0],'vert')
|
||||
ret += coul(u"Machine %s enregistrée avec succès." % self._data['host'][0], 'vert')
|
||||
|
||||
return ret
|
||||
|
||||
def delete(self,comment=''):
|
||||
def delete(self, comment=''):
|
||||
""" Destruction de la machines """
|
||||
if self.proprietaire().__class__ == crans and not isadm:
|
||||
raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')
|
||||
|
||||
|
||||
self.proprio = self.__proprietaire.Nom() # On met dans un coin le nom du proprio
|
||||
self.__proprietaire = None # On oublie le propriétaire
|
||||
self._delete(self.dn,comment)
|
||||
self.__proprietaire = None # On oublie le propriétaire
|
||||
self._delete(self.dn, comment)
|
||||
|
||||
# Services à redémarrer
|
||||
if self.__typ == 'wifi' :
|
||||
|
@ -2612,28 +2614,31 @@ class Machine(base_classes_crans):
|
|||
self.services_to_restart('surveillance_machines')
|
||||
|
||||
self.services_to_restart('dns')
|
||||
self.services_to_restart('macip',[self.ip()] )
|
||||
self.services_to_restart('macip', [self.ip()])
|
||||
|
||||
def portTCPin(self,ports=None):
|
||||
def portTCPin(self, ports=None):
|
||||
""" Ports TCP ouverts depuis l'extérieur pour la machine """
|
||||
return self.__port(ports,'portTCPin')
|
||||
def portTCPout(self,ports=None):
|
||||
""" Ports TCP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports,'portTCPout')
|
||||
def portUDPin(self,ports=None):
|
||||
""" Ports UDP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports,'portUDPin')
|
||||
def portUDPout(self,ports=None):
|
||||
""" Ports UDP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports,'portUDPout')
|
||||
return self.__port(ports, 'portTCPin')
|
||||
|
||||
def __port(self,ports,champ):
|
||||
def portTCPout(self, ports=None):
|
||||
""" Ports TCP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports, 'portTCPout')
|
||||
|
||||
def portUDPin(self, ports=None):
|
||||
""" Ports UDP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports, 'portUDPin')
|
||||
|
||||
def portUDPout(self, ports=None):
|
||||
""" Ports UDP ouverts vers l'extérieur pour la machine """
|
||||
return self.__port(ports, 'portUDPout')
|
||||
|
||||
def __port(self, ports, champ):
|
||||
if ports == None:
|
||||
return self._data.get(champ,[''])[0]
|
||||
return self._data.get(champ, [''])[0]
|
||||
|
||||
ports = preattr(ports)[1]
|
||||
if ports and self._data.get(champ)!=ports:
|
||||
self._data[champ] = [ ports ]
|
||||
if ports and self._data.get(champ) != ports:
|
||||
self._data[champ] = [ports]
|
||||
if 'ports' not in self.modifs:
|
||||
self.modifs.setdefault('ports', None)
|
||||
elif self._data.has_key(champ):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue