gpo: Add user policy extensions
authorDavid Mulder <dmulder@suse.com>
Fri, 4 May 2018 19:25:25 +0000 (13:25 -0600)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 12 Jul 2018 20:11:23 +0000 (22:11 +0200)
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/gp_ext_loader.py
source4/scripting/bin/samba-gpupdate

index d25b2837286191ad5e491b2e4063268b04f9779e..61cc29b788ce275a5b72e0d52b92935ee6051037 100644 (file)
@@ -38,6 +38,7 @@ def get_gp_ext_from_module(name, mod):
     return None
 
 def get_gp_client_side_extensions(logger, smb_conf):
+    user_exts = []
     machine_exts = []
     gp_exts = list_gp_extensions(smb_conf)
     for gp_ext in gp_exts.values():
@@ -47,5 +48,9 @@ def get_gp_client_side_extensions(logger, smb_conf):
             machine_exts.append(ext)
             logger.info('Loaded machine extension from %s: %s'
                         % (gp_ext['DllName'], ext.__name__))
-    return machine_exts
+        if ext and gp_ext['UserPolicy']:
+            user_exts.append(ext)
+            logger.info('Loaded user extension from %s: %s'
+                        % (gp_ext['DllName'], ext.__name__))
+    return (machine_exts, user_exts)
 
index e3d31ebbfb64d3ac2ea57f5354615f288f1e7868..e97c4b901f7be7c7caa94dc4c13e2fe073f31839 100755 (executable)
@@ -85,7 +85,8 @@ if __name__ == "__main__":
     cache_dir = lp.get('cache directory')
     store = GPOStorage(os.path.join(cache_dir, 'gpo.tdb'))
 
-    machine_exts = get_gp_client_side_extensions(logger, lp.configfile)
+    machine_exts, user_exts = get_gp_client_side_extensions(logger,
+                                                            lp.configfile)
     gp_extensions = []
     if opts.target == 'Computer':
         if lp.get('server role') == 'active directory domain controller':
@@ -93,7 +94,8 @@ if __name__ == "__main__":
         for ext in machine_exts:
             gp_extensions.append(ext(logger))
     elif opts.target == 'User':
-        pass # User extensions
+        for ext in user_exts:
+            gp_extensions.append(ext(logger))
 
     # Get a live instance of Samba
     if SamDB: