Andreas Schneider cbf258a
From 372b8f15ccf37c491f43ec7ab81be692ff0fcfed Mon Sep 17 00:00:00 2001
Andreas Schneider cbf258a
From: David Mulder <dmulder@samba.org>
Andreas Schneider cbf258a
Date: Fri, 5 Jan 2024 08:47:07 -0700
Andreas Schneider cbf258a
Subject: [PATCH] WIP: gp: Skip site GP list if no site is found
Andreas Schneider cbf258a
Andreas Schneider cbf258a
[MS-GPOL] 3.2.5.1.4 Site Search says if the site
Andreas Schneider cbf258a
search returns ERROR_NO_SITENAME, the GP site
Andreas Schneider cbf258a
search should be skipped.
Andreas Schneider cbf258a
Andreas Schneider cbf258a
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15548
Andreas Schneider cbf258a
Andreas Schneider cbf258a
Signed-off-by: David Mulder <dmulder@samba.org>
Andreas Schneider cbf258a
---
Andreas Schneider cbf258a
 python/samba/gp/gpclass.py | 30 ++++++++++++++++++------------
Andreas Schneider cbf258a
 1 file changed, 18 insertions(+), 12 deletions(-)
Andreas Schneider cbf258a
Andreas Schneider cbf258a
diff --git a/python/samba/gp/gpclass.py b/python/samba/gp/gpclass.py
Andreas Schneider cbf258a
index b7a0dcb0ed5..26c2386847e 100644
Andreas Schneider cbf258a
--- a/python/samba/gp/gpclass.py
Andreas Schneider cbf258a
+++ b/python/samba/gp/gpclass.py
Andreas Schneider cbf258a
@@ -896,19 +896,25 @@ def get_gpo_list(dc_hostname, creds, lp, username):
Andreas Schneider cbf258a
 
Andreas Schneider cbf258a
     # (S)ite
Andreas Schneider cbf258a
     if gpo_list_machine:
Andreas Schneider cbf258a
-        site_dn = site_dn_for_machine(samdb, dc_hostname, lp, creds, username)
Andreas Schneider cbf258a
-
Andreas Schneider cbf258a
         try:
Andreas Schneider cbf258a
-            log.debug("get_gpo_list: query SITE: [%s] for GPOs" % site_dn)
Andreas Schneider cbf258a
-            gp_link = get_gpo_link(samdb, site_dn)
Andreas Schneider cbf258a
-        except ldb.LdbError as e:
Andreas Schneider cbf258a
-            (enum, estr) = e.args
Andreas Schneider cbf258a
-            log.debug(estr)
Andreas Schneider cbf258a
-        else:
Andreas Schneider cbf258a
-            add_gplink_to_gpo_list(samdb, gpo_list, forced_gpo_list,
Andreas Schneider cbf258a
-                                   site_dn, gp_link,
Andreas Schneider cbf258a
-                                   gpo.GP_LINK_SITE,
Andreas Schneider cbf258a
-                                   add_only_forced_gpos, token)
Andreas Schneider cbf258a
+            site_dn = site_dn_for_machine(samdb, dc_hostname, lp, creds, username)
Andreas Schneider cbf258a
+
Andreas Schneider cbf258a
+            try:
Andreas Schneider cbf258a
+                log.debug("get_gpo_list: query SITE: [%s] for GPOs" % site_dn)
Andreas Schneider cbf258a
+                gp_link = get_gpo_link(samdb, site_dn)
Andreas Schneider cbf258a
+            except ldb.LdbError as e:
Andreas Schneider cbf258a
+                (enum, estr) = e.args
Andreas Schneider cbf258a
+                log.debug(estr)
Andreas Schneider cbf258a
+            else:
Andreas Schneider cbf258a
+                add_gplink_to_gpo_list(samdb, gpo_list, forced_gpo_list,
Andreas Schneider cbf258a
+                                       site_dn, gp_link,
Andreas Schneider cbf258a
+                                       gpo.GP_LINK_SITE,
Andreas Schneider cbf258a
+                                       add_only_forced_gpos, token)
Andreas Schneider cbf258a
+        except ldb.LdbError:
Andreas Schneider cbf258a
+            # [MS-GPOL] 3.2.5.1.4 Site Search: If the method returns
Andreas Schneider cbf258a
+            # ERROR_NO_SITENAME, the remainder of this message MUST be skipped
Andreas Schneider cbf258a
+            # and the protocol sequence MUST continue at GPO Search
Andreas Schneider cbf258a
+            pass
Andreas Schneider cbf258a
 
Andreas Schneider cbf258a
     # (L)ocal
Andreas Schneider cbf258a
     gpo_list.insert(0, gpo.GROUP_POLICY_OBJECT("Local Policy",
Andreas Schneider cbf258a
-- 
Andreas Schneider cbf258a
GitLab
Andreas Schneider cbf258a