From 225050344f0991d1530d2cccc6e61cd6837b4b54 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Wed, 25 Mar 2009 16:08:35 +0100 Subject: [PATCH] [gen_confs/bind.py] suppression des trailing whitespaces Ignore-this: d949a371de6c74856513bbd0eb66077 darcs-hash:20090325150835-bd074-8172df6956d1066c38d75be76b8b0f23416f5ba1.gz --- gestion/gen_confs/bind.py | 80 +++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/gestion/gen_confs/bind.py b/gestion/gen_confs/bind.py index e9a63684..3f909f72 100644 --- a/gestion/gen_confs/bind.py +++ b/gestion/gen_confs/bind.py @@ -1,7 +1,7 @@ #! /usr/bin/env python # -*- coding: iso-8859-15 -*- - -""" Génération de la configuration pour bind9 + +""" Génération de la configuration pour bind9 Copyright (C) Frédéric Pauget Licence : GPLv2 @@ -12,12 +12,12 @@ from gen_confs import gen_config from iptools import AddrInNet, AddrInNets class dns(gen_config) : - """ + """ Génération des fichiers de configuration de bind9 : * fichier DNS_CONF qui contient les définitions de zone conformément à zone_template. Ce fichier doit être inclus à partir de la config statique de bind - * les fichiers de zones, ce sont eux qui contiennent les données du + * les fichiers de zones, ce sont eux qui contiennent les données du dns, ils ont appellés par le fichier DNS_CONF et sont générés dans DNS_DIR Leur entète est générée à partir de zone_entete. @@ -26,7 +26,7 @@ zones_direct et les adresses de zones_reverse. Les donn la base LDAP """ ######################################PARTIE DE CONFIGURATION - + ### Fichiers à écrire # Répertoire d'écriture des fichiers de zone DNS_DIR = '/etc/bind/generated/' # Avec un / à la fin @@ -49,32 +49,32 @@ la base LDAP DNSs = [ 'rouge.crans.org' , 'sila.crans.org' , 'freebox.crans.org' , 'ovh.crans.org' , 'sable.crans.org' ] DNSs_private = ['vert.adm.crans.org'] ip_master_DNS = "10.231.136.3" - + ### Liste des délégations de zone # Pour les demandes de ces zones, le DNS dira d'aller voir les serveurs listés ici # Pour les noms des serveurs on met l'IP sans point ou le nom avec un point DELEG = { 'tv.crans.org' : ['rouge.crans.org.' , 'sila.crans.org.' , 'freebox.crans.org.', 'sable.crans.org' , 'mdr.crans.org.'] } - + ### Serveurs de mail # format : [ priorité serveur , .... ] MXs = ['10 rouge.crans.org', '20 ovh.crans.org', '20 freebox.crans.org'] SRVs = ['_jabber._tcp.crans.org. 86400 IN SRV 5 0 5269 xmpp.crans.org.', '_xmpp-server._tcp.crans.org. 86400 IN SRV 5 0 5269 xmpp.crans.org.', '_xmpp-client._tcp.crans.org. 86400 IN SRV 5 0 5222 xmpp.crans.org.'] - + ### Entète des fichiers de zone zone_entete=""" $ORIGIN %(zone)s. $TTL 86400 -@\tIN\tSOA rouge.crans.org. root.crans.org. ( +@\tIN\tSOA rouge.crans.org. root.crans.org. ( %(serial)i ; numero de serie - 21600 ; refresh (s) - 3600 ; retry (s) - 1209600 ; expire (s) - 86400 ; TTL (s) + 21600 ; refresh (s) + 3600 ; retry (s) + 1209600 ; expire (s) + 86400 ; TTL (s) ) """ - + # Syntaxe utilisée dans le fichier DNS_CONF pour définir une zone sur le maître zone_template=""" zone "%(NOM_zone)s" { @@ -96,17 +96,17 @@ zone "%(NOM_zone)s" { # Si =1, comme ci-dessus, mais ne ralera pas pour freebox # Si =0, ralera seulement contre les machines ne pouvant être classées verbose = 1 - + restart_cmd = '/etc/init.d/bind9 reload' ######################################FIN PARTIE DE CONFIGURATION - + def __str__(self) : return "DNS" - + def gen_slave(self) : """ Génération du fichier de config de zone pour les esclaves """ zones = self.zones_direct - + # Ajout des zones reverse for net in self.zones_reverse : n = map(int,net.split('/')[0].split('.')[:3]) @@ -118,35 +118,35 @@ zone "%(NOM_zone)s" { zones.append("%d.%d.%d.in-addr.arpa" % tuple(n)) n.reverse() n[2] += 1 - + # Ecriture fd = self._open_conf(self.DNS_CONF_BCFG2,'//') for zone in zones : fd.write(self.zone_template_slave % { 'NOM_zone' : zone, 'FICHIER_zone' : self.DNS_DIR + 'db.' + zone, 'ip_master_DNS': self.ip_master_DNS}) - + fd.close() - + def _gen(self) : ### Génération du numéro de série # Le + 1000.... s'explique pas l'idée précédente et peu pratique d'avoir # le numéro de série du type AAAAMMJJNN (année, mois, jour, incrément par jour) serial = time.time() + 1000000000 - + ### DNS DNS='; DNS de la zone par ordre de priorité\n' for d in self.DNSs : DNS += '@\tIN\tNS %s.\n' % d DNS += '\n' - + ### Serveurs de mail MX='; Serveurs de mails\n' for m in self.MXs : - MX += '%(zone)s.\t' # Sera remplacé par le nom de zone plus tard + MX += '%(zone)s.\t' # Sera remplacé par le nom de zone plus tard MX += 'IN\tMX\t%s.\n' % m MX += '\n' - + direct = {} # format : { zone : [ lignes correspondantes] } reverse = {} warnings = '' @@ -166,7 +166,7 @@ zone "%(NOM_zone)s" { direct['crans.ens-cachan.fr'] ='; Parametres SPF\n' direct['crans.ens-cachan.fr'] +='crans.ens-cachan.fr.\tIN\tTXT\t"v=spf1 a:crans.org mx ?all"\n\n' - + ### Ajout d'eventuels champs SRV direct['crans.org'] +='; Champs SRV\n' for s in self.SRVs: @@ -174,18 +174,18 @@ zone "%(NOM_zone)s" { direct['crans.org'] += '\n' ### Tri des machines - self.anim.iter=len(self.machines) + self.anim.iter=len(self.machines) for machine in self.machines : self.anim.cycle() - + # Calculs préliminaires - try : + try : nom , zone = machine.nom().split('.',1) zone = zone.encode('iso-8859-1') except : warnings += u'Machine ignorée (mid=%s) : format nom incorrect (%s)\n' % ( machine.id().encode('iso-8859-1'), machine.nom().encode('iso-8859-1') ) continue - + # Le direct if zone in self.zones_direct : ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() ) @@ -193,7 +193,7 @@ zone "%(NOM_zone)s" { except : direct[zone] = ligne elif self.verbose and machine.nom() != "ftp.federez.net": warnings += u'Résolution directe ignorée (mid=%s) : zone non autoritaire (%s)\n' % ( machine.id().encode('iso-8859-1'), zone.encode('iso-8859-1') ) - + # Le direct avec alias for alias in machine.alias() : # Cas particulier : nom de l'alias = nom de la zone @@ -204,7 +204,7 @@ zone "%(NOM_zone)s" { try : direct[alias] += ligne except : direct[alias] = ligne continue - + # Bon format ? alias_l = alias.split('.') ok = 0 @@ -224,7 +224,7 @@ zone "%(NOM_zone)s" { ligne = "%s\tIN\tCNAME\t%s.\n" % ( nom, machine.nom() ) try : direct[zone] += ligne except : direct[zone] = ligne - + # Le reverse if AddrInNets(machine.ip(), self.zones_reverse) : base_ip = machine.ip().split('.') @@ -236,12 +236,12 @@ zone "%(NOM_zone)s" { except : reverse[zone] = ligne elif self.verbose >= 2 or machine.nom() not in ('freebox.crans.org', 'ovh.crans.org'): warnings += u'Résolution inverse ignorée (mid=%s) : ip sur zone non autoritaire (%s)\n' % ( machine.id().encode('iso-8859-1'), machine.ip().encode('iso-8859-1') ) - + ### Ajouts pour les fichiers de résolution directs for zone in direct.keys() : # MXs direct[zone] = MX % { 'zone' : zone } + direct[zone] - + ### Ajout des délégations de zones for deleg in self.DELEG.keys(): @@ -251,7 +251,7 @@ zone "%(NOM_zone)s" { continue for serv in self.DELEG[deleg]: direct[zone] = direct[zone] + "%s\tIN\tNS\t%s\n" % ( nom, serv ) - + ### Ecriture des fichiers de zone et préparation du fichier de définition f = '' for zone, lignes in direct.items() + reverse.items() : @@ -264,15 +264,15 @@ zone "%(NOM_zone)s" { fd.write(lignes) fd.close() f += self.zone_template % { 'NOM_zone' : zone, 'FICHIER_zone' : file } - + ### Ecriture fichier de définition fd = self._open_conf(self.DNS_CONF,'//') fd.write(f) fd.close() - + return warnings - + if __name__ == '__main__' : from socket import gethostname from config import bcfg2_main @@ -290,6 +290,6 @@ if __name__ == '__main__' : elif hostname in map(lambda fullhostname : short_name(fullhostname),dns.DNSs[1:]+dns.DNSs_private): print "Ce serveur est esclave! Lancez ce script sur %s, puis lancez bcfg2 ici" % bcfg2_main else: - print "Ce serveur ne correspond à rien pour la configuration DNS." + print "Ce serveur ne correspond à rien pour la configuration DNS."