mirror of
https://github.com/samba-team/samba.git
synced 2025-05-28 21:05:48 +03:00
Implemented getpw{nam,uid} functions.
This commit is contained in:
parent
a938863914
commit
19adbf1fae
@ -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,
|
||||
|
42
source/python/py_winbind_conv.c
Normal file
42
source/python/py_winbind_conv.c
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
Python wrappers for DCERPC/SMB client routines.
|
||||
|
||||
Copyright (C) Tim Potter, 2002
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
#include "Python.h"
|
||||
#include "python/py_conv.h"
|
||||
|
||||
/* Convert a struct passwd to a dictionary */
|
||||
|
||||
static struct pyconv py_passwd[] = {
|
||||
{ "pw_name", PY_STRING, offsetof(struct winbindd_response, data.pw.pw_name) },
|
||||
{ "pw_passwd", PY_STRING, offsetof(struct winbindd_response, data.pw.pw_passwd) },
|
||||
{ "pw_uid", PY_UID, offsetof(struct winbindd_response, data.pw.pw_uid) },
|
||||
{ "pw_guid", PY_GID, offsetof(struct winbindd_response, data.pw.pw_gid) },
|
||||
{ "pw_gecos", PY_STRING, offsetof(struct winbindd_response, data.pw.pw_gecos) },
|
||||
{ "pw_dir", PY_STRING, offsetof(struct winbindd_response, data.pw.pw_dir) },
|
||||
{ "pw_shell", PY_STRING, offsetof(struct winbindd_response, data.pw.pw_shell) },
|
||||
{ NULL}
|
||||
};
|
||||
|
||||
BOOL py_from_winbind_passwd(PyObject **dict, struct winbindd_response *response)
|
||||
{
|
||||
*dict = from_struct(response, py_passwd);
|
||||
return True;
|
||||
}
|
@ -130,6 +130,8 @@ setup(
|
||||
|
||||
Extension(name = "winbind",
|
||||
sources = [samba_srcdir + "python/py_winbind.c",
|
||||
samba_srcdir + "python/py_winbind_conv.c",
|
||||
samba_srcdir + "python/py_conv.c",
|
||||
samba_srcdir + "python/py_common.c"],
|
||||
libraries = lib_list,
|
||||
library_dirs = ["/usr/kerberos/lib"],
|
||||
|
Loading…
x
Reference in New Issue
Block a user