[dnssec-trigger] update dnssec-trigger-script to current development submitted upstream

Pavel Šimerda pavlix at fedoraproject.org
Fri Jun 20 08:39:28 UTC 2014


commit 654266c538d4345ef927aa2577cf8afc76000c79
Author: Pavel Šimerda <psimerda at redhat.com>
Date:   Fri Jun 20 09:41:45 2014 +0200

    update dnssec-trigger-script to current development submitted upstream

 dnssec-trigger-0.12-nm-script-2.patch |   30 --------
 dnssec-trigger-0.12-nm-script.patch   |  131 ++++++++++++++++++++++++++++++--
 dnssec-trigger.spec                   |   17 +++-
 3 files changed, 134 insertions(+), 44 deletions(-)
---
diff --git a/dnssec-trigger-0.12-nm-script.patch b/dnssec-trigger-0.12-nm-script.patch
index 392318c..585f603 100644
--- a/dnssec-trigger-0.12-nm-script.patch
+++ b/dnssec-trigger-0.12-nm-script.patch
@@ -1,8 +1,13 @@
 diff --git a/dnssec-trigger-script.in b/dnssec-trigger-script.in
-index b572dd1..297e36a 100644
+index b572dd1..bc2bf01 100644
 --- a/dnssec-trigger-script.in
 +++ b/dnssec-trigger-script.in
-@@ -10,6 +10,8 @@ import os, sys, shutil, subprocess
+@@ -6,17 +6,18 @@
+ """
+ 
+ from gi.repository import NMClient
+-import os, sys, shutil, subprocess
++import os, sys, shutil, glob, subprocess
  import logging, logging.handlers
  import socket, struct
  
@@ -11,7 +16,29 @@ index b572dd1..297e36a 100644
  DEVNULL = open("/dev/null", "wb")
  
  log = logging.getLogger()
-@@ -190,7 +192,7 @@ class UnboundZoneConfig:
+ log.setLevel(logging.INFO)
+ log.addHandler(logging.handlers.SysLogHandler())
+-if sys.stderr.isatty():
+-    log.addHandler(logging.StreamHandler())
++log.addHandler(logging.StreamHandler())
+ 
+ # NetworkManager reportedly doesn't pass the PATH environment variable.
+ os.environ['PATH'] = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+@@ -53,11 +54,10 @@ class ConnectionList:
+ 
+     nm_connections = None
+ 
+-    def __init__(self, only_default=False, skip_wifi=False):
++    def __init__(self, client, only_default=False, skip_wifi=False):
+         # Cache the active connection list in the class
+         if self.nm_connections is None:
+-            self.__class__.client = NMClient.Client()
+-            self.__class__.nm_connections = self.client.get_active_connections()
++            self.__class__.nm_connections = client.get_active_connections()
+         self.skip_wifi = skip_wifi
+         self.only_default = only_default
+         log.debug(self)
+@@ -190,7 +190,7 @@ class UnboundZoneConfig:
                  if fields.pop(0) in ('forward', 'forward:'):
                      fields.pop(0)
                  secure = False
@@ -20,7 +47,7 @@ index b572dd1..297e36a 100644
                      secure = True
                      fields.pop(0)
                  self.cache[name] = set(fields[3:]), secure
-@@ -255,7 +257,7 @@ class Store:
+@@ -255,7 +255,7 @@ class Store:
                      line = line.strip()
                      if line:
                          self.cache.add(line)
@@ -29,7 +56,27 @@ index b572dd1..297e36a 100644
              pass
          log.debug(self)
  
-@@ -309,7 +311,7 @@ class GlobalForwarders:
+@@ -277,10 +277,16 @@ class Store:
+         log.debug(self)
+ 
+     def update(self, zones):
+-        """Commit a new zone list."""
++        """Commit a new set of items and return True when it differs"""
+ 
+-        self.cache = set(zones)
+-        log.debug(self)
++        zones = set(zones)
++
++        if zones != self.cache:
++            self.cache = set(zones)
++            log.debug(self)
++            return True
++
++        return False
+ 
+     def remove(self, zone):
+         """Remove zone from the cache."""
+@@ -309,7 +315,7 @@ class GlobalForwarders:
                      line = line.strip()
                      if line:
                          self.cache.add(line)
@@ -38,15 +85,81 @@ index b572dd1..297e36a 100644
              pass
  
  class Application:
-@@ -335,7 +337,7 @@ class Application:
+@@ -328,17 +334,24 @@ class Application:
+         except AttributeError:
+             self.usage()
+         self.config = Config()
++        self.client = NMClient.Client()
++
++        self.resolvconf = "/etc/resolv.conf"
++        self.resolvconf_backup = "/var/run/dnssec-trigger/resolv.conf.bak"
+ 
+     def nm_handles_resolv_conf(self):
+-        if subprocess.call(["pidof", "NetworkManager"], stdout=DEVNULL, stderr=DEVNULL) != 0:
++        if not self.client.get_manager_running():
++            log.debug("NetworkManager is not running")
+             return False
          try:
              with open("/etc/NetworkManager/NetworkManager.conf") as nm_config_file:
                  for line in nm_config_file:
 -                    if line.strip == "dns=none":
 +                    if line.strip() in ("dns=none", "dns=unbound"):
++                        log.debug("NetworkManager doesn't handle /etc/resolv.conf")
                          return False
          except IOError:
              pass
--- 
-1.8.3.2
-
++        log.debug("NetworkManager handles /etc/resolv.conf")
+         return True
+ 
+     def usage(self):
+@@ -351,9 +364,19 @@ class Application:
+     def run_prepare(self):
+         """Prepare for dnssec-trigger."""
+ 
++        old_zones = glob.glob("/var/run/dnssec-trigger/????????-????-????-????-????????????")
++        if old_zones:
++            log.info("Converting to new zone cache format")
++            with open("/var/run/dnssec-trigger/zones", "a") as target:
++                for filename in old_zones:
++                    with open(filename) as source:
++                        for line in source:
++                            print(line.strip(), file=target)
++                    os.remove(filename)
++
+         if not self.nm_handles_resolv_conf():
+             log.info("Backing up /etc/resolv.conf")
+-            shutil.copy("/etc/resolv.conf", "/var/run/dnssec-trigger/resolv.conf.bak")
++            shutil.copy(self.resolvconf, self.resolvconf_backup)
+ 
+     def run_cleanup(self):
+         """Clean up after dnssec-trigger."""
+@@ -370,7 +393,10 @@ class Application:
+         log.debug("recovering /etc/resolv.conf")
+         subprocess.check_call(["chattr", "-i", "/etc/resolv.conf"])
+         if not self.nm_handles_resolv_conf():
+-            shutil.copy("/var/run/dnssec-trigger/resolv.conf.bak", "/etc/resolv.conf")
++            try:
++                shutil.copy(self.resolvconf_backup, self.resolvconf)
++            except IOError as error:
++                log.warning("Cannot restore resolv.conf from {!r}: {}".format(self.resolvconf_backup, error.strerror))
+         # NetworkManager currently doesn't support explicit /etc/resolv.conf
+         # write out. For now we simply restart the daemon.
+         elif os.path.exists("/sys/fs/cgroup/systemd"):
+@@ -387,7 +413,7 @@ class Application:
+ 
+         subprocess.check_call(["dnssec-trigger-control", "status"], stdout=DEVNULL, stderr=DEVNULL)
+ 
+-        default_connections = ConnectionList(only_default=True)
++        default_connections = ConnectionList(self.client, only_default=True)
+         servers = Store('servers')
+ 
+         if servers.update(sum((connection.servers for connection in default_connections), [])):
+@@ -399,7 +425,7 @@ class Application:
+     def run_update_connection_zones(self):
+         """Configures forward zones in the unbound using unbound-control."""
+ 
+-        connections = ConnectionList(skip_wifi=not self.config.add_wifi_provided_zones).get_zone_connection_mapping()
++        connections = ConnectionList(self.client, skip_wifi=not self.config.add_wifi_provided_zones).get_zone_connection_mapping()
+         unbound_zones = UnboundZoneConfig()
+         stored_zones = Store('zones')
+ 
diff --git a/dnssec-trigger.spec b/dnssec-trigger.spec
index b8b866b..d94e2c2 100644
--- a/dnssec-trigger.spec
+++ b/dnssec-trigger.spec
@@ -3,7 +3,7 @@
 Summary: NetworkManager plugin to update/reconfigure DNSSEC resolving
 Name: dnssec-trigger
 Version: 0.12
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: BSD
 Url: http://www.nlnetlabs.nl/downloads/dnssec-trigger/
 Source0: http://www.nlnetlabs.nl/downloads/dnssec-trigger/%{name}-%{version}.tar.gz
@@ -14,13 +14,18 @@ Source2: dnssec-trigger.tmpfiles.d
 #
 # https://bugzilla.redhat.com/show_bug.cgi?id=842455
 Patch1: dnssec-trigger-842455.patch
-# Fix dnssec-trigger-script (upstream patch after 0.12 release)
+# Fix dnssec-trigger-script (diff between 0.12 and what has been submitted to
+# upstream)
+#
+# Upstream often squashes our patches so it's more practical to use just one
+# patch. Please don't forget to submit the changes to upstream before
+# updating the patch.
 #
 # https://bugzilla.redhat.com/show_bug.cgi?id=1100794
 # https://bugzilla.redhat.com/show_bug.cgi?id=1100794
-Patch2: dnssec-trigger-0.12-nm-script.patch
 # https://bugzilla.redhat.com/show_bug.cgi?id=1105896
-Patch3: dnssec-trigger-0.12-nm-script-2.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=1111143
+Patch2: dnssec-trigger-0.12-nm-script.patch
 
 Requires(postun): initscripts
 Requires: ldns >= 1.6.10, NetworkManager, NetworkManager-glib, unbound, xdg-utils
@@ -48,7 +53,6 @@ sed -i "s/-panel//" panel/dnssec-trigger-panel.desktop.in
 
 %patch1 -p1
 %patch2 -p1
-%patch3 -p1
 
 # change default RSA key between deamon/control from 1536 to 3072
 sed -i "s/BITS=1536/BITS=3072/" dnssec-trigger-control-setup.sh.in
@@ -127,6 +131,9 @@ fi
 %systemd_postun_with_restart %{name}d.service
 
 %changelog
+* Fri Jun 20 2014 Pavel Šimerda <psimerda at redhat.com> - 0.12-4
+- update dnssec-trigger-script to current development submitted upstream
+
 * Wed Jun 18 2014 Pavel Šimerda <psimerda at redhat.com> - 0.12-3
 - Resolves: #1105896 - the new script doesn't call dnssec-trigger-control submit
 


More information about the scm-commits mailing list