svn commit: samba r26477 - in branches/SAMBA_4_0: . source/auth source/scripting/python source/scripting/python/samba

jelmer at samba.org jelmer at samba.org
Sun Dec 16 17:17:38 GMT 2007


Author: jelmer
Date: 2007-12-16 17:17:37 +0000 (Sun, 16 Dec 2007)
New Revision: 26477

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26477

Log:
Allow setting loadparm context for a ldb context in python, plus some other minor improvements.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/auth/config.mk
   branches/SAMBA_4_0/source/scripting/python/misc.i
   branches/SAMBA_4_0/source/scripting/python/misc.py
   branches/SAMBA_4_0/source/scripting/python/misc_wrap.c
   branches/SAMBA_4_0/source/scripting/python/samba/__init__.py


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/auth/config.mk
===================================================================
--- branches/SAMBA_4_0/source/auth/config.mk	2007-12-16 16:19:43 UTC (rev 26476)
+++ branches/SAMBA_4_0/source/auth/config.mk	2007-12-16 17:17:37 UTC (rev 26477)
@@ -11,7 +11,7 @@
 [SUBSYSTEM::auth_system_session]
 OBJ_FILES = system_session.o
 PUBLIC_PROTO_HEADER = system_session_proto.h
-PRIVATE_DEPENDENCIES = auth_session LIBSAMBA-UTIL
+PRIVATE_DEPENDENCIES = auth_session LIBSAMBA-UTIL LIBSECURITY
 
 [SUBSYSTEM::auth_sam]
 PRIVATE_PROTO_HEADER = auth_sam.h

Modified: branches/SAMBA_4_0/source/scripting/python/misc.i
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/misc.i	2007-12-16 16:19:43 UTC (rev 26476)
+++ branches/SAMBA_4_0/source/scripting/python/misc.i	2007-12-16 17:17:37 UTC (rev 26477)
@@ -21,6 +21,7 @@
 %{
 #include "includes.h"
 #include "ldb.h"
+#include "param/param.h"
 %}
 
 %import "stdint.i"
@@ -28,6 +29,7 @@
 %import "../../lib/talloc/talloc.i"
 %import "../../lib/ldb/ldb.i"
 %import "../../auth/credentials/credentials.i"
+%import "../../param/param.i"
 
 %rename(random_password) generate_random_str;
 char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len);
@@ -37,4 +39,16 @@
 {
     ldb_set_opaque(ldb, "credentials", creds);
 }
+
+#if 0 /* Fails to link.. */
+void ldb_set_session_info(struct ldb_context *ldb, struct auth_session_info *session_info)
+{
+    ldb_set_opaque(ldb, "sessionInfo", session_info);
+}
+#endif
+
+void ldb_set_loadparm(struct ldb_context *ldb, struct loadparm_context *lp_ctx)
+{
+    ldb_set_opaque(ldb, "loadparm", lp_ctx);
+}
 %}

Modified: branches/SAMBA_4_0/source/scripting/python/misc.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/misc.py	2007-12-16 16:19:43 UTC (rev 26476)
+++ branches/SAMBA_4_0/source/scripting/python/misc.py	2007-12-16 17:17:37 UTC (rev 26477)
@@ -62,5 +62,6 @@
 import param
 random_password = _misc.random_password
 ldb_set_credentials = _misc.ldb_set_credentials
+ldb_set_loadparm = _misc.ldb_set_loadparm
 
 

Modified: branches/SAMBA_4_0/source/scripting/python/misc_wrap.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/misc_wrap.c	2007-12-16 16:19:43 UTC (rev 26476)
+++ branches/SAMBA_4_0/source/scripting/python/misc_wrap.c	2007-12-16 17:17:37 UTC (rev 26477)
@@ -2524,6 +2524,7 @@
 
 #include "includes.h"
 #include "ldb.h"
+#include "param/param.h"
 
 
 SWIGINTERN int
@@ -2702,6 +2703,18 @@
     ldb_set_opaque(ldb, "credentials", creds);
 }
 
+#if 0 /* Fails to link.. */
+void ldb_set_session_info(struct ldb_context *ldb, struct auth_session_info *session_info)
+{
+    ldb_set_opaque(ldb, "sessionInfo", session_info);
+}
+#endif
+
+void ldb_set_loadparm(struct ldb_context *ldb, struct loadparm_context *lp_ctx)
+{
+    ldb_set_opaque(ldb, "loadparm", lp_ctx);
+}
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -2777,9 +2790,53 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_ldb_set_loadparm(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  struct ldb_context *arg1 = (struct ldb_context *) 0 ;
+  struct loadparm_context *arg2 = (struct loadparm_context *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "Ldb",(char *) "lp_ctx", NULL 
+  };
+  
+  {
+    arg2 = loadparm_init(NULL);
+  }
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|O:ldb_set_loadparm",kwnames,&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_set_loadparm" "', argument " "1"" of type '" "struct ldb_context *""'"); 
+  }
+  arg1 = (struct ldb_context *)(argp1);
+  if (obj1) {
+    res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_loadparm_context, 0 |  0 );
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_set_loadparm" "', argument " "2"" of type '" "struct loadparm_context *""'"); 
+    }
+    arg2 = (struct loadparm_context *)(argp2);
+  }
+  {
+    if (arg1 == NULL)
+    SWIG_exception(SWIG_ValueError, 
+      "ldb context must be non-NULL");
+  }
+  ldb_set_loadparm(arg1,arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 static PyMethodDef SwigMethods[] = {
 	 { (char *)"random_password", (PyCFunction) _wrap_random_password, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"ldb_set_credentials", (PyCFunction) _wrap_ldb_set_credentials, METH_VARARGS | METH_KEYWORDS, NULL},
+	 { (char *)"ldb_set_loadparm", (PyCFunction) _wrap_ldb_set_loadparm, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { NULL, NULL, 0, NULL }
 };
 

Modified: branches/SAMBA_4_0/source/scripting/python/samba/__init__.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/__init__.py	2007-12-16 16:19:43 UTC (rev 26476)
+++ branches/SAMBA_4_0/source/scripting/python/samba/__init__.py	2007-12-16 17:17:37 UTC (rev 26477)
@@ -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 @@
     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



More information about the samba-cvs mailing list