From 00bb8e60490a59dde8d6b8a0903bc2ec7289767c Mon Sep 17 00:00:00 2001 From: Paul Wouters Date: Mar 23 2007 04:27:39 +0000 Subject: Upgraded to 3.0.5 --- diff --git a/.cvsignore b/.cvsignore index e0cc747..7016f54 100644 --- a/.cvsignore +++ b/.cvsignore @@ -3,3 +3,4 @@ nsd-2.3.6.tar.gz nsd.init nsd-3.0.2.tar.gz nsd-3.0.3.tar.gz +nsd-3.0.5.tar.gz diff --git a/nsd.spec b/nsd.spec index 4ed7c87..c32bd9e 100644 --- a/nsd.spec +++ b/nsd.spec @@ -1,6 +1,6 @@ Summary: NSD is a complete implementation of an authoritative DNS name server Name: nsd -Version: 3.0.3 +Version: 3.0.5 Release: 1%{?dist} License: BSD-like Url: http://open.nlnetlabs.nl/nsd/ @@ -73,6 +73,9 @@ if [ "$1" -ge "1" ]; then fi %changelog +* Fri Mar 23 2007 Paul Wouters 3.0.5-1 +- Upgraded to 3.0.5 + * Thu Dec 7 2006 Paul Wouters 3.0.3-1 - Upgraded to 3.0.3 diff --git a/nsd.zones2nsd.conf b/nsd.zones2nsd.conf new file mode 100644 index 0000000..6716695 --- /dev/null +++ b/nsd.zones2nsd.conf @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# Contributed 2006 by Stephane Bortzmeyer. +# Changed 20070102 by Wouter to handle primary zones and file names. + +# Converts a nsd 2 "nsd.zones" file to a nsd 3 "nsd.conf" file. + +# Change at will +nsd_zones_name = "/etc/nsd.zones" +key_dir = "/etc/nsd/keys" # Directory holding the TSIG keys + +import re +import os.path + +primary_line_re = re.compile("^zone\s+([a-z0-9\.-]+)\s+([a-z0-9/\.-]+)\s*$", re.IGNORECASE) +secondary_line_re = re.compile("^zone\s+([a-z0-9\.-]+)\s+([a-z0-9/\.-]+)\s+masters\s+([0-9a-f:\. ]*)\s*$", re.IGNORECASE) +notify_line_re = re.compile("^zone\s+([a-z0-9\.-]+)\s+([a-z0-9/\.-]+)\s+notify\s+([0-9a-f:\. ]*)\s*$", re.IGNORECASE) +comment_re = re.compile("^\s*;") +empty_re = re.compile("^\s*$") + +nsd_zones = open(nsd_zones_name) +keys = {} +for line in nsd_zones.xreadlines(): + if comment_re.search(line) or empty_re.search(line): + pass + elif secondary_line_re.search(line): + match = secondary_line_re.search(line) + zone = match.group(1) + zonefile = match.group(2) + master_group = match.group(3) + masters = re.split("\s+", master_group) + print """zone: + name: "%s" + zonefile: "%s" + # This is to allow "nsdc update" to work. + allow-notify: 127.0.0.1 NOKEY + # This is a slave zone. Masters are listed below.""" % (zone, zonefile) + for master in masters: + if re.search("^\s*$", master): + continue + key_filename = "%s/%s.tsiginfo" % (key_dir, master) + if os.path.exists(key_filename): + key_content = open(key_filename) + peer_ip = key_content.readline() + peer_ip = peer_ip[:-1] + key_name = key_content.readline() + key_name = key_name[:-1] + algorithm = key_content.readline() + algorithm = int(algorithm[:-1]) + if algorithm == 157: + algorithm_name = "hmac-md5" + else: + raise Exception("Unsupported TSIG algorithm %i" % algorithm) + secret = key_content.readline() + secret = secret[:-1] + key_content.close() + key = key_name + keys[key_name] = { + 'algorithm': algorithm_name, + 'secret': secret} + else: + key = "NOKEY" + print """ allow-notify: %s %s + request-xfr: %s %s""" % (master, key, master, key) + print "" + elif primary_line_re.search(line): + match = primary_line_re.search(line) + zone = match.group(1) + zonefile = match.group(2) + print """zone: + name: "%s" + zonefile: "%s" + """ % (zone, zonefile) + elif notify_line_re.search(line): + match = notify_line_re.search(line) + zone = match.group(1) + zonefile = match.group(2) + notify_group = match.group(3) + notifies = re.split("\s+", notify_group) + print """zone: + name: "%s" + zonefile: "%s" + # This is a master zone. Slaves are listed below.""" % (zone, zonefile) + for notify in notifies: + if re.search("^\s*$", notify): + continue + key = "NOKEY" + print """ notify: %s %s""" % (notify, key) + print "" + else: + raise Exception("Invalid line \"%s\"" % line) +nsd_zones.close() +for key in keys.keys(): + print """key: + name: "%s" + algorithm: %s + secret: "%s" """ % (key, keys[key]['algorithm'], keys[key]['secret']) + print "" + +## Local Variables: ## +## mode:python ## +## End: ## diff --git a/sources b/sources index 4a47012..68d3fbc 100644 --- a/sources +++ b/sources @@ -3,3 +3,4 @@ e9dfb18d544cd37c57b05a91384037e9 nsd-2.3.5.tar.gz e64633bb4e6eb46e8e16049e87333cb9 nsd.init a51f7d2146d8f5901b825b2c0672c86a nsd-3.0.2.tar.gz 73f59bebd0af6ed2d2f0dad2b7727229 nsd-3.0.3.tar.gz +ab72e227d600889319d28c4387a95cef nsd-3.0.5.tar.gz