summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Power <noel.power@suse.com>2018-11-06 19:55:22 +0000
committerNoel Power <npower@samba.org>2018-12-10 10:38:22 +0100
commitc99450db4eed3abc3a69833a82b1c906e066e27a (patch)
tree9e614698227efd3c13a3377a60d0aa3cd26a7f6d
parent1d6350897d2a2ac6f2f4024f92ce9266bc4edeff (diff)
downloadsamba-c99450db4eed3abc3a69833a82b1c906e066e27a.tar.gz
python/samba: PY3 port gpo.apply smbtorture test
1) configparser.set requires string values 2) self.gp_db.store() etc. neex to pass str object for xml.etree.ElementTree.Element text attribute which needs to be text 3) tdb delete method needs bytes key 4) configparser.write needs a file opened in text mode Signed-off-by: Noel Power <noel.power@suse.com> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r--python/samba/gp_sec_ext.py5
-rw-r--r--python/samba/gpclass.py17
-rw-r--r--python/samba/tests/gpo.py3
3 files changed, 14 insertions, 11 deletions
diff --git a/python/samba/gp_sec_ext.py b/python/samba/gp_sec_ext.py
index fcde46808c8..6eab975e6fe 100644
--- a/python/samba/gp_sec_ext.py
+++ b/python/samba/gp_sec_ext.py
@@ -18,6 +18,7 @@
import os.path
from samba.gpclass import gp_ext_setter, gp_inf_ext
from samba.auth import system_session
+from samba.compat import get_string
try:
from ldb import LdbError
from samba.samdb import SamDB
@@ -37,8 +38,8 @@ class inf_to_kdc_tdb(gp_ext_setter):
self.logger.info('%s was changed from %s to %s' % (self.attribute,
old_val, val))
if val is not None:
- self.gp_db.gpostore.store(self.attribute, val)
- self.gp_db.store(str(self), self.attribute, old_val)
+ self.gp_db.gpostore.store(self.attribute, get_string(val))
+ self.gp_db.store(str(self), self.attribute, get_string(old_val) if old_val else None)
else:
self.gp_db.gpostore.delete(self.attribute)
self.gp_db.delete(str(self), self.attribute)
diff --git a/python/samba/gpclass.py b/python/samba/gpclass.py
index 41ff3e9c500..fb7c705a47e 100644
--- a/python/samba/gpclass.py
+++ b/python/samba/gpclass.py
@@ -23,6 +23,7 @@ sys.path.insert(0, "bin/python")
from samba import NTSTATUSError
from samba.compat import ConfigParser
from samba.compat import StringIO
+from samba.compat import get_bytes
from abc import ABCMeta, abstractmethod
import xml.etree.ElementTree as etree
import re
@@ -258,24 +259,24 @@ class GPOStorage:
def get_int(self, key):
try:
- return int(self.log.get(key))
+ return int(self.log.get(get_bytes(key)))
except TypeError:
return None
def get(self, key):
- return self.log.get(key)
+ return self.log.get(get_bytes(key))
def get_gplog(self, user):
- return gp_log(user, self, self.log.get(user))
+ return gp_log(user, self, self.log.get(get_bytes(user)))
def store(self, key, val):
- self.log.store(key, val)
+ self.log.store(get_bytes(key), get_bytes(val))
def cancel(self):
self.log.transaction_cancel()
def delete(self, key):
- self.log.delete(key)
+ self.log.delete(get_bytes(key))
def commit(self):
self.log.transaction_commit()
@@ -503,7 +504,7 @@ def parse_gpext_conf(smb_conf):
def atomic_write_conf(lp, parser):
ext_conf = lp.state_path('gpext.conf')
- with NamedTemporaryFile(delete=False, dir=os.path.dirname(ext_conf)) as f:
+ with NamedTemporaryFile(mode="w+", delete=False, dir=os.path.dirname(ext_conf)) as f:
parser.write(f)
os.rename(f.name, ext_conf)
@@ -532,8 +533,8 @@ def register_gp_extension(guid, name, path,
parser.add_section(guid)
parser.set(guid, 'DllName', path)
parser.set(guid, 'ProcessGroupPolicy', name)
- parser.set(guid, 'NoMachinePolicy', 0 if machine else 1)
- parser.set(guid, 'NoUserPolicy', 0 if user else 1)
+ parser.set(guid, 'NoMachinePolicy', "0" if machine else "1")
+ parser.set(guid, 'NoUserPolicy', "0" if user else "1")
atomic_write_conf(lp, parser)
diff --git a/python/samba/tests/gpo.py b/python/samba/tests/gpo.py
index 84e59edb9d6..70dc28c4c23 100644
--- a/python/samba/tests/gpo.py
+++ b/python/samba/tests/gpo.py
@@ -27,6 +27,7 @@ from tempfile import NamedTemporaryFile
from samba.gp_sec_ext import gp_sec_ext
import logging
from samba.credentials import Credentials
+from samba.compat import get_bytes
poldir = r'\\addom.samba.example.com\sysvol\addom.samba.example.com\Policies'
dspath = 'CN=Policies,CN=System,DC=addom,DC=samba,DC=example,DC=com'
@@ -62,7 +63,7 @@ def stage_file(path, data):
if os.path.exists(path):
os.rename(path, '%s.bak' % path)
with NamedTemporaryFile(delete=False, dir=os.path.dirname(path)) as f:
- f.write(data)
+ f.write(get_bytes(data))
os.rename(f.name, path)
os.chmod(path, 0o644)
return True