[gen_confs/bind2] Disclamer en haut des fichiers généré, quelques changements esthétiques

This commit is contained in:
Valentin Samir 2014-02-04 17:22:33 +01:00
parent db96e15b88
commit 1a0530333e

View file

@ -15,6 +15,16 @@ from socket import gethostname
from gestion import config from gestion import config
import config.dns import config.dns
disclamer = """//**************************************************************//
// Ce fichier est genere par les scripts de gen_confs //
// Les donnees proviennent de la base LDAP et de la conf //
// presente au debut du script. Il peut être propagé via bcfg2. //
// //
// NE PAS EDITER //
// //
//**************************************************************//
"""
def short_name(fullhostname): def short_name(fullhostname):
return fullhostname.split(".")[0] return fullhostname.split(".")[0]
@ -108,18 +118,7 @@ class ZoneBase(object):
def __repr__(self): def __repr__(self):
return "<%s %s>" % (self.__class__.__name__, self.zone_name) return "<%s %s>" % (self.__class__.__name__, self.zone_name)
def __str__(self): def __str__(self):
ret=""";*********************************************************** ret="%s\n$ORIGIN %s.\n$TTL %s\n" % (disclamer.replace('//', ';'), self.zone_name, self.ttl)
; Ce fichier est genere par les scripts de gen_confs
; Les donnees proviennent de la base LDAP et de la conf
; presente au debut du script.
;
; NE PAS EDITER
;
;***********************************************************
$ORIGIN %s.
$TTL %s
""" % (self.zone_name, self.ttl)
for rr in self._rrlist: for rr in self._rrlist:
ret+="%s\n" % rr ret+="%s\n" % rr
return ret return ret
@ -151,25 +150,31 @@ class ZoneClone(ZoneBase):
if rr._name in ['', '@']: if rr._name in ['', '@']:
self.add(rr) self.add(rr)
if rr._name in ["%s." % self.zone_clone.zone_name]: if rr._name in ["%s." % self.zone_clone.zone_name]:
self.add(ResourceRecord(rr._type, "%s." % "%s.", rr._value)) self.add(ResourceRecord(rr._type, "%s." % self.zone_name, rr._value))
class Zone(ZoneBase): class Zone(ZoneBase):
def __init__(self, zone_name, ttl, soa, ns_list, ipv6=True, ipv4=True, bl_zone=[]): def __init__(self, zone_name, ttl, soa, ns_list, ipv6=True, ipv4=True, other_zones=[]):
super(Zone, self).__init__(zone_name) super(Zone, self).__init__(zone_name)
self.ttl = ttl self.ttl = ttl
self.ipv4 = ipv4 self.ipv4 = ipv4
self.ipv6 = ipv6 self.ipv6 = ipv6
self.bl_zone = bl_zone self.other_zones = other_zones
self.subzones = [z for z in self.other_zones if z != self.zone_name and z.endswith(self.zone_name)]
self.add(soa) self.add(soa)
for ns in ns_list: for ns in ns_list:
self.add(NS('@', '%s.' % ns)) self.add(NS('@', '%s.' % ns))
def name_in_subzone(self, hostname):
for zone in self.subzones:
if str(hostname).endswith(".%s" % zone):
return True
return False
def get_name(self, hostname): def get_name(self, hostname):
# le hostname fini bien par la zone courante, et il n'appartient pas à une sous-zone # le hostname fini bien par la zone courante, et il n'appartient pas à une sous-zone
if str(hostname) == self.zone_name or str(hostname).endswith(".%s" % self.zone_name) and not reduce(lambda x,y: x or y, [str(hostname).endswith(".%s" % z) for z in self.bl_zone if z != self.zone_name and z.endswith(self.zone_name)] + [False]): if str(hostname) == self.zone_name or str(hostname).endswith(".%s" % self.zone_name) and not self.name_in_subzone(hostname):
ret=str(hostname)[0:- len(self.zone_name) -1] ret=str(hostname)[0:- len(self.zone_name) -1]
if ret == "": if ret == "":
return "@" return "@"
@ -230,7 +235,7 @@ class Zone(ZoneBase):
if machine['host']: if machine['host']:
for alias in machine.get('hostAlias', []): for alias in machine.get('hostAlias', []):
if str(alias) in self.bl_zone and str(alias) != self.zone_name: if str(alias) in self.other_zones and str(alias) != self.zone_name:
continue continue
alias = self.get_name(alias) alias = self.get_name(alias)
if alias is None: continue if alias is None: continue
@ -387,7 +392,7 @@ class dns(gen_config) :
def gen_zones_ldap(self, ttl, ns_list, serial, zones={}, zones_ldap=config.dns.zones_ldap): def gen_zones_ldap(self, ttl, ns_list, serial, zones={}, zones_ldap=config.dns.zones_ldap):
for zone in zones_ldap: for zone in zones_ldap:
zones[zone]=Zone(zone, ttl, self.gen_soa(ns_list, serial, ttl), ns_list, bl_zone=config.dns.zones_direct) zones[zone]=Zone(zone, ttl, self.gen_soa(ns_list, serial, ttl), ns_list, other_zones=config.dns.zones_direct)
return zones return zones
def gen_zones_reverse(self, ttl, ns_list, serial, zones={}, def gen_zones_reverse(self, ttl, ns_list, serial, zones={},
@ -466,6 +471,7 @@ zone "%(zone_name)s" {
""" """
zones = self.gen_zones(self.TTL, self.serial, config.dns.DNSs) zones = self.gen_zones(self.TTL, self.serial, config.dns.DNSs)
with open(self.DNS_CONF, 'w') as f: with open(self.DNS_CONF, 'w') as f:
f.write(disclamer)
for zone in zones.values(): for zone in zones.values():
zone.write(self.DNS_DIR + 'db.' + zone.zone_name) zone.write(self.DNS_DIR + 'db.' + zone.zone_name)
if zone.zone_name in config.dns.zones_dnssec: if zone.zone_name in config.dns.zones_dnssec:
@ -484,6 +490,7 @@ zone "%(zone_name)s" {
""" """
zones = self.gen_zones(self.TTL, self.serial, config.dns.DNSs, populate=False) zones = self.gen_zones(self.TTL, self.serial, config.dns.DNSs, populate=False)
with open(self.DNS_CONF_BCFG2, 'w') as f: with open(self.DNS_CONF_BCFG2, 'w') as f:
f.write(disclamer)
for zone in zones.values(): for zone in zones.values():
if zone.zone_name in config.dns.zones_dnssec: if zone.zone_name in config.dns.zones_dnssec:
zone_path = self.DNSSEC_DIR + 'db.' + zone.zone_name zone_path = self.DNSSEC_DIR + 'db.' + zone.zone_name