Fichier de zone spcial pour Ariane.

Merci le CRI de faire la gueule, mais on va se dbrouiller sans vous.

Ariane pense qu'il est secondaire sur crans.org, il croit donc qu'il
est autoritaire sur crans.org et ne connat pas l'existence des zones
wifi et ferme. On lui prsente donc un fichier o ces zones sont
inclues dans crans.org

darcs-hash:20050310231006-d1718-60babf704589ca2efceb43a03d0143e030341b2f.gz
This commit is contained in:
bernat 2005-03-11 00:10:06 +01:00
parent 86b61e33c8
commit 5e533c467e

View file

@ -111,9 +111,9 @@ zone "%(NOM_zone)s" {
for zone in zones : for zone in zones :
fd.write(self.zone_template_slave % { 'NOM_zone' : zone, fd.write(self.zone_template_slave % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone }) 'FICHIER_zone' : self.DNS_DIR + 'db.' + zone })
fd.close() fd.close()
def _gen(self) : def _gen(self) :
### Génération du numéro de série ### 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 + 1000.... s'explique pas l'idée précédente et peu pratique d'avoir
@ -135,6 +135,7 @@ zone "%(NOM_zone)s" {
### Tri des machines ### Tri des machines
direct = {} # format : { zone : [ lignes correspondantes] } direct = {} # format : { zone : [ lignes correspondantes] }
direct['ariane'] = "" # Pour Ariane
reverse = {} reverse = {}
warnings = '' warnings = ''
@ -155,6 +156,9 @@ zone "%(NOM_zone)s" {
ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() ) ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() )
try : direct[zone] += ligne try : direct[zone] += ligne
except : direct[zone] = ligne except : direct[zone] = ligne
if zone[-9:] == "crans.org":
direct['ariane'] += ("%s\tIN\tA\t%s\n" % ((nom + "." + zone)[:-10],
machine.ip() )).encode('iso-8859-15')
elif self.verbose : elif self.verbose :
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') ) 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') )
@ -167,6 +171,10 @@ zone "%(NOM_zone)s" {
alias = alias.encode('iso-8859-1') alias = alias.encode('iso-8859-1')
try : direct[alias] += ligne try : direct[alias] += ligne
except : direct[alias] = ligne except : direct[alias] = ligne
if alias == "crans.org":
direct['ariane'] += ("@\tIN\tA\t%s\n" % machine.ip()).encode('iso-8859-15')
elif alias[-9:] == "crans.org":
direct['ariane'] += ("%s\tIN\tA\t%s\n" % (alias[:-10], machine.ip())).encode('iso-8859-15')
continue continue
# Bon format ? # Bon format ?
@ -188,6 +196,9 @@ zone "%(NOM_zone)s" {
ligne = "%s\tIN\tCNAME\t%s.\n" % ( nom, machine.nom() ) ligne = "%s\tIN\tCNAME\t%s.\n" % ( nom, machine.nom() )
try : direct[zone] += ligne try : direct[zone] += ligne
except : direct[zone] = ligne except : direct[zone] = ligne
if zone[-9:] == "crans.org":
direct['ariane'] += ("%s\tIN\tCNAME\t%s.\n" % ((nom + "." + zone)[:-10],
machine.nom() )).encode('iso-8859-15')
# Le reverse # Le reverse
if AddrInNets(machine.ip(), self.zones_reverse) : if AddrInNets(machine.ip(), self.zones_reverse) :
@ -202,17 +213,27 @@ zone "%(NOM_zone)s" {
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') ) 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 ### Ajouts pour les fichiers de résolution directs
for zone in direct.keys() : for zone in filter(lambda x: x != 'ariane', direct.keys()) :
# MXs # MXs
direct[zone] = MX % { 'zone' : zone } + direct[zone] direct[zone] = MX % { 'zone' : zone } + direct[zone]
if zone[-9:] == "crans.org":
direct['ariane'] = MX % { 'zone' : zone } + direct['ariane']
### Ecriture des fichiers de zone et préparation du fichier de définition ### Ecriture des fichiers de zone et préparation du fichier de définition
f = '' f = ''
for zone, lignes in direct.items() + reverse.items() : for zone, lignes in direct.items() + reverse.items() :
if zone == 'ariane':
continue
file = self.DNS_DIR + 'db.' + zone file = self.DNS_DIR + 'db.' + zone
fd = self._open_conf(file,';') fd = self._open_conf(file,';')
fd.write(self.zone_entete % \ if zone != 'ariane':
{ 'zone' : zone, 'serveur_autoritaire' : self.DNSs[0] , 'serial' : serial } ) fd.write(self.zone_entete % \
{ 'zone' : zone, 'serveur_autoritaire' : self.DNSs[0] ,
'serial' : serial } )
else:
fd.write(self.zone_entete % \
{ 'zone' : 'crans.org', 'serveur_autoritaire' : self.DNSs[0] ,
'serial' : serial } )
fd.write('\n') fd.write('\n')
fd.write(DNS) fd.write(DNS)
fd.write(lignes) fd.write(lignes)
@ -224,6 +245,20 @@ zone "%(NOM_zone)s" {
fd.write(f) fd.write(f)
fd.close() fd.close()
# Pour ariane
fd = self._open_conf("%s.ariane" % self.DNS_CONF, '//')
for zone in filter(lambda x: x!= 'ariane', direct):
if zone == "crans.org":
fd.write(self.zone_template % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.ariane' })
elif zone[-9:] != "crans.org":
fd.write(self.zone_template % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone })
for zone in reverse :
fd.write(self.zone_template % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone })
fd.close()
return warnings return warnings