[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Sat May 12 22:25:06 UTC 2018


The branch, master has been updated
       via  26c4084 auth/credentials/test: py2/py3 compat always decode result of b64encode
       via  c50ccc7 python/samba: py2/py3 compatability always decode result of b64encode
       via  6f30a0b s4/dsdb/tests: py2/py3 compatability always decode result of b64encode
       via  bf95ecb s4/scripting/devel: py2/py3 compatability always decode result of b64encode
       via  ff1920f s4/scripting/bin: py2/py3 compatability always decode result of b64encode
       via  521bc60 Bulk: enclose .keys() method with list where list (from python2) expected
       via  504fca7 samba_tool: replace xrange -> range
       via  5f33084 s4/dsdb/tests: py2/py3 compatability replace xrange with range
       via  9c54337 python/samba/tests: py2/py3 compatability replace xrange with range
       via  ee363db python/samba: Ensure md5 always provided with bytes
       via  a0cd47f python/samba/provision: Fix urllib.quote usage for py2/py3
       via  9410cea samba_tool: make exception handling statements py2/py3 compatible
       via  7399da0 samba_tool: Py2/Py3 compatability fix tuple assigment
       via  63648af python/samba: Bulk replace of '.next()' method with function 'next()'
      from  fcda17c ctdb-tools: Add logging config options to config tool

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 26c4084ad2d5f35d4e35026c96150759d062969a
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 15:30:22 2018 +0100

    auth/credentials/test: py2/py3 compat always decode result of b64encode
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Sun May 13 00:24:35 CEST 2018 on sn-devel-144

commit c50ccc714a1871ef6eaa3bfc9b16c232127d3fad
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 15:29:59 2018 +0100

    python/samba: py2/py3 compatability always decode result of b64encode
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 6f30a0b5f11b58ab0bb528c7387099171703de4c
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 15:27:12 2018 +0100

    s4/dsdb/tests: py2/py3 compatability always decode result of b64encode
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit bf95ecb35dae64e0a07c126f264bdf8a7ccc2a8a
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 15:26:39 2018 +0100

    s4/scripting/devel: py2/py3 compatability always decode result of b64encode
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ff1920fb6704a617d03d2a18905a4fb603a351bc
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 15:25:22 2018 +0100

    s4/scripting/bin: py2/py3 compatability always decode result of b64encode
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 521bc6056edc5252f2256664f4eacba13a3749e3
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 13:33:03 2018 +0100

    Bulk: enclose .keys() method with list where list (from python2) expected
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 504fca732a3ed0865c39772767ee520f99a93cad
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 12:19:57 2018 +0100

    samba_tool: replace xrange -> range
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 5f330840d0479f9a352d19b15159c10efce9d862
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 12:18:59 2018 +0100

    s4/dsdb/tests: py2/py3 compatability replace xrange with range
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9c543376e4fec3db00968fa9d682ac7ad5c9962b
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 12:16:38 2018 +0100

    python/samba/tests: py2/py3 compatability replace xrange with range
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ee363db5716334d759cc7f9f3ef61e4227f3f3e5
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 12:05:27 2018 +0100

    python/samba: Ensure md5 always provided with bytes
    
    To allow code run in both python3 and python2 we have to ensure
    that md5 always receives bytes
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a0cd47fdf8819efb2c72e81cb132e2f1308bd395
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 11:41:11 2018 +0100

    python/samba/provision: Fix urllib.quote usage for py2/py3
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9410cea310f6ac5089a28b90a93bd3b20ffa2d9b
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 11:31:33 2018 +0100

    samba_tool: make exception handling statements py2/py3 compatible
    
    Fix some missed conversions of
            except Exception, e:
    to
            except Exception as e:
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7399da0b44503d2b5fe3218f9b55c79eac4cefe4
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 11:28:46 2018 +0100

    samba_tool: Py2/Py3 compatability fix tuple assigment
    
    replace
        (foo, bar) = e
    with
        (foo, bar) = e.args
    
    while will run in with both python2 and python3
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 63648af515df6c62e44ebeaa81d73e49511d03bc
Author: Noel Power <noel.power at suse.com>
Date:   Fri May 4 11:22:43 2018 +0100

    python/samba: Bulk replace of '.next()' method with function 'next()'
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 auth/credentials/tests/bind.py                |  2 +-
 lib/ldb/tests/python/api.py                   |  4 +--
 python/samba/domain_update.py                 |  2 +-
 python/samba/idmap.py                         |  2 +-
 python/samba/join.py                          |  2 +-
 python/samba/netcmd/__init__.py               |  2 +-
 python/samba/netcmd/computer.py               |  6 ++--
 python/samba/netcmd/dns.py                    |  6 ++--
 python/samba/netcmd/user.py                   | 16 ++++-----
 python/samba/netcmd/visualize.py              |  8 +++--
 python/samba/provision/__init__.py            | 52 +++++++++++++--------------
 python/samba/provision/backend.py             |  3 +-
 python/samba/provision/sambadns.py            | 16 ++++-----
 python/samba/schema.py                        |  4 +--
 python/samba/tests/dns_forwarder.py           |  2 +-
 python/samba/tests/password_hash.py           |  4 +++
 python/samba/tests/samba_tool/user.py         |  8 ++---
 python/samba/tests/samba_tool/user_wdigest.py |  4 +++
 source4/dsdb/tests/python/acl.py              | 40 ++++++++++-----------
 source4/dsdb/tests/python/dirsync.py          |  2 +-
 source4/dsdb/tests/python/ldap.py             |  8 ++---
 source4/dsdb/tests/python/notification.py     |  4 +--
 source4/dsdb/tests/python/password_lockout.py | 52 +++++++++++++--------------
 source4/dsdb/tests/python/passwords.py        | 30 ++++++++--------
 source4/dsdb/tests/python/rodc_rwdc.py        |  2 +-
 source4/dsdb/tests/python/sam.py              |  2 +-
 source4/dsdb/tests/python/sec_descriptor.py   |  6 ++--
 source4/dsdb/tests/python/vlv.py              |  2 +-
 source4/heimdal/lib/wind/gen-normalize.py     |  2 +-
 source4/scripting/bin/fullschema              |  2 +-
 source4/scripting/bin/get-descriptors         |  2 +-
 source4/scripting/bin/minschema               |  2 +-
 source4/scripting/bin/samba_upgradedns        |  2 +-
 source4/scripting/bin/samba_upgradeprovision  |  2 +-
 source4/scripting/bin/smbstatus               |  6 ++--
 source4/scripting/devel/demodirsync.py        | 12 +++----
 source4/scripting/devel/speedtest.py          |  2 +-
 37 files changed, 168 insertions(+), 155 deletions(-)


Changeset truncated at 500 lines:

diff --git a/auth/credentials/tests/bind.py b/auth/credentials/tests/bind.py
index 8b08b4a..e612dfc 100755
--- a/auth/credentials/tests/bind.py
+++ b/auth/credentials/tests/bind.py
@@ -96,7 +96,7 @@ operatingSystem: Windows Server 2003
 dn: """ + self.computer_dn + """
 changetype: modify
 replace: unicodePwd
-unicodePwd:: """ + base64.b64encode("\"P at ssw0rd\"".encode('utf-16-le')) + """
+unicodePwd:: """ + base64.b64encode(u"\"P at ssw0rd\"".encode('utf-16-le')).decode('utf8') + """
 """)
 
         # do a simple bind and search with the machine account
diff --git a/lib/ldb/tests/python/api.py b/lib/ldb/tests/python/api.py
index c5935ba..657fa14b 100755
--- a/lib/ldb/tests/python/api.py
+++ b/lib/ldb/tests/python/api.py
@@ -1957,13 +1957,13 @@ class LdbMsgTests(TestCase):
         self.msg.dn = ldb.Dn(ldb.Ldb(), "@BASEINFO")
         self.msg["foo"] = [b"bla"]
         self.msg["bar"] = [b"bla"]
-        self.assertEqual(["dn", "foo", "bar"], self.msg.keys())
+        self.assertEqual(["dn", "foo", "bar"], list(self.msg.keys()))
 
     def test_keys_text(self):
         self.msg.dn = ldb.Dn(ldb.Ldb(), "@BASEINFO")
         self.msg["foo"] = ["bla"]
         self.msg["bar"] = ["bla"]
-        self.assertEqual(["dn", "foo", "bar"], self.msg.text.keys())
+        self.assertEqual(["dn", "foo", "bar"], list(self.msg.text.keys()))
 
     def test_dn(self):
         self.msg.dn = ldb.Dn(ldb.Ldb(), "@BASEINFO")
diff --git a/python/samba/domain_update.py b/python/samba/domain_update.py
index 11a0a73..d21ea38 100644
--- a/python/samba/domain_update.py
+++ b/python/samba/domain_update.py
@@ -390,7 +390,7 @@ objectClass: msTPM-InformationObjectsContainer
         self.raise_if_not_fix(op)
 
         descriptor = get_managed_service_accounts_descriptor(self.domain_sid)
-        managedservice_descr = b64encode(descriptor)
+        managedservice_descr = b64encode(descriptor).decode('utf8')
         managed_service_dn = "CN=Managed Service Accounts,%s" % \
             str(self.domain_dn)
 
diff --git a/python/samba/idmap.py b/python/samba/idmap.py
index 0cb729f..a618347 100644
--- a/python/samba/idmap.py
+++ b/python/samba/idmap.py
@@ -95,4 +95,4 @@ type: %s
 cn: %s
 
 """ % (sid, unixid, sid, type_string, sid)
-        self.add(self.parse_ldif(mod).next()[1])
+        self.add(next(self.parse_ldif(mod))[1])
diff --git a/python/samba/join.py b/python/samba/join.py
index b35eb78..e164d9b 100644
--- a/python/samba/join.py
+++ b/python/samba/join.py
@@ -742,7 +742,7 @@ class dc_join(object):
                                                                 {"DNSDOMAIN": ctx.dnsdomain,
                                                                  "DOMAINDN": ctx.base_dn,
                                                                  "HOSTNAME" : ctx.myname,
-                                                                 "DNSPASS_B64": b64encode(ctx.dnspass.encode('utf-16-le')),
+                                                                 "DNSPASS_B64": b64encode(ctx.dnspass.encode('utf-16-le')).decode('utf8'),
                                                                  "DNSNAME" : ctx.dnshostname}))
             for changetype, msg in recs:
                 assert changetype == ldb.CHANGETYPE_NONE
diff --git a/python/samba/netcmd/__init__.py b/python/samba/netcmd/__init__.py
index 7797678..9df096d 100644
--- a/python/samba/netcmd/__init__.py
+++ b/python/samba/netcmd/__init__.py
@@ -103,7 +103,7 @@ class Command(object):
             force_traceback = True
 
         if isinstance(inner_exception, LdbError):
-            (ldb_ecode, ldb_emsg) = inner_exception
+            (ldb_ecode, ldb_emsg) = inner_exception.args
             self.errf.write("ERROR(ldb): %s - %s\n" % (message, ldb_emsg))
         elif isinstance(inner_exception, AssertionError):
             self.errf.write("ERROR(assert): %s\n" % message)
diff --git a/python/samba/netcmd/computer.py b/python/samba/netcmd/computer.py
index 3b130b1..9ca8904 100644
--- a/python/samba/netcmd/computer.py
+++ b/python/samba/netcmd/computer.py
@@ -298,7 +298,7 @@ Example3 shows how to create a new computer in the OrgUnit organizational unit.
                     samdb, hostname, dns_conn,
                     change_owner_sd, samdb.host_dns_name(),
                     ip_address_list, self.get_logger())
-        except Exception, e:
+        except Exception as e:
             raise CommandError("Failed to create computer '%s': " %
                                computername, e)
 
@@ -394,7 +394,7 @@ sudo is used so a computer may run the command as root.
                 remove_dns_references(
                     samdb, self.get_logger(), computer_dns_host_name,
                     ignore_no_name=True)
-        except Exception, e:
+        except Exception as e:
             raise CommandError('Failed to remove computer "%s"' %
                                samaccountname, e)
         self.outf.write("Deleted computer %s\n" % computername)
@@ -569,7 +569,7 @@ class cmd_computer_move(Command):
         new_computer_dn.add_base(full_new_ou_dn)
         try:
             samdb.rename(computer_dn, new_computer_dn)
-        except Exception, e:
+        except Exception as e:
             raise CommandError('Failed to move computer "%s"' % computername, e)
         self.outf.write('Moved computer "%s" to "%s"\n' %
                         (computername, new_ou_dn))
diff --git a/python/samba/netcmd/dns.py b/python/samba/netcmd/dns.py
index 8bd6a9b..a0e92cf 100644
--- a/python/samba/netcmd/dns.py
+++ b/python/samba/netcmd/dns.py
@@ -140,7 +140,7 @@ def ip4_array_string(array):
     ret = []
     if not array:
         return ret
-    for i in xrange(array.AddrCount):
+    for i in range(array.AddrCount):
         addr = inet_ntop(AF_INET, pack('I', array.AddrArray[i]))
         ret.append(addr)
     return ret
@@ -150,7 +150,7 @@ def dns_addr_array_string(array):
     ret = []
     if not array:
         return ret
-    for i in xrange(array.AddrCount):
+    for i in range(array.AddrCount):
         if array.AddrArray[i].MaxSa[0] == 0x02:
             x = "".join([chr(b) for b in array.AddrArray[i].MaxSa])[4:8]
             addr = inet_ntop(AF_INET, x)
@@ -523,7 +523,7 @@ def dns_record_match(dns_conn, server, zone, name, record_type, data):
         elif record_type == dnsp.DNS_TYPE_TXT:
             if rec.data.count == urec.data.count:
                 found = True
-                for i in xrange(rec.data.count):
+                for i in range(rec.data.count):
                     found = found and \
                             (rec.data.str[i].str == urec.data.str[i].str)
 
diff --git a/python/samba/netcmd/user.py b/python/samba/netcmd/user.py
index 1e2e040..4009d63 100644
--- a/python/samba/netcmd/user.py
+++ b/python/samba/netcmd/user.py
@@ -119,7 +119,7 @@ def get_crypt_value(alg, utf8pw, rounds=0):
     # we can ignore the possible == at the end
     # of the base64 string
     # we just need to replace '+' by '.'
-    b64salt = base64.b64encode(salt)[0:16].replace('+', '.')
+    b64salt = base64.b64encode(salt)[0:16].replace('+', '.').decode('utf8')
     crypt_salt = ""
     if rounds != 0:
         crypt_salt = "$%s$rounds=%s$%s$" % (alg, rounds, b64salt)
@@ -1247,7 +1247,7 @@ class GetPasswordCommand(Command):
                 h.update(u8)
                 h.update(salt)
                 bv = h.digest() + salt
-                v = "{SSHA}" + base64.b64encode(bv)
+                v = "{SSHA}" + base64.b64encode(bv).decode('utf8')
             elif a == "virtualCryptSHA256":
                 rounds = get_rounds(attr_opts[a])
                 x = get_virtual_crypt_value(a, 5, rounds, username, account_name)
@@ -1861,13 +1861,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)
-                add_ldif += "dirsyncFilter:: %s\n" % base64.b64encode(self.dirsync_filter)
+                add_ldif += "samdbUrl:: %s\n" % base64.b64encode(self.samdb_url).decode('utf8')
+                add_ldif += "dirsyncFilter:: %s\n" % base64.b64encode(self.dirsync_filter).decode('utf8')
                 for a in self.dirsync_attrs:
-                    add_ldif += "dirsyncAttribute:: %s\n" % base64.b64encode(a)
+                    add_ldif += "dirsyncAttribute:: %s\n" % base64.b64encode(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)
+                    add_ldif += "passwordAttribute:: %s\n" % base64.b64encode(a).decode('utf8')
                 if self.decrypt_samba_gpg == True:
                     add_ldif += "decryptSambaGPG: TRUE\n"
                 else:
@@ -1879,7 +1879,7 @@ samba-tool user syncpasswords --terminate \\
                 self.current_pid = None
                 self.outf.write("Initialized cache_ldb[%s]\n" % (cache_ldb))
                 msgs = self.cache.parse_ldif(add_ldif)
-                changetype,msg = msgs.next()
+                changetype,msg = next(msgs)
                 ldif = self.cache.write_ldif(msg, ldb.CHANGETYPE_NONE)
                 self.outf.write("%s" % ldif)
             else:
@@ -2027,7 +2027,7 @@ samba-tool user syncpasswords --terminate \\
             if self.lockfd != -1:
                 got_exclusive = False
                 # Try 5 times to get the exclusiv lock.
-                for i in xrange(0, 5):
+                for i in range(0, 5):
                     try:
                         fcntl.lockf(self.lockfd, fcntl.LOCK_EX | fcntl.LOCK_NB)
                         got_exclusive = True
diff --git a/python/samba/netcmd/visualize.py b/python/samba/netcmd/visualize.py
index 6f880ae..b9d126a 100644
--- a/python/samba/netcmd/visualize.py
+++ b/python/samba/netcmd/visualize.py
@@ -34,6 +34,7 @@ from ldb import SCOPE_BASE, SCOPE_SUBTREE, LdbError
 import time
 from samba.kcc import KCC
 from samba.kcc.kcc_utils import KCCError
+from samba.compat import text_type
 
 COMMON_OPTIONS = [
     Option("-H", "--URL", help="LDB URL for database or target server",
@@ -50,7 +51,7 @@ COMMON_OPTIONS = [
            choices=['yes', 'no', 'auto']),
     Option("--color-scheme", help=("use this colour scheme "
                                    "(implies --color=yes)"),
-           choices=COLOUR_SETS.keys()),
+           choices=list(COLOUR_SETS.keys())),
     Option("-S", "--shorten-names",
            help="don't print long common suffixes",
            action='store_true', default=False),
@@ -161,7 +162,10 @@ def colour_hash(x):
     """Generate a randomish but consistent darkish colour based on the
     given object."""
     from hashlib import md5
-    c = int(md5(str(x)).hexdigest()[:6], base=16) & 0x7f7f7f
+    tmp_str = str(x)
+    if isinstance(tmp_str, text_type):
+        tmp_str = tmp_str.encode('utf8')
+    c = int(md5(tmp_str).hexdigest()[:6], base=16) & 0x7f7f7f
     return '#%06x' % c
 
 
diff --git a/python/samba/provision/__init__.py b/python/samba/provision/__init__.py
index 43ccb0f..d9df425 100644
--- a/python/samba/provision/__init__.py
+++ b/python/samba/provision/__init__.py
@@ -26,6 +26,7 @@
 
 __docformat__ = "restructuredText"
 
+from samba.compat import urllib_quote
 from base64 import b64encode
 import errno
 import os
@@ -37,7 +38,6 @@ import logging
 import time
 import uuid
 import socket
-import urllib
 import string
 import tempfile
 import samba.dsdb
@@ -1020,14 +1020,14 @@ def setup_secretsdb(paths, session_info, backend_credentials, lp):
                 setup_add_ldif(secrets_ldb,
                     setup_path("secrets_simple_ldap.ldif"), {
                         "LDAPMANAGERDN": backend_credentials.get_bind_dn(),
-                        "LDAPMANAGERPASS_B64": b64encode(backend_credentials.get_password())
+                        "LDAPMANAGERPASS_B64": b64encode(backend_credentials.get_password()).decode('utf8')
                         })
             else:
                 setup_add_ldif(secrets_ldb,
                     setup_path("secrets_sasl_ldap.ldif"), {
                         "LDAPADMINUSER": backend_credentials.get_username(),
                         "LDAPADMINREALM": backend_credentials.get_realm(),
-                        "LDAPADMINPASS_B64": b64encode(backend_credentials.get_password())
+                        "LDAPADMINPASS_B64": b64encode(backend_credentials.get_password()).decode('utf8')
                         })
     except:
         secrets_ldb.transaction_cancel()
@@ -1144,7 +1144,7 @@ def setup_self_join(samdb, admin_session_info, names, fill, machinepass,
               "INVOCATIONID": invocationid,
               "NETBIOSNAME": names.netbiosname,
               "DNSNAME": "%s.%s" % (names.hostname, names.dnsdomain),
-              "MACHINEPASS_B64": b64encode(machinepass.encode('utf-16-le')),
+              "MACHINEPASS_B64": b64encode(machinepass.encode('utf-16-le')).decode('utf8'),
               "DOMAINSID": str(domainsid),
               "DCRID": str(dc_rid),
               "SAMBA_VERSION_STRING": version,
@@ -1171,7 +1171,7 @@ def setup_self_join(samdb, admin_session_info, names, fill, machinepass,
                 "INVOCATIONID": invocationid,
                 "NETBIOSNAME": names.netbiosname,
                 "DNSNAME": "%s.%s" % (names.hostname, names.dnsdomain),
-                "MACHINEPASS_B64": b64encode(machinepass.encode('utf-16-le')),
+                "MACHINEPASS_B64": b64encode(machinepass.encode('utf-16-le')).decode('utf8'),
                 "DOMAINSID": str(domainsid),
                 "DCRID": str(dc_rid),
                 "SAMBA_VERSION_STRING": version,
@@ -1208,7 +1208,7 @@ def setup_self_join(samdb, admin_session_info, names, fill, machinepass,
         setup_add_ldif(samdb, setup_path("provision_dns_add_samba.ldif"), {
               "DNSDOMAIN": names.dnsdomain,
               "DOMAINDN": names.domaindn,
-              "DNSPASS_B64": b64encode(dnspass.encode('utf-16-le')),
+              "DNSPASS_B64": b64encode(dnspass.encode('utf-16-le')).decode('utf8'),
               "HOSTNAME" : names.hostname,
               "DNSNAME" : '%s.%s' % (
                   names.netbiosname.lower(), names.dnsdomain.lower())
@@ -1367,7 +1367,7 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
     else:
         domainguid_line = ""
 
-    descr = b64encode(get_domain_descriptor(names.domainsid))
+    descr = b64encode(get_domain_descriptor(names.domainsid)).decode('utf8')
     setup_add_ldif(samdb, setup_path("provision_basedn.ldif"), {
             "DOMAINDN": names.domaindn,
             "DOMAINSID": str(names.domainsid),
@@ -1390,7 +1390,7 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
     # If we are setting up a subdomain, then this has been replicated in, so we don't need to add it
     if fill == FILL_FULL:
         logger.info("Adding configuration container")
-        descr = b64encode(get_config_descriptor(names.domainsid))
+        descr = b64encode(get_config_descriptor(names.domainsid)).decode('utf8')
         setup_add_ldif(samdb, setup_path("provision_configuration_basedn.ldif"), {
                 "CONFIGDN": names.configdn,
                 "DESCRIPTOR": descr,
@@ -1420,12 +1420,12 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
     if fill == FILL_FULL:
         logger.info("Setting up sam.ldb configuration data")
 
-        partitions_descr = b64encode(get_config_partitions_descriptor(names.domainsid))
-        sites_descr = b64encode(get_config_sites_descriptor(names.domainsid))
-        ntdsquotas_descr = b64encode(get_config_ntds_quotas_descriptor(names.domainsid))
-        protected1_descr = b64encode(get_config_delete_protected1_descriptor(names.domainsid))
-        protected1wd_descr = b64encode(get_config_delete_protected1wd_descriptor(names.domainsid))
-        protected2_descr = b64encode(get_config_delete_protected2_descriptor(names.domainsid))
+        partitions_descr = b64encode(get_config_partitions_descriptor(names.domainsid)).decode('utf8')
+        sites_descr = b64encode(get_config_sites_descriptor(names.domainsid)).decode('utf8')
+        ntdsquotas_descr = b64encode(get_config_ntds_quotas_descriptor(names.domainsid)).decode('utf8')
+        protected1_descr = b64encode(get_config_delete_protected1_descriptor(names.domainsid)).decode('utf8')
+        protected1wd_descr = b64encode(get_config_delete_protected1wd_descriptor(names.domainsid)).decode('utf8')
+        protected2_descr = b64encode(get_config_delete_protected2_descriptor(names.domainsid)).decode('utf8')
 
         if "2008" in schema.base_schema:
             # exclude 2012-specific changes if we're using a 2008 schema
@@ -1475,7 +1475,7 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
             })
 
     logger.info("Adding users container")
-    users_desc = b64encode(get_domain_users_descriptor(names.domainsid))
+    users_desc = b64encode(get_domain_users_descriptor(names.domainsid)).decode('utf8')
     setup_add_ldif(samdb, setup_path("provision_users_add.ldif"), {
             "DOMAINDN": names.domaindn,
             "USERS_DESCRIPTOR": users_desc
@@ -1484,7 +1484,7 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
     setup_modify_ldif(samdb, setup_path("provision_users_modify.ldif"), {
             "DOMAINDN": names.domaindn})
     logger.info("Adding computers container")
-    computers_desc = b64encode(get_domain_computers_descriptor(names.domainsid))
+    computers_desc = b64encode(get_domain_computers_descriptor(names.domainsid)).decode('utf8')
     setup_add_ldif(samdb, setup_path("provision_computers_add.ldif"), {
             "DOMAINDN": names.domaindn,
             "COMPUTERS_DESCRIPTOR": computers_desc
@@ -1494,11 +1494,11 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
         setup_path("provision_computers_modify.ldif"), {
             "DOMAINDN": names.domaindn})
     logger.info("Setting up sam.ldb data")
-    infrastructure_desc = b64encode(get_domain_infrastructure_descriptor(names.domainsid))
-    lostandfound_desc = b64encode(get_domain_delete_protected2_descriptor(names.domainsid))
-    system_desc = b64encode(get_domain_delete_protected1_descriptor(names.domainsid))
-    builtin_desc = b64encode(get_domain_builtin_descriptor(names.domainsid))
-    controllers_desc = b64encode(get_domain_controllers_descriptor(names.domainsid))
+    infrastructure_desc = b64encode(get_domain_infrastructure_descriptor(names.domainsid)).decode('utf8')
+    lostandfound_desc = b64encode(get_domain_delete_protected2_descriptor(names.domainsid)).decode('utf8')
+    system_desc = b64encode(get_domain_delete_protected1_descriptor(names.domainsid)).decode('utf8')
+    builtin_desc = b64encode(get_domain_builtin_descriptor(names.domainsid)).decode('utf8')
+    controllers_desc = b64encode(get_domain_controllers_descriptor(names.domainsid)).decode('utf8')
     setup_add_ldif(samdb, setup_path("provision.ldif"), {
         "CREATTIME": str(samba.unix2nttime(int(time.time()))),
         "DOMAINDN": names.domaindn,
@@ -1517,14 +1517,14 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
 
     # If we are setting up a subdomain, then this has been replicated in, so we don't need to add it
     if fill == FILL_FULL:
-        managedservice_descr = b64encode(get_managed_service_accounts_descriptor(names.domainsid))
+        managedservice_descr = b64encode(get_managed_service_accounts_descriptor(names.domainsid)).decode('utf8')
         setup_modify_ldif(samdb,
                           setup_path("provision_configuration_references.ldif"), {
                 "CONFIGDN": names.configdn,
                 "SCHEMADN": names.schemadn})
 
         logger.info("Setting up well known security principals")
-        protected1wd_descr = b64encode(get_config_delete_protected1wd_descriptor(names.domainsid))
+        protected1wd_descr = b64encode(get_config_delete_protected1wd_descriptor(names.domainsid)).decode('utf8')
         setup_add_ldif(samdb, setup_path("provision_well_known_sec_princ.ldif"), {
             "CONFIGDN": names.configdn,
             "WELLKNOWNPRINCIPALS_DESCRIPTOR": protected1wd_descr,
@@ -1541,8 +1541,8 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
         setup_add_ldif(samdb, setup_path("provision_users.ldif"), {
             "DOMAINDN": names.domaindn,
             "DOMAINSID": str(names.domainsid),
-            "ADMINPASS_B64": b64encode(adminpass.encode('utf-16-le')),
-            "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
+            "ADMINPASS_B64": b64encode(adminpass.encode('utf-16-le')).decode('utf8'),
+            "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le')).decode('utf8')
             }, controls=["relax:0", "provision:0"])
 
         logger.info("Setting up self join")
@@ -2189,7 +2189,7 @@ def provision(logger, session_info, smbconf=None,
     if paths.sysvol and not os.path.exists(paths.sysvol):
         os.makedirs(paths.sysvol, 0o775)
 
-    ldapi_url = "ldapi://%s" % urllib.quote(paths.s4_ldapi_path, safe="")
+    ldapi_url = "ldapi://%s" % urllib_quote(paths.s4_ldapi_path, safe="")
 
     schema = Schema(domainsid, invocationid=invocationid,
         schemadn=names.schemadn, base_schema=base_schema)
diff --git a/python/samba/provision/backend.py b/python/samba/provision/backend.py
index 278e69f..af82987 100644
--- a/python/samba/provision/backend.py
+++ b/python/samba/provision/backend.py
@@ -25,6 +25,7 @@
 
 """Functions for setting up a Samba configuration (LDB and LDAP backends)."""
 
+from samba.compat import urllib_quote
 from base64 import b64encode
 import errno
 import ldb
@@ -183,7 +184,7 @@ class LDAPBackend(ProvisionBackend):
         if ldap_backend_forced_uri is not None:
             self.ldap_uri = ldap_backend_forced_uri
         else:
-            self.ldap_uri = "ldapi://%s" % urllib.quote(
+            self.ldap_uri = "ldapi://%s" % urllib_quote(
                 os.path.join(self.ldapdir, "ldapi"), safe="")
 
         if not os.path.exists(self.ldapdir):
diff --git a/python/samba/provision/sambadns.py b/python/samba/provision/sambadns.py
index 3d59c70..63ebff0 100644
--- a/python/samba/provision/sambadns.py
+++ b/python/samba/provision/sambadns.py
@@ -247,12 +247,12 @@ def setup_dns_partitions(samdb, domainsid, domaindn, forestdn, configdn,
 
     setup_add_ldif(samdb, setup_path("provision_dnszones_partitions.ldif"), {
         "ZONE_DN": domainzone_dn,
-        "SECDESC"      : b64encode(descriptor)
+        "SECDESC"      : b64encode(descriptor).decode('utf8')
         })
     if fill_level != FILL_SUBDOMAIN:
         setup_add_ldif(samdb, setup_path("provision_dnszones_partitions.ldif"), {
             "ZONE_DN": forestzone_dn,
-            "SECDESC"      : b64encode(descriptor)
+            "SECDESC"      : b64encode(descriptor).decode('utf8')
         })
 
     domainzone_guid = get_domainguid(samdb, domainzone_dn)
@@ -267,8 +267,8 @@ def setup_dns_partitions(samdb, domainsid, domaindn, forestdn, configdn,
         "ZONE_DNS": domainzone_dns,
         "CONFIGDN": configdn,
         "SERVERDN": serverdn,
-        "LOSTANDFOUND_DESCRIPTOR": b64encode(protected2_desc),
-        "INFRASTRUCTURE_DESCRIPTOR": b64encode(protected1_desc),
+        "LOSTANDFOUND_DESCRIPTOR": b64encode(protected2_desc).decode('utf8'),
+        "INFRASTRUCTURE_DESCRIPTOR": b64encode(protected1_desc).decode('utf8'),
         })
     setup_modify_ldif(samdb, setup_path("provision_dnszones_modify.ldif"), {
         "CONFIGDN": configdn,
@@ -287,8 +287,8 @@ def setup_dns_partitions(samdb, domainsid, domaindn, forestdn, configdn,
             "ZONE_DNS": forestzone_dns,
             "CONFIGDN": configdn,
             "SERVERDN": serverdn,
-            "LOSTANDFOUND_DESCRIPTOR": b64encode(protected2_desc),
-            "INFRASTRUCTURE_DESCRIPTOR": b64encode(protected1_desc),
+            "LOSTANDFOUND_DESCRIPTOR": b64encode(protected2_desc).decode('utf8'),
+            "INFRASTRUCTURE_DESCRIPTOR": b64encode(protected1_desc).decode('utf8'),
         })
         setup_modify_ldif(samdb, setup_path("provision_dnszones_modify.ldif"), {
             "CONFIGDN": configdn,
@@ -675,7 +675,7 @@ def secretsdb_setup_dns(secretsdb, names, private_dir, binddns_dir, realm,
             "REALM": realm,
             "DNSDOMAIN": dnsdomain,
             "DNS_KEYTAB": dns_keytab_path,
-            "DNSPASS_B64": b64encode(dnspass.encode('utf-8')),
+            "DNSPASS_B64": b64encode(dnspass.encode('utf-8')).decode('utf8'),
             "KEY_VERSION_NUMBER": str(key_version_number),
             "HOSTNAME": names.hostname,
             "DNSNAME" : '%s.%s' % (
@@ -817,7 +817,7 @@ def create_samdb_copy(samdb, logger, paths, names, domainsid, domainguid):
         dom_ldb.add(index_res[0])
 
         domainguid_line = "objectGUID: %s\n-" % domainguid
-        descr = b64encode(get_domain_descriptor(domainsid))
+        descr = b64encode(get_domain_descriptor(domainsid)).decode('utf8')
         setup_add_ldif(dom_ldb, setup_path("provision_basedn.ldif"), {
             "DOMAINDN" : names.domaindn,
             "DOMAINGUID" : domainguid_line,
diff --git a/python/samba/schema.py b/python/samba/schema.py
index 67ec357..c553708 100644
--- a/python/samba/schema.py
+++ b/python/samba/schema.py
@@ -122,7 +122,7 @@ class Schema(object):
             setup_path("provision_schema_basedn_modify.ldif"),
             {"SCHEMADN": schemadn, "OBJVERSION" : schema_version})
 
-        descr = b64encode(get_schema_descriptor(domain_sid))
+        descr = b64encode(get_schema_descriptor(domain_sid)).decode('utf8')
         self.schema_dn_add = read_and_sub_file(
             setup_path("provision_schema_basedn.ldif"),


-- 
Samba Shared Repository



More information about the samba-cvs mailing list