[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
|
||||
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):
|
||||
return fullhostname.split(".")[0]
|
||||
|
||||
|
@ -108,18 +118,7 @@ class ZoneBase(object):
|
|||
def __repr__(self):
|
||||
return "<%s %s>" % (self.__class__.__name__, self.zone_name)
|
||||
def __str__(self):
|
||||
ret=""";***********************************************************
|
||||
; 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)
|
||||
ret="%s\n$ORIGIN %s.\n$TTL %s\n" % (disclamer.replace('//', ';'), self.zone_name, self.ttl)
|
||||
for rr in self._rrlist:
|
||||
ret+="%s\n" % rr
|
||||
return ret
|
||||
|
@ -151,25 +150,31 @@ class ZoneClone(ZoneBase):
|
|||
if rr._name in ['', '@']:
|
||||
self.add(rr)
|
||||
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):
|
||||
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)
|
||||
self.ttl = ttl
|
||||
self.ipv4 = ipv4
|
||||
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)
|
||||
for ns in ns_list:
|
||||
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):
|
||||
# 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]
|
||||
if ret == "":
|
||||
return "@"
|
||||
|
@ -230,7 +235,7 @@ class Zone(ZoneBase):
|
|||
|
||||
if machine['host']:
|
||||
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
|
||||
alias = self.get_name(alias)
|
||||
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):
|
||||
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
|
||||
|
||||
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)
|
||||
with open(self.DNS_CONF, 'w') as f:
|
||||
f.write(disclamer)
|
||||
for zone in zones.values():
|
||||
zone.write(self.DNS_DIR + 'db.' + zone.zone_name)
|
||||
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)
|
||||
with open(self.DNS_CONF_BCFG2, 'w') as f:
|
||||
f.write(disclamer)
|
||||
for zone in zones.values():
|
||||
if zone.zone_name in config.dns.zones_dnssec:
|
||||
zone_path = self.DNSSEC_DIR + 'db.' + zone.zone_name
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue