gpo: add unapply to the gp_sec_ext
authorDavid Mulder <dmulder@suse.com>
Thu, 19 Jul 2018 20:10:33 +0000 (14:10 -0600)
committerAurélien Aptel <aaptel@samba.org>
Mon, 8 Oct 2018 16:17:16 +0000 (18:17 +0200)
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
python/samba/gp_sec_ext.py
python/samba/gpclass.py

index 55f71b745658e74546624248905d483c2b48c59b..fcde46808c884b9c341a55a3f6469cfa31585206 100644 (file)
@@ -165,6 +165,24 @@ class gp_sec_ext(gp_inf_ext):
             return
         inf_file = 'MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf'
         apply_map = self.apply_map()
+        for gpo in deleted_gpo_list:
+            self.gp_db.set_guid(gpo[0])
+            for section in gpo[1].keys():
+                current_section = apply_map.get(section)
+                if not current_section:
+                    continue
+                for key, value in gpo[1][section].items():
+                    setter = None
+                    for _, tup in current_section.items():
+                        if tup[0] == key:
+                            setter = tup[1]
+                    if setter:
+                        value = value.encode('ascii', 'ignore') \
+                             if value else value
+                        setter(self.logger, self.gp_db, self.lp, self.creds,
+                               key, value).delete()
+                        self.gp_db.delete(section, key)
+                        self.gp_db.commit()
 
         for gpo in changed_gpo_list:
             if gpo.file_sys_path:
index 922b800d3db107028072897be149312fe34f8593..13d6d8e25d7dac3208f2f27fa487d6bc875c4b7d 100644 (file)
@@ -385,6 +385,10 @@ class gp_ext_setter(object):
     def mapper(self):
         pass
 
+    def delete(self):
+        upd_sam, _ = self.mapper().get(self.attribute)
+        upd_sam(self.val)
+
     @abstractmethod
     def __str__(self):
         pass