Esempio n. 1
0
static PyObject *py_dsdb_get_wellknown_dn(PyObject *self, PyObject *args)
{
	struct ldb_context *ldb;
	struct ldb_dn *nc_dn, *wk_dn;
	char *wkguid;
	PyObject *py_ldb, *py_nc_dn, *py_wk_dn;
	int ret;

	if (!PyArg_ParseTuple(args, "OOs", &py_ldb, &py_nc_dn, &wkguid))
		return NULL;

	PyErr_LDB_OR_RAISE(py_ldb, ldb);
	PyErr_LDB_DN_OR_RAISE(py_nc_dn, nc_dn);

	ret = dsdb_wellknown_dn(ldb, ldb, nc_dn, wkguid, &wk_dn);
	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
		PyErr_Format(PyExc_KeyError, "Failed to find well known DN for GUID %s", wkguid);
		return NULL;
	}

	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);

	py_wk_dn = pyldb_Dn_FromDn(wk_dn);
	talloc_unlink(ldb, wk_dn);
	return py_wk_dn;
}
Esempio n. 2
0
static PyObject *py_dsdb_set_schema_from_ldb(PyObject *self, PyObject *args)
{
	PyObject *py_ldb;
	struct ldb_context *ldb;
	PyObject *py_from_ldb;
	struct ldb_context *from_ldb;
	struct dsdb_schema *schema;
	int ret;
	char write_indices_and_attributes = true;
	if (!PyArg_ParseTuple(args, "OO|b",
			      &py_ldb, &py_from_ldb, &write_indices_and_attributes))
		return NULL;

	PyErr_LDB_OR_RAISE(py_ldb, ldb);

	PyErr_LDB_OR_RAISE(py_from_ldb, from_ldb);

	schema = dsdb_get_schema(from_ldb, NULL);
	if (!schema) {
		PyErr_SetString(PyExc_RuntimeError, "Failed to set find a schema on 'from' ldb!\n");
		return NULL;
	}

	ret = dsdb_reference_schema(ldb, schema, write_indices_and_attributes);
	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);

	Py_RETURN_NONE;
}
Esempio n. 3
0
static PyObject *py_ldb_register_samba_handlers(PyObject *self)
{
	struct ldb_context *ldb;
	int ret;

	/* XXX: Perhaps call this from PySambaLdb's init function ? */

	ldb = pyldb_Ldb_AsLdbContext(self);
	ret = ldb_register_samba_handlers(ldb);

	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_error, ret, ldb);

	Py_RETURN_NONE;
}
Esempio n. 4
0
static PyObject *py_dsdb_set_global_schema(PyObject *self, PyObject *args)
{
	PyObject *py_ldb;
	struct ldb_context *ldb;
	int ret;
	if (!PyArg_ParseTuple(args, "O", &py_ldb))
		return NULL;

	PyErr_LDB_OR_RAISE(py_ldb, ldb);

	ret = dsdb_set_global_schema(ldb);
	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);

	Py_RETURN_NONE;
}
Esempio n. 5
0
static PyObject *py_ldb_register_samba_handlers(PyObject *self, PyObject *args)
{
	PyObject *py_ldb;
	struct ldb_context *ldb;
	int ret;

	if (!PyArg_ParseTuple(args, "O", &py_ldb))
		return NULL;

	PyErr_LDB_OR_RAISE(py_ldb, ldb);
	ret = ldb_register_samba_handlers(ldb);

	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);
	Py_RETURN_NONE;
}
Esempio n. 6
0
static PyObject *py_dsdb_get_nc_root(PyObject *self, PyObject *args)
{
	struct ldb_context *ldb;
	struct ldb_dn *dn, *nc_root;
	PyObject *py_ldb, *py_ldb_dn, *py_nc_root;
	int ret;

	if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_ldb_dn))
		return NULL;

	PyErr_LDB_OR_RAISE(py_ldb, ldb);
	PyErr_LDB_DN_OR_RAISE(py_ldb_dn, dn);

	ret = dsdb_find_nc_root(ldb, ldb, dn, &nc_root);
	PyErr_LDB_ERROR_IS_ERR_RAISE(py_ldb_get_exception(), ret, ldb);

	py_nc_root = pyldb_Dn_FromDn(nc_root);
	talloc_unlink(ldb, nc_root);
	return py_nc_root;
}