diff options
Diffstat (limited to 'source4/scripting/python/samba')
-rw-r--r-- | source4/scripting/python/samba/__init__.py | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index 29d322e2fc..08a262eec8 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -21,21 +21,33 @@ import os def _in_source_tree(): + """Check whether the script is being run from the source dir. """ return os.path.exists("%s/../../../samba4-skip" % os.path.dirname(__file__)) + # When running, in-tree, make sure bin/python is in the PYTHONPATH if _in_source_tree(): import sys - dir = os.path.dirname(__file__) - sys.path.append("%s/../../../bin/python" % os.path.dirname(__file__)) + srcdir = "%s/../../.." % os.path.dirname(__file__) + sys.path.append("%s/bin/python" % srcdir) + default_ldb_modules_dir = "%s/bin/modules/ldb" % srcdir + import misc import ldb ldb.ldb.set_credentials = misc.ldb_set_credentials +#FIXME: ldb.ldb.set_session_info = misc.ldb_set_session_info +ldb.ldb.set_loadparm = misc.ldb_set_loadparm -def Ldb(url, session_info=None, credentials=None, modules_dir=None): +def Ldb(url, session_info=None, credentials=None, modules_dir=None, lp=None): """Open a Samba Ldb file. + :param url: LDB Url to open + :param session_info: Optional session information + :param credentials: Optional credentials, defaults to anonymous. + :param modules_dir: Modules directory, automatically set if not specified. + :param lp: Loadparm object, optional. + This is different from a regular Ldb file in that the Samba-specific modules-dir is used by default and that credentials and session_info can be passed through (required by some modules). @@ -43,12 +55,17 @@ def Ldb(url, session_info=None, credentials=None, modules_dir=None): import ldb ret = ldb.Ldb() if modules_dir is None: - modules_dir = os.path.join(os.getcwd(), "bin", "modules", "ldb") - ret.set_modules_dir(modules_dir) + modules_dir = default_ldb_modules_dir + if modules_dir is not None: + ret.set_modules_dir(modules_dir) def samba_debug(level,text): print "%d %s" % (level, text) - ldb_set_opaque("credentials", credentials) - ret.set_opaque("sessionInfo", session_info) + if credentials is not None: + ldb.set_credentials(credentials) + if session_info is not None: + ldb.set_session_info(session_info) + if lp is not None: + ldb.set_loadparm(lp) #ret.set_debug(samba_debug) ret.connect(url) return ret |