1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-28 07:21:54 +03:00

Added enumjobs command.

This commit is contained in:
Tim Potter 0001-01-01 00:00:00 +00:00
parent 7da054d814
commit bc9dd9b458
6 changed files with 199 additions and 10 deletions

View File

@ -186,6 +186,11 @@ Set the form given by the dictionary argument.
{ "deleteform", spoolss_deleteform, METH_VARARGS | METH_KEYWORDS,
"Delete a form" },
/* Job related methods */
{ "enumjobs", spoolss_enumjobs, METH_VARARGS | METH_KEYWORDS,
"Enumerate jobs" },
{ NULL }
};

View File

@ -0,0 +1,86 @@
/*
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 "python/py_spoolss.h"
/* Enumerate jobs */
PyObject *spoolss_enumjobs(PyObject *self, PyObject *args, PyObject *kw)
{
spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
WERROR werror;
PyObject *result;
int level = 1;
uint32 i, needed, num_jobs;
static char *kwlist[] = {"level", NULL};
JOB_INFO_CTR ctr;
/* Parse parameters */
if (!PyArg_ParseTupleAndKeywords(args, kw, "|i", kwlist, &level))
return NULL;
/* Call rpc function */
werror = cli_spoolss_enumjobs(
hnd->cli, hnd->mem_ctx, 0, &needed, &hnd->pol, level, 0,
1000, &num_jobs, &ctr);
if (W_ERROR_V(werror) == ERRinsufficientbuffer)
werror = cli_spoolss_enumjobs(
hnd->cli, hnd->mem_ctx, needed, NULL, &hnd->pol,
level, 0, 1000, &num_jobs, &ctr);
/* Return value */
result = Py_None;
if (!W_ERROR_IS_OK(werror))
goto done;
result = PyList_New(num_jobs);
switch (level) {
case 1:
for (i = 0; i < num_jobs; i++) {
PyObject *value;
py_from_JOB_INFO_1(&value, &ctr.job.job_info_1[i]);
PyList_SetItem(result, i, value);
}
break;
case 2:
for(i = 0; i < num_jobs; i++) {
PyObject *value;
py_from_JOB_INFO_2(&value, &ctr.job.job_info_2[i]);
PyList_SetItem(result, i, value);
}
break;
}
done:
Py_INCREF(result);
return result;
}

View File

@ -0,0 +1,84 @@
/*
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 "python/py_spoolss.h"
#include "python/py_conv.h"
struct pyconv py_JOB_INFO_1[] = {
{ "jobid", PY_UINT32, offsetof(JOB_INFO_1, jobid) },
{ "printer_name", PY_UNISTR, offsetof(JOB_INFO_1, printername) },
{ "server_name", PY_UNISTR, offsetof(JOB_INFO_1, machinename) },
{ "user_name", PY_UNISTR, offsetof(JOB_INFO_1, username) },
{ "document_name", PY_UNISTR, offsetof(JOB_INFO_1, document) },
{ "data_type", PY_UNISTR, offsetof(JOB_INFO_1, datatype) },
{ "text_status", PY_UNISTR, offsetof(JOB_INFO_1, text_status) },
{ "status", PY_UINT32, offsetof(JOB_INFO_1, status) },
{ "priority", PY_UINT32, offsetof(JOB_INFO_1, priority) },
{ "position", PY_UINT32, offsetof(JOB_INFO_1, position) },
{ "total_pages", PY_UINT32, offsetof(JOB_INFO_1, totalpages) },
{ "pages_printed", PY_UINT32, offsetof(JOB_INFO_1, pagesprinted) },
{ NULL }
};
struct pyconv py_JOB_INFO_2[] = {
{ "jobid", PY_UINT32, offsetof(JOB_INFO_2, jobid) },
{ "printer_name", PY_UNISTR, offsetof(JOB_INFO_2, printername) },
{ "server_name", PY_UNISTR, offsetof(JOB_INFO_2, machinename) },
{ "user_name", PY_UNISTR, offsetof(JOB_INFO_2, username) },
{ "document_name", PY_UNISTR, offsetof(JOB_INFO_2, document) },
{ "notify_name", PY_UNISTR, offsetof(JOB_INFO_2, notifyname) },
{ "data_type", PY_UNISTR, offsetof(JOB_INFO_2, datatype) },
{ "print_processor", PY_UNISTR, offsetof(JOB_INFO_2, printprocessor) },
{ "parameters", PY_UNISTR, offsetof(JOB_INFO_2, parameters) },
{ "driver_name", PY_UNISTR, offsetof(JOB_INFO_2, drivername) },
{ "text_status", PY_UNISTR, offsetof(JOB_INFO_2, text_status) },
{ "status", PY_UINT32, offsetof(JOB_INFO_2, status) },
{ "priority", PY_UINT32, offsetof(JOB_INFO_2, priority) },
{ "position", PY_UINT32, offsetof(JOB_INFO_2, position) },
{ "start_time", PY_UINT32, offsetof(JOB_INFO_2, starttime) },
{ "until_time", PY_UINT32, offsetof(JOB_INFO_2, untiltime) },
{ "total_pages", PY_UINT32, offsetof(JOB_INFO_2, totalpages) },
{ "size", PY_UINT32, offsetof(JOB_INFO_2, size) },
{ "time_elapsed", PY_UINT32, offsetof(JOB_INFO_2, timeelapsed) },
{ "pages_printed", PY_UINT32, offsetof(JOB_INFO_2, pagesprinted) },
{ NULL }
};
BOOL py_from_JOB_INFO_1(PyObject **dict, JOB_INFO_1 *info)
{
*dict = from_struct(info, py_JOB_INFO_1);
return True;
}
BOOL py_to_JOB_INFO_1(JOB_INFO_1 *info, PyObject *dict)
{
return False;
}
BOOL py_from_JOB_INFO_2(PyObject **dict, JOB_INFO_2 *info)
{
*dict = from_struct(info, py_JOB_INFO_2);
return True;
}
BOOL py_to_JOB_INFO_2(JOB_INFO_2 *info, PyObject *dict)
{
return False;
}

View File

@ -45,6 +45,17 @@ PyObject *spoolss_enumforms(PyObject *self, PyObject *args, PyObject *kw);
BOOL py_from_FORM_1(PyObject **dict, FORM_1 *form);
BOOL py_to_FORM(FORM *form, PyObject *dict);
/* The following definitions come from python/py_spoolss_jobs.c */
PyObject *spoolss_enumjobs(PyObject *self, PyObject *args, PyObject *kw);
/* The following definitions come from python/py_spoolss_jobs_conv.c */
BOOL py_from_JOB_INFO_1(PyObject **dict, JOB_INFO_1 *info);
BOOL py_to_JOB_INFO_1(JOB_INFO_1 *info, PyObject *dict);
BOOL py_from_JOB_INFO_2(PyObject **dict, JOB_INFO_2 *info);
BOOL py_to_JOB_INFO_2(JOB_INFO_2 *info, PyObject *dict);
/* The following definitions come from python/py_spoolss_ports.c */
PyObject *spoolss_enumports(PyObject *self, PyObject *args, PyObject *kw);

View File

@ -1,11 +1,11 @@
Index: Makefile.in
===================================================================
RCS file: /data/cvs/samba/source/Makefile.in,v
retrieving revision 1.470
diff -u -r1.470 Makefile.in
--- Makefile.in 2002/04/13 11:45:33 1.470
+++ Makefile.in 2002/04/18 03:34:05
@@ -787,6 +787,43 @@
retrieving revision 1.473
diff -u -r1.473 Makefile.in
--- Makefile.in 2002/04/30 05:44:25 1.473
+++ Makefile.in 2002/05/07 07:02:43
@@ -788,6 +788,44 @@
-$(INSTALLCMD) -d ${prefix}/include
-$(INSTALLCMD) include/libsmbclient.h ${prefix}/include
@ -19,6 +19,7 @@ diff -u -r1.470 Makefile.in
+ python/py_spoolss_forms.o python/py_spoolss_forms_conv.o \
+ python/py_spoolss_ports.o python/py_spoolss_ports_conv.o \
+ python/py_spoolss_drivers.o python/py_spoolss_drivers_conv.o \
+ python/py_spoolss_jobs.o python/py_spoolss_jobs_conv.o
+
+PY_LSA_PROTO_OBJ = python/py_lsa.o
+
@ -52,11 +53,11 @@ diff -u -r1.470 Makefile.in
Index: configure.in
===================================================================
RCS file: /data/cvs/samba/source/configure.in,v
retrieving revision 1.300
diff -u -r1.300 configure.in
--- configure.in 2002/04/11 15:26:58 1.300
+++ configure.in 2002/04/18 03:34:05
@@ -2716,7 +2716,7 @@
retrieving revision 1.302
diff -u -r1.302 configure.in
--- configure.in 2002/04/24 11:42:46 1.302
+++ configure.in 2002/05/07 07:02:44
@@ -2720,7 +2720,7 @@
builddir=`pwd`
AC_SUBST(builddir)

View File

@ -96,6 +96,8 @@ setup(
samba_srcdir + "python/py_spoolss_printers_conv.c",
samba_srcdir + "python/py_spoolss_ports.c",
samba_srcdir + "python/py_spoolss_ports_conv.c",
samba_srcdir + "python/py_spoolss_jobs.c",
samba_srcdir + "python/py_spoolss_jobs_conv.c",
],
libraries = lib_list,
library_dirs = ["/usr/kerberos/lib"],