[bind] Du punycode dans la zone tv \(^_^)/

This commit is contained in:
Valentin Samir 2013-09-05 10:07:23 +02:00
parent 37c77d88d0
commit cd4000b45d

View file

@ -229,11 +229,16 @@ 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 is_ascii(self, s):
return all(ord(c) < 128 for c in s)
def gen_tv(self):
from unidecode import unidecode
serial = time.time() + 1000000000
zone_reverse=netv4_to_arpa(config.NETs['multicast'][0])[0]
sap=open('/tmp/chaines_recup_sap.txt').readlines()
sap=open('/usr/scripts/var/tv/sap.txt').readlines()
DNS='; DNS de la zone par ordre de priorité\n'
for d in self.DELEG[self.zone_multicast] :
@ -250,11 +255,18 @@ zone "%(NOM_zone)s" {
nom=nom.replace('&','and') # 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()
nom=unicode(nom.lower(), 'utf-8')
nom_ascii=unidecode(nom)
if not self.is_ascii(nom):
nom="xn--%s" % nom.encode('punycode')
else:
nom=None
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)
lignes_r += '%s.%s.%s\tIN\tPTR\t%s.%s.\n' % (ip4,ip3,ip2,nom_ascii,self.zone_multicast)
lignes_d +='%s\tIN\tA\t%s' % (nom_ascii,ip)
if nom:
lignes_d +='%s\tIN\tA\t%s' % (nom,ip)
except:
pass
# Écriture de la zone directe