mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
s3-passdb: Allow reload of the static passdb from python
This is then used in provision when the passdb backend is forced. Andrew Bartlett
This commit is contained in:
parent
f873d422b1
commit
5aa9a6c936
@ -1299,11 +1299,12 @@ bool pdb_new_rid(uint32_t *rid)
|
||||
|
||||
bool initialize_password_db(bool reload, struct tevent_context *tevent_ctx)
|
||||
{
|
||||
pdb_tevent_ctx = tevent_ctx;
|
||||
if (tevent_ctx) {
|
||||
pdb_tevent_ctx = tevent_ctx;
|
||||
}
|
||||
return (pdb_get_methods_reload(reload) != NULL);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Default implementations of some functions.
|
||||
****************************************************************************/
|
||||
|
@ -3645,8 +3645,23 @@ static PyObject *py_set_secrets_dir(PyObject *self, PyObject *args)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Py_RETURN_NONE;
|
||||
talloc_free(frame);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *py_reload_static_pdb(PyObject *self, PyObject *args)
|
||||
{
|
||||
TALLOC_CTX *frame = talloc_stackframe();
|
||||
|
||||
/* Initialize secrets database */
|
||||
if (!initialize_password_db(true, NULL)) {
|
||||
PyErr_Format(py_pdb_error, "Cannot re-open passdb backend %s", lp_passdb_backend());
|
||||
talloc_free(frame);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
talloc_free(frame);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *py_get_global_sam_sid(PyObject *self)
|
||||
@ -3684,6 +3699,9 @@ static PyMethodDef py_passdb_methods[] = {
|
||||
{ "get_global_sam_sid", (PyCFunction)py_get_global_sam_sid, METH_NOARGS,
|
||||
"get_global_sam_sid() -> dom_sid\n\n \
|
||||
Return domain SID." },
|
||||
{ "reload_static_pdb", (PyCFunction)py_reload_static_pdb, METH_NOARGS,
|
||||
"reload_static_pdb() -> None\n\n \
|
||||
Re-initalise the static pdb used internally. Needed if 'passdb backend' is changed." },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
|
@ -1417,6 +1417,8 @@ def setsysvolacl(samdb, netlogon, sysvol, uid, gid, domainsid, dnsdomain, domain
|
||||
s3conf.load(lp.configfile)
|
||||
# ensure we are using the right samba4 passdb backend, no matter what
|
||||
s3conf.set("passdb backend", "samba4:%s" % samdb.url)
|
||||
passdb.reload_static_pdb()
|
||||
|
||||
# ensure that we init the samba4 backend, so the domain sid is marked in secrets.tdb
|
||||
s4_passdb = passdb.PDB(s3conf.get("passdb backend"))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user