[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' ],
|
||||
'ens' : ['138.231.135.0/24'],
|
||||
'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+$' }
|
||||
|
|
|
@ -25,6 +25,8 @@ def short_name(fullhostname):
|
|||
|
||||
def netv4_to_arpa(net):
|
||||
addr, prefixlen = net.split('/')
|
||||
if prefixlen == '8':
|
||||
return ["%s.in-addr.arpa" % addr.split('.')[0]]
|
||||
if prefixlen == '16':
|
||||
return ["%s.in-addr.arpa" % '.'.join(reversed(addr.split('.')[0:2]))]
|
||||
zones=[]
|
||||
|
@ -111,11 +113,13 @@ la base LDAP
|
|||
DNSs_private = []
|
||||
ip_master_DNS = config.dns.master
|
||||
|
||||
zone_multicast = 'tv.crans.org'
|
||||
|
||||
### 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 noms des serveurs on met l'IP sans point ou le nom avec un point
|
||||
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
|
||||
|
@ -145,7 +149,7 @@ la base LDAP
|
|||
zone_entete="""
|
||||
$ORIGIN %(zone)s.
|
||||
$TTL 3600
|
||||
@\tIN\tSOA sable.crans.org. root.crans.org. (
|
||||
@\tIN\tSOA %(serveur_autoritaire)s. root.crans.org. (
|
||||
%(serial)i ; numero de serie
|
||||
21600 ; refresh (s)
|
||||
3600 ; retry (s)
|
||||
|
@ -203,6 +207,51 @@ zone "%(NOM_zone)s" {
|
|||
elif n.version == 6:
|
||||
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) :
|
||||
""" 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."
|
||||
elif hostname == short_name(dns.DNSs[0]):
|
||||
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):
|
||||
print "Ce serveur est esclave! Lancez ce script sur %s, puis lancez bcfg2 ici" % bcfg2_main
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue