diff options
| author | cvs2svn Import User <samba-bugs@samba.org> | 2003-02-18 05:05:16 +0000 | 
|---|---|---|
| committer | cvs2svn Import User <samba-bugs@samba.org> | 2003-02-18 05:05:16 +0000 | 
| commit | 059c4fd81db2b50cd9748577bd1d84e2acd9c330 (patch) | |
| tree | af1b648f6a15aff07c96314be119be93c7f90dd8 /source3/python | |
| parent | 737f82e3b3150c0d1f981d6d949978ea33af119c (diff) | |
| parent | 8f9a17be892f87ab576f1824a7b6fe37abd59887 (diff) | |
| download | samba-059c4fd81db2b50cd9748577bd1d84e2acd9c330.tar.gz samba-059c4fd81db2b50cd9748577bd1d84e2acd9c330.tar.bz2 samba-059c4fd81db2b50cd9748577bd1d84e2acd9c330.zip  | |
This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to be commit c31455779d7948e866fe1916425c3746134dea01)
Diffstat (limited to 'source3/python')
| -rw-r--r-- | source3/python/py_spoolss_common.c | 35 | ||||
| -rw-r--r-- | source3/python/py_srvsvc.c | 215 | ||||
| -rw-r--r-- | source3/python/py_srvsvc.h | 26 | ||||
| -rw-r--r-- | source3/python/py_srvsvc_conv.c | 43 | ||||
| -rw-r--r-- | source3/python/py_winbind.h | 30 | 
5 files changed, 349 insertions, 0 deletions
diff --git a/source3/python/py_spoolss_common.c b/source3/python/py_spoolss_common.c new file mode 100644 index 0000000000..f34d2ac6c7 --- /dev/null +++ b/source3/python/py_spoolss_common.c @@ -0,0 +1,35 @@ +/*  +   Python wrappers for DCERPC/SMB client routines. + +   Copyright (C) Tim Potter, 2003 +    +   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 "python/py_spoolss.h" + +PyObject *new_spoolss_policy_hnd_object(struct cli_state *cli,  +					TALLOC_CTX *mem_ctx, POLICY_HND *pol) +{ +	spoolss_policy_hnd_object *o; + +	o = PyObject_New(spoolss_policy_hnd_object, &spoolss_policy_hnd_type); + +	o->cli = cli; +	o->mem_ctx = mem_ctx; +	memcpy(&o->pol, pol, sizeof(POLICY_HND)); + +	return (PyObject*)o; +} diff --git a/source3/python/py_srvsvc.c b/source3/python/py_srvsvc.c new file mode 100644 index 0000000000..8ec2430285 --- /dev/null +++ b/source3/python/py_srvsvc.c @@ -0,0 +1,215 @@ +/*  +   Python wrappers for DCERPC/SMB client routines. + +   Copyright (C) Tim Potter, 2003 +    +   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 "python/py_srvsvc.h" + +/* Exceptions this module can raise */ + +PyObject *srvsvc_error, *srvsvc_werror; + +static struct const_vals { +	char *name; +	uint32 value; +} module_const_vals[] = { +	{ "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION }, +	{ "SV_TYPE_SERVER", SV_TYPE_SERVER }, +	{ "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER }, +	{ "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL }, +	{ "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL }, +	{ "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE }, +	{ "SV_TYPE_AFP", SV_TYPE_AFP }, +	{ "SV_TYPE_NOVELL", SV_TYPE_NOVELL }, +	{ "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER }, +	{ "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER }, +	{ "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER }, +	{ "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX }, +	{ "SV_TYPE_NT", SV_TYPE_NT }, +	{ "SV_TYPE_WFW", SV_TYPE_WFW }, +	{ "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN }, +	{ "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT }, +	{ "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER }, +	{ "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER }, +	{ "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER }, +	{ "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER }, +	{ "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF }, +	{ "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS }, +	{ "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS }, +	{ "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER }, +	{ "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT }, +	{ "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY }, +	{ "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM }, +	{ NULL }, +}; + +static void const_init(PyObject *dict) +{ +	struct const_vals *tmp; +	PyObject *obj; + +	for (tmp = module_const_vals; tmp->name; tmp++) { +		obj = PyInt_FromLong(tmp->value); +		PyDict_SetItemString(dict, tmp->name, obj); +		Py_DECREF(obj); +	} +} + +/* NetServerGetInfo */ + +PyObject *srvsvc_netservergetinfo(PyObject *self, PyObject *args, +				  PyObject *kw) +{ +	static char *kwlist[] = { "server", "level", "creds", NULL }; +	char *unc_name, *server, *errstr; +	PyObject *creds = NULL, *result = NULL; +	struct cli_state *cli; +	TALLOC_CTX *mem_ctx = NULL; +	uint32 level; +	SRV_INFO_CTR ctr; +	WERROR status; + +	if (!PyArg_ParseTupleAndKeywords( +		    args, kw, "si|O", kwlist, &unc_name, &level, &creds)) +		return NULL; + +	if (unc_name[0] != '\\' || unc_name[1] != '\\') { +		PyErr_SetString(PyExc_ValueError, "UNC name required"); +		return NULL; +	} + +	server = strdup(unc_name + 2); + +	if (strchr(server, '\\')) { +		char *c = strchr(server, '\\'); +		*c = 0; +	} + +	if (creds && creds != Py_None && !PyDict_Check(creds)) { +		PyErr_SetString(PyExc_TypeError,  +				"credentials must be dictionary or None"); +		return NULL; +	} + +	if (!(cli = open_pipe_creds(server, creds, PI_SRVSVC, &errstr))) { +		PyErr_SetString(srvsvc_error, errstr); +		free(errstr); +		goto done; +	} + +	if (!(mem_ctx = talloc_init("srvsvc_netservergetinfo"))) { +		PyErr_SetString(srvsvc_error,  +				"unable to init talloc context\n"); +		goto done; +	} + +	ZERO_STRUCT(ctr); + +	status = cli_srvsvc_net_srv_get_info(cli, mem_ctx, level, &ctr); + +	if (!NT_STATUS_IS_OK(status)) { +		PyErr_SetObject(srvsvc_error, py_werror_tuple(status)); +		goto done; +	} + +	if (level != ctr.switch_value) { +		PyErr_SetString(srvsvc_error, "container level value wrong"); +		goto done; +	} + +	switch(level) { +	case 101: +		py_from_SRV_INFO_101(&result, &ctr.srv.sv101); +		break; +	} + +	Py_INCREF(result); + +done: +	if (mem_ctx) +		talloc_destroy(mem_ctx); + +	return result; +} + +/* + * Module initialisation  + */ + +static PyMethodDef srvsvc_methods[] = { +	{ "netservergetinfo", (PyCFunction)srvsvc_netservergetinfo, +	  METH_VARARGS | METH_KEYWORDS, +	  "Retrieve information about a particular server." }, + +	{ "setup_logging", (PyCFunction)py_setup_logging,  +	  METH_VARARGS | METH_KEYWORDS,  +	  "Set up debug logging. + +Initialises Samba's debug logging system.  One argument is expected which +is a boolean specifying whether debugging is interactive and sent to stdout +or logged to a file. + +Example: + +>>> srvsvc.setup_logging(interactive = 1)" }, + +	{ "get_debuglevel", (PyCFunction)get_debuglevel,  +	  METH_VARARGS,  +	  "Set the current debug level. + +Example: + +>>> srvsvc.get_debuglevel() +0" }, + +	{ "set_debuglevel", (PyCFunction)set_debuglevel,  +	  METH_VARARGS,  +	  "Get the current debug level. + +Example: + +>>> srvsvc.set_debuglevel(10)" }, + +	{ NULL } +}; + +void initsrvsvc(void) +{ +	PyObject *module, *dict; + +	/* Initialise module */ + +	module = Py_InitModule("srvsvc", srvsvc_methods); +	dict = PyModule_GetDict(module); + +	/* Exceptions we can raise */ + +	srvsvc_error = PyErr_NewException("srvsvc.error", NULL, NULL); +	PyDict_SetItemString(dict, "error", srvsvc_error); + +	srvsvc_werror = PyErr_NewException("srvsvc.werror", NULL, NULL); +	PyDict_SetItemString(dict, "werror", srvsvc_werror); + +	/* Initialise constants */ + +	const_init(dict); + +	/* Do samba initialisation */ + +	py_samba_init(); +} diff --git a/source3/python/py_srvsvc.h b/source3/python/py_srvsvc.h new file mode 100644 index 0000000000..b440c32e13 --- /dev/null +++ b/source3/python/py_srvsvc.h @@ -0,0 +1,26 @@ +/*  +   Python wrappers for DCERPC/SMB client routines. + +   Copyright (C) Tim Potter, 2003 +    +   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. +*/ + +#ifndef _PY_SRVSVC_H +#define _PY_SRVSVC_H + +#include "python/py_common.h" + +#endif /* _PY_SRVSVC_H */ diff --git a/source3/python/py_srvsvc_conv.c b/source3/python/py_srvsvc_conv.c new file mode 100644 index 0000000000..de43f070ed --- /dev/null +++ b/source3/python/py_srvsvc_conv.c @@ -0,0 +1,43 @@ +/*  +   Python wrappers for DCERPC/SMB client routines. + +   Copyright (C) Tim Potter, 2003 +    +   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 "python/py_srvsvc.h" +#include "python/py_conv.h" + +static struct pyconv py_SRV_INFO_101[] = { +	{ "platform_id", PY_UINT32, offsetof(SRV_INFO_101, platform_id) }, +	{ "major_version", PY_UINT32, offsetof(SRV_INFO_101, ver_major) }, +	{ "minor_version", PY_UINT32, offsetof(SRV_INFO_101, ver_minor) }, +	{ "server_type", PY_UINT32, offsetof(SRV_INFO_101, srv_type) }, +	{ "name", PY_UNISTR2, offsetof(SRV_INFO_101, uni_name) }, +	{ "comment", PY_UNISTR2, offsetof(SRV_INFO_101, uni_comment) }, +	{ NULL } +};	 + +BOOL py_from_SRV_INFO_101(PyObject **dict, SRV_INFO_101 *info) +{ +	PyObject *obj;	 + +	*dict = from_struct(info, py_SRV_INFO_101); + +	PyDict_SetItemString(*dict, "level", PyInt_FromLong(101)); + +	return True; +} diff --git a/source3/python/py_winbind.h b/source3/python/py_winbind.h new file mode 100644 index 0000000000..10927ea6c8 --- /dev/null +++ b/source3/python/py_winbind.h @@ -0,0 +1,30 @@ +/*  +   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. +*/ + +#ifndef _PY_WINBIND_H +#define _PY_WINBIND_H + +#include "python/py_common.h" + +/* The following definitions are from py_winbind_conv.c */ + +BOOL py_from_winbind_passwd(PyObject **dict, struct winbindd_response *response); + +#endif /* _PY_WINBIND_H */  | 
