0001-01-01 02:30:17 +02: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 0213 9 , USA .
*/
# include "python/py_spoolss.h"
/* Exceptions this module can raise */
PyObject * spoolss_error , * spoolss_werror ;
/*
* Routines to convert from python hashes to Samba structures
*/
0001-01-01 02:30:17 +02:30
PyObject * new_spoolss_policy_hnd_object ( struct cli_state * cli ,
TALLOC_CTX * mem_ctx , POLICY_HND * pol )
0001-01-01 02:30:17 +02:30
{
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 ;
}
0001-01-01 02:30:17 +02:30
/*
* Method dispatch table
*/
static PyMethodDef spoolss_methods [ ] = {
/* Open/close printer handles */
0001-01-01 02:30:17 +02:30
{ " openprinter " , ( PyCFunction ) spoolss_openprinter , METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Open a printer by name in UNC format.
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
Optionally a dictionary of ( domain , username , password ) may be given in
which case they are used when opening the RPC pipe . An access mask may
also be given which defaults to MAXIMUM_ALLOWED_ACCESS .
0001-01-01 02:30:17 +02:30
Example :
0001-01-01 02:30:17 +02:30
> > > hnd = spoolss . openprinter ( \ " \\ \\ \\ \\ NPSD-PDC2 \\ \\ meanie \" ) " } ,
0001-01-01 02:30:17 +02:30
{ " closeprinter " , spoolss_closeprinter , METH_VARARGS ,
0001-01-01 02:30:17 +02:30
" Close a printer handle opened with openprinter or addprinter.
0001-01-01 02:30:17 +02:30
Example :
0001-01-01 02:30:17 +02:30
> > > spoolss . closeprinter ( hnd ) " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " addprinterex " , ( PyCFunction ) spoolss_addprinterex , METH_VARARGS ,
0001-01-01 02:30:17 +02:30
" addprinterex() " } ,
0001-01-01 02:30:17 +02:30
/* Server enumeratation functions */
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " enumprinters " , ( PyCFunction ) spoolss_enumprinters ,
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Enumerate printers on a print server.
0001-01-01 02:30:17 +02:30
Return a list of printers on a print server . The credentials , info level
and flags may be specified as keyword arguments .
Example :
> > > print spoolss . enumprinters ( \ " \\ \\ \\ \\ npsd-pdc2 \" )
[ { ' comment ' : ' i am a comment ' , ' printer_name ' : ' meanie ' , ' flags ' : 8388608 ,
' description ' : ' meanie , Generic / Text Only , i am a location ' } ,
{ ' comment ' : ' ' , ' printer_name ' : ' fileprint ' , ' flags ' : 8388608 ,
0001-01-01 02:30:17 +02:30
' description ' : ' fileprint , Generic / Text Only , ' } ] " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " enumports " , ( PyCFunction ) spoolss_enumports ,
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Enumerate ports on a print server.
0001-01-01 02:30:17 +02:30
Return a list of ports on a print server .
Example :
> > > print spoolss . enumports ( \ " \\ \\ \\ \\ npsd-pdc2 \" )
[ { ' name ' : ' LPT1 : ' } , { ' name ' : ' LPT2 : ' } , { ' name ' : ' COM1 : ' } , { ' name ' : ' COM2 : ' } ,
0001-01-01 02:30:17 +02:30
{ ' name ' : ' FILE : ' } , { ' name ' : ' \ \ \ \ nautilus1 \ \ zpekt3r ' } ] " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " enumprinterdrivers " , ( PyCFunction ) spoolss_enumprinterdrivers ,
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Enumerate printer drivers on a print server.
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
Return a list of printer drivers . " },
0001-01-01 02:30:17 +02:30
/* Miscellaneous other commands */
0001-01-01 02:30:17 +02:30
{ " getprinterdriverdir " , ( PyCFunction ) spoolss_getprinterdriverdir ,
METH_VARARGS | METH_KEYWORDS ,
" Return printer driver directory.
0001-01-01 02:30:17 +02:30
Return the printer driver directory for a given architecture . The
0001-01-01 02:30:17 +02:30
architecture defaults to \ " Windows NT x86 \" . " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
/* Other stuff - this should really go into a samba config module
but for the moment let ' s leave it here . */
0001-01-01 02:30:17 +02:30
{ " setup_logging " , ( PyCFunction ) py_setup_logging ,
0001-01-01 02:30:17 +02:30
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 :
> > > spoolss . setup_logging ( interactive = 1 ) " },
{ " get_debuglevel " , ( PyCFunction ) get_debuglevel ,
METH_VARARGS ,
" Set the current debug level.
Example :
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
> > > spoolss . get_debuglevel ( )
0 " },
{ " set_debuglevel " , ( PyCFunction ) set_debuglevel ,
METH_VARARGS ,
" Get the current debug level.
Example :
0001-01-01 02:30:17 +02:30
> > > spoolss . set_debuglevel ( 10 ) " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
/* Printer driver routines */
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " addprinterdriver " , ( PyCFunction ) spoolss_addprinterdriver ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Add a printer driver. " } ,
0001-01-01 02:30:17 +02:30
{ " addprinterdriverex " , ( PyCFunction ) spoolss_addprinterdriverex ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Add a printer driver. " } ,
0001-01-01 02:30:17 +02:30
{ " deleteprinterdriver " , ( PyCFunction ) spoolss_deleteprinterdriver ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Delete a printer driver. " } ,
0001-01-01 02:30:17 +02:30
{ " deleteprinterdriverex " , ( PyCFunction ) spoolss_deleteprinterdriverex ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Delete a printer driver. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ NULL }
} ;
/* Methods attached to a spoolss handle object */
static PyMethodDef spoolss_hnd_methods [ ] = {
/* Printer info */
0001-01-01 02:30:17 +02:30
{ " getprinter " , ( PyCFunction ) spoolss_hnd_getprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Get printer information.
0001-01-01 02:30:17 +02:30
Return a dictionary of print information . The info level defaults to 1.
Example :
> > > hnd . getprinter ( )
{ ' comment ' : ' i am a comment ' , ' printer_name ' : ' \ \ \ \ NPSD - PDC2 \ \ meanie ' ,
' description ' : ' \ \ \ \ NPSD - PDC2 \ \ meanie , Generic / Text Only , i am a location ' ,
0001-01-01 02:30:17 +02:30
' flags ' : 8388608 } " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " setprinter " , ( PyCFunction ) spoolss_hnd_setprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Set printer information. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
/* Printer drivers */
0001-01-01 02:30:17 +02:30
{ " getprinterdriver " , ( PyCFunction ) spoolss_hnd_getprinterdriver ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Return printer driver information.
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
Return a dictionary of printer driver information for the printer driver
bound to this printer . " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
/* Forms */
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " enumforms " , ( PyCFunction ) spoolss_hnd_enumforms ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Enumerate supported forms.
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
Return a list of forms supported by this printer or print server . " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " setform " , ( PyCFunction ) spoolss_hnd_setform ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Set form data.
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
Set the form given by the dictionary argument . " },
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " addform " , ( PyCFunction ) spoolss_hnd_addform ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Add a new form. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " getform " , ( PyCFunction ) spoolss_hnd_getform ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Get form properties. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " deleteform " , ( PyCFunction ) spoolss_hnd_deleteform ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Delete a form. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
/* Job related methods */
0001-01-01 02:30:17 +02:30
{ " enumjobs " , ( PyCFunction ) spoolss_hnd_enumjobs ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Enumerate jobs. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " setjob " , ( PyCFunction ) spoolss_hnd_setjob ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Set job information. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " getjob " , ( PyCFunction ) spoolss_hnd_getjob ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
0001-01-01 02:30:17 +02:30
" Get job information. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " startpageprinter " , ( PyCFunction ) spoolss_hnd_startpageprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Notify spooler that a page is about to be printed. " } ,
0001-01-01 02:30:17 +02:30
{ " endpageprinter " , ( PyCFunction ) spoolss_hnd_endpageprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Notify spooler that a page is about to be printed. " } ,
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
{ " startdocprinter " , ( PyCFunction ) spoolss_hnd_startdocprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Notify spooler that a document is about to be printed. " } ,
0001-01-01 02:30:17 +02:30
{ " enddocprinter " , ( PyCFunction ) spoolss_hnd_enddocprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Notify spooler that a document is about to be printed. " } ,
0001-01-01 02:30:17 +02:30
{ " writeprinter " , ( PyCFunction ) spoolss_hnd_writeprinter ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Write job data to a printer. " } ,
0001-01-01 02:30:17 +02:30
{ " addjob " , ( PyCFunction ) spoolss_hnd_addjob ,
METH_VARARGS | METH_KEYWORDS ,
" Add a job to the list of print jobs. " } ,
0001-01-01 02:30:17 +02:30
/* Printer data */
0001-01-01 02:30:17 +02:30
{ " getprinterdata " , ( PyCFunction ) spoolss_hnd_getprinterdata ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Get printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " setprinterdata " , ( PyCFunction ) spoolss_hnd_setprinterdata ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Set printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " enumprinterdata " , ( PyCFunction ) spoolss_hnd_enumprinterdata ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Enumerate printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " deleteprinterdata " , ( PyCFunction ) spoolss_hnd_deleteprinterdata ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Delete printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " getprinterdataex " , ( PyCFunction ) spoolss_hnd_getprinterdataex ,
METH_VARARGS | METH_KEYWORDS ,
" Get printer data. " } ,
{ " setprinterdataex " , ( PyCFunction ) spoolss_hnd_setprinterdataex ,
METH_VARARGS | METH_KEYWORDS ,
" Set printer data. " } ,
{ " enumprinterdataex " , ( PyCFunction ) spoolss_hnd_enumprinterdataex ,
METH_VARARGS | METH_KEYWORDS ,
" Enumerate printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " deleteprinterdataex " , ( PyCFunction ) spoolss_hnd_deleteprinterdataex ,
0001-01-01 02:30:17 +02:30
METH_VARARGS | METH_KEYWORDS ,
" Delete printer data. " } ,
0001-01-01 02:30:17 +02:30
{ " enumprinterkey " , ( PyCFunction ) spoolss_hnd_enumprinterkey ,
METH_VARARGS | METH_KEYWORDS ,
" Enumerate printer key. " } ,
#if 0
/* Not implemented */
{ " deleteprinterkey " , ( PyCFunction ) spoolss_hnd_deleteprinterkey ,
METH_VARARGS | METH_KEYWORDS ,
" Delete printer key. " } ,
# endif
0001-01-01 02:30:17 +02:30
{ NULL }
0001-01-01 02:30:17 +02:30
} ;
static void py_policy_hnd_dealloc ( PyObject * self )
{
0001-01-01 02:30:17 +02:30
spoolss_policy_hnd_object * hnd ;
/* Close down policy handle and free talloc context */
hnd = ( spoolss_policy_hnd_object * ) self ;
cli_shutdown ( hnd - > cli ) ;
talloc_destroy ( hnd - > mem_ctx ) ;
0001-01-01 02:30:17 +02:30
PyObject_Del ( self ) ;
}
static PyObject * py_policy_hnd_getattr ( PyObject * self , char * attrname )
{
return Py_FindMethod ( spoolss_hnd_methods , self , attrname ) ;
}
0001-01-01 02:30:17 +02:30
static char spoolss_type_doc [ ] =
" Python wrapper for Windows NT SPOOLSS rpc pipe. " ;
0001-01-01 02:30:17 +02:30
PyTypeObject spoolss_policy_hnd_type = {
PyObject_HEAD_INIT ( NULL )
0 ,
0001-01-01 02:30:17 +02:30
" spoolss.hnd " ,
0001-01-01 02:30:17 +02:30
sizeof ( spoolss_policy_hnd_object ) ,
0 ,
0001-01-01 02:30:17 +02:30
py_policy_hnd_dealloc , /* tp_dealloc*/
0 , /* tp_print*/
py_policy_hnd_getattr , /* tp_getattr*/
0 , /* tp_setattr*/
0 , /* tp_compare*/
0 , /* tp_repr*/
0 , /* tp_as_number*/
0 , /* tp_as_sequence*/
0 , /* tp_as_mapping*/
0 , /* tp_hash */
0 , /* tp_call */
0 , /* tp_str */
0 , /* tp_getattro */
0 , /* tp_setattro */
0 , /* tp_as_buffer*/
Py_TPFLAGS_DEFAULT , /* tp_flags */
spoolss_type_doc , /* tp_doc */
0001-01-01 02:30:17 +02:30
} ;
/* Initialise constants */
0001-01-01 02:30:17 +02:30
static struct const_vals {
0001-01-01 02:30:17 +02:30
char * name ;
uint32 value ;
0001-01-01 02:30:17 +02:30
} module_const_vals [ ] = {
0001-01-01 02:30:17 +02:30
/* Access permissions */
{ " MAXIMUM_ALLOWED_ACCESS " , MAXIMUM_ALLOWED_ACCESS } ,
{ " SERVER_ALL_ACCESS " , SERVER_ALL_ACCESS } ,
0001-01-01 02:30:17 +02:30
{ " SERVER_READ " , SERVER_READ } ,
{ " SERVER_WRITE " , SERVER_WRITE } ,
{ " SERVER_EXECUTE " , SERVER_EXECUTE } ,
{ " SERVER_ACCESS_ADMINISTER " , SERVER_ACCESS_ADMINISTER } ,
{ " SERVER_ACCESS_ENUMERATE " , SERVER_ACCESS_ENUMERATE } ,
0001-01-01 02:30:17 +02:30
{ " PRINTER_ALL_ACCESS " , PRINTER_ALL_ACCESS } ,
0001-01-01 02:30:17 +02:30
{ " PRINTER_READ " , PRINTER_READ } ,
{ " PRINTER_WRITE " , PRINTER_WRITE } ,
{ " PRINTER_EXECUTE " , PRINTER_EXECUTE } ,
{ " PRINTER_ACCESS_ADMINISTER " , PRINTER_ACCESS_ADMINISTER } ,
{ " PRINTER_ACCESS_USE " , PRINTER_ACCESS_USE } ,
{ " JOB_ACCESS_ADMINISTER " , JOB_ACCESS_ADMINISTER } ,
{ " JOB_ALL_ACCESS " , JOB_ALL_ACCESS } ,
{ " JOB_READ " , JOB_READ } ,
{ " JOB_WRITE " , JOB_WRITE } ,
{ " JOB_EXECUTE " , JOB_EXECUTE } ,
{ " STANDARD_RIGHTS_ALL_ACCESS " , STANDARD_RIGHTS_ALL_ACCESS } ,
{ " STANDARD_RIGHTS_EXECUTE_ACCESS " , STANDARD_RIGHTS_EXECUTE_ACCESS } ,
{ " STANDARD_RIGHTS_READ_ACCESS " , STANDARD_RIGHTS_READ_ACCESS } ,
{ " STANDARD_RIGHTS_REQUIRED_ACCESS " , STANDARD_RIGHTS_REQUIRED_ACCESS } ,
{ " STANDARD_RIGHTS_WRITE_ACCESS " , STANDARD_RIGHTS_WRITE_ACCESS } ,
0001-01-01 02:30:17 +02:30
/* Printer enumeration flags */
{ " PRINTER_ENUM_DEFAULT " , PRINTER_ENUM_DEFAULT } ,
{ " PRINTER_ENUM_LOCAL " , PRINTER_ENUM_LOCAL } ,
{ " PRINTER_ENUM_CONNECTIONS " , PRINTER_ENUM_CONNECTIONS } ,
{ " PRINTER_ENUM_FAVORITE " , PRINTER_ENUM_FAVORITE } ,
{ " PRINTER_ENUM_NAME " , PRINTER_ENUM_NAME } ,
{ " PRINTER_ENUM_REMOTE " , PRINTER_ENUM_REMOTE } ,
{ " PRINTER_ENUM_SHARED " , PRINTER_ENUM_SHARED } ,
{ " PRINTER_ENUM_NETWORK " , PRINTER_ENUM_NETWORK } ,
0001-01-01 02:30:17 +02:30
/* Form types */
{ " FORM_USER " , FORM_USER } ,
{ " FORM_BUILTIN " , FORM_BUILTIN } ,
{ " FORM_PRINTER " , FORM_PRINTER } ,
/* WERRORs */
{ " WERR_OK " , 0 } ,
{ " WERR_BADFILE " , 2 } ,
{ " WERR_ACCESS_DENIED " , 5 } ,
{ " WERR_BADFID " , 6 } ,
{ " WERR_BADFUNC " , 1 } ,
{ " WERR_INSUFFICIENT_BUFFER " , 122 } ,
{ " WERR_NO_SUCH_SHARE " , 67 } ,
{ " WERR_ALREADY_EXISTS " , 80 } ,
{ " WERR_INVALID_PARAM " , 87 } ,
{ " WERR_NOT_SUPPORTED " , 50 } ,
{ " WERR_BAD_PASSWORD " , 86 } ,
{ " WERR_NOMEM " , 8 } ,
{ " WERR_INVALID_NAME " , 123 } ,
{ " WERR_UNKNOWN_LEVEL " , 124 } ,
{ " WERR_OBJECT_PATH_INVALID " , 161 } ,
{ " WERR_NO_MORE_ITEMS " , 259 } ,
{ " WERR_MORE_DATA " , 234 } ,
{ " WERR_UNKNOWN_PRINTER_DRIVER " , 1797 } ,
{ " WERR_INVALID_PRINTER_NAME " , 1801 } ,
{ " WERR_PRINTER_ALREADY_EXISTS " , 1802 } ,
{ " WERR_INVALID_DATATYPE " , 1804 } ,
{ " WERR_INVALID_ENVIRONMENT " , 1805 } ,
0001-01-01 02:30:17 +02:30
{ " WERR_INVALID_FORM_NAME " , 1902 } ,
0001-01-01 02:30:17 +02:30
{ " WERR_INVALID_FORM_SIZE " , 1903 } ,
{ " WERR_BUF_TOO_SMALL " , 2123 } ,
{ " WERR_JOB_NOT_FOUND " , 2151 } ,
{ " WERR_DEST_NOT_FOUND " , 2152 } ,
{ " WERR_NOT_LOCAL_DOMAIN " , 2320 } ,
{ " WERR_PRINTER_DRIVER_IN_USE " , 3001 } ,
{ " WERR_STATUS_MORE_ENTRIES " , 0x0105 } ,
0001-01-01 02:30:17 +02:30
/* Job control constants */
{ " JOB_CONTROL_PAUSE " , JOB_CONTROL_PAUSE } ,
{ " JOB_CONTROL_RESUME " , JOB_CONTROL_RESUME } ,
{ " JOB_CONTROL_CANCEL " , JOB_CONTROL_CANCEL } ,
{ " JOB_CONTROL_RESTART " , JOB_CONTROL_RESTART } ,
{ " JOB_CONTROL_DELETE " , JOB_CONTROL_DELETE } ,
0001-01-01 02:30:17 +02:30
{ NULL } ,
} ;
static void const_init ( PyObject * dict )
{
0001-01-01 02:30:17 +02:30
struct const_vals * tmp ;
0001-01-01 02:30:17 +02:30
PyObject * obj ;
0001-01-01 02:30:17 +02:30
for ( tmp = module_const_vals ; tmp - > name ; tmp + + ) {
0001-01-01 02:30:17 +02:30
obj = PyInt_FromLong ( tmp - > value ) ;
PyDict_SetItemString ( dict , tmp - > name , obj ) ;
0001-01-01 02:30:17 +02:30
Py_DECREF ( obj ) ;
0001-01-01 02:30:17 +02:30
}
}
/* Module initialisation */
void initspoolss ( void )
{
PyObject * module , * dict ;
/* Initialise module */
module = Py_InitModule ( " spoolss " , spoolss_methods ) ;
dict = PyModule_GetDict ( module ) ;
0001-01-01 02:30:17 +02:30
/* Exceptions we can raise */
0001-01-01 02:30:17 +02:30
spoolss_error = PyErr_NewException ( " spoolss.error " , NULL , NULL ) ;
PyDict_SetItemString ( dict , " error " , spoolss_error ) ;
spoolss_werror = PyErr_NewException ( " spoolss.werror " , NULL , NULL ) ;
PyDict_SetItemString ( dict , " werror " , spoolss_werror ) ;
/* Initialise policy handle object */
spoolss_policy_hnd_type . ob_type = & PyType_Type ;
0001-01-01 02:30:17 +02:30
PyDict_SetItemString ( dict , " spoolss.hnd " ,
( PyObject * ) & spoolss_policy_hnd_type ) ;
0001-01-01 02:30:17 +02:30
/* Initialise constants */
const_init ( dict ) ;
/* Do samba initialisation */
py_samba_init ( ) ;
}