diff options
| author | David Mulder <dmulder@suse.com> | 2021-02-17 14:43:50 -0700 |
|---|---|---|
| committer | Jeremy Allison <jra@samba.org> | 2021-03-08 19:45:30 +0000 |
| commit | efc9bce8689ee1354648feee008cc255e653df92 (patch) | |
| tree | 3c4e66ca48d3847fab8b4fb811ffb1c76fdc5519 /python | |
| parent | f200c6933b39988a815a064efd165aee106d117d (diff) | |
| download | samba-efc9bce8689ee1354648feee008cc255e653df92.tar.gz samba-efc9bce8689ee1354648feee008cc255e653df92.tar.bz2 samba-efc9bce8689ee1354648feee008cc255e653df92.zip | |
gpo: Apply Group Policy MOTD setting from VGP
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'python')
| -rw-r--r-- | python/samba/vgp_motd_ext.py | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/python/samba/vgp_motd_ext.py b/python/samba/vgp_motd_ext.py index 1e45e8c73c5..1ac152c29e9 100644 --- a/python/samba/vgp_motd_ext.py +++ b/python/samba/vgp_motd_ext.py @@ -14,13 +14,58 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import os from samba.gpclass import gp_xml_ext class vgp_motd_ext(gp_xml_ext): + def __str__(self): + return 'Unix Settings/Message of the Day' + def process_group_policy(self, deleted_gpo_list, changed_gpo_list, motd='/etc/motd'): - pass + for guid, settings in deleted_gpo_list: + self.gp_db.set_guid(guid) + if str(self) in settings: + for attribute, msg in settings[str(self)].items(): + if attribute == 'motd': + with open(motd, 'w') as w: + if msg: + w.write(msg) + else: + w.truncate() + self.gp_db.delete(str(self), attribute) + self.gp_db.commit() + + for gpo in changed_gpo_list: + if gpo.file_sys_path: + self.gp_db.set_guid(gpo.name) + xml = 'MACHINE/VGP/VTLA/Unix/MOTD/manifest.xml' + path = os.path.join(gpo.file_sys_path, xml) + xml_conf = self.parse(path) + if not xml_conf: + continue + policy = xml_conf.find('policysetting') + data = policy.find('data') + text = data.find('text') + current = open(motd, 'r').read() if os.path.exists(motd) else '' + if current != text.text: + with open(motd, 'w') as w: + w.write(text.text) + self.gp_db.store(str(self), 'motd', current) + self.gp_db.commit() def rsop(self, gpo): output = {} + if gpo.file_sys_path: + xml = 'MACHINE/VGP/VTLA/Unix/MOTD/manifest.xml' + path = os.path.join(gpo.file_sys_path, xml) + xml_conf = self.parse(path) + if not xml_conf: + return output + policy = xml_conf.find('policysetting') + data = policy.find('data') + filename = data.find('filename') + text = data.find('text') + mfile = os.path.join('/etc', filename.text) + output[mfile] = text.text return output |
