[bind.py] Ajout des DS pour wifi.crans.eu et v6.crans.eu, ajout des champs SSHFP depuis ldap, hack sale avec os.chmod pour que bind puisse toujours écrire dans les fichiers de zone sur les slaves même quand "quelqu'un" lance un generate.py --dns
Ignore-this: e90db43493bb2e4f69e27518f755ae16 darcs-hash:20130112034846-3a55a-ffc5138ac8e44f6a171df956804bec91e22d613b.gz
This commit is contained in:
parent
bb54dec933
commit
d859a4e0e8
1 changed files with 24 additions and 8 deletions
|
@ -6,7 +6,7 @@
|
||||||
Copyright (C) Frédéric Pauget
|
Copyright (C) Frédéric Pauget
|
||||||
Licence : GPLv2
|
Licence : GPLv2
|
||||||
"""
|
"""
|
||||||
import time, sys, re
|
import time, sys, re, hashlib, base64, os
|
||||||
sys.path.append('/usr/scripts/gestion')
|
sys.path.append('/usr/scripts/gestion')
|
||||||
from socket import gethostname
|
from socket import gethostname
|
||||||
from gen_confs import gen_config
|
from gen_confs import gen_config
|
||||||
|
@ -100,7 +100,12 @@ la base LDAP
|
||||||
# DS à publier dans zone parentes : { parent : [ zone. TTL IN DS key_id algo_id 1 hash ] }
|
# DS à publier dans zone parentes : { parent : [ zone. TTL IN DS key_id algo_id 1 hash ] }
|
||||||
# ex : { 'crans.eu' : ['wifi.crans.eu. 86400 IN DS 33131 8 1 3B573B0E2712D8A8B1B0C3'] }
|
# ex : { 'crans.eu' : ['wifi.crans.eu. 86400 IN DS 33131 8 1 3B573B0E2712D8A8B1B0C3'] }
|
||||||
# /!\ Il faut faire attention au rollback des keys, il faudrait faire quelque chose d'automatique avec opendnssec
|
# /!\ Il faut faire attention au rollback des keys, il faudrait faire quelque chose d'automatique avec opendnssec
|
||||||
DS = {}
|
DS = {
|
||||||
|
'crans.eu': [
|
||||||
|
'wifi.crans.eu. 3600 IN DS 49739 8 2 de49579462a8f439c9b1853c2a06d337ae4e5ffbd41c21449d4c7112794254ed',
|
||||||
|
'v6.crans.eu. 3600 IN DS 81 8 2 36fa8d4782ecdbc25f0455e2c14aea899b86cf497ce78c7d90d1cf85647f5190',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
### Entète des fichiers de zone
|
### Entète des fichiers de zone
|
||||||
|
@ -258,12 +263,6 @@ zone "%(NOM_zone)s" {
|
||||||
direct['crans.org'] += s + '\n'
|
direct['crans.org'] += s + '\n'
|
||||||
direct['crans.org'] += '\n'
|
direct['crans.org'] += '\n'
|
||||||
|
|
||||||
### Ajout d'eventuel champs DS pour les délégation dnssec
|
|
||||||
for zone,ds in self.DS:
|
|
||||||
for s in ds:
|
|
||||||
direct[zone] += s + '\n'
|
|
||||||
direct[zone] += '\n'
|
|
||||||
|
|
||||||
### Tri des machines
|
### Tri des machines
|
||||||
self.anim.iter=len(self.machines)
|
self.anim.iter=len(self.machines)
|
||||||
for machine in self.machines :
|
for machine in self.machines :
|
||||||
|
@ -281,6 +280,15 @@ zone "%(NOM_zone)s" {
|
||||||
ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() )
|
ligne = "%s\tIN\tA\t%s\n" % ( nom, machine.ip() )
|
||||||
if isinstance(machine,ldap_crans.BorneWifi) and machine.position():
|
if isinstance(machine,ldap_crans.BorneWifi) and machine.position():
|
||||||
ligne +="%s\tIN\tTXT\t\"LOC %s,%s\"\n" % (nom,machine.position()[0],machine.position()[1])
|
ligne +="%s\tIN\tTXT\t\"LOC %s,%s\"\n" % (nom,machine.position()[0],machine.position()[1])
|
||||||
|
for key in machine.sshFingerprint():
|
||||||
|
try:
|
||||||
|
[algo,key]=key.split()[:2]
|
||||||
|
if algo == "ssh-rsa": algo=1
|
||||||
|
elif algo == "ssh-dss": algo=2
|
||||||
|
else: raise ValueError("Invalid Algorithms %s" % algo)
|
||||||
|
key=hashlib.sha1(base64.b64decode(key)).hexdigest()
|
||||||
|
ligne +="%s\tIN\tSSHFP\t%s\t1\t%s\n" % (nom,algo,key)
|
||||||
|
except(ValueError,TypeError): pass
|
||||||
direct[zone] = direct.get(zone, "") + ligne
|
direct[zone] = direct.get(zone, "") + ligne
|
||||||
elif self.verbose and machine.nom() != "ftp.federez.net":
|
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('iso-8859-1'), zone.encode('iso-8859-1') )
|
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') )
|
||||||
|
@ -385,6 +393,13 @@ zone "%(NOM_zone)s" {
|
||||||
direct[self.zones_v4_to_v6['crans.eu']]=re.sub('crans.org','crans.eu',direct[self.zones_v4_to_v6['crans.org']])
|
direct[self.zones_v4_to_v6['crans.eu']]=re.sub('crans.org','crans.eu',direct[self.zones_v4_to_v6['crans.org']])
|
||||||
direct[self.zones_v4_to_v6['wifi.crans.eu']]=re.sub('crans.org','crans.eu',direct[self.zones_v4_to_v6['wifi.crans.org']])
|
direct[self.zones_v4_to_v6['wifi.crans.eu']]=re.sub('crans.org','crans.eu',direct[self.zones_v4_to_v6['wifi.crans.org']])
|
||||||
|
|
||||||
|
|
||||||
|
### Ajout d'eventuel champs DS pour les délégation dnssec
|
||||||
|
for zone,ds in self.DS.items():
|
||||||
|
for s in ds:
|
||||||
|
direct[zone] += s + '\n'
|
||||||
|
direct[zone] += '\n'
|
||||||
|
|
||||||
### Ecriture des fichiers de zone et préparation du fichier de définition
|
### Ecriture des fichiers de zone et préparation du fichier de définition
|
||||||
f = ''
|
f = ''
|
||||||
for zone, lignes in direct.items() + reverse.items() :
|
for zone, lignes in direct.items() + reverse.items() :
|
||||||
|
@ -400,6 +415,7 @@ zone "%(NOM_zone)s" {
|
||||||
fd.write(DNS)
|
fd.write(DNS)
|
||||||
fd.write(lignes)
|
fd.write(lignes)
|
||||||
fd.close()
|
fd.close()
|
||||||
|
os.chmod(file,0664)
|
||||||
if short_name(gethostname()) in map(short_name, dns.DNSs[1:]):
|
if short_name(gethostname()) in map(short_name, dns.DNSs[1:]):
|
||||||
f += self.zone_template_slave % {'NOM_zone': zone, 'FICHIER_zone': path,
|
f += self.zone_template_slave % {'NOM_zone': zone, 'FICHIER_zone': path,
|
||||||
'ip_master_DNS': self.ip_master_DNS}
|
'ip_master_DNS': self.ip_master_DNS}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue