typedef struct {
PyObject_HEAD
- struct libnet_context *libnet_ctx;
TALLOC_CTX *mem_ctx;
+ struct libnet_context *libnet_ctx;
struct tevent_context *ev;
} py_net_Object;
NTSTATUS status;
PyObject *result;
TALLOC_CTX *mem_ctx;
- PyObject *py_creds;
- const char *kwnames[] = { "domain_name", "netbios_name", "join_type", "level", "credentials", NULL };
+ const char *kwnames[] = { "domain_name", "netbios_name", "join_type", "level", NULL };
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssiiO:Join", discard_const_p(char *, kwnames),
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssii:Join", discard_const_p(char *, kwnames),
&r.in.domain_name, &r.in.netbios_name,
- &r.in.join_type, &r.in.level, &py_creds))
+ &r.in.join_type, &r.in.level))
return NULL;
mem_ctx = talloc_new(self->mem_ctx);
status = libnet_Join(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError, r.out.error_string?r.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
status = libnet_SetPassword(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.generic.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError,
+ r.generic.out.error_string?r.generic.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
status = libnet_export_keytab(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError,
+ r.out.error_string?r.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
status = libnet_RemoteTOD(self->libnet_ctx, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.generic.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError,
+ r.generic.out.error_string?r.generic.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
status = libnet_CreateUser(self->libnet_ctx, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError, r.out.error_string?r.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
status = libnet_DeleteUser(self->libnet_ctx, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
- PyErr_SetString(PyExc_RuntimeError, r.out.error_string);
+ PyErr_SetString(PyExc_RuntimeError, r.out.error_string?r.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
return NULL;
}
PyObject *ret;
struct libnet_Vampire r;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|s", discard_const_p(char *, kwnames),
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|z", discard_const_p(char *, kwnames),
&r.in.domain_name, &r.in.targetdir)) {
return NULL;
}