[config,bind] On génère tv.crans.org depuis le script de génération du dns
Ignore-this: 6e015fb7f695ab3a56c29ffe46d350d4 darcs-hash:20130128015557-3a55a-9f901eaa97df6a61054d44ec84595a5b87664147.gz
This commit is contained in:
parent
90baff4f36
commit
1782878204
2 changed files with 60 additions and 3 deletions
|
@ -520,6 +520,7 @@ NETs = { 'serveurs' : [ '138.231.136.0/24' ],
|
||||||
'personnel-ens': ['10.2.9.0/24' ],
|
'personnel-ens': ['10.2.9.0/24' ],
|
||||||
'ens' : ['138.231.135.0/24'],
|
'ens' : ['138.231.135.0/24'],
|
||||||
'all' : [ '138.231.136.0/21', '138.231.144.0/21' ],
|
'all' : [ '138.231.136.0/21', '138.231.144.0/21' ],
|
||||||
|
'multicast' : ['239.0.0.0/8'],
|
||||||
}
|
}
|
||||||
|
|
||||||
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
|
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
|
||||||
|
|
|
@ -25,6 +25,8 @@ def short_name(fullhostname):
|
||||||
|
|
||||||
def netv4_to_arpa(net):
|
def netv4_to_arpa(net):
|
||||||
addr, prefixlen = net.split('/')
|
addr, prefixlen = net.split('/')
|
||||||
|
if prefixlen == '8':
|
||||||
|
return ["%s.in-addr.arpa" % addr.split('.')[0]]
|
||||||
if prefixlen == '16':
|
if prefixlen == '16':
|
||||||
return ["%s.in-addr.arpa" % '.'.join(reversed(addr.split('.')[0:2]))]
|
return ["%s.in-addr.arpa" % '.'.join(reversed(addr.split('.')[0:2]))]
|
||||||
zones=[]
|
zones=[]
|
||||||
|
@ -111,11 +113,13 @@ la base LDAP
|
||||||
DNSs_private = []
|
DNSs_private = []
|
||||||
ip_master_DNS = config.dns.master
|
ip_master_DNS = config.dns.master
|
||||||
|
|
||||||
|
zone_multicast = 'tv.crans.org'
|
||||||
|
|
||||||
### Liste des délégations de zone
|
### 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 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
|
# Pour les noms des serveurs on met l'IP sans point ou le nom avec un point
|
||||||
DELEG = {
|
DELEG = {
|
||||||
'tv.crans.org' : [ 'freebox.crans.org.', 'sable.crans.org.' , 'mdr.crans.org.', 'ovh.crans.org.'] ,
|
zone_multicast : [ 'mdr.crans.org.', 'freebox.crans.org.', 'sable.crans.org.' , 'ovh.crans.org.'] ,
|
||||||
}
|
}
|
||||||
|
|
||||||
### Serveurs de mail
|
### Serveurs de mail
|
||||||
|
@ -145,7 +149,7 @@ la base LDAP
|
||||||
zone_entete="""
|
zone_entete="""
|
||||||
$ORIGIN %(zone)s.
|
$ORIGIN %(zone)s.
|
||||||
$TTL 3600
|
$TTL 3600
|
||||||
@\tIN\tSOA sable.crans.org. root.crans.org. (
|
@\tIN\tSOA %(serveur_autoritaire)s. root.crans.org. (
|
||||||
%(serial)i ; numero de serie
|
%(serial)i ; numero de serie
|
||||||
21600 ; refresh (s)
|
21600 ; refresh (s)
|
||||||
3600 ; retry (s)
|
3600 ; retry (s)
|
||||||
|
@ -203,6 +207,51 @@ zone "%(NOM_zone)s" {
|
||||||
elif n.version == 6:
|
elif n.version == 6:
|
||||||
return ('.'.join(rev_dns_a[(128-n.prefixlen)/4:]), (128-n.prefixlen)/4)
|
return ('.'.join(rev_dns_a[(128-n.prefixlen)/4:]), (128-n.prefixlen)/4)
|
||||||
|
|
||||||
|
def gen_tv(self):
|
||||||
|
serial = time.time() + 1000000000
|
||||||
|
zone_reverse=netv4_to_arpa(config.NETs['multicast'][0])[0]
|
||||||
|
sap=open('/tmp/chaines_recup_sap.txt').readlines()
|
||||||
|
|
||||||
|
DNS='; DNS de la zone par ordre de priorité\n'
|
||||||
|
for d in self.DELEG[self.zone_multicast] :
|
||||||
|
DNS += '@\tIN\tNS %s\n' % d
|
||||||
|
DNS += '\n'
|
||||||
|
|
||||||
|
lignes_d = '\n'
|
||||||
|
lignes_r = '\n'
|
||||||
|
lignes_d +='@\tIN\tA\t%s\n' % '138.231.136.243'
|
||||||
|
for line in sap:
|
||||||
|
[nom,ip]=line.split(':')
|
||||||
|
nom=re.sub('TNT([0-9]*) ','',nom) # on enlève les TNT## des noms
|
||||||
|
nom=re.sub(' +([^ ])','-\g<1>',nom) # on remplaces les espaces intérieur par un tiret
|
||||||
|
nom=re.sub('[ .():,"\'+<>]','',nom) # on enlève tous les caractères illégaux
|
||||||
|
nom=nom.lower()
|
||||||
|
try:
|
||||||
|
[ip1,ip2,ip3,ip4]=ip.strip().split('.')
|
||||||
|
lignes_r += '%s.%s.%s\tIN\tPTR\t%s.%s.\n' % (ip4,ip3,ip2,nom,self.zone_multicast)
|
||||||
|
lignes_d +='%s\tIN\tA\t%s' % (nom,ip)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Écriture de la zone directe
|
||||||
|
file = self.DNS_DIR + 'db.' + self.zone_multicast
|
||||||
|
fd = self._open_conf(file,';')
|
||||||
|
fd.write(self.zone_entete % \
|
||||||
|
{ 'zone' : self.zone_multicast, 'serveur_autoritaire' : self.DELEG[self.zone_multicast][0][0:-1] , 'serial' : serial } )
|
||||||
|
fd.write('\n')
|
||||||
|
fd.write(DNS)
|
||||||
|
fd.write(lignes_d)
|
||||||
|
fd.close()
|
||||||
|
|
||||||
|
# Écriture du reverse
|
||||||
|
file = self.DNS_DIR + 'db.' + zone_reverse
|
||||||
|
fd = self._open_conf(file,';')
|
||||||
|
fd.write(self.zone_entete % \
|
||||||
|
{ 'zone' : zone_reverse, 'serveur_autoritaire' : self.DELEG[self.zone_multicast][0][0:-1] , 'serial' : serial } )
|
||||||
|
fd.write('\n')
|
||||||
|
fd.write(DNS)
|
||||||
|
fd.write(lignes_r)
|
||||||
|
fd.close()
|
||||||
|
|
||||||
|
|
||||||
def gen_slave(self) :
|
def gen_slave(self) :
|
||||||
""" Génération du fichier de config de zone pour les esclaves """
|
""" Génération du fichier de config de zone pour les esclaves """
|
||||||
|
@ -477,6 +526,13 @@ if __name__ == '__main__' :
|
||||||
print "Ce serveur est également serveur maitre, mais la reconfiguration du DNS maitre se fait par generate."
|
print "Ce serveur est également serveur maitre, mais la reconfiguration du DNS maitre se fait par generate."
|
||||||
elif hostname == short_name(dns.DNSs[0]):
|
elif hostname == short_name(dns.DNSs[0]):
|
||||||
print "Ce serveur est maître ! Utilisez generate."
|
print "Ce serveur est maître ! Utilisez generate."
|
||||||
|
elif hostname == short_name(dns.DELEG['tv.crans.org'][0][0:-1]):
|
||||||
|
c = dns()
|
||||||
|
c.gen_tv()
|
||||||
|
import subprocess
|
||||||
|
args=dns.restart_cmd.split()
|
||||||
|
p=subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
|
||||||
|
p.communicate()
|
||||||
elif hostname in map(lambda fullhostname : short_name(fullhostname),dns.DNSs[1:]+dns.DNSs_private):
|
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
|
print "Ce serveur est esclave! Lancez ce script sur %s, puis lancez bcfg2 ici" % bcfg2_main
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue