takes_optiongroups = {
"sambaopts": options.SambaOptions,
"credopts": options.CredentialsOptions,
+ "hostopts": options.HostOptions,
"versionopts": options.VersionOptions,
}
takes_args = ["keytab"]
- def run(self, keytab, credopts=None, sambaopts=None, versionopts=None, principal=None):
+ def run(self,
+ keytab,
+ credopts=None,
+ sambaopts=None,
+ versionopts=None,
+ hostopts=None,
+ principal=None):
lp = sambaopts.get_loadparm()
net = Net(None, lp)
- net.export_keytab(keytab=keytab, principal=principal)
+ samdb = self.ldb_connect(hostopts, sambaopts, credopts)
+ net.export_keytab(samdb=samdb, keytab=keytab, principal=principal)
#include "python/modules.h"
#include "py_net.h"
#include "libnet_export_keytab.h"
+#include "pyldb.h"
void initdckeytab(void);
static PyObject *py_net_export_keytab(py_net_Object *self, PyObject *args, PyObject *kwargs)
{
struct libnet_export_keytab r;
+ PyObject *py_samdb = NULL;
TALLOC_CTX *mem_ctx;
- const char *kwnames[] = { "keytab", "principal", NULL };
+ const char *kwnames[] = { "keytab", "samdb", "principal", NULL };
NTSTATUS status;
r.in.principal = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|z:export_keytab", discard_const_p(char *, kwnames),
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|Oz:export_keytab", discard_const_p(char *, kwnames),
&r.in.keytab_name,
+ &py_samdb,
&r.in.principal)) {
return NULL;
}
+ if (py_samdb == NULL) {
+ r.in.samdb = NULL;
+ } else {
+ PyErr_LDB_OR_RAISE(py_samdb, r.in.samdb);
+ }
+
mem_ctx = talloc_new(self->mem_ctx);
if (mem_ctx == NULL) {
PyErr_NoMemory();
pytalloc_util = bld.pyembed_libname('pytalloc-util')
pyrpc_util = bld.pyembed_libname('pyrpc_util')
+pyldb_util = bld.pyembed_libname('pyldb-util')
provision = bld.pyembed_libname('PROVISION')
name = bld.pyembed_libname('samba-net')
auto_proto='libnet_proto.h'
bld.SAMBA_PYTHON('python_dckeytab',
source='py_net_dckeytab.c libnet_export_keytab.c',
- deps='%s db-glue krb5 com_err' % (pyrpc_util),
+ deps='%s %s db-glue krb5 com_err' % (pyrpc_util, pyldb_util),
realname='samba/dckeytab.so',
enabled=bld.CONFIG_SET('AD_DC_BUILD_IS_ENABLED')
)