[Freeipa-devel] [PATCH] 8 Add DNS service records for Windows

Sumit Bose sbose at redhat.com
Fri Oct 14 10:15:57 UTC 2011


Hi,

this patch adds DNS service records for for Windows systems during the
setup of trust support.

Fixes https://fedorahosted.org/freeipa/ticket/1939.

bye,
Sumit
-------------- next part --------------
>From 098f835edf3baedf2e69392909c9e725fde378f0 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sbose at redhat.com>
Date: Thu, 13 Oct 2011 12:01:57 +0200
Subject: [PATCH] Add DNS service records for Windows

https://fedorahosted.org/freeipa/ticket/1939
---
 ipaserver/install/adtrustinstance.py |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py
index d1dc759c611f03215b461b8fe7ebc32d15dc857a..7899d9deca97f9b0311585ef22b1fb5944501bf8 100644
--- a/ipaserver/install/adtrustinstance.py
+++ b/ipaserver/install/adtrustinstance.py
@@ -27,6 +27,7 @@ import tempfile
 import installutils
 from ipaserver import ipaldap
 from ipaserver.install.dsinstance import realm_to_serverid
+from ipaserver.install.bindinstance import get_rr, add_rr, del_rr
 from ipalib import errors
 from ipapython import sysrestore
 from ipapython import ipautil
@@ -246,6 +247,29 @@ class ADTRUSTInstance(service.Service):
         except ipautil.CalledProcessError, e:
             logging.critical("Failed to add key for %s" % cifs_principal)
 
+    def __add_dns_service_records(self):
+        zone = self.domain_name
+        ipa_srv_rec = ("_ldap._tcp", "_kerberos._tcp", "_kerberos._udp")
+        win_srv_suffix = (".Default-First-Site-Name._sites.dc._msdcs",
+                          ".dc._msdcs")
+
+        for srv in ipa_srv_rec:
+            ipa_rdata = get_rr(zone, srv, "SRV")
+            if not ipa_rdata:
+                print "Canot find %s service record in locally, please add " \
+                      "%s.Default-First-Site-Name._sites.dc._msdcs and " \
+                      "%s.dc._msdcs for the %s DNS zone to your DNS server" % \
+                      (srv, srv, srv, zone)
+            else:
+                for suff in win_srv_suffix:
+                    win_srv = srv+suff
+                    win_rdata = get_rr(zone, win_srv, "SRV")
+                    if win_rdata:
+                        for rec in win_rdata:
+                            del_rr(zone, win_srv, "SRV", rec)
+                    for rec in ipa_rdata:
+                        add_rr(zone, win_srv, "SRV", rec)
+
     def __start(self):
         try:
             self.start()
@@ -312,6 +336,7 @@ class ADTRUSTInstance(service.Service):
         self.step("Adding cifs Kerberos principal", self.__setup_principal)
         self.step("Adding admin(group) SIDs", self.__add_admin_sids)
         self.step("configuring smbd to start on boot", self.__enable)
+        self.step("adding special DNS service records", self.__add_dns_service_records)
         self.step("starting smbd", self.__start)
 
         self.start_creation("Configuring smbd:")
-- 
1.7.6



More information about the Freeipa-devel mailing list