From 94a9ebe069e96c46f7e86223813e2e36d21462dc Mon Sep 17 00:00:00 2001 From: Derek Yarnell Date: Mon, 31 Mar 2014 12:09:28 -0400 Subject: [PATCH] Adding the ability to set or clear the policy on a principal. --- PyKAdminPrincipalObject.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/PyKAdminPrincipalObject.c b/PyKAdminPrincipalObject.c index 50ae2fb..8b12278 100644 --- a/PyKAdminPrincipalObject.c +++ b/PyKAdminPrincipalObject.c @@ -101,7 +101,31 @@ static PyObject *KAdminPrincipal_set_expire(PyKAdminPrincipalObject *self, PyObj Py_RETURN_TRUE; } +static PyObject *KAdminPrincipal_set_policy(PyKAdminPrincipalObject *self, PyObject *args, PyObject *kwds) { + + kadm5_ret_t retval; + char *policy = NULL; + + if (!PyArg_ParseTuple(args, "s", &policy)) + return NULL; + + strcpy(self->entry.policy, policy); + retval = kadm5_modify_principal(self->kadmin->server_handle, &self->entry, KADM5_POLICY); + if (retval != 0x0) { PyKAdmin_RaiseKAdminError(retval, "kadm5_modify_principal"); return NULL; } + + Py_RETURN_TRUE; +} + +static PyObject *KAdminPrincipal_clear_policy(PyKAdminPrincipalObject *self, PyObject *args, PyObject *kwds) { + + kadm5_ret_t retval; + + retval = kadm5_modify_principal(self->kadmin->server_handle, &self->entry, KADM5_POLICY_CLR); + if (retval != 0x0) { PyKAdmin_RaiseKAdminError(retval, "kadm5_modify_principal"); return NULL; } + + Py_RETURN_TRUE; +} static PyGetSetDef KAdminPrincipal_getters_setters[] = { @@ -203,6 +227,8 @@ static PyMethodDef KAdminPrincipal_methods[] = { {"randomize_key", (PyCFunction)KAdminPrincipal_randomize_key, METH_VARARGS, ""}, {"expire", (PyCFunction)KAdminPrincipal_set_expire, METH_VARARGS, ""}, + {"set_policy", (PyCFunction)KAdminPrincipal_set_policy, METH_VARARGS, ""}, + {"clear_policy", (PyCFunction)KAdminPrincipal_clear_policy, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} };