From: Luke Morrison Date: Fri, 31 Jan 2014 00:27:05 +0000 (+1300) Subject: gpo: Add python libgpo bindings X-Git-Tag: talloc-2.1.11~464 X-Git-Url: http://git.samba.org/samba.git/?p=nivanova%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=148b7ae707f31e221fef79e80ccda2663d5526ee gpo: Add python libgpo bindings Split from "Initial commit for GPO work done by Luke Morrison" by David Mulder Signed-off-by: Garming Sam Signed-off-by: Luke Morrison Reviewed-by: Andrew Bartlett --- diff --git a/source3/libgpo/gpo_filesync.c b/libgpo/gpo_filesync.c similarity index 100% rename from source3/libgpo/gpo_filesync.c rename to libgpo/gpo_filesync.c diff --git a/source3/libgpo/gpo_proto.h b/libgpo/gpo_proto.h similarity index 100% rename from source3/libgpo/gpo_proto.h rename to libgpo/gpo_proto.h diff --git a/source3/libgpo/gpo_reg.c b/libgpo/gpo_reg.c similarity index 99% rename from source3/libgpo/gpo_reg.c rename to libgpo/gpo_reg.c index 7f5fbc4fff1..18d0498c7e9 100644 --- a/source3/libgpo/gpo_reg.c +++ b/libgpo/gpo_reg.c @@ -1037,4 +1037,3 @@ WERROR reg_apply_registry_entry(TALLOC_CTX *mem_ctx, return werr; } - diff --git a/libgpo/pygpo.c b/libgpo/pygpo.c new file mode 100644 index 00000000000..c42811f94d2 --- /dev/null +++ b/libgpo/pygpo.c @@ -0,0 +1,71 @@ +/* + Unix SMB/CIFS implementation. + Copyright (C) Luke Morrison 2013 + + 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 3 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, see . +*/ + +#include +#include "includes.h" +#include "version.h" +#include "param/pyparam.h" +#include "gpo.h" +#include "ads.h" + +/* A Python C API module to use LIBGPO */ + +#ifndef Py_RETURN_NONE +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + +/* Parameter mapping and functions for the GP_EXT struct */ +void initgpo(void); + +/* Global methods aka do not need a special pyobject type */ +static PyObject *py_gpo_get_sysvol_gpt_version(PyObject * self, PyObject * args) +{ + TALLOC_CTX *tmp_ctx = NULL; + char *unix_path; + char *display_name = NULL; + uint32_t sysvol_version = 0; + PyObject *result; + + tmp_ctx = talloc_new(NULL); + + if (!PyArg_ParseTuple(args, "s", &unix_path)) { + return NULL; + } + gpo_get_sysvol_gpt_version(tmp_ctx, unix_path, &sysvol_version, &display_name); + talloc_free(tmp_ctx); + result = Py_BuildValue("[s,i]", display_name, sysvol_version); + return result; +} + +static PyMethodDef py_gpo_methods[] = { + {"gpo_get_sysvol_gpt_version", (PyCFunction) py_gpo_get_sysvol_gpt_version, METH_VARARGS, NULL}, + {NULL} +}; + +/* Will be called by python when loading this module */ +void initgpo(void) +{ + PyObject *m; + + debug_setup_talloc_log(); + /* Instantiate the types */ + m = Py_InitModule3("gpo", py_gpo_methods, "libgpo python bindings"); + if (m == NULL) + return; + PyModule_AddObject(m, "version", PyString_FromString(SAMBA_VERSION_STRING)); +} diff --git a/libgpo/wscript_build b/libgpo/wscript_build index 034af0a163f..598cfcb327c 100644 --- a/libgpo/wscript_build +++ b/libgpo/wscript_build @@ -1,7 +1,13 @@ #!/usr/bin/env python -bld.SAMBA_SUBSYSTEM('LIBGPO', - source='gpo_util.c gpo_sec.c ../libgpo/gpext/gpext.c gpo_fetch.c gpo_ini.c ../source4/libgpo/ads_convenience.c ../source3/libgpo/gpo_filesync.c ../source4/libgpo/gpo_filesync.c', - deps='ldb samba-net samba-util', - enabled=False - ) +LIBGPO_SRC = '''gpo_ldap.c gpo_ini.c gpo_util.c gpo_fetch.c gpo_filesync.c + gpo_sec.c gpo_reg.c gpext/gpext.c''' + +bld.SAMBA3_LIBRARY('gpo', + source='${LIBGPO_SRC}', + deps='talloc ads TOKEN_UTIL auth', + vars=locals(), + private_library=True) +bld.SAMBA3_PYTHON('python_samba_libgpo', 'pygpo.c', + deps='pyparam_util gpo talloc ads TOKEN_UTIL auth', + realname='samba/gpo.so') diff --git a/source3/wscript_build b/source3/wscript_build index f4c3eb58b02..8718e9b9558 100644 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -82,9 +82,9 @@ bld.SAMBA3_LIBRARY('gpo', ../libgpo/gpo_ini.c ../libgpo/gpo_util.c ../libgpo/gpo_fetch.c - libgpo/gpo_filesync.c + ../libgpo/gpo_filesync.c ../libgpo/gpo_sec.c - libgpo/gpo_reg.c + ../libgpo/gpo_reg.c ''', deps=''' talloc