summaryrefslogtreecommitdiff
path: root/source/python/py_winbind.c
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-09-11 04:55:45 +0000
committerTim Potter <tpot@samba.org>2002-09-11 04:55:45 +0000
commit19adbf1faed3d076207ec55e398f15f87d48c9f7 (patch)
tree0ca54aeb04bfd5f6836d5ef3e1f01710dc8390a1 /source/python/py_winbind.c
parenta938863914cbfec247586c92fd06203fec7febde (diff)
downloadsamba-19adbf1faed3d076207ec55e398f15f87d48c9f7.tar.gz
Implemented getpw{nam,uid} functions.
Diffstat (limited to 'source/python/py_winbind.c')
-rw-r--r--source/python/py_winbind.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/source/python/py_winbind.c b/source/python/py_winbind.c
index 49c7f8e924f..ef6bc062334 100644
--- a/source/python/py_winbind.c
+++ b/source/python/py_winbind.c
@@ -445,12 +445,77 @@ static PyObject *py_auth_crap(PyObject *self, PyObject *args)
return PyInt_FromLong(response.data.auth.nt_status);
}
+/* Get user info from name */
+
+static PyObject *py_getpwnam(PyObject *self, PyObject *args)
+{
+ struct winbindd_request request;
+ struct winbindd_response response;
+ char *username;
+ PyObject *result;
+
+ if (!PyArg_ParseTuple(args, "s", &username))
+ return NULL;
+
+ ZERO_STRUCT(request);
+ ZERO_STRUCT(response);
+
+ fstrcpy(request.data.username, username);
+
+ if (winbindd_request(WINBINDD_GETPWNAM, &request, &response)
+ != NSS_STATUS_SUCCESS) {
+ PyErr_SetString(winbind_error, "lookup failed");
+ return NULL;
+ }
+
+ if (!py_from_winbind_passwd(&result, &response)) {
+ result = Py_None;
+ Py_INCREF(result);
+ }
+
+ return result;
+}
+
+/* Get user info from uid */
+
+static PyObject *py_getpwuid(PyObject *self, PyObject *args)
+{
+ struct winbindd_request request;
+ struct winbindd_response response;
+ uid_t uid;
+ PyObject *result;
+
+ if (!PyArg_ParseTuple(args, "i", &uid))
+ return NULL;
+
+ ZERO_STRUCT(request);
+ ZERO_STRUCT(response);
+
+ request.data.uid = uid;
+
+ if (winbindd_request(WINBINDD_GETPWUID, &request, &response)
+ != NSS_STATUS_SUCCESS) {
+ PyErr_SetString(winbind_error, "lookup failed");
+ return NULL;
+ }
+
+ if (!py_from_winbind_passwd(&result, &response)) {
+ result = Py_None;
+ Py_INCREF(result);
+ }
+
+ return result;
+}
+
/*
* Method dispatch table
*/
static PyMethodDef winbind_methods[] = {
+ { "getpwnam", py_getpwnam, METH_VARARGS, "getpwnam(3)" },
+ { "getpwuid", py_getpwuid, METH_VARARGS, "getpwuid(3)" },
+
/* Name <-> SID conversion */
{ "name_to_sid", py_name_to_sid, METH_VARARGS,