diff options
Diffstat (limited to 'source3/rpcclient')
-rw-r--r-- | source3/rpcclient/cmd_spoolss.c | 22 | ||||
-rw-r--r-- | source3/rpcclient/display_spool.c | 68 | ||||
-rw-r--r-- | source3/rpcclient/spoolss_cmds.c | 6 |
3 files changed, 96 insertions, 0 deletions
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 9b4da4f1af..2f338cdb22 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -98,6 +98,28 @@ uint32 cmd_spoolss_enum_printers(struct client_info *info, int argc, char *argv[ /**************************************************************************** nt spoolss query ****************************************************************************/ +uint32 cmd_spoolss_enum_ports(struct client_info *info, int argc, char *argv[]) +{ + PORT_INFO_CTR ctr; + + uint32 level = 2; + + fstring srv_name; + fstrcpy(srv_name, "\\\\"); + fstrcat(srv_name, info->dest_host); + strupper(srv_name); + + if (msrpc_spoolss_enum_ports(srv_name, level, &ctr)) + DEBUG(5,("cmd_spoolss_enum_printer: query succeeded\n")); + else + report(out_hnd, "FAILED\n"); + + return NT_STATUS_NOPROBLEMO; +} + +/**************************************************************************** +nt spoolss query +****************************************************************************/ uint32 cmd_spoolss_enum_printerdata(struct client_info *info, int argc, char *argv[]) { fstring srv_name; diff --git a/source3/rpcclient/display_spool.c b/source3/rpcclient/display_spool.c index 713b70ccbf..f2e9deccbd 100644 --- a/source3/rpcclient/display_spool.c +++ b/source3/rpcclient/display_spool.c @@ -296,6 +296,74 @@ void display_printer_info_ctr(FILE *out_hnd, enum action_type action, uint32 lev } /**************************************************************************** +connection info level 3 container display function +****************************************************************************/ +static void display_port_info_2_ctr(FILE *out_hnd, enum action_type action, + uint32 count, PORT_INFO_CTR *ctr) +{ + uint32 i = 0; + switch (action) + { + case ACTION_HEADER: + report(out_hnd, "Port Info Level 2:\n"); + break; + case ACTION_ENUMERATE: + for (i=0; i<count; i++) + display_port_info_2(out_hnd, action, &ctr->port.info_2[i]); + break; + case ACTION_FOOTER: + report(out_hnd, "\n"); + break; + } +} + +/**************************************************************************** +connection info container display function +****************************************************************************/ +void display_port_info_ctr(FILE *out_hnd, enum action_type action, uint32 level, + uint32 count, PORT_INFO_CTR *ctr) +{ + switch (level) { + case 2: + display_port_info_2_ctr(out_hnd, action, count, ctr); + break; + default: + report(out_hnd, "display_port_info_ctr: Unknown Info Level\n"); + break; + } +} + + +/**************************************************************************** +connection info container display function +****************************************************************************/ +void display_port_info_2(FILE *out_hnd, enum action_type action, PORT_INFO_2 *i2) +{ + fstring buffer; + + switch (action) + { + case ACTION_HEADER: + report(out_hnd, "Port:\n"); + break; + case ACTION_ENUMERATE: + unistr_to_ascii(buffer, i2->port_name.buffer, sizeof(buffer)-1); + fprintf (out_hnd, "\tPort Name:\t[%s]\n", buffer); + unistr_to_ascii(buffer, i2->monitor_name.buffer, sizeof(buffer)-1); + fprintf (out_hnd, "\tMonitor Name:\t[%s]\n", buffer); + unistr_to_ascii(buffer, i2->description.buffer, sizeof(buffer)-1); + fprintf (out_hnd, "\tDescription:\t[%s]\n", buffer); + fprintf (out_hnd, "\tPort Type:\t[%d]\n", i2->port_type); + fprintf (out_hnd, "\tReserved:\t[%d]\n", i2->reserved); + fprintf (out_hnd, "\n"); + break; + case ACTION_FOOTER: + report(out_hnd, "\n"); + break; + } +} + +/**************************************************************************** connection info container display function ****************************************************************************/ void display_printer_enumdata(FILE *out_hnd, enum action_type action, uint32 idx, diff --git a/source3/rpcclient/spoolss_cmds.c b/source3/rpcclient/spoolss_cmds.c index 1538f560f9..630d2f2aa5 100644 --- a/source3/rpcclient/spoolss_cmds.c +++ b/source3/rpcclient/spoolss_cmds.c @@ -31,10 +31,16 @@ static const struct command_set spl_commands[] = { * printer testing */ + {"SPOOLSS", NULL, NULL, {NULL, NULL}}, + {"spoolenum", cmd_spoolss_enum_printers, "Enumerate Printers", {NULL, NULL}}, + {"spoolenumports", cmd_spoolss_enum_ports, + "Enumerate Ports", + {NULL, NULL}}, + {"spoolenumdatas", cmd_spoolss_enum_printerdata, "<printer name> Enumerate Printer datas", {NULL, NULL}}, |