diff options
author | Günther Deschner <gd@samba.org> | 2004-10-13 01:40:35 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:52:57 -0500 |
commit | 3eff1f48d5806aeb0347f13c50e7620bbdc04dd5 (patch) | |
tree | 8720d02fa53dd9e11cd4d461264757e2785c9730 /source3/utils/net_rpc.c | |
parent | e66c8217f8c8944fde00e3cb944d7d27065c40a9 (diff) | |
download | samba-3eff1f48d5806aeb0347f13c50e7620bbdc04dd5.tar.gz samba-3eff1f48d5806aeb0347f13c50e7620bbdc04dd5.tar.bz2 samba-3eff1f48d5806aeb0347f13c50e7620bbdc04dd5.zip |
r2942: Add client-side support of triggering ads printer publishing over msrpc
setprinter calls inside the net-tool.
This is usefull to mimic the same queries a windows-client does. At
least win2k returns WERR_IO_PENDING when printer is published via
setprinter, samba returns WERR_OK but this does not hurt.
Guenther
(This used to be commit 69b745fb98b8054d1f52e8a3fe3b933fb04336db)
Diffstat (limited to 'source3/utils/net_rpc.c')
-rw-r--r-- | source3/utils/net_rpc.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index 018731afda..295c8c5853 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -3,6 +3,7 @@ Distributed SMB/CIFS Server Management Utility Copyright (C) 2001 Andrew Bartlett (abartlet@samba.org) Copyright (C) 2002 Jim McDonough (jmcd@us.ibm.com) + Copyright (C) 2004 Guenther Deschner (gd@samba.org) 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 @@ -5045,6 +5046,106 @@ static int rpc_printer_driver_list(int argc, const char **argv) } /** + * Publish printer in ADS via MSRPC + * + * @param argc Standard main() style argc + * @param argv Standard main() style argv. Initial components are already + * stripped + * + * @return A shell status integer (0 for success) + **/ +static int rpc_printer_publish_publish(int argc, const char **argv) +{ + + return run_rpc_command(NULL, PI_SPOOLSS, 0, + rpc_printer_publish_publish_internals, + argc, argv); +} + +/** + * Update printer in ADS via MSRPC + * + * @param argc Standard main() style argc + * @param argv Standard main() style argv. Initial components are already + * stripped + * + * @return A shell status integer (0 for success) + **/ +static int rpc_printer_publish_update(int argc, const char **argv) +{ + + return run_rpc_command(NULL, PI_SPOOLSS, 0, + rpc_printer_publish_update_internals, + argc, argv); +} + +/** + * UnPublish printer in ADS via MSRPC + * + * @param argc Standard main() style argc + * @param argv Standard main() style argv. Initial components are already + * stripped + * + * @return A shell status integer (0 for success) + **/ +static int rpc_printer_publish_unpublish(int argc, const char **argv) +{ + + return run_rpc_command(NULL, PI_SPOOLSS, 0, + rpc_printer_publish_unpublish_internals, + argc, argv); +} + +/** + * List published printers via MSRPC + * + * @param argc Standard main() style argc + * @param argv Standard main() style argv. Initial components are already + * stripped + * + * @return A shell status integer (0 for success) + **/ +static int rpc_printer_publish_list(int argc, const char **argv) +{ + + return run_rpc_command(NULL, PI_SPOOLSS, 0, + rpc_printer_publish_list_internals, + argc, argv); +} + + +/** + * Publish printer in ADS + * + * @param argc Standard main() style argc + * @param argv Standard main() style argv. Initial components are already + * stripped + * + * @return A shell status integer (0 for success) + **/ +static int rpc_printer_publish(int argc, const char **argv) +{ + + struct functable func[] = { + {"publish", rpc_printer_publish_publish}, + {"update", rpc_printer_publish_update}, + {"unpublish", rpc_printer_publish_unpublish}, + {"list", rpc_printer_publish_list}, + {"help", rpc_printer_usage}, + {NULL, NULL} + }; + + if (argc == 0) + return run_rpc_command(NULL, PI_SPOOLSS, 0, + rpc_printer_publish_list_internals, + argc, argv); + + return net_run_function(argc, argv, func, rpc_printer_usage); + +} + + +/** * Display rpc printer help page. * @param argc Standard main() style argc * @param argv Standard main() style argv. Initial components are already @@ -5067,6 +5168,7 @@ int net_rpc_printer(int argc, const char **argv) {"list", rpc_printer_list}, {"migrate", rpc_printer_migrate}, {"driver", rpc_printer_driver_list}, + {"publish", rpc_printer_publish}, {NULL, NULL} }; |