From 779b89cfc8e65b8e6a4ad2d868ab04f014a4bc20 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Sun, 5 Sep 2004 02:06:11 +0000 Subject: r2228: Finally commit bits of old workareas together to get dcerpc python bindings happening. This commit lets python call dcerpc_pipe_connect() and open the samr pipe. (This used to be commit f5852bf3e2064f03aa9b63af4aa1b4f9e39bdb24) --- source4/build/smb_build/makefile.pl | 40 ++++++++++++++++++---- source4/scripting/swig/dcerpc.i | 68 +++++++++++++++++++++++++++++++++++++ source4/scripting/swig/samba.i | 6 ++++ source4/scripting/swig/samr.i | 25 ++++++++++++++ 4 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 source4/scripting/swig/dcerpc.i create mode 100644 source4/scripting/swig/samr.i (limited to 'source4') diff --git a/source4/build/smb_build/makefile.pl b/source4/build/smb_build/makefile.pl index c684b87311..3bbe7b5b71 100644 --- a/source4/build/smb_build/makefile.pl +++ b/source4/build/smb_build/makefile.pl @@ -745,14 +745,9 @@ uninstallreg: # Swig extensions -PYTHON_TDB_OBJ = lib/tdb/common/tdb.o lib/tdb/common/spinlock.o - -swig: scripting/swig/_tdb.so +swig: scripting/swig/_tdb.so scripting/swig/_dcerpc.so -swig_clean: - -rm -f scripting/swig/_tdb.so scripting/swig/tdb.pyc \\ - scripting/swig/tdb.py scripting/swig/tdb_wrap.c \\ - scripting/swig/tdb_wrap.o +PYTHON_TDB_OBJ = lib/tdb/common/tdb.o lib/tdb/common/spinlock.o scripting/swig/tdb.py: scripting/swig/tdb.i swig -python scripting/swig/tdb.i @@ -761,6 +756,37 @@ scripting/swig/_tdb.so: scripting/swig/tdb.py scripting/swig/tdb_wrap.o \$(PYTHO \$(SHLD) \$(SHLD_FLAGS) -o scripting/swig/_tdb.so scripting/swig/tdb_wrap.o \\ \$(PYTHON_TDB_OBJ) +PYTHON_DCERPC_OBJ = \$(SUBSYSTEM_LIBRPC_RAW_OBJS) \\ + \$(SUBSYSTEM_LIBNDR_RAW_OBJS) \\ + \$(SUBSYSTEM_LIBBASIC_OBJS) \\ + \$(SUBSYSTEM_CONFIG_OBJS) \\ + \$(SUBSYSTEM_LIBTDB_OBJS) \\ + \$(SUBSYSTEM_SCHANNELDB_OBJS) \\ + \$(SUBSYSTEM_GENSEC_OBJS) \\ + \$(SUBSYSTEM_LIBCLI_UTILS_OBJS) \\ + \$(SUBSYSTEM_LIBCLI_RAW_OBJS) \\ + \$(SUBSYSTEM_LIBCLI_AUTH_OBJS) \\ + \$(SUBSYSTEM_LIBCLI_NMB_OBJS) \\ + \$(SUBSYSTEM_AUTH_OBJS) \\ + \$(SUBSYSTEM_SAMDB_OBJS) \\ + \$(SUBSYSTEM_LIBLDB_OBJS) \\ + \$(SUBSYSTEM_CHARSET_OBJS) \\ + \$(SUBSYSTEM_LIBSMB_OBJS) \\ + \$(SUBSYSTEM_DCERPC_COMMON_OBJS) + +PYTHON_DCERPC_LIBS = -lldap + +scripting/swig/dcerpc.py: scripting/swig/dcerpc.i scripting/swig/samr.i scripting/swig/samba.i + swig -python scripting/swig/dcerpc.i + +scripting/swig/_dcerpc.so: scripting/swig/dcerpc.py scripting/swig/dcerpc_wrap.o \$(PYTHON_DCERPC_OBJ) + \$(SHLD) \$(SHLD_FLAGS) -o scripting/swig/_dcerpc.so scripting/swig/dcerpc_wrap.o \$(PYTHON_DCERPC_OBJ) \$(PYTHON_DCERPC_LIBS) + +swig_clean: + -rm -f scripting/swig/_tdb.so scripting/swig/tdb.pyc \\ + scripting/swig/tdb.py scripting/swig/tdb_wrap.c \\ + scripting/swig/tdb_wrap.o + everything: all etags: diff --git a/source4/scripting/swig/dcerpc.i b/source4/scripting/swig/dcerpc.i new file mode 100644 index 0000000000..9ecc2702bb --- /dev/null +++ b/source4/scripting/swig/dcerpc.i @@ -0,0 +1,68 @@ +/* + Unix SMB/CIFS implementation. + + Swig interface to librpc functions. + + Copyright (C) Tim Potter 2004 + + 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. +*/ + +%module dcerpc + +%{ + +/* This symbol is used in both includes.h and Python.h which causes an + annoying compiler warning. */ + +#ifdef HAVE_FSTAT +#undef HAVE_FSTAT +#endif + +#include "includes.h" + +#undef strcpy + +%} + +%include "samba.i" + +%init %{ +/* setup_logging("python", DEBUG_STDOUT); */ + lp_load(dyn_CONFIGFILE, True, False, False); + load_interfaces(); +%} + +%typemap(in, numinputs=0) struct dcerpc_pipe **OUT (struct dcerpc_pipe *temp) { + $1 = &temp; +} + +%typemap(argout) struct dcerpc_pipe ** { + PyObject *o = PyTuple_New(2); + PyTuple_SetItem(o, 0, resultobj); + PyTuple_SetItem(o, 1, SWIG_NewPointerObj(*$1, SWIGTYPE_p_dcerpc_pipe, 0)); + resultobj = o; +} + +%types(struct dcerpc_pipe *); + +NTSTATUS dcerpc_pipe_connect(struct dcerpc_pipe **OUT, + const char *binding, + const char *pipe_uuid, + uint32 pipe_version, + const char *domain, + const char *username, + const char *password); +%include "samr.i" diff --git a/source4/scripting/swig/samba.i b/source4/scripting/swig/samba.i index 60f2efcc19..8e0eb88533 100644 --- a/source4/scripting/swig/samba.i +++ b/source4/scripting/swig/samba.i @@ -31,3 +31,9 @@ } $1 = (uint32_t)PyInt_AsLong($input); } + +/* For the moment treat NTSTATUS as an integer */ + +%typemap(out) NTSTATUS { + $result = PyInt_FromLong(NT_STATUS_V($1)); +} diff --git a/source4/scripting/swig/samr.i b/source4/scripting/swig/samr.i new file mode 100644 index 0000000000..ceb21db17a --- /dev/null +++ b/source4/scripting/swig/samr.i @@ -0,0 +1,25 @@ +/* + Unix SMB/CIFS implementation. + + Swig interface to librpc functions. + + Copyright (C) Tim Potter 2004 + + 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. +*/ + +#define DCERPC_SAMR_UUID "12345778-1234-abcd-ef00-0123456789ac" +const int DCERPC_SAMR_VERSION = 1.0; +#define DCERPC_SAMR_NAME "samr" -- cgit