mirror of
https://github.com/samba-team/samba.git
synced 2025-07-27 07:42:04 +03:00
gpo: Create base class gp_inf_ext
Abstract the process of reading from an ini file, since other extensions will be reading gpos this way. Signed-off-by: David Mulder <dmulder@suse.com> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
committed by
Douglas Bagnall
parent
dc41514769
commit
10b43aa1c9
@ -446,7 +446,53 @@ class inf_to_ldb(gp_ext_setter):
|
||||
return 'System Access'
|
||||
|
||||
|
||||
class gp_sec_ext(gp_ext):
|
||||
class gp_inf_ext(gp_ext):
|
||||
@abstractmethod
|
||||
def list(self, rootpath):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def apply_map(self):
|
||||
pass
|
||||
|
||||
def read(self, policy):
|
||||
ret = False
|
||||
inftable = self.apply_map()
|
||||
|
||||
current_section = None
|
||||
|
||||
# So here we would declare a boolean,
|
||||
# that would get changed to TRUE.
|
||||
#
|
||||
# If at any point in time a GPO was applied,
|
||||
# then we return that boolean at the end.
|
||||
|
||||
inf_conf = ConfigParser()
|
||||
inf_conf.optionxform=str
|
||||
try:
|
||||
inf_conf.readfp(StringIO(policy))
|
||||
except:
|
||||
inf_conf.readfp(StringIO(policy.decode('utf-16')))
|
||||
|
||||
for section in inf_conf.sections():
|
||||
current_section = inftable.get(section)
|
||||
if not current_section:
|
||||
continue
|
||||
for key, value in inf_conf.items(section):
|
||||
if current_section.get(key):
|
||||
(att, setter) = current_section.get(key)
|
||||
value = value.encode('ascii', 'ignore')
|
||||
ret = True
|
||||
setter(self.logger, self.ldb, self.gp_db, self.lp, att,
|
||||
value).update_samba()
|
||||
self.gp_db.commit()
|
||||
return ret
|
||||
|
||||
@abstractmethod
|
||||
def __str__(self):
|
||||
pass
|
||||
|
||||
class gp_sec_ext(gp_inf_ext):
|
||||
'''This class does the following two things:
|
||||
1) Identifies the GPO if it has a certain kind of filepath,
|
||||
2) Finally parses it.
|
||||
@ -492,36 +538,3 @@ class gp_sec_ext(gp_ext):
|
||||
}
|
||||
}
|
||||
|
||||
def read(self, policy):
|
||||
ret = False
|
||||
inftable = self.apply_map()
|
||||
|
||||
current_section = None
|
||||
|
||||
# So here we would declare a boolean,
|
||||
# that would get changed to TRUE.
|
||||
#
|
||||
# If at any point in time a GPO was applied,
|
||||
# then we return that boolean at the end.
|
||||
|
||||
inf_conf = ConfigParser()
|
||||
inf_conf.optionxform=str
|
||||
try:
|
||||
inf_conf.readfp(StringIO(policy))
|
||||
except:
|
||||
inf_conf.readfp(StringIO(policy.decode('utf-16')))
|
||||
|
||||
for section in inf_conf.sections():
|
||||
current_section = inftable.get(section)
|
||||
if not current_section:
|
||||
continue
|
||||
for key, value in inf_conf.items(section):
|
||||
if current_section.get(key):
|
||||
(att, setter) = current_section.get(key)
|
||||
value = value.encode('ascii', 'ignore')
|
||||
ret = True
|
||||
setter(self.logger, self.ldb, self.gp_db, self.lp, att,
|
||||
value).update_samba()
|
||||
self.gp_db.commit()
|
||||
return ret
|
||||
|
||||
|
Reference in New Issue
Block a user