[bind] Alias de zone plus propre
On ajoute des alias de v6.zone.crans.org vers zone.v6.crans.org vu que le reverse est déjà sur v6.zone.crans.org
This commit is contained in:
parent
447d028dc8
commit
608a39c633
1 changed files with 47 additions and 49 deletions
|
@ -97,6 +97,13 @@ la base LDAP
|
|||
'adm.crans.org': 'adm.v6.crans.org',
|
||||
'ferme.crans.org': 'ferme.v6.crans.org',
|
||||
}
|
||||
zone_alias.update({
|
||||
'wifi.v6.crans.eu': ['v6.wifi.crans.eu'],
|
||||
'wifi.v6.crans.org': ['v6.wifi.crans.org'],
|
||||
'adm.v6.crans.org': ['v6.adm.crans.org'],
|
||||
'ferme.v6.crans.org': ['v6.ferme.crans.org'],
|
||||
})
|
||||
|
||||
# Résolution inverse
|
||||
zones_reverse = config.dns.zones_reverse
|
||||
zones_v6_to_net = {
|
||||
|
@ -273,6 +280,9 @@ zone "%(NOM_zone)s" {
|
|||
""" Génération du fichier de config de zone pour les esclaves """
|
||||
zones = self.zones_direct
|
||||
zones.extend(self.zones_v4_to_v6.values())
|
||||
zones.extend([z for l in self.zone_alias.values() for z in l])
|
||||
zones = list(set(zones))
|
||||
zones.sort()
|
||||
|
||||
# Ajout des zones reverse
|
||||
for net in self.zones_reverse:
|
||||
|
@ -311,7 +321,7 @@ zone "%(NOM_zone)s" {
|
|||
### 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 += '@\t' # Sera remplacé par le nom de zone plus tard
|
||||
MX += 'IN\tMX\t%s.\n' % m
|
||||
MX += '\n'
|
||||
|
||||
|
@ -325,22 +335,6 @@ zone "%(NOM_zone)s" {
|
|||
#direct["crans.org"] = "\n; irc.crans.org -> irc.rezosup.org\n"
|
||||
#direct["crans.org"] += "irc\tIN\tCNAME\tirc.rezosup.org.\n\n"
|
||||
|
||||
### Ajout des parametres SPF
|
||||
direct['crans.org'] +='; Parametres SPF\n'
|
||||
direct['crans.org'] +='crans.org.\tIN\tTXT\t"v=spf1 a mx ?all"\n'
|
||||
for m in self.MXs:
|
||||
direct['crans.org'] +='%s.\tIN\tTXT\t"v=spf1 a ?all"\n' % m.split()[-1]
|
||||
direct['crans.org'] += '\n'
|
||||
|
||||
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:
|
||||
direct['crans.org'] += s + '\n'
|
||||
direct['crans.org'] += '\n'
|
||||
|
||||
### Tri des machines
|
||||
self.anim.iter=len(self.machines)
|
||||
for machine in self.machines :
|
||||
|
@ -376,9 +370,6 @@ zone "%(NOM_zone)s" {
|
|||
direct[zone] = direct.get(zone, "") + ligne
|
||||
if isinstance(machine,ldap_crans.BorneWifi):
|
||||
direct['ap.crans.org'] = direct.get('ap.crans.org', "") + ligne
|
||||
if zone in self.zone_alias:
|
||||
for alias in self.zone_alias[zone]:
|
||||
direct[alias] = direct.get(alias, "") + 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('utf-8'), zone.encode('utf-8') )
|
||||
|
||||
|
@ -392,13 +383,6 @@ zone "%(NOM_zone)s" {
|
|||
direct[zone_v6] = direct.get(zone_v6, "") + ligne
|
||||
if machine.dnsIpv6():
|
||||
direct[zone] = direct.get(zone, "") + ligne
|
||||
if zone in self.zone_alias:
|
||||
for alias in self.zone_alias[zone]:
|
||||
if alias in self.zones_v4_to_v6:
|
||||
alias_v6=self.zones_v4_to_v6[alias]
|
||||
direct[alias_v6] = direct.get(alias_v6, "") + ligne
|
||||
if machine.dnsIpv6():
|
||||
direct[alias] = direct.get(alias, "") + ligne
|
||||
# Reverse
|
||||
zone_rev, length = self.reverse(net_v6, ipv6)
|
||||
rev = '.'.join(ipv6.reverse_dns.split('.')[:length])
|
||||
|
@ -414,24 +398,15 @@ zone "%(NOM_zone)s" {
|
|||
ligne = "@\tIN\tA\t%s\n" % machine.ip()
|
||||
ligne = ligne.encode('utf-8')
|
||||
direct[alias] = direct.get(alias, "") + ligne
|
||||
if alias in self.zone_alias:
|
||||
for alias2 in self.zone_alias[alias]: direct[alias2] = direct.get(alias2, "") + ligne
|
||||
if machine.dnsIpv6():
|
||||
ligne = "@\tIN\tAAAA\t%s\n" % machine.ipv6()
|
||||
ligne = ligne.encode('utf-8')
|
||||
direct[alias]= direct.get(alias, "") + ligne
|
||||
if alias in self.zone_alias:
|
||||
for alias2 in self.zone_alias[alias]: direct[alias2] = direct.get(alias2, "") + ligne
|
||||
if alias in self.zones_v4_to_v6:
|
||||
ligne = "@\tIN\tAAAA\t%s\n" % machine.ipv6()
|
||||
ligne = ligne.encode('utf-8')
|
||||
zone6 = self.zones_v4_to_v6[alias]
|
||||
direct[zone6] = direct.get(zone6, '') + ligne
|
||||
if alias in self.zone_alias:
|
||||
for alias2 in self.zone_alias[alias]:
|
||||
if alias2 in self.zones_v4_to_v6:
|
||||
alias26=self.zones_v4_to_v6[alias2]
|
||||
direct[alias26] = direct.get(alias26, "") + ligne
|
||||
continue
|
||||
|
||||
# Bon format ?
|
||||
|
@ -456,12 +431,6 @@ zone "%(NOM_zone)s" {
|
|||
zone6 = self.zones_v4_to_v6[zone]
|
||||
ligne = "%s\tIN\tCNAME\t%s.\n" % ( nom, machine.nom6() )
|
||||
direct[zone6] = direct.get(zone6, '') + ligne
|
||||
if zone in self.zone_alias:
|
||||
for alias in self.zone_alias[zone]:
|
||||
direct[alias] = direct.get(alias, '') + ligne
|
||||
if alias in self.zones_v4_to_v6:
|
||||
alias6 = self.zones_v4_to_v6[alias]
|
||||
direct[alias6] = direct.get(alias6, '') + ligne
|
||||
|
||||
# Le reverse
|
||||
ip = machine.ip()
|
||||
|
@ -480,13 +449,44 @@ zone "%(NOM_zone)s" {
|
|||
### Ajouts pour les fichiers de résolution directs
|
||||
for zone in direct.keys() :
|
||||
# MXs
|
||||
direct[zone] = MX % { 'zone' : zone } + direct[zone]
|
||||
direct[zone] = MX + direct[zone]
|
||||
|
||||
### XXX: création de la zone inverse pour le /48 IPv6 complet du Cr@ns
|
||||
full_net_v6 = self.zones_v6_to_net["##HACK##"]
|
||||
zone_rev, length = self.reverse(full_net_v6, netaddr.IPNetwork(full_net_v6).first)
|
||||
reverse[zone_rev] = reverse.get(zone_rev, "")
|
||||
|
||||
### Alias de zone
|
||||
zone_todo = [zone for zone in self.zone_alias]
|
||||
while zone_todo:
|
||||
for zone in zone_todo:
|
||||
for alias in self.zone_alias[zone]:
|
||||
try:
|
||||
direct[alias] = direct[zone]
|
||||
zone_todo.remove(zone)
|
||||
except KeyError:
|
||||
pass
|
||||
if alias in self.zones_v4_to_v6:
|
||||
alias_v6=self.zones_v4_to_v6[alias]
|
||||
zone_v6 = self.zones_v4_to_v6[zone]
|
||||
direct[alias_v6] = direct[zone_v6]
|
||||
|
||||
### Ajout des parametres SPF
|
||||
direct['crans.org'] +='; Parametres SPF\n'
|
||||
direct['crans.org'] +='crans.org.\tIN\tTXT\t"v=spf1 a mx ?all"\n'
|
||||
for m in self.MXs:
|
||||
direct['crans.org'] +='%s.\tIN\tTXT\t"v=spf1 a ?all"\n' % m.split()[-1]
|
||||
direct['crans.org'] += '\n'
|
||||
|
||||
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:
|
||||
direct['crans.org'] += s + '\n'
|
||||
direct['crans.org'] += '\n'
|
||||
|
||||
### Ajout des délégations de zones
|
||||
for deleg in self.DELEG.keys():
|
||||
nom, zone = deleg.split('.',1)
|
||||
|
@ -496,14 +496,12 @@ zone "%(NOM_zone)s" {
|
|||
for serv in self.DELEG[deleg]:
|
||||
direct[zone] = direct[zone] + "%s\tIN\tNS\t%s\n" % ( nom, serv )
|
||||
|
||||
for zone in self.zones_direct:
|
||||
for zone in direct.keys():
|
||||
child, parent = zone.split('.',1)
|
||||
if not zone in self.DELEG.keys() and parent in self.zones_direct:
|
||||
if not zone in self.DELEG.keys() and parent in self.zones_direct + [z for l in self.zone_alias.values() for z in l] + self.zones_v4_to_v6.values():
|
||||
for d in self.DNSs:
|
||||
direct[parent] = direct.get(parent, "") + '%s\tIN\tNS %s\n' % (child, d)
|
||||
if zone in self.zones_v4_to_v6.keys():
|
||||
for d in self.DNSs:
|
||||
direct[parent] = direct.get(parent, "") + '%s.\tIN\tNS %s\n' % (self.zones_v4_to_v6[zone], d)
|
||||
direct[parent] = direct.get(parent, "") + '%s\tIN\tNS %s.\n' % (child, d)
|
||||
|
||||
|
||||
### Ajout d'eventuel champs DS pour les délégation dnssec
|
||||
for zone,ds in self.DS.items():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue