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 :
fd.write(self.zone_template_slave % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone })
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
@ -135,6 +135,7 @@ zone "%(NOM_zone)s" {
### Tri des machines
direct = {} # format : { zone : [ lignes correspondantes] }
direct['ariane'] = "" # Pour Ariane
reverse = {}
warnings = ''
@ -155,6 +156,9 @@ zone "%(NOM_zone)s" {
ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() )
try : 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 :
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')
try : 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
# Bon format ?
@ -188,6 +196,9 @@ zone "%(NOM_zone)s" {
ligne = "%s\tIN\tCNAME\t%s.\n" % ( nom, machine.nom() )
try : 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
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') )
### Ajouts pour les fichiers de résolution directs
for zone in direct.keys() :
for zone in filter(lambda x: x != 'ariane', direct.keys()) :
# MXs
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
f = ''
for zone, lignes in direct.items() + reverse.items() :
if zone == 'ariane':
continue
file = self.DNS_DIR + 'db.' + zone
fd = self._open_conf(file,';')
if zone != 'ariane':
fd.write(self.zone_entete % \
{ 'zone' : zone, 'serveur_autoritaire' : self.DNSs[0] , 'serial' : serial } )
{ '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(DNS)
fd.write(lignes)
@ -224,6 +245,20 @@ zone "%(NOM_zone)s" {
fd.write(f)
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