r26496: Move some provision functions to a new SamDB class, support setting session_i...
authorJelmer Vernooij <jelmer@samba.org>
Mon, 17 Dec 2007 07:20:20 +0000 (08:20 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:50:50 +0000 (05:50 +0100)
(This used to be commit 75cfb0d609687538048a7d72a499a5205af46a34)

source4/lib/ldb/ldb.i
source4/lib/ldb/ldb.py
source4/lib/ldb/ldb_wrap.c
source4/scripting/python/misc.i
source4/scripting/python/misc.py
source4/scripting/python/misc_wrap.c
source4/scripting/python/samba/__init__.py
source4/scripting/python/samba/provision.py
source4/scripting/python/samba/samdb.py [new file with mode: 0644]

index 364b07ce346caa0de2259744c1651c2f257af834..97cc16806dbe89811d4d08557eef38b0977f4fd6 100644 (file)
@@ -450,7 +450,7 @@ PyObject *PyExc_LdbError;
  * Wrap ldb functions 
  */
 
-%rename(Ldb) ldb;
+%rename(Ldb) ldb_context;
 /* Top-level ldb operations */
 typedef struct ldb_context {
     %typemap(out) ldb_error {
@@ -535,7 +535,7 @@ fail:
 } ldb;
 
 %nodefault ldb_message;
-%nodefault Ldb;
+%nodefault ldb_context;
 %nodefault Dn;
 
 %rename(valid_attr_name) ldb_valid_attr_name;
index d9ddb8af0adc1825d8e32fd16bbc737fec33d53a..10f42b0f83566a7af784a47d569f14237efd8702 100644 (file)
@@ -165,38 +165,35 @@ LDB_ERR_ENTRY_ALREADY_EXISTS = _ldb.LDB_ERR_ENTRY_ALREADY_EXISTS
 LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED = _ldb.LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED
 LDB_ERR_AFFECTS_MULTIPLE_DSAS = _ldb.LDB_ERR_AFFECTS_MULTIPLE_DSAS
 LDB_ERR_OTHER = _ldb.LDB_ERR_OTHER
-class ldb(object):
+class Ldb(object):
     thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
-    def __init__(self): raise AttributeError, "No constructor defined"
     __repr__ = _swig_repr
-    __swig_destroy__ = _ldb.delete_ldb
-ldb.connect = new_instancemethod(_ldb.ldb_connect,None,ldb)
-ldb.search = new_instancemethod(_ldb.ldb_search,None,ldb)
-ldb.delete = new_instancemethod(_ldb.ldb_delete,None,ldb)
-ldb.rename = new_instancemethod(_ldb.ldb_rename,None,ldb)
-ldb.add = new_instancemethod(_ldb.ldb_add,None,ldb)
-ldb.modify = new_instancemethod(_ldb.ldb_modify,None,ldb)
-ldb.get_config_basedn = new_instancemethod(_ldb.ldb_get_config_basedn,None,ldb)
-ldb.get_root_basedn = new_instancemethod(_ldb.ldb_get_root_basedn,None,ldb)
-ldb.get_schema_basedn = new_instancemethod(_ldb.ldb_get_schema_basedn,None,ldb)
-ldb.get_default_basedn = new_instancemethod(_ldb.ldb_get_default_basedn,None,ldb)
-ldb.errstring = new_instancemethod(_ldb.ldb_errstring,None,ldb)
-ldb.set_create_perms = new_instancemethod(_ldb.ldb_set_create_perms,None,ldb)
-ldb.set_modules_dir = new_instancemethod(_ldb.ldb_set_modules_dir,None,ldb)
-ldb.set_debug = new_instancemethod(_ldb.ldb_set_debug,None,ldb)
-ldb.set_opaque = new_instancemethod(_ldb.ldb_set_opaque,None,ldb)
-ldb.get_opaque = new_instancemethod(_ldb.ldb_get_opaque,None,ldb)
-ldb.transaction_start = new_instancemethod(_ldb.ldb_transaction_start,None,ldb)
-ldb.transaction_commit = new_instancemethod(_ldb.ldb_transaction_commit,None,ldb)
-ldb.transaction_cancel = new_instancemethod(_ldb.ldb_transaction_cancel,None,ldb)
-ldb.__contains__ = new_instancemethod(_ldb.ldb___contains__,None,ldb)
-ldb.parse_ldif = new_instancemethod(_ldb.ldb_parse_ldif,None,ldb)
-ldb_swigregister = _ldb.ldb_swigregister
-ldb_swigregister(ldb)
-
-def Ldb(*args, **kwargs):
-    val = _ldb.new_Ldb(*args, **kwargs)
-    return val
+    def __init__(self, *args, **kwargs): 
+        _ldb.Ldb_swiginit(self,_ldb.new_Ldb(*args, **kwargs))
+    __swig_destroy__ = _ldb.delete_Ldb
+Ldb.connect = new_instancemethod(_ldb.Ldb_connect,None,Ldb)
+Ldb.search = new_instancemethod(_ldb.Ldb_search,None,Ldb)
+Ldb.delete = new_instancemethod(_ldb.Ldb_delete,None,Ldb)
+Ldb.rename = new_instancemethod(_ldb.Ldb_rename,None,Ldb)
+Ldb.add = new_instancemethod(_ldb.Ldb_add,None,Ldb)
+Ldb.modify = new_instancemethod(_ldb.Ldb_modify,None,Ldb)
+Ldb.get_config_basedn = new_instancemethod(_ldb.Ldb_get_config_basedn,None,Ldb)
+Ldb.get_root_basedn = new_instancemethod(_ldb.Ldb_get_root_basedn,None,Ldb)
+Ldb.get_schema_basedn = new_instancemethod(_ldb.Ldb_get_schema_basedn,None,Ldb)
+Ldb.get_default_basedn = new_instancemethod(_ldb.Ldb_get_default_basedn,None,Ldb)
+Ldb.errstring = new_instancemethod(_ldb.Ldb_errstring,None,Ldb)
+Ldb.set_create_perms = new_instancemethod(_ldb.Ldb_set_create_perms,None,Ldb)
+Ldb.set_modules_dir = new_instancemethod(_ldb.Ldb_set_modules_dir,None,Ldb)
+Ldb.set_debug = new_instancemethod(_ldb.Ldb_set_debug,None,Ldb)
+Ldb.set_opaque = new_instancemethod(_ldb.Ldb_set_opaque,None,Ldb)
+Ldb.get_opaque = new_instancemethod(_ldb.Ldb_get_opaque,None,Ldb)
+Ldb.transaction_start = new_instancemethod(_ldb.Ldb_transaction_start,None,Ldb)
+Ldb.transaction_commit = new_instancemethod(_ldb.Ldb_transaction_commit,None,Ldb)
+Ldb.transaction_cancel = new_instancemethod(_ldb.Ldb_transaction_cancel,None,Ldb)
+Ldb.__contains__ = new_instancemethod(_ldb.Ldb___contains__,None,Ldb)
+Ldb.parse_ldif = new_instancemethod(_ldb.Ldb_parse_ldif,None,Ldb)
+Ldb_swigregister = _ldb.Ldb_swigregister
+Ldb_swigregister(Ldb)
 
 valid_attr_name = _ldb.valid_attr_name
 timestring = _ldb.timestring
index c0e74d0115b27e4a2837f43544dc988115851efe..39ecaf62ed0aaa3fb4c9eb3fb1a631d38b25850f 100644 (file)
@@ -3075,7 +3075,7 @@ SWIGINTERN PyObject *_wrap_new_Dn(PyObject *SWIGUNUSEDPARM(self), PyObject *args
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
   char *  kwnames[] = {
-    (char *) "Ldb",(char *) "str", NULL 
+    (char *) "ldb",(char *) "str", NULL 
   };
   
   if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:new_Dn",kwnames,&obj0,&obj1)) SWIG_fail;
@@ -4297,7 +4297,7 @@ SWIGINTERN PyObject *_wrap_new_Ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *arg
     arg3 = (char **)(argp3);
   }
   result = (ldb *)new_ldb((char const *)arg1,arg2,(char const *(*))arg3);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ldb_context, SWIG_POINTER_OWN |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ldb_context, SWIG_POINTER_NEW |  0 );
   if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
   return resultobj;
 fail:
@@ -4306,7 +4306,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_connect(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_connect(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -4330,28 +4330,28 @@ SWIGINTERN PyObject *_wrap_ldb_connect(PyObject *SWIGUNUSEDPARM(self), PyObject
     (char *) "self",(char *) "url",(char *) "flags",(char *) "options", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|OO:ldb_connect",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|OO:Ldb_connect",kwnames,&obj0,&obj1,&obj2,&obj3)) 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_connect" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_connect" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_connect" "', argument " "2"" of type '" "char const *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_connect" "', argument " "2"" of type '" "char const *""'");
   }
   arg2 = (char *)(buf2);
   if (obj2) {
     ecode3 = SWIG_AsVal_unsigned_SS_int(obj2, &val3);
     if (!SWIG_IsOK(ecode3)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ldb_connect" "', argument " "3"" of type '" "unsigned int""'");
+      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Ldb_connect" "', argument " "3"" of type '" "unsigned int""'");
     } 
     arg3 = (unsigned int)(val3);
   }
   if (obj3) {
     res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_p_char, 0 |  0 );
     if (!SWIG_IsOK(res4)) {
-      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ldb_connect" "', argument " "4"" of type '" "char const *[]""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Ldb_connect" "', argument " "4"" of type '" "char const *[]""'"); 
     } 
     arg4 = (char **)(argp4);
   }
@@ -4376,7 +4376,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_Ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   void *argp1 = 0 ;
@@ -4387,7 +4387,7 @@ SWIGINTERN PyObject *_wrap_delete_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ldb" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Ldb" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4404,7 +4404,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_search(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_search(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *arg2 = (ldb_dn *) NULL ;
@@ -4436,30 +4436,30 @@ SWIGINTERN PyObject *_wrap_ldb_search(PyObject *SWIGUNUSEDPARM(self), PyObject *
   {
     arg6 = &temp_ldb_result6;
   }
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOO:ldb_search",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOO:Ldb_search",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4)) 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_search" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_search" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   if (obj1) {
     res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ldb_dn, 0 |  0 );
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_search" "', argument " "2"" of type '" "ldb_dn *""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_search" "', argument " "2"" of type '" "ldb_dn *""'"); 
     }
     arg2 = (ldb_dn *)(argp2);
   }
   if (obj2) {
     ecode3 = SWIG_AsVal_int(obj2, &val3);
     if (!SWIG_IsOK(ecode3)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ldb_search" "', argument " "3"" of type '" "enum ldb_scope""'");
+      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Ldb_search" "', argument " "3"" of type '" "enum ldb_scope""'");
     } 
     arg3 = (enum ldb_scope)(val3);
   }
   if (obj3) {
     res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4);
     if (!SWIG_IsOK(res4)) {
-      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ldb_search" "', argument " "4"" of type '" "char const *""'");
+      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Ldb_search" "', argument " "4"" of type '" "char const *""'");
     }
     arg4 = (char *)(buf4);
   }
@@ -4513,7 +4513,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *arg2 = (ldb_dn *) 0 ;
@@ -4528,15 +4528,15 @@ SWIGINTERN PyObject *_wrap_ldb_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *
     (char *) "self",(char *) "dn", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_delete",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_delete",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_delete" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_delete" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ldb_dn, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_delete" "', argument " "2"" of type '" "ldb_dn *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_delete" "', argument " "2"" of type '" "ldb_dn *""'"); 
   }
   arg2 = (ldb_dn *)(argp2);
   {
@@ -4558,7 +4558,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_rename(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_rename(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *arg2 = (ldb_dn *) 0 ;
@@ -4577,20 +4577,20 @@ SWIGINTERN PyObject *_wrap_ldb_rename(PyObject *SWIGUNUSEDPARM(self), PyObject *
     (char *) "self",(char *) "olddn",(char *) "newdn", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:ldb_rename",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:Ldb_rename",kwnames,&obj0,&obj1,&obj2)) 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_rename" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_rename" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ldb_dn, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_rename" "', argument " "2"" of type '" "ldb_dn *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_rename" "', argument " "2"" of type '" "ldb_dn *""'"); 
   }
   arg2 = (ldb_dn *)(argp2);
   res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_ldb_dn, 0 |  0 );
   if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ldb_rename" "', argument " "3"" of type '" "ldb_dn *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Ldb_rename" "', argument " "3"" of type '" "ldb_dn *""'"); 
   }
   arg3 = (ldb_dn *)(argp3);
   {
@@ -4612,7 +4612,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_add(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_add(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_msg *arg2 = (ldb_msg *) 0 ;
@@ -4630,10 +4630,10 @@ SWIGINTERN PyObject *_wrap_ldb_add(PyObject *SWIGUNUSEDPARM(self), PyObject *arg
     (char *) "self",(char *) "add_msg", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_add",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_add",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_add" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_add" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4691,7 +4691,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_modify(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_modify(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_msg *arg2 = (ldb_msg *) 0 ;
@@ -4706,15 +4706,15 @@ SWIGINTERN PyObject *_wrap_ldb_modify(PyObject *SWIGUNUSEDPARM(self), PyObject *
     (char *) "self",(char *) "message", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_modify",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_modify",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_modify" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_modify" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ldb_message, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_modify" "', argument " "2"" of type '" "ldb_msg *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_modify" "', argument " "2"" of type '" "ldb_msg *""'"); 
   }
   arg2 = (ldb_msg *)(argp2);
   {
@@ -4741,7 +4741,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_get_config_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_get_config_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *result = 0 ;
@@ -4753,7 +4753,7 @@ SWIGINTERN PyObject *_wrap_ldb_get_config_basedn(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_get_config_basedn" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_get_config_basedn" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4769,7 +4769,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_get_root_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_get_root_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *result = 0 ;
@@ -4781,7 +4781,7 @@ SWIGINTERN PyObject *_wrap_ldb_get_root_basedn(PyObject *SWIGUNUSEDPARM(self), P
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_get_root_basedn" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_get_root_basedn" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4797,7 +4797,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_get_schema_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_get_schema_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *result = 0 ;
@@ -4809,7 +4809,7 @@ SWIGINTERN PyObject *_wrap_ldb_get_schema_basedn(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_get_schema_basedn" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_get_schema_basedn" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4825,7 +4825,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_get_default_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_get_default_basedn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *result = 0 ;
@@ -4837,7 +4837,7 @@ SWIGINTERN PyObject *_wrap_ldb_get_default_basedn(PyObject *SWIGUNUSEDPARM(self)
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_get_default_basedn" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_get_default_basedn" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4853,7 +4853,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_errstring(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_errstring(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *result = 0 ;
@@ -4865,7 +4865,7 @@ SWIGINTERN PyObject *_wrap_ldb_errstring(PyObject *SWIGUNUSEDPARM(self), PyObjec
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_errstring" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_errstring" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -4881,7 +4881,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_set_create_perms(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_set_create_perms(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   unsigned int arg2 ;
@@ -4895,15 +4895,15 @@ SWIGINTERN PyObject *_wrap_ldb_set_create_perms(PyObject *SWIGUNUSEDPARM(self),
     (char *) "self",(char *) "perms", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_set_create_perms",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_set_create_perms",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_create_perms" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_set_create_perms" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ldb_set_create_perms" "', argument " "2"" of type '" "unsigned int""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Ldb_set_create_perms" "', argument " "2"" of type '" "unsigned int""'");
   } 
   arg2 = (unsigned int)(val2);
   {
@@ -4919,7 +4919,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_set_modules_dir(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_set_modules_dir(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -4934,15 +4934,15 @@ SWIGINTERN PyObject *_wrap_ldb_set_modules_dir(PyObject *SWIGUNUSEDPARM(self), P
     (char *) "self",(char *) "path", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_set_modules_dir",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_set_modules_dir",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_modules_dir" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_set_modules_dir" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_set_modules_dir" "', argument " "2"" of type '" "char const *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_set_modules_dir" "', argument " "2"" of type '" "char const *""'");
   }
   arg2 = (char *)(buf2);
   {
@@ -4960,7 +4960,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_set_debug(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_set_debug(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   void (*arg2)(void *,enum ldb_debug_level,char const *,va_list) = (void (*)(void *,enum ldb_debug_level,char const *,va_list)) 0 ;
@@ -4974,10 +4974,10 @@ SWIGINTERN PyObject *_wrap_ldb_set_debug(PyObject *SWIGUNUSEDPARM(self), PyObjec
     (char *) "self",(char *) "debug", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_set_debug",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_set_debug",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_debug" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_set_debug" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -5006,7 +5006,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_set_opaque(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_set_opaque(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -5025,20 +5025,20 @@ SWIGINTERN PyObject *_wrap_ldb_set_opaque(PyObject *SWIGUNUSEDPARM(self), PyObje
     (char *) "self",(char *) "name",(char *) "value", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:ldb_set_opaque",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:Ldb_set_opaque",kwnames,&obj0,&obj1,&obj2)) 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_opaque" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_set_opaque" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_set_opaque" "', argument " "2"" of type '" "char const *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_set_opaque" "', argument " "2"" of type '" "char const *""'");
   }
   arg2 = (char *)(buf2);
   res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0);
   if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ldb_set_opaque" "', argument " "3"" of type '" "void *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Ldb_set_opaque" "', argument " "3"" of type '" "void *""'"); 
   }
   {
     if (arg1 == NULL)
@@ -5061,7 +5061,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_get_opaque(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_get_opaque(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -5077,15 +5077,15 @@ SWIGINTERN PyObject *_wrap_ldb_get_opaque(PyObject *SWIGUNUSEDPARM(self), PyObje
     (char *) "self",(char *) "name", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_get_opaque",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_get_opaque",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_get_opaque" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_get_opaque" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_get_opaque" "', argument " "2"" of type '" "char const *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_get_opaque" "', argument " "2"" of type '" "char const *""'");
   }
   arg2 = (char *)(buf2);
   {
@@ -5103,7 +5103,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_transaction_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_transaction_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_error result;
@@ -5115,7 +5115,7 @@ SWIGINTERN PyObject *_wrap_ldb_transaction_start(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_transaction_start" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_transaction_start" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -5137,7 +5137,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_transaction_commit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_transaction_commit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_error result;
@@ -5149,7 +5149,7 @@ SWIGINTERN PyObject *_wrap_ldb_transaction_commit(PyObject *SWIGUNUSEDPARM(self)
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_transaction_commit" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_transaction_commit" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -5171,7 +5171,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_transaction_cancel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Ldb_transaction_cancel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_error result;
@@ -5183,7 +5183,7 @@ SWIGINTERN PyObject *_wrap_ldb_transaction_cancel(PyObject *SWIGUNUSEDPARM(self)
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ldb_context, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ldb_transaction_cancel" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_transaction_cancel" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   {
@@ -5205,7 +5205,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb___contains__(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb___contains__(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   ldb_dn *arg2 = (ldb_dn *) 0 ;
@@ -5225,15 +5225,15 @@ SWIGINTERN PyObject *_wrap_ldb___contains__(PyObject *SWIGUNUSEDPARM(self), PyOb
   {
     arg3 = &tmp3; 
   }
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb___contains__",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb___contains__",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___contains__" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb___contains__" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ldb_dn, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb___contains__" "', argument " "2"" of type '" "ldb_dn *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb___contains__" "', argument " "2"" of type '" "ldb_dn *""'"); 
   }
   arg2 = (ldb_dn *)(argp2);
   {
@@ -5264,7 +5264,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ldb_parse_ldif(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+SWIGINTERN PyObject *_wrap_Ldb_parse_ldif(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   ldb *arg1 = (ldb *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -5280,15 +5280,15 @@ SWIGINTERN PyObject *_wrap_ldb_parse_ldif(PyObject *SWIGUNUSEDPARM(self), PyObje
     (char *) "self",(char *) "s", NULL 
   };
   
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_parse_ldif",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_parse_ldif",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_parse_ldif" "', argument " "1"" of type '" "ldb *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_parse_ldif" "', argument " "1"" of type '" "ldb *""'"); 
   }
   arg1 = (ldb *)(argp1);
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_parse_ldif" "', argument " "2"" of type '" "char const *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Ldb_parse_ldif" "', argument " "2"" of type '" "char const *""'");
   }
   arg2 = (char *)(buf2);
   {
@@ -5306,13 +5306,17 @@ fail:
 }
 
 
-SWIGINTERN PyObject *ldb_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *Ldb_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ldb_context, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *Ldb_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
+}
+
 SWIGINTERN PyObject *_wrap_valid_attr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   char *arg1 = (char *) 0 ;
@@ -5438,29 +5442,30 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"Message_swiginit", Message_swiginit, METH_VARARGS, NULL},
         { (char *)"ldb_ldif_to_pyobject", (PyCFunction) _wrap_ldb_ldif_to_pyobject, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"new_Ldb", (PyCFunction) _wrap_new_Ldb, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_connect", (PyCFunction) _wrap_ldb_connect, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"delete_ldb", (PyCFunction)_wrap_delete_ldb, METH_O, NULL},
-        { (char *)"ldb_search", (PyCFunction) _wrap_ldb_search, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_delete", (PyCFunction) _wrap_ldb_delete, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_rename", (PyCFunction) _wrap_ldb_rename, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_add", (PyCFunction) _wrap_ldb_add, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_modify", (PyCFunction) _wrap_ldb_modify, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_get_config_basedn", (PyCFunction)_wrap_ldb_get_config_basedn, METH_O, NULL},
-        { (char *)"ldb_get_root_basedn", (PyCFunction)_wrap_ldb_get_root_basedn, METH_O, NULL},
-        { (char *)"ldb_get_schema_basedn", (PyCFunction)_wrap_ldb_get_schema_basedn, METH_O, NULL},
-        { (char *)"ldb_get_default_basedn", (PyCFunction)_wrap_ldb_get_default_basedn, METH_O, NULL},
-        { (char *)"ldb_errstring", (PyCFunction)_wrap_ldb_errstring, METH_O, NULL},
-        { (char *)"ldb_set_create_perms", (PyCFunction) _wrap_ldb_set_create_perms, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_set_modules_dir", (PyCFunction) _wrap_ldb_set_modules_dir, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_set_debug", (PyCFunction) _wrap_ldb_set_debug, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_set_opaque", (PyCFunction) _wrap_ldb_set_opaque, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_get_opaque", (PyCFunction) _wrap_ldb_get_opaque, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_transaction_start", (PyCFunction)_wrap_ldb_transaction_start, METH_O, NULL},
-        { (char *)"ldb_transaction_commit", (PyCFunction)_wrap_ldb_transaction_commit, METH_O, NULL},
-        { (char *)"ldb_transaction_cancel", (PyCFunction)_wrap_ldb_transaction_cancel, METH_O, NULL},
-        { (char *)"ldb___contains__", (PyCFunction) _wrap_ldb___contains__, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_parse_ldif", (PyCFunction) _wrap_ldb_parse_ldif, METH_VARARGS | METH_KEYWORDS, NULL},
-        { (char *)"ldb_swigregister", ldb_swigregister, METH_VARARGS, NULL},
+        { (char *)"Ldb_connect", (PyCFunction) _wrap_Ldb_connect, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"delete_Ldb", (PyCFunction)_wrap_delete_Ldb, METH_O, NULL},
+        { (char *)"Ldb_search", (PyCFunction) _wrap_Ldb_search, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_delete", (PyCFunction) _wrap_Ldb_delete, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_rename", (PyCFunction) _wrap_Ldb_rename, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_add", (PyCFunction) _wrap_Ldb_add, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_modify", (PyCFunction) _wrap_Ldb_modify, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_get_config_basedn", (PyCFunction)_wrap_Ldb_get_config_basedn, METH_O, NULL},
+        { (char *)"Ldb_get_root_basedn", (PyCFunction)_wrap_Ldb_get_root_basedn, METH_O, NULL},
+        { (char *)"Ldb_get_schema_basedn", (PyCFunction)_wrap_Ldb_get_schema_basedn, METH_O, NULL},
+        { (char *)"Ldb_get_default_basedn", (PyCFunction)_wrap_Ldb_get_default_basedn, METH_O, NULL},
+        { (char *)"Ldb_errstring", (PyCFunction)_wrap_Ldb_errstring, METH_O, NULL},
+        { (char *)"Ldb_set_create_perms", (PyCFunction) _wrap_Ldb_set_create_perms, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_set_modules_dir", (PyCFunction) _wrap_Ldb_set_modules_dir, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_set_debug", (PyCFunction) _wrap_Ldb_set_debug, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_set_opaque", (PyCFunction) _wrap_Ldb_set_opaque, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_get_opaque", (PyCFunction) _wrap_Ldb_get_opaque, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_transaction_start", (PyCFunction)_wrap_Ldb_transaction_start, METH_O, NULL},
+        { (char *)"Ldb_transaction_commit", (PyCFunction)_wrap_Ldb_transaction_commit, METH_O, NULL},
+        { (char *)"Ldb_transaction_cancel", (PyCFunction)_wrap_Ldb_transaction_cancel, METH_O, NULL},
+        { (char *)"Ldb___contains__", (PyCFunction) _wrap_Ldb___contains__, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_parse_ldif", (PyCFunction) _wrap_Ldb_parse_ldif, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Ldb_swigregister", Ldb_swigregister, METH_VARARGS, NULL},
+        { (char *)"Ldb_swiginit", Ldb_swiginit, METH_VARARGS, NULL},
         { (char *)"valid_attr_name", (PyCFunction) _wrap_valid_attr_name, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"timestring", (PyCFunction) _wrap_timestring, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"string_to_time", (PyCFunction) _wrap_string_to_time, METH_VARARGS | METH_KEYWORDS, NULL},
index b2a7ad8ee8358048b1ba8fd7a30841c9c7141529..0a94fcdc297e89d60df9b5f6393f3d298b17afcc 100644 (file)
@@ -40,12 +40,10 @@ void ldb_set_credentials(struct ldb_context *ldb, struct cli_credentials *creds)
     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)
 {
index 8a8ff801071602145b5244864c977a67f947113f..7628dbcb15f68f13c25c4b12cc69daa9a39a7248 100644 (file)
@@ -62,6 +62,7 @@ import credentials
 import param
 random_password = _misc.random_password
 ldb_set_credentials = _misc.ldb_set_credentials
+ldb_set_session_info = _misc.ldb_set_session_info
 ldb_set_loadparm = _misc.ldb_set_loadparm
 
 
index af0f32fcb250d195a9c260a584d79e64a220c3f7..f5e23d040738907ab4c1cfdf9555bcdb046bb78d 100644 (file)
@@ -2460,29 +2460,30 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
 /* -------- TYPES TABLE (BEGIN) -------- */
 
 #define SWIGTYPE_p_TALLOC_CTX swig_types[0]
-#define SWIGTYPE_p_char swig_types[1]
-#define SWIGTYPE_p_cli_credentials swig_types[2]
-#define SWIGTYPE_p_int swig_types[3]
-#define SWIGTYPE_p_ldb_context swig_types[4]
-#define SWIGTYPE_p_ldb_dn swig_types[5]
-#define SWIGTYPE_p_ldb_ldif swig_types[6]
-#define SWIGTYPE_p_ldb_message swig_types[7]
-#define SWIGTYPE_p_ldb_message_element swig_types[8]
-#define SWIGTYPE_p_ldb_result swig_types[9]
-#define SWIGTYPE_p_loadparm_context swig_types[10]
-#define SWIGTYPE_p_loadparm_service swig_types[11]
-#define SWIGTYPE_p_long_long swig_types[12]
-#define SWIGTYPE_p_param_context swig_types[13]
-#define SWIGTYPE_p_param_section swig_types[14]
-#define SWIGTYPE_p_short swig_types[15]
-#define SWIGTYPE_p_signed_char swig_types[16]
-#define SWIGTYPE_p_unsigned_char swig_types[17]
-#define SWIGTYPE_p_unsigned_int swig_types[18]
-#define SWIGTYPE_p_unsigned_long swig_types[19]
-#define SWIGTYPE_p_unsigned_long_long swig_types[20]
-#define SWIGTYPE_p_unsigned_short swig_types[21]
-static swig_type_info *swig_types[23];
-static swig_module_info swig_module = {swig_types, 22, 0, 0, 0, 0};
+#define SWIGTYPE_p_auth_session_info swig_types[1]
+#define SWIGTYPE_p_char swig_types[2]
+#define SWIGTYPE_p_cli_credentials swig_types[3]
+#define SWIGTYPE_p_int swig_types[4]
+#define SWIGTYPE_p_ldb_context swig_types[5]
+#define SWIGTYPE_p_ldb_dn swig_types[6]
+#define SWIGTYPE_p_ldb_ldif swig_types[7]
+#define SWIGTYPE_p_ldb_message swig_types[8]
+#define SWIGTYPE_p_ldb_message_element swig_types[9]
+#define SWIGTYPE_p_ldb_result swig_types[10]
+#define SWIGTYPE_p_loadparm_context swig_types[11]
+#define SWIGTYPE_p_loadparm_service swig_types[12]
+#define SWIGTYPE_p_long_long swig_types[13]
+#define SWIGTYPE_p_param_context swig_types[14]
+#define SWIGTYPE_p_param_section swig_types[15]
+#define SWIGTYPE_p_short swig_types[16]
+#define SWIGTYPE_p_signed_char swig_types[17]
+#define SWIGTYPE_p_unsigned_char swig_types[18]
+#define SWIGTYPE_p_unsigned_int swig_types[19]
+#define SWIGTYPE_p_unsigned_long swig_types[20]
+#define SWIGTYPE_p_unsigned_long_long swig_types[21]
+#define SWIGTYPE_p_unsigned_short swig_types[22]
+static swig_type_info *swig_types[24];
+static swig_module_info swig_module = {swig_types, 23, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -2703,12 +2704,10 @@ void ldb_set_credentials(struct ldb_context *ldb, struct cli_credentials *creds)
     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)
 {
@@ -2758,7 +2757,7 @@ SWIGINTERN PyObject *_wrap_ldb_set_credentials(PyObject *SWIGUNUSEDPARM(self), P
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
   char *  kwnames[] = {
-    (char *) "Ldb",(char *) "creds", NULL 
+    (char *) "ldb",(char *) "creds", NULL 
   };
   
   {
@@ -2790,6 +2789,44 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_ldb_set_session_info(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  struct ldb_context *arg1 = (struct ldb_context *) 0 ;
+  struct auth_session_info *arg2 = (struct auth_session_info *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "ldb",(char *) "session_info", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:ldb_set_session_info",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_session_info" "', argument " "1"" of type '" "struct ldb_context *""'"); 
+  }
+  arg1 = (struct ldb_context *)(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_auth_session_info, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ldb_set_session_info" "', argument " "2"" of type '" "struct auth_session_info *""'"); 
+  }
+  arg2 = (struct auth_session_info *)(argp2);
+  {
+    if (arg1 == NULL)
+    SWIG_exception(SWIG_ValueError, 
+      "ldb context must be non-NULL");
+  }
+  ldb_set_session_info(arg1,arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_ldb_set_loadparm(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   struct ldb_context *arg1 = (struct ldb_context *) 0 ;
@@ -2801,7 +2838,7 @@ SWIGINTERN PyObject *_wrap_ldb_set_loadparm(PyObject *SWIGUNUSEDPARM(self), PyOb
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
   char *  kwnames[] = {
-    (char *) "Ldb",(char *) "lp_ctx", NULL 
+    (char *) "ldb",(char *) "lp_ctx", NULL 
   };
   
   {
@@ -2836,6 +2873,7 @@ fail:
 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_session_info", (PyCFunction) _wrap_ldb_set_session_info, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"ldb_set_loadparm", (PyCFunction) _wrap_ldb_set_loadparm, METH_VARARGS | METH_KEYWORDS, NULL},
         { NULL, NULL, 0, NULL }
 };
@@ -2844,6 +2882,7 @@ static PyMethodDef SwigMethods[] = {
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
 static swig_type_info _swigt__p_TALLOC_CTX = {"_p_TALLOC_CTX", "TALLOC_CTX *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_auth_session_info = {"_p_auth_session_info", "struct auth_session_info *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_cli_credentials = {"_p_cli_credentials", "struct cli_credentials *|cli_credentials *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0};
@@ -2868,6 +2907,7 @@ static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_TALLOC_CTX,
+  &_swigt__p_auth_session_info,
   &_swigt__p_char,
   &_swigt__p_cli_credentials,
   &_swigt__p_int,
@@ -2892,6 +2932,7 @@ static swig_type_info *swig_type_initial[] = {
 };
 
 static swig_cast_info _swigc__p_TALLOC_CTX[] = {  {&_swigt__p_TALLOC_CTX, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_auth_session_info[] = {  {&_swigt__p_auth_session_info, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_cli_credentials[] = {  {&_swigt__p_cli_credentials, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
@@ -2916,6 +2957,7 @@ static swig_cast_info _swigc__p_unsigned_short[] = {  {&_swigt__p_unsigned_short
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_TALLOC_CTX,
+  _swigc__p_auth_session_info,
   _swigc__p_char,
   _swigc__p_cli_credentials,
   _swigc__p_int,
index 08a262eec8ec1dff32f0b216ff0f780eb2baedd5..56adce447356d94d4dd053f8d86709024ba51a45 100644 (file)
@@ -35,40 +35,78 @@ if _in_source_tree():
 
 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, 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).
+ldb.Ldb.set_credentials = misc.ldb_set_credentials
+ldb.Ldb.set_session_info = misc.ldb_set_session_info
+ldb.Ldb.set_loadparm = misc.ldb_set_loadparm
+
+class Ldb(ldb.Ldb):
+    """Simple Samba-specific LDB subclass that takes care 
+    of setting up the modules dir, credentials pointers, etc.
+    
+    Please note that this is intended to be for all Samba LDB files, 
+    not necessarily the Sam database. For Sam-specific helper 
+    functions see samdb.py.
     """
-    import ldb
-    ret = ldb.Ldb()
-    if modules_dir is None:
-        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)
-    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
+    def __init__(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).
+        """
+        super(self, Ldb).__init__()
+        import ldb
+        ret = ldb.Ldb()
+        if modules_dir is None:
+            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)
+        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
+
+    def searchone(self, basedn, expression, attribute):
+        """Search for one attribute as a string."""
+        res = self.search(basedn, SCOPE_SUBTREE, expression, [attribute])
+        if len(res) != 1 or res[0][attribute] is None:
+            return None
+        return res[0][attribute]
+
+    def erase(self):
+        """Erase an ldb, removing all records."""
+        # delete the specials
+        for attr in ["@INDEXLIST", "@ATTRIBUTES", "@SUBCLASSES", "@MODULES", 
+                     "@OPTIONS", "@PARTITION", "@KLUDGEACL"]:
+            try:
+                self.delete(Dn(self, attr))
+            except LdbError, (LDB_ERR_NO_SUCH_OBJECT, _):
+                # Ignore missing dn errors
+                pass
+
+        basedn = Dn(self, "")
+        # and the rest
+        for msg in self.search(basedn, SCOPE_SUBTREE, 
+                "(&(|(objectclass=*)(dn=*))(!(dn=@BASEINFO)))", 
+                ["dn"]):
+            self.delete(msg.dn)
+
+        res = self.search(basedn, SCOPE_SUBTREE, "(&(|(objectclass=*)(dn=*))(!(dn=@BASEINFO)))", ["dn"])
+        assert len(res) == 0
 
 
 def substitute_var(text, values):
index ce496a8bc1c412782aafde78bf401883ffc35e07..63e50897fe0a170a4084438beac2aba826af60f9 100644 (file)
@@ -15,6 +15,7 @@ from socket import gethostname, gethostbyname
 import param
 import registry
 from samba import Ldb, substitute_var, valid_netbios_name
+from samba.samdb import SamDB
 from ldb import Dn, SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, LdbError, \
         LDB_ERR_NO_SUCH_OBJECT, timestring
 
@@ -164,32 +165,6 @@ def findnss(nssfn, *names):
             pass
     raise Exception("Unable to find user/group for %s" % arguments[1])
 
-def add_foreign(ldb, subobj, sid, desc):
-    """Add a foreign security principle."""
-    add = """
-dn: CN=%s,CN=ForeignSecurityPrincipals,%s
-objectClass: top
-objectClass: foreignSecurityPrincipal
-description: %s
-""" % (sid, subobj.domaindn, desc)
-    # deliberately ignore errors from this, as the records may
-    # already exist
-    for msg in ldb.parse_ldif(add):
-        ldb.add(msg[1])
-
-def setup_name_mapping(subobj, ldb, sid, unixname):
-    """Setup a mapping between a sam name and a unix name."""
-    res = ldb.search(Dn(ldb, subobj.domaindn), SCOPE_SUBTREE, 
-                     "objectSid=%s" % sid, ["dn"])
-    assert len(res) == 1, "Failed to find record for objectSid %s" % sid
-
-    mod = """
-dn: %s
-changetype: modify
-replace: unixName
-unixName: %s
-""" % (res[0].dn, unixname)
-    ldb.modify(ldb.parse_ldif(mod).next()[1])
 
 
 def hostip():
@@ -214,57 +189,6 @@ def ldb_delete(ldb):
     ldb.connect(ldb.filename)
 
 
-def ldb_erase(ldb):
-    """Erase an ldb, removing all records."""
-    # delete the specials
-    for attr in ["@INDEXLIST", "@ATTRIBUTES", "@SUBCLASSES", "@MODULES", 
-                 "@OPTIONS", "@PARTITION", "@KLUDGEACL"]:
-        try:
-            ldb.delete(Dn(ldb, attr))
-        except LdbError, (LDB_ERR_NO_SUCH_OBJECT, _):
-            # Ignore missing dn errors
-            pass
-
-    basedn = Dn(ldb, "")
-    # and the rest
-    for msg in ldb.search(basedn, SCOPE_SUBTREE, 
-            "(&(|(objectclass=*)(dn=*))(!(dn=@BASEINFO)))", 
-            ["dn"]):
-        ldb.delete(msg.dn)
-
-    res = ldb.search(basedn, SCOPE_SUBTREE, "(&(|(objectclass=*)(dn=*))(!(dn=@BASEINFO)))", ["dn"])
-    assert len(res) == 0
-
-
-def ldb_erase_partitions(subobj, message, ldb, ldapbackend):
-    """Erase an ldb, removing all records."""
-    assert ldb is not None
-    res = ldb.search(Dn(ldb, ""), SCOPE_BASE, "(objectClass=*)", 
-                     ["namingContexts"])
-    assert len(res) == 1
-    if not "namingContexts" in res[0]:
-        return
-    for basedn in res[0]["namingContexts"]:
-        anything = "(|(objectclass=*)(dn=*))"
-        previous_remaining = 1
-        current_remaining = 0
-
-        if ldapbackend and (basedn == subobj.domaindn):
-            # Only delete objects that were created by provision
-            anything = "(objectcategory=*)"
-
-        k = 0
-        while ++k < 10 and (previous_remaining != current_remaining):
-            # and the rest
-            res2 = ldb.search(Dn(ldb, basedn), SCOPE_SUBTREE, anything, ["dn"])
-            previous_remaining = current_remaining
-            current_remaining = len(res2)
-            for msg in res2:
-                try:
-                    ldb.delete(msg.dn)
-                except LdbError, (_, text):
-                    message("Unable to delete %s: %s" % (msg.dn, text))
-
 
 def open_ldb(session_info, credentials, dbname):
     assert session_info is not None
@@ -374,30 +298,30 @@ def setup_name_mappings(subobj, ldb):
     sid = list(res[0]["objectSid"])[0]
 
     # add some foreign sids if they are not present already
-    add_foreign(ldb, subobj, "S-1-5-7", "Anonymous")
-    add_foreign(ldb, subobj, "S-1-1-0", "World")
-    add_foreign(ldb, subobj, "S-1-5-2", "Network")
-    add_foreign(ldb, subobj, "S-1-5-18", "System")
-    add_foreign(ldb, subobj, "S-1-5-11", "Authenticated Users")
+    ldb.add_foreign(subobj.domaindn, "S-1-5-7", "Anonymous")
+    ldb.add_foreign(subobj.domaindn, "S-1-1-0", "World")
+    ldb.add_foreign(subobj.domaindn, "S-1-5-2", "Network")
+    ldb.add_foreign(subobj.domaindn, "S-1-5-18", "System")
+    ldb.add_foreign(subobj.domaindn, "S-1-5-11", "Authenticated Users")
 
     # some well known sids
-    setup_name_mapping(subobj, ldb, "S-1-5-7", subobj.nobody)
-    setup_name_mapping(subobj, ldb, "S-1-1-0", subobj.nogroup)
-    setup_name_mapping(subobj, ldb, "S-1-5-2", subobj.nogroup)
-    setup_name_mapping(subobj, ldb, "S-1-5-18", subobj.root)
-    setup_name_mapping(subobj, ldb, "S-1-5-11", subobj.users)
-    setup_name_mapping(subobj, ldb, "S-1-5-32-544", subobj.wheel)
-    setup_name_mapping(subobj, ldb, "S-1-5-32-545", subobj.users)
-    setup_name_mapping(subobj, ldb, "S-1-5-32-546", subobj.nogroup)
-    setup_name_mapping(subobj, ldb, "S-1-5-32-551", subobj.backup)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-7", subobj.nobody)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-1-0", subobj.nogroup)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-2", subobj.nogroup)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-18", subobj.root)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-11", subobj.users)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-32-544", subobj.wheel)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-32-545", subobj.users)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-32-546", subobj.nogroup)
+    ldb.setup_name_mapping(subobj.domaindn, "S-1-5-32-551", subobj.backup)
 
     # and some well known domain rids
-    setup_name_mapping(subobj, ldb, sid + "-500", subobj.root)
-    setup_name_mapping(subobj, ldb, sid + "-518", subobj.wheel)
-    setup_name_mapping(subobj, ldb, sid + "-519", subobj.wheel)
-    setup_name_mapping(subobj, ldb, sid + "-512", subobj.wheel)
-    setup_name_mapping(subobj, ldb, sid + "-513", subobj.users)
-    setup_name_mapping(subobj, ldb, sid + "-520", subobj.wheel)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-500", subobj.root)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-518", subobj.wheel)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-519", subobj.wheel)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-512", subobj.wheel)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-513", subobj.users)
+    ldb.setup_name_mapping(subobj.domaindn, sid + "-520", subobj.wheel)
 
 
 def provision_become_dc(setup_dir, subobj, message, paths, session_info, 
@@ -414,7 +338,8 @@ def provision_become_dc(setup_dir, subobj, message, paths, session_info,
     setup_ldb(setup_dir, "provision_partitions.ldif", session_info, 
               credentials, subobj, paths.samdb)
 
-    samdb = open_ldb(session_info, credentials, paths.samdb)
+    samdb = SamDB(paths.samdb, session_info=session_info, 
+                  credentials=credentials)
     ldb.transaction_start()
     try:
         message("Setting up %s attributes" % paths.samdb)
@@ -424,7 +349,7 @@ def provision_become_dc(setup_dir, subobj, message, paths, session_info,
         setup_add_ldif(setup_dir, "provision_rootdse_add.ldif", subobj, samdb)
 
         message("Erasing data from partitions")
-        ldb_erase_partitions(subobj, message, samdb, undefined)
+        ldb_erase_partitions(subobj, message, samdb, None)
 
         message("Setting up %s indexes" % paths.samdb)
         setup_add_ldif(setup_dir, "provision_index.ldif", subobj, samdb)
@@ -603,7 +528,7 @@ def provision_dns(setup_dir, subobj, message, paths, session_info, credentials):
     """Write out a DNS zone file, from the info in the current database."""
     message("Setting up DNS zone: %s" % subobj.dnsdomain)
     # connect to the sam
-    ldb = Ldb(paths.samdb, session_info=session_info, credentials=credentials)
+    ldb = SamDB(paths.samdb, session_info=session_info, credentials=credentials)
 
     # These values may have changed, due to an incoming SamSync,
     # or may not have been specified, so fetch them from the database
@@ -614,7 +539,7 @@ def provision_dns(setup_dir, subobj, message, paths, session_info, credentials):
     assert(res[0]["objectGUID"] is not None)
     subobj.domainguid = res[0]["objectGUID"]
 
-    subobj.host_guid = searchone(ldb, subobj.domaindn, 
+    subobj.host_guid = ldb.searchone(subobj.domaindn, 
                                  "(&(objectClass=computer)(cn=%s))" % subobj.netbiosname, "objectGUID")
     assert subobj.host_guid is not None
 
@@ -716,13 +641,6 @@ def provision_guess(lp):
     return subobj
 
 
-def searchone(ldb, basedn, expression, attribute):
-    """search for one attribute as a string."""
-    res = ldb.search(basedn, SCOPE_SUBTREE, expression, [attribute])
-    if len(res) != 1 or res[0][attribute] is None:
-        return None
-    return res[0][attribute]
-
 
 def load_schema(setup_dir, subobj, samdb):
     """Load schema."""
@@ -745,70 +663,6 @@ def load_schema(setup_dir, subobj, samdb):
     samdb.attach_dsdb_schema_from_ldif(head_data, schema_data)
 
 
-def enable_account(ldb, user_dn):
-    """enable the account."""
-    res = ldb.search(user_dn, SCOPE_ONELEVEL, None, ["userAccountControl"])
-    assert len(res) == 1
-    userAccountControl = res[0].userAccountControl
-    userAccountControl = userAccountControl - 2 # remove disabled bit
-    mod = """
-dn: %s
-changetype: modify
-replace: userAccountControl
-userAccountControl: %u
-""" % (user_dn, userAccountControl)
-    ldb.modify(mod)
-
-
-def newuser(sam, username, unixname, password, message, session_info, 
-            credentials):
-    """add a new user record"""
-    # connect to the sam 
-    ldb.transaction_start()
-
-    # find the DNs for the domain and the domain users group
-    res = ldb.search("", SCOPE_BASE, "defaultNamingContext=*", 
-                     ["defaultNamingContext"])
-    assert(len(res) == 1 and res[0].defaultNamingContext is not None)
-    domain_dn = res[0].defaultNamingContext
-    assert(domain_dn is not None)
-    dom_users = searchone(ldb, domain_dn, "name=Domain Users", "dn")
-    assert(dom_users is not None)
-
-    user_dn = "CN=%s,CN=Users,%s" % (username, domain_dn)
-
-    #
-    #  the new user record. note the reliance on the samdb module to fill
-    #  in a sid, guid etc
-    #
-    ldif = """
-dn: %s
-sAMAccountName: %s
-unixName: %s
-sambaPassword: %s
-objectClass: user
-""" % (user_dn, username, unixname, password)
-    #  add the user to the users group as well
-    modgroup = """
-dn: %s
-changetype: modify
-add: member
-member: %s
-""" % (dom_users, user_dn)
-
-
-    #  now the real work
-    message("Adding user %s" % user_dn)
-    ldb.add(ldif)
-
-    message("Modifying group %s" % dom_users)
-    ldb.modify(modgroup)
-
-    #  modify the userAccountControl to remove the disabled bit
-    enable_account(ldb, user_dn)
-    ldb.transaction_commit()
-
-
 def join_domain(domain, netbios_name, join_type, creds, message):
     ctx = NetContext(creds)
     joindom = object()
@@ -835,3 +689,35 @@ def vampire(domain, session_info, credentials, message):
     vampire_ctx.session_info = session_info
     if not ctx.SamSyncLdb(vampire_ctx):
         raise Exception("Migration of remote domain to Samba failed: %s " % vampire_ctx.error_string)
+
+
+def ldb_erase_partitions(subobj, message, ldb, ldapbackend):
+    """Erase an ldb, removing all records."""
+    assert ldb is not None
+    res = ldb.search(Dn(ldb, ""), SCOPE_BASE, "(objectClass=*)", 
+                     ["namingContexts"])
+    assert len(res) == 1
+    if not "namingContexts" in res[0]:
+        return
+    for basedn in res[0]["namingContexts"]:
+        anything = "(|(objectclass=*)(dn=*))"
+        previous_remaining = 1
+        current_remaining = 0
+
+        if ldapbackend and (basedn == subobj.domaindn):
+            # Only delete objects that were created by provision
+            anything = "(objectcategory=*)"
+
+        k = 0
+        while ++k < 10 and (previous_remaining != current_remaining):
+            # and the rest
+            res2 = ldb.search(Dn(ldb, basedn), SCOPE_SUBTREE, anything, ["dn"])
+            previous_remaining = current_remaining
+            current_remaining = len(res2)
+            for msg in res2:
+                try:
+                    ldb.delete(msg.dn)
+                except LdbError, (_, text):
+                    message("Unable to delete %s: %s" % (msg.dn, text))
+
+
diff --git a/source4/scripting/python/samba/samdb.py b/source4/scripting/python/samba/samdb.py
new file mode 100644 (file)
index 0000000..50164bf
--- /dev/null
@@ -0,0 +1,117 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
+#
+# Based on the original in EJS:
+# Copyright (C) Andrew Tridgell 2005
+#   
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#   
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#   
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import samba
+
+class SamDB(samba.Ldb):
+    def add_foreign(self, domaindn, sid, desc):
+        """Add a foreign security principle."""
+        add = """
+dn: CN=%s,CN=ForeignSecurityPrincipals,%s
+objectClass: top
+objectClass: foreignSecurityPrincipal
+description: %s
+        """ % (sid, domaindn, desc)
+        # deliberately ignore errors from this, as the records may
+        # already exist
+        for msg in self.parse_ldif(add):
+            self.add(msg[1])
+
+    def setup_name_mapping(self, domaindn, sid, unixname):
+        """Setup a mapping between a sam name and a unix name."""
+        res = self.search(Dn(ldb, domaindn), SCOPE_SUBTREE, 
+                         "objectSid=%s" % sid, ["dn"])
+        assert len(res) == 1, "Failed to find record for objectSid %s" % sid
+
+        mod = """
+dn: %s
+changetype: modify
+replace: unixName
+unixName: %s
+""" % (res[0].dn, unixname)
+        self.modify(self.parse_ldif(mod).next()[1])
+
+    def enable_account(self, user_dn):
+        """enable the account.
+        
+        :param user_dn: Dn of the account to enable.
+        """
+        res = self.search(user_dn, SCOPE_ONELEVEL, None, ["userAccountControl"])
+        assert len(res) == 1
+        userAccountControl = res[0].userAccountControl
+        userAccountControl = userAccountControl - 2 # remove disabled bit
+        mod = """
+dn: %s
+changetype: modify
+replace: userAccountControl
+userAccountControl: %u
+""" % (user_dn, userAccountControl)
+        self.modify(mod)
+
+    def newuser(self, username, unixname, password, message):
+        """add a new user record"""
+        # connect to the sam 
+        self.transaction_start()
+
+        # find the DNs for the domain and the domain users group
+        res = self.search("", SCOPE_BASE, "defaultNamingContext=*", 
+                         ["defaultNamingContext"])
+        assert(len(res) == 1 and res[0].defaultNamingContext is not None)
+        domain_dn = res[0].defaultNamingContext
+        assert(domain_dn is not None)
+        dom_users = searchone(self, domain_dn, "name=Domain Users", "dn")
+        assert(dom_users is not None)
+
+        user_dn = "CN=%s,CN=Users,%s" % (username, domain_dn)
+
+        #
+        #  the new user record. note the reliance on the samdb module to fill
+        #  in a sid, guid etc
+        #
+        ldif = """
+dn: %s
+sAMAccountName: %s
+unixName: %s
+sambaPassword: %s
+objectClass: user
+    """ % (user_dn, username, unixname, password)
+        #  add the user to the users group as well
+        modgroup = """
+dn: %s
+changetype: modify
+add: member
+member: %s
+""" % (dom_users, user_dn)
+
+
+        #  now the real work
+        message("Adding user %s" % user_dn)
+        self.add(ldif)
+
+        message("Modifying group %s" % dom_users)
+        self.modify(modgroup)
+
+        #  modify the userAccountControl to remove the disabled bit
+        enable_account(self, user_dn)
+        self.transaction_commit()
+
+