[config,bind] On pousse une partie de la configuration dans config.py pour l'utiliser depuis bcfg2

Ignore-this: 52f33e0a3a665905915eb30c54bfbffa

darcs-hash:20130126175548-3a55a-38c50d5b7cf7b47b13d78eda81cf5ce063a4d463.gz
This commit is contained in:
Valentin Samir 2013-01-26 18:55:48 +01:00
parent bfd4e48d99
commit 41c084facc
2 changed files with 73 additions and 33 deletions

View file

@ -21,6 +21,36 @@ import ldap_crans
def short_name(fullhostname):
return fullhostname.split(".")[0]
def netv4_to_arpa(net):
addr, prefixlen = net.split('/')
if prefixlen == '16':
return ["%s.in-addr.arpa" % '.'.join(reversed(addr.split('.')[0:2]))]
zones=[]
n = map(int,net.split('/')[0].split('.')[:3])
while 1 :
try:
innet = AddrInNet("%d.%d.%d.1" % tuple(n),net)
except ValueError:
break
else:
if not innet:
break
else :
n.reverse()
zones.append("%d.%d.%d.in-addr.arpa" % tuple(n))
n.reverse()
n[2] += 1
return zones
def netv6_to_arpa(net):
n = netaddr.IPNetwork(net)
network_reverse = netaddr.IPAddress(n.first).reverse_dns
zone = network_reverse.split('.')[(128-n.prefixlen)/4:-1]
return '.'.join(zone)
class dns(gen_config) :
"""
Génération des fichiers de configuration de bind9 :
@ -51,14 +81,11 @@ la base LDAP
## En cas de modification de ces zones penser à regéner le fichier de
## zone des esclaves (sur le serveur principal de bcfg2 : python /usr/scripts/gestion/gen_confs/bind.py puis lancer bcfg2 sur les miroirs)
# Résolution directe
zones_direct = [ 'crans.org', 'crans.ens-cachan.fr', 'wifi.crans.org', 'ferme.crans.org' , 'clubs.ens-cachan.fr', 'adm.crans.org','crans.eu','wifi.crans.eu' ]
# Zones signée par opendnssec sur le serveur maitre
zones_dnssec = ['crans.eu','wifi.crans.eu','v6.crans.eu','wifi.v6.crans.eu']
zones_direct = config.dns.zones_direct
# Zones signée par opendnssec sur le serveur maitre
zones_dnssec = config.dns.zones_dnssec
# Zones alias pour les enregistrement A AAAA CNAME TXT et SSHFP
zone_alias = {
'crans.org' : ['crans.eu'],
'wifi.crans.org' : ['wifi.crans.eu'],
}
zone_alias = config.dns.zone_alias
zones_v4_to_v6 = {
'wifi.crans.eu': 'wifi.v6.crans.eu',
'crans.eu': 'v6.crans.eu',
@ -68,7 +95,7 @@ la base LDAP
'ferme.crans.org': 'ferme.v6.crans.org',
}
# Résolution inverse
zones_reverse = config.NETs["all"] + config.NETs["adm"] + config.NETs["personnel-ens"]
zones_reverse = config.dns.zones_reverse
zones_v6_to_net = {
'crans.eu': config.prefix["fil"][0],
'crans.org': config.prefix["fil"][0],
@ -81,8 +108,8 @@ la base LDAP
### Liste DNS
# Le premier doit être le maitre
DNSs = ['sable.crans.org', 'freebox.crans.org', 'ovh.crans.org']
DNSs_private = ['vert.adm.crans.org']
ip_master_DNS = "10.231.136.9"
DNSs_private = []
ip_master_DNS = config.dns.master
### Liste des délégations de zone
# Pour les demandes de ces zones, le DNS dira d'aller voir les serveurs listés ici
@ -175,7 +202,7 @@ zone "%(NOM_zone)s" {
return ('.'.join(rev_dns_a[1:]), 1)
elif n.version == 6:
return ('.'.join(rev_dns_a[(128-n.prefixlen)/4:]), (128-n.prefixlen)/4)
def gen_slave(self) :
""" Génération du fichier de config de zone pour les esclaves """
@ -185,31 +212,11 @@ zone "%(NOM_zone)s" {
# Ajout des zones reverse
for net in self.zones_reverse:
# IPv4 reverse
addr, prefixlen = net.split('/')
if prefixlen == '16':
zones.append("%s.in-addr.arpa" % '.'.join(reversed(addr.split('.')[0:2])))
continue
n = map(int,net.split('/')[0].split('.')[:3])
while 1 :
try:
innet = AddrInNet("%d.%d.%d.1" % tuple(n),net)
except ValueError:
break
else:
if not innet:
break
else :
n.reverse()
zones.append("%d.%d.%d.in-addr.arpa" % tuple(n))
n.reverse()
n[2] += 1
zones.extend(netv4_to_arpa(net))
for net in set(self.zones_v6_to_net.values()):
# IPv6 reverse
n = netaddr.IPNetwork(net)
network_reverse = netaddr.IPAddress(n.first).reverse_dns
zone = network_reverse.split('.')[(128-n.prefixlen)/4:-1]
zones.append('.'.join(zone))
zones.append(netv6_to_arpa(net))
# Ecriture
fd = self._open_conf(self.DNS_CONF_BCFG2,'//')