s4-python: Move set_session_info to PySambaLdb.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 4 Apr 2010 00:20:52 +0000 (02:20 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 6 Apr 2010 11:12:43 +0000 (13:12 +0200)
source4/auth/pyauth.c
source4/auth/pyauth.h
source4/lib/ldb-samba/pyldb.c
source4/scripting/python/pyglue.c
source4/scripting/python/samba/__init__.py
source4/scripting/python/samba/provision.py

index 865609e8e3630535f5757ab6ed98636ba05e6cd1..f81b449540113908c17507216d75c71f492018f4 100644 (file)
@@ -107,7 +107,8 @@ void initauth(void)
        if (PyType_Ready(&PyAuthSession) < 0)
                return;
 
-       m = Py_InitModule3("auth", py_auth_methods, "Authentication and authorization support.");
+       m = Py_InitModule3("auth", py_auth_methods,
+                                          "Authentication and authorization support.");
        if (m == NULL)
                return;
 
index f3c9cea73ded52be9209c9b30942938ceed4a477..2d0379e6e86958c84fbec2e5e91c69e8a9e8f62c 100644 (file)
@@ -23,7 +23,6 @@
 #include "lib/talloc/pytalloc.h"
 #include "auth/session.h"
 
-PyAPI_DATA(PyTypeObject) PyAuthSession;
 #define PyAuthSession_AsSession(obj) py_talloc_get_type(obj, struct auth_session_info)
 #define PyAuthSession_Check(obj) PyObject_TypeCheck(obj, &PyAuthSession)
 struct auth_session_info *PyObject_AsSession(PyObject *obj);
index b5ce7f31916e01dbb26c41c51d20355876b427c1..084afb7603902c8329fd933849abd1509f6f8049 100644 (file)
@@ -27,6 +27,7 @@
 #include "auth/credentials/pycredentials.h"
 #include "ldb_wrap.h"
 #include "lib/ldb-samba/ldif_handlers.h"
+#include "auth/pyauth.h"
 
 static PyObject *pyldb_module;
 static PyObject *py_ldb_error;
@@ -164,6 +165,40 @@ static PyObject *py_ldb_set_utf8_casefold(PyObject *self)
        Py_RETURN_NONE;
 }
 
+static PyObject *py_ldb_set_session_info(PyObject *self, PyObject *args)
+{
+       PyObject *py_session_info;
+       struct auth_session_info *info;
+       struct ldb_context *ldb;
+       PyObject *mod_samba_auth;
+       PyObject *PyAuthSession_Type;
+       bool ret;
+
+       mod_samba_auth = PyImport_ImportModule("samba.auth");
+       if (mod_samba_auth == NULL)
+               return NULL;
+
+       PyAuthSession_Type = PyObject_GetAttrString(mod_samba_auth, "AuthSession");
+       if (PyAuthSession_Type == NULL)
+               return NULL;
+
+       ret = PyArg_ParseTuple(args, "O!", PyAuthSession_Type, &py_session_info);
+
+       Py_DECREF(PyAuthSession_Type);
+       Py_DECREF(mod_samba_auth);
+
+       if (!ret)
+               return NULL;
+
+       ldb = PyLdb_AsLdbContext(self);
+
+       info = PyAuthSession_AsSession(py_session_info);
+
+       ldb_set_opaque(ldb, "sessionInfo", info);
+
+       Py_RETURN_NONE;
+}
+
 static PyObject *py_ldb_register_samba_handlers(PyObject *self)
 {
        struct ldb_context *ldb;
@@ -196,6 +231,9 @@ static PyMethodDef py_samba_ldb_methods[] = {
                METH_NOARGS,
                "register_samba_handlers()\n"
                "Register Samba-specific LDB modules and schemas." },
+       { "set_session_info", (PyCFunction)py_ldb_set_session_info, METH_VARARGS,
+               "set_session_info(session_info)\n"
+               "Set session info to use when connecting." },
        { NULL },
 };
 
index b044796b528746890f49ebb1b34c721dcb20c7b3..86399585610287beaf7ade458b8e7a47e3d26393 100644 (file)
@@ -117,27 +117,6 @@ static PyObject *py_set_debug_level(PyObject *self, PyObject *args)
        Py_RETURN_NONE;
 }
 
-static PyObject *py_ldb_set_session_info(PyObject *self, PyObject *args)
-{
-       PyObject *py_session_info, *py_ldb;
-       struct auth_session_info *info;
-       struct ldb_context *ldb;
-       if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_session_info))
-               return NULL;
-
-       PyErr_LDB_OR_RAISE(py_ldb, ldb);
-       /*if (!PyAuthSession_Check(py_session_info)) {
-               PyErr_SetString(PyExc_TypeError, "Expected session info object");
-               return NULL;
-       }*/
-
-       info = PyAuthSession_AsSession(py_session_info);
-
-       ldb_set_opaque(ldb, "sessionInfo", info);
-
-       Py_RETURN_NONE;
-}
-
 static PyObject *py_samdb_set_domain_sid(PyLdbObject *self, PyObject *args)
 { 
        PyObject *py_ldb, *py_sid;
@@ -463,9 +442,6 @@ static PyMethodDef py_misc_methods[] = {
                "Generate random password with a length >= min and <= max." },
        { "unix2nttime", (PyCFunction)py_unix2nttime, METH_VARARGS,
                "unix2nttime(timestamp) -> nttime" },
-       { "ldb_set_session_info", (PyCFunction)py_ldb_set_session_info, METH_VARARGS,
-               "ldb_set_session_info(ldb, session_info)\n"
-               "Set session info to use when connecting." },
        { "samdb_set_domain_sid", (PyCFunction)py_samdb_set_domain_sid, METH_VARARGS,
                "samdb_set_domain_sid(samdb, sid)\n"
                "Set SID of domain to use." },
index 6fe1b929e34cbfb3168197ff67f2a3b446431fa2..9d0d71101b174574ba2c7f33a2c3d53cd1076dd6 100644 (file)
@@ -110,9 +110,6 @@ class Ldb(_Ldb):
         if url is not None:
             self.connect(url, flags, options)
 
-    def set_session_info(self, session_info):
-        glue.ldb_set_session_info(self, session_info)
-
     def set_create_perms(self, perms=0600):
         # we usually want Samba databases to be private. If we later find we
         # need one public, we will have to change this here
index 6bae97bd977377cf485cb34b6ce70482ba11873d..5ac635d7f5159e37e2ffb91bfe445fe804e49fe4 100644 (file)
@@ -857,14 +857,14 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp,
 
     # Also wipes the database
     setup_samdb_partitions(path, setup_path, message=message, lp=lp,
-                           provision_backend=provision_backend, session_info=session_info,
-                           names=names, 
-                           serverrole=serverrole, schema=schema)
+        provision_backend=provision_backend, session_info=session_info,
+        names=names, serverrole=serverrole, schema=schema)
 
     if (schema == None):
         schema = Schema(setup_path, domainsid, schemadn=names.schemadn, serverdn=names.serverdn)
 
-    # Load the database, but importantly, use Ldb not SamDB as we don't want to load the global schema
+    # Load the database, but importantly, use Ldb not SamDB as we don't want to
+    # load the global schema
     samdb = Ldb(session_info=session_info, 
                 credentials=provision_backend.credentials, lp=lp)