]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] enable windows python tools
authorEvan Hunt <each@isc.org>
Wed, 26 Feb 2014 16:43:50 +0000 (08:43 -0800)
committerEvan Hunt <each@isc.org>
Wed, 26 Feb 2014 16:43:50 +0000 (08:43 -0800)
3757. [port] Enable Python tools (dnssec-coverage,
dnssec-checkds) to run on Windows. [RT #34355]

CHANGES
bin/dnssec/win32/importkey.vcxproj.in
bin/python/dnssec-checkds.py.in
bin/python/dnssec-coverage.py.in
bin/python/win32.py [deleted file]
bin/tests/system/checkds/dig.pl [new file with mode: 0644]
lib/isc/win32/libisc.vcxproj.in
win32utils/legacy/BuildSetup.bat.in

diff --git a/CHANGES b/CHANGES
index 376033be505c12f146da36e44a835223e74cfc57..284020e2b40a5425cf69be343ca99557bf1a877a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3757.  [port]          Enable Python tools (dnssec-coverage,
+                       dnssec-checkds) to run on Windows. [RT #34355]
+
 3756.  [bug]           GSSAPI Kerberos realm checking was broken in
                        check_config leading to spurious messages being
                        logged.  [RT #35443]
index 4ba593755675e852e4acb1865173de395bf10248..810c7a3d8fe1b253c08232454d89c62a86dd794f 100644 (file)
       <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
-@IF PYTHON\r
-    <PostBuildEvent>\r
-      <Command>cd ..\..\python\r
-copy /Y dnssec-checkds.py ..\..\Build\$(Configuration)\dnssec-checkds.py\r
-copy /Y dnssec-coverage.py ..\..\Build\$(Configuration)\dnssec-coverage.py\r
-</Command>\r
-    </PostBuildEvent>\r
-@END PYTHON\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">\r
     <ClCompile>\r
@@ -108,14 +100,6 @@ copy /Y dnssec-coverage.py ..\..\Build\$(Configuration)\dnssec-coverage.py
       <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
-@IF PYTHON\r
-    <PostBuildEvent>\r
-      <Command>cd ..\..\python\r
-copy /Y dnssec-checkds.py ..\..\Build\$(Configuration)\dnssec-checkds.py\r
-copy /Y dnssec-coverage.py ..\..\Build\$(Configuration)\dnssec-coverage.py\r
-</Command>\r
-    </PostBuildEvent>\r
-@END PYTHON\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\dnssec-importkey.c" />\r
index 8f1146821b213d5f1b4522c6290ecf3a0876410b..b92375619166786d040e6fa95bc0ff3bb92fa94d 100644 (file)
 # PERFORMANCE OF THIS SOFTWARE.
 ############################################################################
 
-# $Id$
-
 import argparse
 import pprint
 import os
 
+prog='dnssec-checkds'
+
+# These routines permit platform-independent location of BIND 9 tools
+if os.name == 'nt':
+    import win32con
+    import win32api
+
+def prefix(bindir = ''):
+    if os.name != 'nt':
+        return os.path.join('@prefix@', bindir)
+
+    bind_subkey = "Software\\ISC\\BIND"
+    hKey = None
+    keyFound = True
+    try:
+        hKey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, bind_subkey)
+    except:
+        keyFound = False
+    if keyFound:
+        try:
+            (namedBase, _) = win32api.RegQueryValueEx(hKey, "InstallDir")
+        except:
+            keyFound = False
+        win32api.RegCloseKey(hKey)
+    if keyFound:
+        return os.path.join(namedBase, bindir)
+    return os.path.join(win32api.GetSystemDirectory(), bindir)
+
 def shellquote(s):
     if os.name == 'nt':
-        return s
+        return '"' + s.replace('"', '"\\"') + '"'
     return "'" + s.replace("'", "'\\''") + "'"
 
 ############################################################################
@@ -257,12 +283,13 @@ def checkdlv(zone, lookaside, masterfile = None):
 ############################################################################
 def parse_args():
     global args
+    parser = argparse.ArgumentParser(description=prog + ': checks DS coverage')
+
     bindir = 'bin'
-    if os.name != 'nt':
-        sbindir = 'sbin'
-    else:
+    if os.name == 'nt':
         sbindir = 'bin'
-    parser = argparse.ArgumentParser(description='checkds: checks DS coverage')
+    else:
+        sbindir = 'sbin'
 
     parser.add_argument('zone', type=str, help='zone to check')
     parser.add_argument('-f', '--file', dest='masterfile', type=str,
@@ -270,10 +297,10 @@ def parse_args():
     parser.add_argument('-l', '--lookaside', dest='lookaside', type=str,
                         help='DLV lookaside zone')
     parser.add_argument('-d', '--dig', dest='dig',
-                        default=os.path.join('@prefix@', bindir, 'dig'),
+                        default=os.path.join(prefix(bindir), 'dig'),
                         type=str, help='path to \'dig\'')
     parser.add_argument('-D', '--dsfromkey', dest='dsfromkey',
-                        default=os.path.join('@prefix@', sbindir,
+                        default=os.path.join(prefix(sbindir),
                                              'dnssec-dsfromkey'),
                         type=str, help='path to \'dig\'')
     parser.add_argument('-v', '--version', action='version', version='9.9.1')
index 1365471e04cdd342ce1e404bbf973bc3ba4829b4..6aded9ae1916d57b546369d352c698fe2a647126 100755 (executable)
 # PERFORMANCE OF THIS SOFTWARE.
 ############################################################################
 
-# changes 2014-01-08, Peter Palfrader:
-#  - support checking only X days into the future.
-#  - support checking only KSK keys or only ZSK keys.
-
 import argparse
 import os
 import glob
@@ -31,6 +27,32 @@ import pprint
 
 prog='dnssec-coverage'
 
+# These routines permit platform-independent location of BIND 9 tools
+if os.name == 'nt':
+    import win32con
+    import win32api
+
+def prefix(bindir = ''):
+    if os.name != 'nt':
+        return os.path.join('@prefix@', bindir)
+
+    bind_subkey = "Software\\ISC\\BIND"
+    hKey = None
+    keyFound = True
+    try:
+        hKey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, bind_subkey)
+    except:
+        keyFound = False
+    if keyFound:
+        try:
+            (namedBase, _) = win32api.RegQueryValueEx(hKey, "InstallDir")
+        except:
+            keyFound = False
+        win32api.RegCloseKey(hKey)
+    if keyFound:
+        return os.path.join(namedBase, bindir)
+    return os.path.join(win32api.GetSystemDirectory(), bindir)
+
 ########################################################################
 # Class Event
 ########################################################################
@@ -633,11 +655,8 @@ def set_path(command, default=None):
 def parse_args():
     """Read command line arguments, set global 'args' structure"""
     global args
-    bindir = 'bin';
-
     compilezone = set_path('named-compilezone',
-                           os.path.join('@prefix@', bindir,
-                                        'named-compilezone'))
+                           os.path.join(prefix('bin'), 'named-compilezone'))
 
     parser = argparse.ArgumentParser(description=prog + ': checks future ' +
                                      'DNSKEY coverage for a zone')
diff --git a/bin/python/win32.py b/bin/python/win32.py
deleted file mode 100644 (file)
index b347370..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#!@PYTHON@
-############################################################################
-# Copyright (C) 2013  Internet Systems Consortium, Inc. ("ISC")
-#
-# Permission to use, copy, modify, and/or distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-############################################################################
-
-# $Id$
-
-# ntpath rewrote in Python
-
-import win32con
-import win32api
-
-BIND_SUBKEY = "Software\\ISC\\BIND"
-
-def base():
-    hKey = None
-    keyFound = True
-    try:
-        hKey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, BIND_SUBKEY)
-    except:
-        keyFound = False
-    if keyFound:
-        try:
-            (namedBase, _) = win32api.RegQueryValueEx(hKey, "InstallDir")
-        except:
-            keyFound = False
-        win32api.RegCloseKey(hKey)
-    if keyFound:
-        return namedBase
-    return win32api.GetSystemDirectory()
diff --git a/bin/tests/system/checkds/dig.pl b/bin/tests/system/checkds/dig.pl
new file mode 100644 (file)
index 0000000..0470d5c
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 2014  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# $Id$
+
+my $arg;
+my $ext;
+my $file;
+
+foreach $arg (@ARGV) {
+    if ($arg =~ /^\+/) {
+        next;
+    }
+    if ($arg =~ /^-t/) {
+        next;
+    }
+    if ($arg =~ /^ds$/i) {
+        $ext = "ds";
+        next;
+    }
+    if ($arg =~ /^dlv$/i) {
+        $ext = "dlv";
+        next;
+    }
+    if ($arg =~ /^dnskey$/i) {
+        $ext = "dnskey";
+        next;
+    }
+    $file = $arg;
+    next;
+}
+
+open F, $file . "." . $ext . ".db" || die $!;
+while (<F>) {
+    print;
+}
+close F;
index 83fc5c10e35665b996f114994b78710dc65ad3f2..1e01ff2b41cce97b9257950230a7ff24fe80e513 100644 (file)
@@ -192,6 +192,10 @@ copy ..\bin\dnssec\dnssec-settime.html ..\Build\Release
 copy ..\bin\dnssec\dnssec-revoke.html ..\Build\Release\r
 copy ..\bin\dnssec\dnssec-verify.html ..\Build\Release\r
 copy ..\bin\dnssec\dnssec-importkey.html ..\Build\Release\r
+@IF PYTHON\r
+copy ..\bin\python\dnssec-checkds.html ..\Build\Release\r
+copy ..\bin\python\dnssec-coverage.html ..\Build\Release\r
+@END PYTHON\r
 @IF PKCS11\r
 copy ..\bin\pkcs11\pkcs11-keygen.html ..\Build\Release\r
 copy ..\bin\pkcs11\pkcs11-list.html ..\Build\Release\r
index c266b0eda31cdf3190531c20407a5db61fb0e32b..0512e0b5d3ff777c2d6e49004c7e9b81a3ee1bb9 100644 (file)
@@ -66,6 +66,10 @@ copy ..\..\bin\dnssec\dnssec-settime.html ..\..\Build\Release
 copy ..\..\bin\dnssec\dnssec-revoke.html ..\..\Build\Release
 copy ..\..\bin\dnssec\dnssec-verify.html ..\..\Build\Release
 copy ..\..\bin\dnssec\dnssec-importkey.html ..\..\Build\Release
+@IF PYTHON
+copy ..\..\bin\python\dnssec-checkds.html ..\..\Build\Release
+copy ..\..\bin\python\dnssec-coverage.html ..\..\Build\Release
+@END PYTHON
 @IF PKCS11
 copy ..\..\bin\pkcs11\pkcs11-keygen.html ..\..\Build\Release
 copy ..\..\bin\pkcs11\pkcs11-list.html ..\..\Build\Release