From 638476f86d4f8072de186eac562c176bacef68ef Mon Sep 17 00:00:00 2001 From: Noel Power Date: Sat, 11 Aug 2018 14:02:25 +0100 Subject: python/samba: PY3 port for samba.tests.samba_tool.user_wdigest test In addition to the attributes that caused some issues specifically with the test some other ldb.bytes objects (those seen to be used as strings) have been adjusted (with str()) to ensure they should work correct in PY3. Signed-off-by: Noel Power Reviewed-by: Andrew Bartlett --- python/samba/netcmd/user.py | 29 ++++++++++++++------------- python/samba/tests/samba_tool/user_wdigest.py | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) (limited to 'python/samba') diff --git a/python/samba/netcmd/user.py b/python/samba/netcmd/user.py index 7f4c0951050..0d13b30a3c9 100644 --- a/python/samba/netcmd/user.py +++ b/python/samba/netcmd/user.py @@ -55,6 +55,7 @@ from samba.netcmd import ( Option, ) from samba.compat import text_type +from samba.compat import get_bytes try: import io @@ -984,11 +985,11 @@ class GetPasswordCommand(Command): unicodePwd = obj["unicodePwd"][0] if add_unicodePwd: del obj["unicodePwd"] - account_name = obj["sAMAccountName"][0] + account_name = str(obj["sAMAccountName"][0]) if add_sAMAcountName: del obj["sAMAccountName"] if "userPrincipalName" in obj: - account_upn = obj["userPrincipalName"][0] + account_upn = str(obj["userPrincipalName"][0]) else: realm = self.lp.get("realm") account_upn = "%s@%s" % (account_name, realm.lower()) @@ -1168,7 +1169,7 @@ class GetPasswordCommand(Command): primary_wdigest) try: digest = binascii.hexlify(bytearray(digests.hashes[i - 1].hash)) - return "%s:%s:%s" % (user, realm, digest) + return "%s:%s:%s" % (user, realm, text_type(digest, 'utf8')) except IndexError: return None @@ -1873,13 +1874,13 @@ samba-tool user syncpasswords --terminate \\ self.sync_command = sync_command add_ldif = "dn: %s\n" % self.cache_dn add_ldif += "objectClass: userSyncPasswords\n" - add_ldif += "samdbUrl:: %s\n" % base64.b64encode(self.samdb_url).decode('utf8') - add_ldif += "dirsyncFilter:: %s\n" % base64.b64encode(self.dirsync_filter).decode('utf8') + add_ldif += "samdbUrl:: %s\n" % base64.b64encode(get_bytes(self.samdb_url)).decode('utf8') + add_ldif += "dirsyncFilter:: %s\n" % base64.b64encode(get_bytes(self.dirsync_filter)).decode('utf8') for a in self.dirsync_attrs: - add_ldif += "dirsyncAttribute:: %s\n" % base64.b64encode(a).decode('utf8') + add_ldif += "dirsyncAttribute:: %s\n" % base64.b64encode(get_bytes(a)).decode('utf8') add_ldif += "dirsyncControl: %s\n" % self.dirsync_controls[0] for a in self.password_attrs: - add_ldif += "passwordAttribute:: %s\n" % base64.b64encode(a).decode('utf8') + add_ldif += "passwordAttribute:: %s\n" % base64.b64encode(get_bytes(a)).decode('utf8') if self.decrypt_samba_gpg: add_ldif += "decryptSambaGPG: TRUE\n" else: @@ -1895,22 +1896,22 @@ samba-tool user syncpasswords --terminate \\ ldif = self.cache.write_ldif(msg, ldb.CHANGETYPE_NONE) self.outf.write("%s" % ldif) else: - self.dirsync_filter = res[0]["dirsyncFilter"][0] + self.dirsync_filter = str(res[0]["dirsyncFilter"][0]) self.dirsync_attrs = [] for a in res[0]["dirsyncAttribute"]: - self.dirsync_attrs.append(a) - self.dirsync_controls = [res[0]["dirsyncControl"][0], "extended_dn:1:0"] + self.dirsync_attrs.append(str(a)) + self.dirsync_controls = [str(res[0]["dirsyncControl"][0]), "extended_dn:1:0"] self.password_attrs = [] for a in res[0]["passwordAttribute"]: - self.password_attrs.append(a) - decrypt_string = res[0]["decryptSambaGPG"][0] + self.password_attrs.append(str(a)) + decrypt_string = str(res[0]["decryptSambaGPG"][0]) assert(decrypt_string in ["TRUE", "FALSE"]) if decrypt_string == "TRUE": self.decrypt_samba_gpg = True else: self.decrypt_samba_gpg = False if "syncCommand" in res[0]: - self.sync_command = res[0]["syncCommand"][0] + self.sync_command = str(res[0]["syncCommand"][0]) else: self.sync_command = None if "currentPid" in res[0]: @@ -2154,7 +2155,7 @@ samba-tool user syncpasswords --terminate \\ def dirsync_loop(): while True: - res = self.samdb.search(expression=self.dirsync_filter, + res = self.samdb.search(expression=str(self.dirsync_filter), scope=ldb.SCOPE_SUBTREE, attrs=self.dirsync_attrs, controls=self.dirsync_controls) diff --git a/python/samba/tests/samba_tool/user_wdigest.py b/python/samba/tests/samba_tool/user_wdigest.py index 7817744ef8b..cd43a663e54 100644 --- a/python/samba/tests/samba_tool/user_wdigest.py +++ b/python/samba/tests/samba_tool/user_wdigest.py @@ -76,7 +76,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest): base=self.samdb.get_config_basedn(), expression="ncName=%s" % self.samdb.get_default_basedn(), attrs=["nETBIOSName"]) - self.netbios_domain = res[0]["nETBIOSName"][0] + self.netbios_domain = str(res[0]["nETBIOSName"][0]) self.runsubcmd("user", "create", USER_NAME, -- cgit v1.2.1