mirror of
https://github.com/samba-team/samba.git
synced 2025-02-22 05:57:43 +03:00
s4-python: Move set_session_info to PySambaLdb.
This commit is contained in:
parent
55b98e9768
commit
449bdf3543
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 },
|
||||
};
|
||||
|
||||
|
@ -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." },
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user