From 70c698fd547c4bc19cf77693608bbb34acac40b5 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 1 Nov 2009 20:21:52 +0100 Subject: s3: Do not directly reference the ndr_table_* in rpcclient --- source3/include/proto.h | 2 + source3/rpc_client/cli_pipe.c | 14 ++++ source3/rpcclient/cmd_dfs.c | 24 ++++-- source3/rpcclient/cmd_drsuapi.c | 12 ++- source3/rpcclient/cmd_dssetup.c | 5 +- source3/rpcclient/cmd_echo.c | 16 +++- source3/rpcclient/cmd_epmapper.c | 6 +- source3/rpcclient/cmd_eventlog.c | 40 +++++++-- source3/rpcclient/cmd_lsarpc.c | 124 ++++++++++++++++++++------- source3/rpcclient/cmd_netlogon.c | 100 +++++++++++++++++----- source3/rpcclient/cmd_ntsvcs.c | 35 ++++++-- source3/rpcclient/cmd_samr.c | 136 ++++++++++++++++++++++-------- source3/rpcclient/cmd_shutdown.c | 13 +-- source3/rpcclient/cmd_spoolss.c | 175 +++++++++++++++++++++++++++++++-------- source3/rpcclient/cmd_srvsvc.c | 65 ++++++++++++--- source3/rpcclient/cmd_test.c | 2 +- source3/rpcclient/cmd_wkssvc.c | 20 ++++- source3/rpcclient/rpcclient.c | 73 ++++++++++------ source3/rpcclient/rpcclient.h | 3 +- 19 files changed, 662 insertions(+), 203 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index e57ffdd571..2364360d4f 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -5706,6 +5706,8 @@ bool prs_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx); bool smb_register_ndr_interface(const struct ndr_interface_table *interface); const struct ndr_interface_table *get_iface_from_syntax( const struct ndr_syntax_id *syntax); +bool ndr_syntax_from_string(const char *s, uint32_t version, + struct ndr_syntax_id *syntax); const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax); void init_rpc_hdr(RPC_HDR *hdr, enum dcerpc_pkt_type pkt_type, uint8 flags, diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index 9ff84f8b6d..bd7bf325c4 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -195,6 +195,20 @@ const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, return result; } +bool ndr_syntax_from_string(const char *s, uint32_t version, + struct ndr_syntax_id *syntax) +{ + NTSTATUS status; + status = GUID_from_string(s, &syntax->uuid); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(10, ("GUID_from_string returned %s\n", + nt_errstr(status))); + return false; + } + syntax->if_version = version; + return true; +} + /******************************************************************** Map internal value to wire value. ********************************************************************/ diff --git a/source3/rpcclient/cmd_dfs.c b/source3/rpcclient/cmd_dfs.c index d55261bea3..8fdc77215e 100644 --- a/source3/rpcclient/cmd_dfs.c +++ b/source3/rpcclient/cmd_dfs.c @@ -318,12 +318,24 @@ struct cmd_set dfs_commands[] = { { "DFS" }, - { "dfsversion", RPC_RTYPE_WERROR, NULL, cmd_dfs_version, &ndr_table_netdfs.syntax_id, NULL, "Query DFS support", "" }, - { "dfsadd", RPC_RTYPE_WERROR, NULL, cmd_dfs_add, &ndr_table_netdfs.syntax_id, NULL, "Add a DFS share", "" }, - { "dfsremove", RPC_RTYPE_WERROR, NULL, cmd_dfs_remove, &ndr_table_netdfs.syntax_id, NULL, "Remove a DFS share", "" }, - { "dfsgetinfo", RPC_RTYPE_WERROR, NULL, cmd_dfs_getinfo, &ndr_table_netdfs.syntax_id, NULL, "Query DFS share info", "" }, - { "dfsenum", RPC_RTYPE_WERROR, NULL, cmd_dfs_enum, &ndr_table_netdfs.syntax_id, NULL, "Enumerate dfs shares", "" }, - { "dfsenumex", RPC_RTYPE_WERROR, NULL, cmd_dfs_enumex, &ndr_table_netdfs.syntax_id, NULL, "Enumerate dfs shares", "" }, + { "dfsversion", RPC_RTYPE_WERROR, NULL, cmd_dfs_version, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Query DFS support", "" }, + { "dfsadd", RPC_RTYPE_WERROR, NULL, cmd_dfs_add, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Add a DFS share", "" }, + { "dfsremove", RPC_RTYPE_WERROR, NULL, cmd_dfs_remove, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Remove a DFS share", "" }, + { "dfsgetinfo", RPC_RTYPE_WERROR, NULL, cmd_dfs_getinfo, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Query DFS share info", "" }, + { "dfsenum", RPC_RTYPE_WERROR, NULL, cmd_dfs_enum, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Enumerate dfs shares", "" }, + { "dfsenumex", RPC_RTYPE_WERROR, NULL, cmd_dfs_enumex, + NDR_NETDFS_UUID, NDR_NETDFS_VERSION, NULL, + "Enumerate dfs shares", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_drsuapi.c b/source3/rpcclient/cmd_drsuapi.c index 8fbd798ed0..b760ce3c4d 100644 --- a/source3/rpcclient/cmd_drsuapi.c +++ b/source3/rpcclient/cmd_drsuapi.c @@ -566,8 +566,14 @@ static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli, struct cmd_set drsuapi_commands[] = { { "DRSUAPI" }, - { "dscracknames", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_cracknames, &ndr_table_drsuapi.syntax_id, NULL, "Crack Name", "" }, - { "dsgetdcinfo", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getdcinfo, &ndr_table_drsuapi.syntax_id, NULL, "Get Domain Controller Info", "" }, - { "dsgetncchanges", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getncchanges, &ndr_table_drsuapi.syntax_id, NULL, "Get NC Changes", "" }, + { "dscracknames", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_cracknames, + NDR_DRSUAPI_UUID, NDR_DRSUAPI_VERSION, NULL, + "Crack Name", "" }, + { "dsgetdcinfo", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getdcinfo, + NDR_DRSUAPI_UUID, NDR_DRSUAPI_VERSION, NULL, + "Get Domain Controller Info", "" }, + { "dsgetncchanges", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getncchanges, + NDR_DRSUAPI_UUID, NDR_DRSUAPI_VERSION, NULL, + "Get NC Changes", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_dssetup.c b/source3/rpcclient/cmd_dssetup.c index f2fd124967..c8332e6311 100644 --- a/source3/rpcclient/cmd_dssetup.c +++ b/source3/rpcclient/cmd_dssetup.c @@ -63,7 +63,10 @@ struct cmd_set ds_commands[] = { { "LSARPC-DS" }, - { "dsroledominfo", RPC_RTYPE_WERROR, NULL, cmd_ds_dsrole_getprimarydominfo, &ndr_table_dssetup.syntax_id, NULL, "Get Primary Domain Information", "" }, + { "dsroledominfo", RPC_RTYPE_WERROR, NULL, + cmd_ds_dsrole_getprimarydominfo, + NDR_DSSETUP_UUID, NDR_DSSETUP_VERSION, NULL, + "Get Primary Domain Information", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_echo.c b/source3/rpcclient/cmd_echo.c index d90ef3499f..846b2d6a86 100644 --- a/source3/rpcclient/cmd_echo.c +++ b/source3/rpcclient/cmd_echo.c @@ -176,9 +176,17 @@ struct cmd_set echo_commands[] = { { "ECHO" }, - { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one, NULL, &ndr_table_rpcecho.syntax_id, NULL, "Add one to a number", "" }, - { "echodata", RPC_RTYPE_NTSTATUS, cmd_echo_data, NULL, &ndr_table_rpcecho.syntax_id, NULL, "Echo data", "" }, - { "sinkdata", RPC_RTYPE_NTSTATUS, cmd_echo_sink_data, NULL, &ndr_table_rpcecho.syntax_id, NULL, "Sink data", "" }, - { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, &ndr_table_rpcecho.syntax_id, NULL, "Source data", "" }, + { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one, NULL, + NDR_RPCECHO_UUID, NDR_RPCECHO_VERSION, NULL, + "Add one to a number", "" }, + { "echodata", RPC_RTYPE_NTSTATUS, cmd_echo_data, NULL, + NDR_RPCECHO_UUID, NDR_RPCECHO_VERSION, NULL, + "Echo data", "" }, + { "sinkdata", RPC_RTYPE_NTSTATUS, cmd_echo_sink_data, NULL, + NDR_RPCECHO_UUID, NDR_RPCECHO_VERSION, NULL, + "Sink data", "" }, + { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, + NDR_RPCECHO_UUID, NDR_RPCECHO_VERSION, NULL, + "Source data", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_epmapper.c b/source3/rpcclient/cmd_epmapper.c index cb334165f2..89462d7a52 100644 --- a/source3/rpcclient/cmd_epmapper.c +++ b/source3/rpcclient/cmd_epmapper.c @@ -126,8 +126,10 @@ struct cmd_set epmapper_commands[] = { { "EPMAPPER" }, { "epmmap", RPC_RTYPE_NTSTATUS, cmd_epmapper_map, NULL, - &ndr_table_epmapper.syntax_id, NULL, "Map a binding", "" }, + NDR_EPMAPPER_UUID, NDR_EPMAPPER_VERSION, NULL, + "Map a binding", "" }, { "epmlookup", RPC_RTYPE_NTSTATUS, cmd_epmapper_lookup, NULL, - &ndr_table_epmapper.syntax_id, NULL, "Lookup bindings", "" }, + NDR_EPMAPPER_UUID, NDR_EPMAPPER_VERSION, NULL, + "Lookup bindings", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_eventlog.c b/source3/rpcclient/cmd_eventlog.c index d839bf4263..94e5bfd1f8 100644 --- a/source3/rpcclient/cmd_eventlog.c +++ b/source3/rpcclient/cmd_eventlog.c @@ -491,13 +491,37 @@ static NTSTATUS cmd_eventlog_loginfo(struct rpc_pipe_client *cli, struct cmd_set eventlog_commands[] = { { "EVENTLOG" }, - { "eventlog_readlog", RPC_RTYPE_NTSTATUS, cmd_eventlog_readlog, NULL, &ndr_table_eventlog.syntax_id, NULL, "Read Eventlog", "" }, - { "eventlog_numrecord", RPC_RTYPE_NTSTATUS, cmd_eventlog_numrecords, NULL, &ndr_table_eventlog.syntax_id, NULL, "Get number of records", "" }, - { "eventlog_oldestrecord", RPC_RTYPE_NTSTATUS, cmd_eventlog_oldestrecord, NULL, &ndr_table_eventlog.syntax_id, NULL, "Get oldest record", "" }, - { "eventlog_reportevent", RPC_RTYPE_NTSTATUS, cmd_eventlog_reportevent, NULL, &ndr_table_eventlog.syntax_id, NULL, "Report event", "" }, - { "eventlog_reporteventsource", RPC_RTYPE_NTSTATUS, cmd_eventlog_reporteventsource, NULL, &ndr_table_eventlog.syntax_id, NULL, "Report event and source", "" }, - { "eventlog_registerevsource", RPC_RTYPE_NTSTATUS, cmd_eventlog_registerevsource, NULL, &ndr_table_eventlog.syntax_id, NULL, "Register event source", "" }, - { "eventlog_backuplog", RPC_RTYPE_NTSTATUS, cmd_eventlog_backuplog, NULL, &ndr_table_eventlog.syntax_id, NULL, "Backup Eventlog File", "" }, - { "eventlog_loginfo", RPC_RTYPE_NTSTATUS, cmd_eventlog_loginfo, NULL, &ndr_table_eventlog.syntax_id, NULL, "Get Eventlog Information", "" }, + { "eventlog_readlog", RPC_RTYPE_NTSTATUS, + cmd_eventlog_readlog, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Read Eventlog", "" }, + { "eventlog_numrecord", RPC_RTYPE_NTSTATUS, + cmd_eventlog_numrecords, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Get number of records", "" }, + { "eventlog_oldestrecord", RPC_RTYPE_NTSTATUS, + cmd_eventlog_oldestrecord, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Get oldest record", "" }, + { "eventlog_reportevent", RPC_RTYPE_NTSTATUS, + cmd_eventlog_reportevent, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Report event", "" }, + { "eventlog_reporteventsource", RPC_RTYPE_NTSTATUS, + cmd_eventlog_reporteventsource, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Report event and source", "" }, + { "eventlog_registerevsource", RPC_RTYPE_NTSTATUS, + cmd_eventlog_registerevsource, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Register event source", "" }, + { "eventlog_backuplog", RPC_RTYPE_NTSTATUS, + cmd_eventlog_backuplog, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Backup Eventlog File", "" }, + { "eventlog_loginfo", RPC_RTYPE_NTSTATUS, + cmd_eventlog_loginfo, NULL, + NDR_EVENTLOG_UUID, NDR_EVENTLOG_VERSION, NULL, + "Get Eventlog Information", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_lsarpc.c b/source3/rpcclient/cmd_lsarpc.c index 45868bf5a9..d86015d00c 100644 --- a/source3/rpcclient/cmd_lsarpc.c +++ b/source3/rpcclient/cmd_lsarpc.c @@ -1975,38 +1975,98 @@ struct cmd_set lsarpc_commands[] = { { "LSARPC" }, - { "lsaquery", RPC_RTYPE_NTSTATUS, cmd_lsa_query_info_policy, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query info policy", "" }, - { "lookupsids", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert SIDs to names", "" }, - { "lookupsids3", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids3, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert SIDs to names", "" }, - { "lookupnames", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert names to SIDs", "" }, - { "lookupnames4", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names4, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert names to SIDs", "" }, - { "lookupnames_level", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names_level, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert names to SIDs", "" }, - { "enumtrust", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_trust_dom, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate trusted domains", "Usage: [preferred max number] [enum context (0)]" }, - { "enumprivs", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privilege, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate privileges", "" }, - { "getdispname", RPC_RTYPE_NTSTATUS, cmd_lsa_get_dispname, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get the privilege name", "" }, - { "lsaenumsid", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_sids, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the LSA SIDS", "" }, - { "lsacreateaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_create_account, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Create a new lsa account", "" }, - { "lsaenumprivsaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privsaccounts, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the privileges of an SID", "" }, - { "lsaenumacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_rights, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the rights of an SID", "" }, - { "lsaaddpriv", RPC_RTYPE_NTSTATUS, cmd_lsa_add_priv, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Assign a privilege to a SID", "" }, - { "lsadelpriv", RPC_RTYPE_NTSTATUS, cmd_lsa_del_priv, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Revoke a privilege from a SID", "" }, - { "lsaaddacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_add_acct_rights, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Add rights to an account", "" }, - { "lsaremoveacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_remove_acct_rights, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Remove rights from an account", "" }, - { "lsalookupprivvalue", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_priv_value, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get a privilege value given its name", "" }, - { "lsaquerysecobj", RPC_RTYPE_NTSTATUS, cmd_lsa_query_secobj, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA security object", "" }, - { "lsaquerytrustdominfo",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfo, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a SID)", "" }, - { "lsaquerytrustdominfobyname",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobyname, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a name), only works for Windows > 2k", "" }, - { "lsaquerytrustdominfobysid",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobysid, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a SID)", "" }, - { "getusername", RPC_RTYPE_NTSTATUS, cmd_lsa_get_username, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get username", "" }, - { "createsecret", RPC_RTYPE_NTSTATUS, cmd_lsa_create_secret, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Create Secret", "" }, - { "deletesecret", RPC_RTYPE_NTSTATUS, cmd_lsa_delete_secret, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Delete Secret", "" }, - { "querysecret", RPC_RTYPE_NTSTATUS, cmd_lsa_query_secret, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query Secret", "" }, - { "setsecret", RPC_RTYPE_NTSTATUS, cmd_lsa_set_secret, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Set Secret", "" }, - { "retrieveprivatedata", RPC_RTYPE_NTSTATUS, cmd_lsa_retrieve_private_data, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Retrieve Private Data", "" }, - { "storeprivatedata", RPC_RTYPE_NTSTATUS, cmd_lsa_store_private_data, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Store Private Data", "" }, - { "createtrustdom", RPC_RTYPE_NTSTATUS, cmd_lsa_create_trusted_domain, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Create Trusted Domain", "" }, - { "deletetrustdom", RPC_RTYPE_NTSTATUS, cmd_lsa_delete_trusted_domain, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Delete Trusted Domain", "" }, - + { "lsaquery", RPC_RTYPE_NTSTATUS, cmd_lsa_query_info_policy, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query info policy", "" }, + { "lookupsids", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Convert SIDs to names", "" }, + { "lookupsids3", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids3, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Convert SIDs to names", "" }, + { "lookupnames", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Convert names to SIDs", "" }, + { "lookupnames4", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names4, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Convert names to SIDs", "" }, + { "lookupnames_level", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names_level, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Convert names to SIDs", "" }, + { "enumtrust", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_trust_dom, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Enumerate trusted domains", "Usage: [preferred max number] [enum context (0)]" }, + { "enumprivs", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privilege, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Enumerate privileges", "" }, + { "getdispname", RPC_RTYPE_NTSTATUS, cmd_lsa_get_dispname, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Get the privilege name", "" }, + { "lsaenumsid", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_sids, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Enumerate the LSA SIDS", "" }, + { "lsacreateaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_create_account, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Create a new lsa account", "" }, + { "lsaenumprivsaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privsaccounts, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Enumerate the privileges of an SID", "" }, + { "lsaenumacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_rights, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Enumerate the rights of an SID", "" }, + { "lsaaddpriv", RPC_RTYPE_NTSTATUS, cmd_lsa_add_priv, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Assign a privilege to a SID", "" }, + { "lsadelpriv", RPC_RTYPE_NTSTATUS, cmd_lsa_del_priv, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Revoke a privilege from a SID", "" }, + { "lsaaddacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_add_acct_rights, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Add rights to an account", "" }, + { "lsaremoveacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_remove_acct_rights, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Remove rights from an account", "" }, + { "lsalookupprivvalue", RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_priv_value, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Get a privilege value given its name", "" }, + { "lsaquerysecobj", RPC_RTYPE_NTSTATUS, cmd_lsa_query_secobj, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query LSA security object", "" }, + { "lsaquerytrustdominfo",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfo, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query LSA trusted domains info (given a SID)", "" }, + { "lsaquerytrustdominfobyname",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobyname, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query LSA trusted domains info (given a name), only works for Windows > 2k", "" }, + { "lsaquerytrustdominfobysid",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobysid, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query LSA trusted domains info (given a SID)", "" }, + { "getusername", RPC_RTYPE_NTSTATUS, cmd_lsa_get_username, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Get username", "" }, + { "createsecret", RPC_RTYPE_NTSTATUS, cmd_lsa_create_secret, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Create Secret", "" }, + { "deletesecret", RPC_RTYPE_NTSTATUS, cmd_lsa_delete_secret, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Delete Secret", "" }, + { "querysecret", RPC_RTYPE_NTSTATUS, cmd_lsa_query_secret, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Query Secret", "" }, + { "setsecret", RPC_RTYPE_NTSTATUS, cmd_lsa_set_secret, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Set Secret", "" }, + { "retrieveprivatedata", RPC_RTYPE_NTSTATUS, cmd_lsa_retrieve_private_data, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Retrieve Private Data", "" }, + { "storeprivatedata", RPC_RTYPE_NTSTATUS, cmd_lsa_store_private_data, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Store Private Data", "" }, + { "createtrustdom", RPC_RTYPE_NTSTATUS, cmd_lsa_create_trusted_domain, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, "Create Trusted Domain", "" }, + { "deletetrustdom", RPC_RTYPE_NTSTATUS, cmd_lsa_delete_trusted_domain, + NULL, NDR_LSARPC_UUID, NDR_LSARPC_VERSION, NULL, + "Delete Trusted Domain", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c index 2fbadf2a75..736668f5f9 100644 --- a/source3/rpcclient/cmd_netlogon.c +++ b/source3/rpcclient/cmd_netlogon.c @@ -1156,28 +1156,84 @@ struct cmd_set netlogon_commands[] = { { "NETLOGON" }, - { "logonctrl2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl2, &ndr_table_netlogon.syntax_id, NULL, "Logon Control 2", "" }, - { "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name", "" }, - { "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted PDC name", "" }, - { "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name", "" }, - { "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name", "" }, - { "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex2, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name", "" }, - { "dsr_getsitename", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getsitename, &ndr_table_netlogon.syntax_id, NULL, "Get sitename", "" }, - { "dsr_getforesttrustinfo", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getforesttrustinfo, &ndr_table_netlogon.syntax_id, NULL, "Get Forest Trust Info", "" }, - { "logonctrl", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl, &ndr_table_netlogon.syntax_id, NULL, "Logon Control", "" }, - { "samsync", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_sync, NULL, &ndr_table_netlogon.syntax_id, NULL, "Sam Synchronisation", "" }, - { "samdeltas", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_deltas, NULL, &ndr_table_netlogon.syntax_id, NULL, "Query Sam Deltas", "" }, - { "samlogon", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_logon, NULL, &ndr_table_netlogon.syntax_id, NULL, "Sam Logon", "" }, - { "change_trust_pw", RPC_RTYPE_NTSTATUS, cmd_netlogon_change_trust_pw, NULL, &ndr_table_netlogon.syntax_id, NULL, "Change Trust Account Password", "" }, - { "gettrustrid", RPC_RTYPE_WERROR, NULL, cmd_netlogon_gettrustrid, &ndr_table_netlogon.syntax_id, NULL, "Get trust rid", "" }, - { "dsr_enumtrustdom", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains", "" }, - { "dsenumdomtrusts", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate all trusted domains in an AD forest", "" }, - { "deregisterdnsrecords", RPC_RTYPE_WERROR, NULL, cmd_netlogon_deregisterdnsrecords, &ndr_table_netlogon.syntax_id, NULL, "Deregister DNS records", "" }, - { "netrenumtrusteddomains", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomains, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains", "" }, - { "netrenumtrusteddomainsex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomainsex, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains", "" }, - { "getdcsitecoverage", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcsitecoverage, &ndr_table_netlogon.syntax_id, NULL, "Get the Site-Coverage from a DC", "" }, - { "database_redo", RPC_RTYPE_NTSTATUS, cmd_netlogon_database_redo, NULL, &ndr_table_netlogon.syntax_id, NULL, "Replicate single object from a DC", "" }, - { "capabilities", RPC_RTYPE_NTSTATUS, cmd_netlogon_capabilities, NULL, &ndr_table_netlogon.syntax_id, NULL, "Return Capabilities", "" }, + { "logonctrl2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl2, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Logon Control 2", "" }, + { "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trusted DC name", "" }, + { "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trusted PDC name", "" }, + { "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trusted DC name", "" }, + { "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_getdcnameex, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trusted DC name", "" }, + { "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_getdcnameex2, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trusted DC name", "" }, + { "dsr_getsitename", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_getsitename, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get sitename", "" }, + { "dsr_getforesttrustinfo", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_getforesttrustinfo, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get Forest Trust Info", "" }, + { "logonctrl", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Logon Control", "" }, + { "samsync", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_sync, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Sam Synchronisation", "" }, + { "samdeltas", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_deltas, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Query Sam Deltas", "" }, + { "samlogon", RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_logon, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Sam Logon", "" }, + { "change_trust_pw", RPC_RTYPE_NTSTATUS, + cmd_netlogon_change_trust_pw, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Change Trust Account Password", "" }, + { "gettrustrid", RPC_RTYPE_WERROR, NULL, cmd_netlogon_gettrustrid, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get trust rid", "" }, + { "dsr_enumtrustdom", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_enumtrustdom, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Enumerate trusted domains", "" }, + { "dsenumdomtrusts", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_dsr_enumtrustdom, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Enumerate all trusted domains in an AD forest", "" }, + { "deregisterdnsrecords", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_deregisterdnsrecords, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Deregister DNS records", "" }, + { "netrenumtrusteddomains", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_enumtrusteddomains, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Enumerate trusted domains", "" }, + { "netrenumtrusteddomainsex", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_enumtrusteddomainsex, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Enumerate trusted domains", "" }, + { "getdcsitecoverage", RPC_RTYPE_WERROR, NULL, + cmd_netlogon_getdcsitecoverage, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Get the Site-Coverage from a DC", "" }, + { "database_redo", RPC_RTYPE_NTSTATUS, + cmd_netlogon_database_redo, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Replicate single object from a DC", "" }, + { "capabilities", RPC_RTYPE_NTSTATUS, cmd_netlogon_capabilities, NULL, + NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION, NULL, + "Return Capabilities", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_ntsvcs.c b/source3/rpcclient/cmd_ntsvcs.c index a345cdc8bf..88018258df 100644 --- a/source3/rpcclient/cmd_ntsvcs.c +++ b/source3/rpcclient/cmd_ntsvcs.c @@ -275,12 +275,33 @@ static WERROR cmd_ntsvcs_get_dev_list(struct rpc_pipe_client *cli, struct cmd_set ntsvcs_commands[] = { { "NTSVCS" }, - { "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_version, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS version", "" }, - { "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_validate_dev_inst, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device instance", "" }, - { "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_hw_prof_flags, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof flags", "" }, - { "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_hw_prof_info, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof info", "" }, - { "ntsvcs_getdevregprop", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_reg_prop, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device registry property", "" }, - { "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_list_size, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device list size", "" }, - { "ntsvcs_getdevlist", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_list, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device list", "" }, + { "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_get_version, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS version", "" }, + { "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_validate_dev_inst, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS device instance", "" }, + { "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_hw_prof_flags, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS HW prof flags", "" }, + { "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_get_hw_prof_info, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS HW prof info", "" }, + { "ntsvcs_getdevregprop", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_get_dev_reg_prop, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS device registry property", "" }, + { "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_get_dev_list_size, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS device list size", "" }, + { "ntsvcs_getdevlist", RPC_RTYPE_WERROR, NULL, + cmd_ntsvcs_get_dev_list, + NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL, + "Query NTSVCS device list", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_samr.c b/source3/rpcclient/cmd_samr.c index e52411f8f7..f1a04efe17 100644 --- a/source3/rpcclient/cmd_samr.c +++ b/source3/rpcclient/cmd_samr.c @@ -2916,40 +2916,106 @@ struct cmd_set samr_commands[] = { { "SAMR" }, - { "queryuser", RPC_RTYPE_NTSTATUS, cmd_samr_query_user, NULL, &ndr_table_samr.syntax_id, NULL, "Query user info", "" }, - { "querygroup", RPC_RTYPE_NTSTATUS, cmd_samr_query_group, NULL, &ndr_table_samr.syntax_id, NULL, "Query group info", "" }, - { "queryusergroups", RPC_RTYPE_NTSTATUS, cmd_samr_query_usergroups, NULL, &ndr_table_samr.syntax_id, NULL, "Query user groups", "" }, - { "queryuseraliases", RPC_RTYPE_NTSTATUS, cmd_samr_query_useraliases, NULL, &ndr_table_samr.syntax_id, NULL, "Query user aliases", "" }, - { "querygroupmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_groupmem, NULL, &ndr_table_samr.syntax_id, NULL, "Query group membership", "" }, - { "queryaliasmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, NULL, &ndr_table_samr.syntax_id, NULL, "Query alias membership", "" }, - { "queryaliasinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasinfo, NULL, &ndr_table_samr.syntax_id, NULL, "Query alias info", "" }, - { "deletealias", RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, NULL, &ndr_table_samr.syntax_id, NULL, "Delete an alias", "" }, - { "querydispinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, NULL, &ndr_table_samr.syntax_id, NULL, "Query display info", "" }, - { "querydispinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, NULL, &ndr_table_samr.syntax_id, NULL, "Query display info", "" }, - { "querydispinfo3", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, NULL, &ndr_table_samr.syntax_id, NULL, "Query display info", "" }, - { "querydominfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, NULL, &ndr_table_samr.syntax_id, NULL, "Query domain info", "" }, - { "enumdomusers", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users, NULL, &ndr_table_samr.syntax_id, NULL, "Enumerate domain users", "" }, - { "enumdomgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups, NULL, &ndr_table_samr.syntax_id, NULL, "Enumerate domain groups", "" }, - { "enumalsgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups, NULL, &ndr_table_samr.syntax_id, NULL, "Enumerate alias groups", "" }, - { "enumdomains", RPC_RTYPE_NTSTATUS, cmd_samr_enum_domains, NULL, &ndr_table_samr.syntax_id, NULL, "Enumerate domains", "" }, - - { "createdomuser", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_user, NULL, &ndr_table_samr.syntax_id, NULL, "Create domain user", "" }, - { "createdomgroup", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_group, NULL, &ndr_table_samr.syntax_id, NULL, "Create domain group", "" }, - { "createdomalias", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_alias, NULL, &ndr_table_samr.syntax_id, NULL, "Create domain alias", "" }, - { "samlookupnames", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names, NULL, &ndr_table_samr.syntax_id, NULL, "Look up names", "" }, - { "samlookuprids", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids, NULL, &ndr_table_samr.syntax_id, NULL, "Look up names", "" }, - { "deletedomgroup", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_group, NULL, &ndr_table_samr.syntax_id, NULL, "Delete domain group", "" }, - { "deletedomuser", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user, NULL, &ndr_table_samr.syntax_id, NULL, "Delete domain user", "" }, - { "samquerysecobj", RPC_RTYPE_NTSTATUS, cmd_samr_query_sec_obj, NULL, &ndr_table_samr.syntax_id, NULL, "Query SAMR security object", "" }, - { "getdompwinfo", RPC_RTYPE_NTSTATUS, cmd_samr_get_dom_pwinfo, NULL, &ndr_table_samr.syntax_id, NULL, "Retrieve domain password info", "" }, - { "getusrdompwinfo", RPC_RTYPE_NTSTATUS, cmd_samr_get_usrdom_pwinfo, NULL, &ndr_table_samr.syntax_id, NULL, "Retrieve user domain password info", "" }, - - { "lookupdomain", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_domain, NULL, &ndr_table_samr.syntax_id, NULL, "Lookup Domain Name", "" }, - { "chgpasswd", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd, NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" }, - { "chgpasswd2", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd2, NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" }, - { "chgpasswd3", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd3, NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" }, - { "getdispinfoidx", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispinfo_idx, NULL, &ndr_table_samr.syntax_id, NULL, "Get Display Information Index", "" }, - { "setuserinfo", RPC_RTYPE_NTSTATUS, cmd_samr_setuserinfo, NULL, &ndr_table_samr.syntax_id, NULL, "Set user info", "" }, - { "setuserinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_setuserinfo2, NULL, &ndr_table_samr.syntax_id, NULL, "Set user info2", "" }, + { "queryuser", RPC_RTYPE_NTSTATUS, cmd_samr_query_user, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query user info", "" }, + { "querygroup", RPC_RTYPE_NTSTATUS, cmd_samr_query_group, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query group info", "" }, + { "queryusergroups", RPC_RTYPE_NTSTATUS, cmd_samr_query_usergroups, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query user groups", "" }, + { "queryuseraliases", RPC_RTYPE_NTSTATUS, cmd_samr_query_useraliases, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query user aliases", "" }, + { "querygroupmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_groupmem, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query group membership", "" }, + { "queryaliasmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query alias membership", "" }, + { "queryaliasinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasinfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query alias info", "" }, + { "deletealias", RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Delete an alias", "" }, + { "querydispinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query display info", "" }, + { "querydispinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query display info", "" }, + { "querydispinfo3", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query display info", "" }, + { "querydominfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query domain info", "" }, + { "enumdomusers", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Enumerate domain users", "" }, + { "enumdomgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Enumerate domain groups", "" }, + { "enumalsgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Enumerate alias groups", "" }, + { "enumdomains", RPC_RTYPE_NTSTATUS, cmd_samr_enum_domains, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Enumerate domains", "" }, + + { "createdomuser", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_user, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Create domain user", "" }, + { "createdomgroup", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_group, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Create domain group", "" }, + { "createdomalias", RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_alias, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Create domain alias", "" }, + { "samlookupnames", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Look up names", "" }, + { "samlookuprids", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Look up names", "" }, + { "deletedomgroup", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_group, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Delete domain group", "" }, + { "deletedomuser", RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Delete domain user", "" }, + { "samquerysecobj", RPC_RTYPE_NTSTATUS, cmd_samr_query_sec_obj, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Query SAMR security object", "" }, + { "getdompwinfo", RPC_RTYPE_NTSTATUS, cmd_samr_get_dom_pwinfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Retrieve domain password info", "" }, + { "getusrdompwinfo", RPC_RTYPE_NTSTATUS, cmd_samr_get_usrdom_pwinfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Retrieve user domain password info", "" }, + + { "lookupdomain", RPC_RTYPE_NTSTATUS, cmd_samr_lookup_domain, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Lookup Domain Name", "" }, + { "chgpasswd", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Change user password", "" }, + { "chgpasswd2", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd2, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Change user password", "" }, + { "chgpasswd3", RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd3, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Change user password", "" }, + { "getdispinfoidx", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispinfo_idx, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Get Display Information Index", "" }, + { "setuserinfo", RPC_RTYPE_NTSTATUS, cmd_samr_setuserinfo, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Set user info", "" }, + { "setuserinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_setuserinfo2, + NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, NULL, + "Set user info2", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_shutdown.c b/source3/rpcclient/cmd_shutdown.c index f79c9aad02..451c26e35a 100644 --- a/source3/rpcclient/cmd_shutdown.c +++ b/source3/rpcclient/cmd_shutdown.c @@ -107,11 +107,14 @@ struct cmd_set shutdown_commands[] = { { "SHUTDOWN" }, #if 0 - { "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, &ndr_table_initshutdown.syntax_id, "Remote Shutdown (over shutdown pipe)", - "syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force)" }, - - { "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, &ndr_table_initshutdown.syntax_id, "Abort Shutdown (over shutdown pipe)", - "syntax: shutdownabort" }, + { "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, + NDR_INITSHUTDOWN_UUID, NDR_INITSHUTDOWN_VERSION, + "Remote Shutdown (over shutdown pipe)", + "syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force)" }, + { "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, + NDR_INITSHUTDOWN_UUID, NDR_INITSHUTDOWN_VERSION, + "Abort Shutdown (over shutdown pipe)", + "syntax: shutdownabort" }, #endif { NULL } }; diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 8b1a6eac03..4c142566b3 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -3474,41 +3474,146 @@ struct cmd_set spoolss_commands[] = { { "SPOOLSS" }, - { "adddriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterdriver, &ndr_table_spoolss.syntax_id, NULL, "Add a print driver", "" }, - { "addprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterex, &ndr_table_spoolss.syntax_id, NULL, "Add a printer", "" }, - { "deldriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriver, &ndr_table_spoolss.syntax_id, NULL, "Delete a printer driver", "" }, - { "deldriverex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriverex, &ndr_table_spoolss.syntax_id, NULL, "Delete a printer driver with files", "" }, - { "enumdata", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data, &ndr_table_spoolss.syntax_id, NULL, "Enumerate printer data", "" }, - { "enumdataex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data_ex, &ndr_table_spoolss.syntax_id, NULL, "Enumerate printer data for a key", "" }, - { "enumkey", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printerkey, &ndr_table_spoolss.syntax_id, NULL, "Enumerate printer keys", "" }, - { "enumjobs", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_jobs, &ndr_table_spoolss.syntax_id, NULL, "Enumerate print jobs", "" }, - { "getjob", RPC_RTYPE_WERROR, NULL, cmd_spoolss_get_job, &ndr_table_spoolss.syntax_id, NULL, "Get print job", "" }, - { "setjob", RPC_RTYPE_WERROR, NULL, cmd_spoolss_set_job, &ndr_table_spoolss.syntax_id, NULL, "Set print job", "" }, - { "enumports", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_ports, &ndr_table_spoolss.syntax_id, NULL, "Enumerate printer ports", "" }, - { "enumdrivers", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_drivers, &ndr_table_spoolss.syntax_id, NULL, "Enumerate installed printer drivers", "" }, - { "enumprinters", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printers, &ndr_table_spoolss.syntax_id, NULL, "Enumerate printers", "" }, - { "getdata", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdata, &ndr_table_spoolss.syntax_id, NULL, "Get print driver data", "" }, - { "getdataex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdataex, &ndr_table_spoolss.syntax_id, NULL, "Get printer driver data with keyname", ""}, - { "getdriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriver, &ndr_table_spoolss.syntax_id, NULL, "Get print driver information", "" }, - { "getdriverdir", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverdir, &ndr_table_spoolss.syntax_id, NULL, "Get print driver upload directory", "" }, - { "getprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinter, &ndr_table_spoolss.syntax_id, NULL, "Get printer info", "" }, - { "openprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer_ex, &ndr_table_spoolss.syntax_id, NULL, "Open printer handle", "" }, - { "setdriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setdriver, &ndr_table_spoolss.syntax_id, NULL, "Set printer driver", "" }, - { "getprintprocdir", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprintprocdir, &ndr_table_spoolss.syntax_id, NULL, "Get print processor directory", "" }, - { "addform", RPC_RTYPE_WERROR, NULL, cmd_spoolss_addform, &ndr_table_spoolss.syntax_id, NULL, "Add form", "" }, - { "setform", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setform, &ndr_table_spoolss.syntax_id, NULL, "Set form", "" }, - { "getform", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getform, &ndr_table_spoolss.syntax_id, NULL, "Get form", "" }, - { "deleteform", RPC_RTYPE_WERROR, NULL, cmd_spoolss_deleteform, &ndr_table_spoolss.syntax_id, NULL, "Delete form", "" }, - { "enumforms", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_forms, &ndr_table_spoolss.syntax_id, NULL, "Enumerate forms", "" }, - { "setprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinter, &ndr_table_spoolss.syntax_id, NULL, "Set printer comment", "" }, - { "setprintername", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprintername, &ndr_table_spoolss.syntax_id, NULL, "Set printername", "" }, - { "setprinterdata", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinterdata, &ndr_table_spoolss.syntax_id, NULL, "Set REG_SZ printer data", "" }, - { "rffpcnex", RPC_RTYPE_WERROR, NULL, cmd_spoolss_rffpcnex, &ndr_table_spoolss.syntax_id, NULL, "Rffpcnex test", "" }, - { "printercmp", RPC_RTYPE_WERROR, NULL, cmd_spoolss_printercmp, &ndr_table_spoolss.syntax_id, NULL, "Printer comparison test", "" }, - { "enumprocs", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_procs, &ndr_table_spoolss.syntax_id, NULL, "Enumerate Print Processors", "" }, - { "enumprocdatatypes", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_proc_data_types, &ndr_table_spoolss.syntax_id, NULL, "Enumerate Print Processor Data Types", "" }, - { "enummonitors", RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_monitors, &ndr_table_spoolss.syntax_id, NULL, "Enumerate Print Monitors", "" }, - { "createprinteric", RPC_RTYPE_WERROR, NULL, cmd_spoolss_create_printer_ic, &ndr_table_spoolss.syntax_id, NULL, "Create Printer IC", "" }, + { "adddriver", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_addprinterdriver, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Add a print driver", "" }, + { "addprinter", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_addprinterex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Add a printer", "" }, + { "deldriver", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_deletedriver, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Delete a printer driver", "" }, + { "deldriverex", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_deletedriverex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Delete a printer driver with files", "" }, + { "enumdata", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_data, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate printer data", "" }, + { "enumdataex", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_data_ex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate printer data for a key", "" }, + { "enumkey", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_printerkey, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate printer keys", "" }, + { "enumjobs", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_jobs, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate print jobs", "" }, + { "getjob", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_get_job, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get print job", "" }, + { "setjob", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_set_job, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set print job", "" }, + { "enumports", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_ports, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate printer ports", "" }, + { "enumdrivers", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_drivers, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate installed printer drivers", "" }, + { "enumprinters", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_printers, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate printers", "" }, + { "getdata", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getprinterdata, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get print driver data", "" }, + { "getdataex", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getprinterdataex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get printer driver data with keyname", ""}, + { "getdriver", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getdriver, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get print driver information", "" }, + { "getdriverdir", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getdriverdir, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get print driver upload directory", "" }, + { "getprinter", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getprinter, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get printer info", "" }, + { "openprinter", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_open_printer_ex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Open printer handle", "" }, + { "setdriver", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_setdriver, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set printer driver", "" }, + { "getprintprocdir", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getprintprocdir, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get print processor directory", "" }, + { "addform", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_addform, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Add form", "" }, + { "setform", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_setform, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set form", "" }, + { "getform", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_getform, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Get form", "" }, + { "deleteform", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_deleteform, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Delete form", "" }, + { "enumforms", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_forms, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate forms", "" }, + { "setprinter", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_setprinter, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set printer comment", "" }, + { "setprintername", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_setprintername, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set printername", "" }, + { "setprinterdata", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_setprinterdata, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Set REG_SZ printer data", "" }, + { "rffpcnex", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_rffpcnex, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Rffpcnex test", "" }, + { "printercmp", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_printercmp, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Printer comparison test", "" }, + { "enumprocs", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_procs, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate Print Processors", "" }, + { "enumprocdatatypes", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_proc_data_types, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate Print Processor Data Types", "" }, + { "enummonitors", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_enum_monitors, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Enumerate Print Monitors", "" }, + { "createprinteric", RPC_RTYPE_WERROR, NULL, + cmd_spoolss_create_printer_ic, + NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, NULL, + "Create Printer IC", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 10017fa19b..bea498202a 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -873,19 +873,58 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, &ndr_table_srvsvc.syntax_id, NULL, "Server query info", "" }, - { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate shares", "" }, - { "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate all shares", "" }, - { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, &ndr_table_srvsvc.syntax_id, NULL, "Get Share Info", "" }, - { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, &ndr_table_srvsvc.syntax_id, NULL, "Set Share Info", "" }, - { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate open files", "" }, - { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, &ndr_table_srvsvc.syntax_id, NULL, "Fetch remote time of day", "" }, - { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, &ndr_table_srvsvc.syntax_id, NULL, "Validate sharename", "" }, - { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, &ndr_table_srvsvc.syntax_id, NULL, "Get File security", "" }, - { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, &ndr_table_srvsvc.syntax_id, NULL, "Delete Session", "" }, - { "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Sessions", "" }, - { "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Disks", "" }, - { "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Connections", "" }, + { "srvinfo", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_srv_query_info, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, + NULL, "Server query info", "" }, + { "netshareenum",RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_share_enum, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate shares", "" }, + { "netshareenumall",RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_share_enum_all, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate all shares", "" }, + { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_share_get_info, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Get Share Info", "" }, + { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_share_set_info, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Set Share Info", "" }, + { "netfileenum", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_file_enum, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate open files", "" }, + { "netremotetod",RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_remote_tod, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Fetch remote time of day", "" }, + { "netnamevalidate", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_name_validate, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Validate sharename", "" }, + { "netfilegetsec", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_file_get_sec, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Get File security", "" }, + { "netsessdel", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_sess_del, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Delete Session", "" }, + { "netsessenum", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_sess_enum, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate Sessions", "" }, + { "netdiskenum", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_disk_enum, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate Disks", "" }, + { "netconnenum", RPC_RTYPE_WERROR, NULL, + cmd_srvsvc_net_conn_enum, + NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, NULL, + "Enumerate Connections", "" }, { NULL } }; diff --git a/source3/rpcclient/cmd_test.c b/source3/rpcclient/cmd_test.c index 85e90a19b5..ac65a16574 100644 --- a/source3/rpcclient/cmd_test.c +++ b/source3/rpcclient/cmd_test.c @@ -69,7 +69,7 @@ struct cmd_set test_commands[] = { { "TESTING" }, { "testme", RPC_RTYPE_NTSTATUS, cmd_testme, NULL, - NULL, NULL, "Sample test", "testme" }, + NULL, 0, NULL, "Sample test", "testme" }, { NULL } }; diff --git a/source3/rpcclient/cmd_wkssvc.c b/source3/rpcclient/cmd_wkssvc.c index 7a34c450ab..fe12afd080 100644 --- a/source3/rpcclient/cmd_wkssvc.c +++ b/source3/rpcclient/cmd_wkssvc.c @@ -162,9 +162,21 @@ static WERROR cmd_wkssvc_enumeratecomputernames(struct rpc_pipe_client *cli, struct cmd_set wkssvc_commands[] = { { "WKSSVC" }, - { "wkssvc_wkstagetinfo", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_wkstagetinfo, &ndr_table_wkssvc.syntax_id, NULL, "Query WKSSVC Workstation Information", "" }, - { "wkssvc_getjoininformation", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_getjoininformation, &ndr_table_wkssvc.syntax_id, NULL, "Query WKSSVC Join Information", "" }, - { "wkssvc_messagebuffersend", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_messagebuffersend, &ndr_table_wkssvc.syntax_id, NULL, "Send WKSSVC message", "" }, - { "wkssvc_enumeratecomputernames", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_enumeratecomputernames, &ndr_table_wkssvc.syntax_id, NULL, "Enumerate WKSSVC computer names", "" }, + { "wkssvc_wkstagetinfo", RPC_RTYPE_WERROR, NULL, + cmd_wkssvc_wkstagetinfo, + NDR_WKSSVC_UUID, NDR_WKSSVC_VERSION, NULL, + "Query WKSSVC Workstation Information", "" }, + { "wkssvc_getjoininformation", RPC_RTYPE_WERROR, NULL, + cmd_wkssvc_getjoininformation, + NDR_WKSSVC_UUID, NDR_WKSSVC_VERSION, NULL, + "Query WKSSVC Join Information", "" }, + { "wkssvc_messagebuffersend", RPC_RTYPE_WERROR, NULL, + cmd_wkssvc_messagebuffersend, + NDR_WKSSVC_UUID, NDR_WKSSVC_VERSION, NULL, + "Send WKSSVC message", "" }, + { "wkssvc_enumeratecomputernames", RPC_RTYPE_WERROR, NULL, + cmd_wkssvc_enumeratecomputernames, + NDR_WKSSVC_UUID, NDR_WKSSVC_VERSION, NULL, + "Enumerate WKSSVC computer names", "" }, { NULL } }; diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index dbf7f1ff7e..e6523af089 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -536,26 +536,45 @@ static struct cmd_set rpcclient_commands[] = { { "GENERAL OPTIONS" }, - { "help", RPC_RTYPE_NTSTATUS, cmd_help, NULL, NULL, NULL, "Get help on commands", "[command]" }, - { "?", RPC_RTYPE_NTSTATUS, cmd_help, NULL, NULL, NULL, "Get help on commands", "[command]" }, - { "debuglevel", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, NULL, NULL, "Set debug level", "level" }, - { "debug", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, NULL, NULL, "Set debug level", "level" }, - { "list", RPC_RTYPE_NTSTATUS, cmd_listcommands, NULL, NULL, NULL, "List available commands on ", "pipe" }, - { "exit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, NULL, NULL, "Exit program", "" }, - { "quit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, NULL, NULL, "Exit program", "" }, - { "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL, NULL, NULL, "Force RPC pipe connections to be signed", "" }, - { "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL, NULL, NULL, "Force RPC pipe connections to be sealed", "" }, - { "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL, NULL, NULL, "Force RPC pipe connections to be sealed with 'schannel'. Assumes valid machine account to this domain controller.", "" }, - { "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL, NULL, NULL, "Force RPC pipe connections to be signed (not sealed) with 'schannel'. Assumes valid machine account to this domain controller.", "" }, - { "timeout", RPC_RTYPE_NTSTATUS, cmd_timeout, NULL, NULL, NULL, "Set timeout (in milliseonds) for RPC operations", "" }, - { "transport", RPC_RTYPE_NTSTATUS, cmd_choose_transport, NULL, NULL, NULL, "Choose ncacn transport for RPC operations", "" }, - { "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL, NULL, NULL, "Force RPC pipe connections to have no special properties", "" }, + { "help", RPC_RTYPE_NTSTATUS, cmd_help, NULL, NULL, 0, + NULL, "Get help on commands", "[command]" }, + { "?", RPC_RTYPE_NTSTATUS, cmd_help, NULL, NULL, 0, + NULL, "Get help on commands", "[command]" }, + { "debuglevel", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, NULL, 0, + NULL, "Set debug level", "level" }, + { "debug", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL, NULL, 0, + NULL, "Set debug level", "level" }, + { "list", RPC_RTYPE_NTSTATUS, cmd_listcommands, NULL, NULL, 0, + NULL, "List available commands on ", "pipe" }, + { "exit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, NULL, 0, + NULL, "Exit program", "" }, + { "quit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL, NULL, 0, + NULL, "Exit program", "" }, + { "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL, NULL, 0, + NULL, "Force RPC pipe connections to be signed", "" }, + { "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL, NULL, 0, + NULL, "Force RPC pipe connections to be sealed", "" }, + { "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL, NULL, 0, + NULL, "Force RPC pipe connections to be sealed with 'schannel'. " + "Assumes valid machine account to this domain controller.", "" }, + { "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL, NULL, 0, + NULL, "Force RPC pipe connections to be signed (not sealed) with " + "'schannel'. Assumes valid machine account to this domain " + "controller.", "" }, + { "timeout", RPC_RTYPE_NTSTATUS, cmd_timeout, NULL, NULL, 0, + NULL, "Set timeout (in milliseonds) for RPC operations", "" }, + { "transport", RPC_RTYPE_NTSTATUS, cmd_choose_transport, NULL, NULL, 0, + NULL, "Choose ncacn transport for RPC operations", "" }, + { "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL, NULL, 0, + NULL, "Force RPC pipe connections to have no special properties", + "" }, { NULL } }; static struct cmd_set separator_command[] = { - { "---------------", MAX_RPC_RETURN_TYPE, NULL, NULL, NULL, NULL, "----------------------" }, + { "---------------", MAX_RPC_RETURN_TYPE, NULL, NULL, NULL, 0, NULL, + "----------------------" }, { NULL } }; @@ -640,16 +659,22 @@ static NTSTATUS do_cmd(struct cli_state *cli, /* Open pipe */ if ((cmd_entry->interface != NULL) && (cmd_entry->rpc_pipe == NULL)) { + struct ndr_syntax_id interface; + + if (!ndr_syntax_from_string(cmd_entry->interface, + cmd_entry->interface_version, + &interface)) { + return NT_STATUS_INTERNAL_ERROR; + } switch (pipe_default_auth_type) { case PIPE_AUTH_TYPE_NONE: ntresult = cli_rpc_pipe_open_noauth_transport( - cli, default_transport, - cmd_entry->interface, + cli, default_transport, &interface, &cmd_entry->rpc_pipe); break; case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP: ntresult = cli_rpc_pipe_open_spnego_ntlmssp( - cli, cmd_entry->interface, + cli, &interface, default_transport, pipe_default_auth_level, get_cmdline_auth_info_domain(auth_info), @@ -659,7 +684,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, break; case PIPE_AUTH_TYPE_NTLMSSP: ntresult = cli_rpc_pipe_open_ntlmssp( - cli, cmd_entry->interface, + cli, &interface, default_transport, pipe_default_auth_level, get_cmdline_auth_info_domain(auth_info), @@ -669,7 +694,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, break; case PIPE_AUTH_TYPE_SCHANNEL: ntresult = cli_rpc_pipe_open_schannel( - cli, cmd_entry->interface, + cli, &interface, default_transport, pipe_default_auth_level, get_cmdline_auth_info_domain(auth_info), @@ -680,19 +705,19 @@ static NTSTATUS do_cmd(struct cli_state *cli, "auth type %u\n", get_pipe_name_from_syntax( talloc_tos(), - cmd_entry->interface), + &interface), pipe_default_auth_type )); return NT_STATUS_UNSUCCESSFUL; } if (!NT_STATUS_IS_OK(ntresult)) { DEBUG(0, ("Could not initialise %s. Error was %s\n", get_pipe_name_from_syntax( - talloc_tos(), cmd_entry->interface), + talloc_tos(), &interface), nt_errstr(ntresult) )); return ntresult; } - if (ndr_syntax_id_equal(cmd_entry->interface, + if (ndr_syntax_id_equal(&interface, &ndr_table_netlogon.syntax_id)) { uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS; enum netr_SchannelType sec_channel_type; @@ -719,7 +744,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, DEBUG(0, ("Could not initialise credentials for %s.\n", get_pipe_name_from_syntax( talloc_tos(), - cmd_entry->interface))); + &interface))); return ntresult; } } diff --git a/source3/rpcclient/rpcclient.h b/source3/rpcclient/rpcclient.h index 91810b63a9..926204ceca 100644 --- a/source3/rpcclient/rpcclient.h +++ b/source3/rpcclient/rpcclient.h @@ -33,7 +33,8 @@ struct cmd_set { NTSTATUS (*ntfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv); WERROR (*wfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv); - const struct ndr_syntax_id *interface; + const char *interface; + uint32_t interface_version; struct rpc_pipe_client *rpc_pipe; const char *description; const char *usage; -- cgit