[gen_confs/bind2] Disclamer en haut des fichiers généré, quelques changements esthétiques
This commit is contained in:
parent
db96e15b88
commit
1a0530333e
1 changed files with 25 additions and 18 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue