diff options
author | Tim Potter <tpot@samba.org> | 2002-09-11 04:55:45 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2002-09-11 04:55:45 +0000 |
commit | b3bcdccb1c3670495248469170b7b86c16312f99 (patch) | |
tree | 2146201c2a35f892b40890ffe4c40d70d23528c7 /source3/python/py_winbind.c | |
parent | 735eb8fdd26f23e585f575d3a67787e33117db5a (diff) | |
download | samba-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.c | 65 |
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, |