1
0
mirror of https://github.com/altlinux/gpupdate.git synced 2025-03-21 18:50:38 +03:00

Functonality to transform PReg into dict() and merge it is separated

This commit is contained in:
Игорь Чудов 2019-12-13 01:14:25 +04:00
parent fae8e996bd
commit b46aa8777b
Signed by untrusted user: nir
GPG Key ID: 0F3883600CAE7AAC

View File

@ -10,8 +10,6 @@ import samba.gpo
from xml.etree import ElementTree
from samba.gp_parse.gp_pol import GPPolParser
logging.basicConfig(level=logging.DEBUG)
def load_preg(file_path):
'''
Check if file extension is .xml and load preg object from XML
@ -48,32 +46,26 @@ def load_pol_preg(polfile):
#print(gpparser.pol_file.__ndr_print__())
return gpparser.pol_file
def preg2entrydict(preg, sid=None):
'''
Create a map (dict) of HIVE_KEY to preg.entry
'''
def preg_keymap(preg):
pregfile = load_preg(preg)
keymap = dict()
for entry in pregfile.entries:
hive_key = '{}\\{}'.format(entry.keyname, entry.valuename)
keymap[hive_key] = entry
return keymap
def merge_polfile(preg, sid=None):
pregfile = load_preg(preg)
logging.info('Loaded PReg {}'.format(preg))
key_map = dict()
storage = registry_factory('registry')
for entry in pregfile.entries:
if not sid:
storage.add_hklm_entry(entry)
else:
storage.add_hkcu_entry(entry, sid)
hive_key = '{}\\{}'.format(entry.keyname, entry.valuename)
key_map[hive_key] = entry
return key_map
def merge_polfiles(polfile_list, sid=None):
entrydict = dict()
for preg_file_path in polfile_list:
entrydict.update(preg2entrydict(preg_file_path, sid))
return entrydict
class entry:
def __init__(self, e_keyname, e_valuename, e_type, e_data):