'flags',
'name',
'displayName',
- 'gPCFileSysPath'],
+ 'gPCFileSysPath',
+ 'gPCMachineExtensionNames',
+ 'gPCUserExtensionNames'],
controls=['sd_flags:1:%d' % sd_flags])
except Exception as e:
if gpo is not None:
self.outf.write('\nEntities:\n')
self.outf.write(ents)
+ # Backup the enabled GPO extension names
+ for ext in ('gPCMachineExtensionNames', 'gPCUserExtensionNames'):
+ if ext in msg:
+ with open(os.path.join(gpodir, ext + '.SAMBAEXT'), 'wb') as f:
+ f.write(msg[ext][0])
+
@staticmethod
def generalize_xml_entities(outf, sourcedir, targetdir):
entities = {}
self.sharepath,
ignore_existing=True)
+ gpo_dn = get_gpo_dn(self.samdb, self.gpo_name)
+
+ # Restore the enabled extensions
+ for ext in ('gPCMachineExtensionNames', 'gPCUserExtensionNames'):
+ ext_file = os.path.join(backup, ext + '.SAMBAEXT')
+ if os.path.exists(ext_file):
+ with open(ext_file, 'rb') as f:
+ data = f.read()
+
+ m = ldb.Message()
+ m.dn = gpo_dn
+ m[ext] = ldb.MessageElement(data, ldb.FLAG_MOD_REPLACE,
+ ext)
+
+ self.samdb.modify(m)
+
except Exception as e:
import traceback
traceback.print_exc()