summaryrefslogtreecommitdiff
path: root/source3/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
commitb3bcdccb1c3670495248469170b7b86c16312f99 (patch)
tree2146201c2a35f892b40890ffe4c40d70d23528c7 /source3/python/py_winbind.c
parent735eb8fdd26f23e585f575d3a67787e33117db5a (diff)
downloadsamba-b3bcdccb1c3670495248469170b7b86c16312f99.tar.gz
samba-b3bcdccb1c3670495248469170b7b86c16312f99.tar.bz2
samba-b3bcdccb1c3670495248469170b7b86c16312f99.zip
Implemented getpw{nam,uid} functions.
(This used to be commit 19adbf1faed3d076207ec55e398f15f87d48c9f7)
Diffstat (limited to 'source3/python/py_winbind.c')
-rw-r--r--source3/python/py_winbind.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/source3/python/py_winbind.c b/source3/python/py_winbind.c
index 49c7f8e924..ef6bc06233 100644
--- a/source3/python/py_winbind.c
+++ b/source3/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,