summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-03-26 11:08:09 +0000
committerTim Potter <tpot@samba.org>2002-03-26 11:08:09 +0000
commit04ab61a56c9a1f836f363b0496bd6f64d5c5f9c8 (patch)
tree7a958ab2ae8afa7e965b6a6fe390e970fe975a1a
parent577637b0f984df05d5ce300bffd1776b1cefe990 (diff)
downloadsamba-04ab61a56c9a1f836f363b0496bd6f64d5c5f9c8.tar.gz
samba-04ab61a56c9a1f836f363b0496bd6f64d5c5f9c8.tar.bz2
samba-04ab61a56c9a1f836f363b0496bd6f64d5c5f9c8.zip
Port related functions.
(This used to be commit 5dc7e350ec784996f7c8bc824624cd0b8347a3b0)
-rw-r--r--source3/python/py_spoolss_ports.c101
-rw-r--r--source3/python/py_spoolss_ports.h26
2 files changed, 127 insertions, 0 deletions
diff --git a/source3/python/py_spoolss_ports.c b/source3/python/py_spoolss_ports.c
new file mode 100644
index 0000000000..c6cd14279e
--- /dev/null
+++ b/source3/python/py_spoolss_ports.c
@@ -0,0 +1,101 @@
+/*
+ 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"
+#include "python/py_spoolss.h"
+
+/* Enumerate ports */
+
+PyObject *spoolss_enumports(PyObject *self, PyObject *args, PyObject *kw)
+{
+ WERROR werror;
+ PyObject *result, *creds = NULL;
+ int level = 1;
+ uint32 needed;
+ static char *kwlist[] = {"server", "level", "creds", NULL};
+ TALLOC_CTX *mem_ctx = NULL;
+ struct cli_state *cli = NULL;
+ char *server;
+ PORT_INFO_CTR ctr;
+
+ /* Parse parameters */
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|iO!", kwlist,
+ &server, &level, &PyDict_Type,
+ &creds))
+ return NULL;
+
+ if (server[0] == '\\' && server[1] == '\\')
+ server += 2;
+
+ mem_ctx = talloc_init();
+ cli = open_pipe_creds(server, creds, cli_spoolss_initialise, NULL);
+
+ /* Call rpc function */
+
+ werror = cli_spoolss_enum_ports(
+ cli, mem_ctx, 0, &needed, level, &num_ports, &ctr);
+
+ if (W_ERROR_V(werror) == ERRinsufficientbuffer)
+ werror = cli_spoolss_enum_ports(
+ cli, mem_ctx, needed, NULL, level,
+ &num_ports, &ctr);
+
+ /* Return value */
+
+ result = Py_None;
+
+ if (!W_ERROR_IS_OK(werror))
+ goto done;
+
+ result = PyList_New(num_ports);
+
+ switch (level) {
+ case 1:
+ for (i = 0; i < num_ports; i++) {
+ PyObject *value;
+
+ value = from_struct (
+ &ctr.port.info_1[i], py_PORT_INFO_0);
+
+ PyList_SetItem(result, i, value);
+ }
+
+ break;
+ case 2:
+ for(i = 0; i < num_ports; i++) {
+ PyObject *value;
+
+ value = from_struct(
+ &ctr.port.info_2[i], py_PORT_INFO_1);
+
+ PyList_SetItem(result, i, value);
+ }
+
+ break;
+ }
+
+ done:
+ Py_INCREF(result);
+ return result;
+}
diff --git a/source3/python/py_spoolss_ports.h b/source3/python/py_spoolss_ports.h
new file mode 100644
index 0000000000..5ff35a5433
--- /dev/null
+++ b/source3/python/py_spoolss_ports.h
@@ -0,0 +1,26 @@
+/*
+ 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_SPOOLSS_PORTS_H
+#define _PY_SPOOLSS_PORTS_H
+
+PyObject *spoolss_enumports(PyObject *self, PyObject *args, PyObject *kw);
+
+#endif /* _PY_SPOOLSS_FORMS_H */