1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-02 00:22:11 +03:00

gpo: Make the gpclass more easily extensible

Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
David Mulder
2017-02-24 14:19:48 -07:00
committed by Garming Sam
parent 41d1ff7427
commit 8eba3b5d38
2 changed files with 39 additions and 21 deletions

View File

@ -29,27 +29,51 @@ import codecs
from samba import NTSTATUSError
from ConfigParser import ConfigParser
from StringIO import StringIO
from abc import ABCMeta, abstractmethod
class gp_ext(object):
__metaclass__ = ABCMeta
@abstractmethod
def list(self, rootpath):
return None
pass
@abstractmethod
def parse(self, afile, ldb, conn, attr_log, lp):
pass
@abstractmethod
def __str__(self):
return "default_gp_ext"
pass
class inf_to_ldb(object):
'''This class takes the .inf file parameter (essentially a GPO file mapped to a GUID),
hashmaps it to the Samba parameter, which then uses an ldb object to update the
parameter to Samba4. Not registry oriented whatsoever.
'''
class inf_to():
__metaclass__ = ABCMeta
def __init__(self, logger, ldb, dn, attribute, val):
def __init__(self, logger, ldb, dn, lp, attribute, val):
self.logger = logger
self.ldb = ldb
self.dn = dn
self.attribute = attribute
self.val = val
self.lp = lp
def explicit(self):
return self.val
def update_samba(self):
(upd_sam, value) = self.mapper().get(self.attribute)
upd_sam(value())
@abstractmethod
def mapper(self):
pass
class inf_to_ldb(inf_to):
'''This class takes the .inf file parameter (essentially a GPO file mapped to a GUID),
hashmaps it to the Samba parameter, which then uses an ldb object to update the
parameter to Samba4. Not registry oriented whatsoever.
'''
def ch_minPwdAge(self, val):
self.logger.info('KDC Minimum Password age was changed from %s to %s' % (self.ldb.get_minPwdAge(), val))
@ -67,9 +91,6 @@ class inf_to_ldb(object):
self.logger.info('KDC Password Properties were changed from %s to %s' % (self.ldb.get_pwdProperties(), val))
self.ldb.set_pwdProperties(val)
def explicit(self):
return self.val
def nttime2unix(self):
seconds = 60
minutes = 60
@ -89,10 +110,6 @@ class inf_to_ldb(object):
}
def update_samba(self):
(upd_sam, value) = self.mapper().get(self.attribute)
upd_sam(value()) # or val = value() then update(val)
class gp_sec_ext(gp_ext):
'''This class does the following two things:
@ -156,11 +173,12 @@ class gp_sec_ext(gp_ext):
(att, setter) = current_section.get(key)
value = value.encode('ascii', 'ignore')
ret = True
setter(self.logger, self.ldb, self.dn, att, value).update_samba()
setter(self.logger, self.ldb, self.dn, self.lp, att, value).update_samba()
return ret
def parse(self, afile, ldb, conn, attr_log):
def parse(self, afile, ldb, conn, attr_log, lp):
self.ldb = ldb
self.lp = lp
self.dn = ldb.get_default_basedn()
# Fixing the bug where only some Linux Boxes capitalize MACHINE