Detabification

darcs-hash:20050921060155-d1718-7fa5fba168b6f1e239789f5a64b722efa0eeee2f.gz
This commit is contained in:
bernat 2005-09-21 08:01:55 +02:00
parent 8f3bde8fe1
commit 8c57d7e788

View file

@ -110,164 +110,164 @@ class autostatus(gen_config) :
# FIN DE LA CONFIGURATION # FIN DE LA CONFIGURATION
def __str__ (self) : def __str__ (self) :
return "autostatus" return "autostatus"
def make_config (self, dico ) : def make_config (self, dico ) :
""" """
Transforme le dico en suite lignes de configuration Transforme le dico en suite lignes de configuration
""" """
liste = dico.keys() liste = dico.keys()
liste.sort() liste.sort()
append = "" append = ""
for i in liste : for i in liste :
append = append + " ".join( dico[i] ) + "\n" append = append + " ".join( dico[i] ) + "\n"
return append.encode('iso-8859-15') return append.encode('iso-8859-15')
def mail_contact (self, nom) : def mail_contact (self, nom) :
# retourne le mail à qui envoyer les avis pour un serveur # retourne le mail à qui envoyer les avis pour un serveur
if nom in self.contact.keys() : if nom in self.contact.keys() :
return self.contact[nom] return self.contact[nom]
else : else :
return 'nobody' return 'nobody'
def _gen (self) : def _gen (self) :
# machines crans # machines crans
################ ################
machines = crans().machines() machines = crans().machines()
# tri des machines par type # tri des machines par type
bornes = {} bornes = {}
switchs = {} switchs = {}
serveurs = {} serveurs = {}
ferme = {} ferme = {}
# tri des machines # tri des machines
for m in machines : for m in machines :
# machine exclue # machine exclue
if m.nom() in self.exclude : if m.nom() in self.exclude :
continue continue
# les bornes # les bornes
if m.canal() : if m.canal() :
# C'est une borne # C'est une borne
if m.info() : if m.info() :
# on regarde si c'est une borne de batiment # on regarde si c'est une borne de batiment
if ( m.info()[0][0:3] == "Au " ) and ( len(m.info()[0]) == 5 ) : if ( m.info()[0][0:3] == "Au " ) and ( len(m.info()[0]) == 5 ) :
bornes[ "1-" + m.info()[0][4]+m.info()[0][3] + "-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] bornes[ "1-" + m.info()[0][4]+m.info()[0][3] + "-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
else : else :
bornes[ "2-" + m.info()[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] bornes[ "2-" + m.info()[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
else : else :
# on met les bornes non définies à la fin (ordre alphabétique) # on met les bornes non définies à la fin (ordre alphabétique)
bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ] bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ]
# les switchs # les switchs
elif m.info() and 'switch' in m.info()[0].lower() : elif m.info() and 'switch' in m.info()[0].lower() :
# est ce que c'est un batiment # est ce que c'est un batiment
if 'bat' == m.nom()[0:3] : if 'bat' == m.nom()[0:3] :
index = '1-' + m.nom().split(".")[0] index = '1-' + m.nom().split(".")[0]
else : else :
index = '0-' + m.nom().split(".")[0] index = '0-' + m.nom().split(".")[0]
# on ajoute au dictionnaire # on ajoute au dictionnaire
switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
# la ferme # la ferme
elif '.ferme.crans.org' in m.nom() : elif '.ferme.crans.org' in m.nom() :
nom = ".".join(m.nom().split(".")[0:2]) nom = ".".join(m.nom().split(".")[0:2])
if m.info() : if m.info() :
ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
else : else :
ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
# les serveurs # les serveurs
else : else :
if ".wifi.crans.org" in m.nom() : if ".wifi.crans.org" in m.nom() :
nom = m.nom().split(".")[0] + ".wifi" nom = m.nom().split(".")[0] + ".wifi"
else : else :
nom = m.nom().split(".")[0] nom = m.nom().split(".")[0]
if m.info() : if m.info() :
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ]
else : else :
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
# route vers l'extérieur # route vers l'extérieur
######################## ########################
# on récupère la route vers l'extérieur # on récupère la route vers l'extérieur
traceroute = commands.getoutput("/usr/bin/traceroute www.free.fr 2> /dev/null | sed 's/\*//g' | sed 's/ */ /g' | sed 's/^ //g' | sed 's/[(,)]//g' | cut -d ' ' -f 2,3").split("\n") traceroute = commands.getoutput("/usr/bin/traceroute www.free.fr 2> /dev/null | sed 's/\*//g' | sed 's/ */ /g' | sed 's/^ //g' | sed 's/[(,)]//g' | cut -d ' ' -f 2,3").split("\n")
# initialisation des variables # initialisation des variables
in_renater = 0 in_renater = 0
route_to_ext = '' route_to_ext = ''
depends_to_ext = '' depends_to_ext = ''
for routeur in traceroute : for routeur in traceroute :
# on commence à rentrer dans la chaine des routeurs renater # on commence à rentrer dans la chaine des routeurs renater
if 'renater.fr' in routeur : if 'renater.fr' in routeur :
in_renater = 1 in_renater = 1
# on est plus dans les routeurs renater donc on arrête # on est plus dans les routeurs renater donc on arrête
if in_renater and not 'renater.fr' in routeur : if in_renater and not 'renater.fr' in routeur :
continue continue
# ajout du routeur # ajout du routeur
# ip # ip
tmp_ip = routeur.split(' ')[1] tmp_ip = routeur.split(' ')[1]
# nom & desciption # nom & desciption
if routeur.split(' ')[1] in self.infos_routeurs.keys() : if routeur.split(' ')[1] in self.infos_routeurs.keys() :
tmp_name = self.infos_routeurs[tmp_ip][0] tmp_name = self.infos_routeurs[tmp_ip][0]
tmp_desc = self.infos_routeurs[tmp_ip][1] tmp_desc = self.infos_routeurs[tmp_ip][1]
else : else :
tmp_name = routeur.split(' ')[0].split('.')[0] tmp_name = routeur.split(' ')[0].split('.')[0]
tmp_desc = 'Pas de description' tmp_desc = 'Pas de description'
# dépendances # dépendances
if not depends_to_ext : if not depends_to_ext :
tmp_depends = 'none' tmp_depends = 'none'
depends_to_ext = tmp_name depends_to_ext = tmp_name
else : else :
tmp_depends = depends_to_ext tmp_depends = depends_to_ext
depends_to_ext += ',' + tmp_name depends_to_ext += ',' + tmp_name
# on l'ajoute à la route # on l'ajoute à la route
if route_to_ext : if route_to_ext :
route_to_ext += '\n' route_to_ext += '\n'
route_to_ext += '%s %s %s %s %s' % (tmp_name, tmp_ip, tmp_depends,self.mail_contact(tmp_name),tmp_desc) route_to_ext += '%s %s %s %s %s' % (tmp_name, tmp_ip, tmp_depends,self.mail_contact(tmp_name),tmp_desc)
# services extérieurs # services extérieurs
##################### #####################
services_exterieurs = {} services_exterieurs = {}
for key in self.services_exterieurs.keys() : for key in self.services_exterieurs.keys() :
s = self.services_exterieurs[key] s = self.services_exterieurs[key]
if s[2] : if s[2] :
services_exterieurs[ key ] = [ s[0] + ':' + str(s[2]), s[1] , depends_to_ext, s[4] , s[3] ] services_exterieurs[ key ] = [ s[0] + ':' + str(s[2]), s[1] , depends_to_ext, s[4] , s[3] ]
else : else :
services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ] services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ]
# génération du fichier # génération du fichier
####################### #######################
file = self._open_conf(self.CONFFILE, "#") file = self._open_conf(self.CONFFILE, "#")
# génère le dictionnaire pour les modifications # génère le dictionnaire pour les modifications
dico = {} dico = {}
dico['switchs'] = self.make_config(switchs) dico['switchs'] = self.make_config(switchs)
dico['bornes'] = self.make_config(bornes) dico['bornes'] = self.make_config(bornes)
dico['serveurs'] = self.make_config(serveurs) dico['serveurs'] = self.make_config(serveurs)
dico['ferme'] = self.make_config(ferme) dico['ferme'] = self.make_config(ferme)
dico['route'] = route_to_ext.encode('iso-8859-15') dico['route'] = route_to_ext.encode('iso-8859-15')
dico['exterieur'] = self.make_config(services_exterieurs) dico['exterieur'] = self.make_config(services_exterieurs)
# on écrit dans le fichier de configuration # on écrit dans le fichier de configuration
file.write( self.matrice % dico ) file.write( self.matrice % dico )
# on ferme le fichier # on ferme le fichier
file.close() file.close()