tests dsdb: Add tests for optionally unique objectSID's
[samba.git] / python / samba / __init__.py
index 0cbdec7800c316db273f5c994a18694a0e751c2c..6f79b3cc960e8b0e03d37c6d9d3cc1663d1a716f 100644 (file)
@@ -24,7 +24,11 @@ __docformat__ = "restructuredText"
 
 import os
 import sys
+import time
+import ldb
 import samba.param
+from samba import _glue
+from samba._ldb import Ldb as _Ldb
 
 
 def source_tree_topdir():
@@ -46,10 +50,6 @@ def in_source_tree():
     return True
 
 
-import ldb
-from samba._ldb import Ldb as _Ldb
-
-
 class Ldb(_Ldb):
     """Simple Samba-specific LDB subclass that takes care
     of setting up the modules dir, credentials pointers, etc.
@@ -97,7 +97,7 @@ class Ldb(_Ldb):
 
         # TODO set debug
         def msg(l, text):
-            print text
+            print(text)
         #self.set_debug(msg)
 
         self.set_utf8_casefold()
@@ -108,7 +108,7 @@ class Ldb(_Ldb):
             if nosync_p is not None and nosync_p:
                 flags |= ldb.FLG_NOSYNC
 
-        self.set_create_perms(0600)
+        self.set_create_perms(0o600)
 
         if url is not None:
             self.connect(url, flags, options)
@@ -140,7 +140,8 @@ class Ldb(_Ldb):
         try:
             res = self.search(base=dn, scope=ldb.SCOPE_SUBTREE, attrs=[],
                       expression="(|(objectclass=user)(objectclass=computer))")
-        except ldb.LdbError, (errno, _):
+        except ldb.LdbError as error:
+            (errno, estr) = error.args
             if errno == ldb.ERR_NO_SUCH_OBJECT:
                 # Ignore no such object errors
                 return
@@ -150,7 +151,8 @@ class Ldb(_Ldb):
         try:
             for msg in res:
                 self.delete(msg.dn, ["relax:0"])
-        except ldb.LdbError, (errno, _):
+        except ldb.LdbError as error:
+            (errno, estr) = error.args
             if errno != ldb.ERR_NO_SUCH_OBJECT:
                 # Ignore no such object errors
                 raise
@@ -174,7 +176,8 @@ class Ldb(_Ldb):
                        [], controls=["show_deleted:0", "show_recycled:0"]):
             try:
                 self.delete(msg.dn, ["relax:0"])
-            except ldb.LdbError, (errno, _):
+            except ldb.LdbError as error:
+                (errno, estr) = error.args
                 if errno != ldb.ERR_NO_SUCH_OBJECT:
                     # Ignore no such object errors
                     raise
@@ -189,7 +192,8 @@ class Ldb(_Ldb):
                      "@OPTIONS", "@PARTITION", "@KLUDGEACL"]:
             try:
                 self.delete(attr, ["relax:0"])
-            except ldb.LdbError, (errno, _):
+            except ldb.LdbError as error:
+                (errno, estr) = error.args
                 if errno != ldb.ERR_NO_SUCH_OBJECT:
                     # Ignore missing dn errors
                     raise
@@ -202,7 +206,8 @@ class Ldb(_Ldb):
         for attr in ["@INDEXLIST", "@ATTRIBUTES"]:
             try:
                 self.delete(attr, ["relax:0"])
-            except ldb.LdbError, (errno, _):
+            except ldb.LdbError as error:
+                (errno, estr) = error.args
                 if errno != ldb.ERR_NO_SUCH_OBJECT:
                     # Ignore missing dn errors
                     raise
@@ -354,27 +359,25 @@ def ensure_third_party_module(modulename, location):
             namespace="samba.third_party")
 
 
-def ensure_external_module(modulename, location):
-    """Add a location to sys.path if an external dependency can't be found.
-
-    :param modulename: Module name to import
-    :param location: Location to add to sys.path (can be relative to
-        ${srcdir}/lib)
-    """
-    # This is deprecated - please use ensure_third_party_module for
-    # new modules instead, and put them in third_party/.
-    try:
-        __import__(modulename)
-    except ImportError:
-        import_bundled_package(modulename, location,
-            source_tree_container="lib", namespace="samba.external")
-
-
 def dn_from_dns_name(dnsdomain):
     """return a DN from a DNS name domain/forest root"""
     return "DC=" + ",DC=".join(dnsdomain.split("."))
 
-import _glue
+def current_unix_time():
+    return int(time.time())
+
+def string_to_byte_array(string):
+    blob = [0] * len(string)
+
+    for i in range(len(string)):
+        blob[i] = ord(string[i])
+
+    return blob
+
+def arcfour_encrypt(key, data):
+    from samba.crypto import arcfour_crypt_blob
+    return arcfour_crypt_blob(data, key)
+
 version = _glue.version
 interface_ips = _glue.interface_ips
 set_debug_level = _glue.set_debug_level
@@ -384,5 +387,13 @@ nttime2string = _glue.nttime2string
 nttime2unix = _glue.nttime2unix
 unix2nttime = _glue.unix2nttime
 generate_random_password = _glue.generate_random_password
+generate_random_machine_password = _glue.generate_random_machine_password
 strcasecmp_m = _glue.strcasecmp_m
 strstr_m = _glue.strstr_m
+is_ntvfs_fileserver_built = _glue.is_ntvfs_fileserver_built
+is_heimdal_built = _glue.is_heimdal_built
+
+NTSTATUSError = _glue.NTSTATUSError
+HRESULTError = _glue.HRESULTError
+WERRORError = _glue.WERRORError
+DsExtendedError = _glue.DsExtendedError