From 66d5d73a5d75e88a77970f7b27687b8354ab2e80 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 25 Sep 1998 21:01:52 +0000 Subject: added rpcclient program (This used to be commit aa38f39d67fade4dfd7badb7a9b39c833a1dd1ca) --- source3/rpcclient/cmd_srvsvc.c | 329 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 source3/rpcclient/cmd_srvsvc.c (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c new file mode 100644 index 0000000000..8dc11bd29e --- /dev/null +++ b/source3/rpcclient/cmd_srvsvc.c @@ -0,0 +1,329 @@ +/* + Unix SMB/Netbios implementation. + Version 1.9. + NT Domain Authentication SMB / MSRPC client + Copyright (C) Andrew Tridgell 1994-1997 + Copyright (C) Luke Kenneth Casson Leighton 1996-1997 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + + + +#ifdef SYSLOG +#undef SYSLOG +#endif + +#include "includes.h" +#include "nterr.h" + +extern int DEBUGLEVEL; + +#define DEBUG_TESTING + +extern struct cli_state *smb_cli; +extern int smb_tidx; + +extern FILE* out_hnd; + + +/**************************************************************************** +server get info query +****************************************************************************/ +void cmd_srv_query_info(struct client_info *info) +{ + fstring dest_srv; + fstring tmp; + SRV_INFO_CTR ctr; + uint32 info_level = 101; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + strcpy(dest_srv, "\\\\"); + strcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL)) + { + info_level = strtoul(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_query_info: server:%s info level: %D\n", + dest_srv, info_level)); + + DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open LSARPC session. */ + res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + + /* send info level: receive requested info. hopefully. */ + res = res ? do_srv_net_srv_get_info(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + dest_srv, info_level, &ctr) : False; + + /* close the session */ + do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_query_info: query succeeded\n")); + + display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); + display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); + display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + } + else + { + DEBUG(5,("cmd_srv_query_info: query failed\n")); + } +} + +/**************************************************************************** +server enum connections +****************************************************************************/ +void cmd_srv_enum_conn(struct client_info *info) +{ + fstring dest_srv; + fstring qual_srv; + fstring tmp; + SRV_CONN_INFO_CTR ctr; + ENUM_HND hnd; + uint32 info_level = 0; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + strcpy(qual_srv, "\\\\"); + strcat(qual_srv, info->myhostname); + strupper(qual_srv); + + strcpy(dest_srv, "\\\\"); + strcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL)) + { + info_level = strtoul(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %D\n", + dest_srv, info_level)); + + DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + + hnd.ptr_hnd = 1; + hnd.handle = 0; + + /* enumerate connections on server */ + res = res ? do_srv_net_srv_conn_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + dest_srv, qual_srv, + info_level, &ctr, 0xffffffff, &hnd) : False; + + if (res) + { + display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); + display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); + display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + } + + /* close the session */ + do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_conn: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_conn: query failed\n")); + } +} + +/**************************************************************************** +server enum shares +****************************************************************************/ +void cmd_srv_enum_shares(struct client_info *info) +{ + fstring dest_srv; + fstring tmp; + SRV_SHARE_INFO_CTR ctr; + ENUM_HND hnd; + uint32 info_level = 1; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + strcpy(dest_srv, "\\\\"); + strcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL)) + { + info_level = strtoul(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %D\n", + dest_srv, info_level)); + + DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + + hnd.ptr_hnd = 0; + hnd.handle = 0; + + /* enumerate shares_files on server */ + res = res ? do_srv_net_srv_share_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + dest_srv, + info_level, &ctr, 0xffffffff, &hnd) : False; + + if (res) + { + display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); + display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); + display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + } + + /* close the session */ + do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_shares: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_shares: query failed\n")); + } +} + +/**************************************************************************** +server enum sessions +****************************************************************************/ +void cmd_srv_enum_sess(struct client_info *info) +{ + fstring dest_srv; + fstring tmp; + SRV_SESS_INFO_CTR ctr; + ENUM_HND hnd; + uint32 info_level = 0; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + strcpy(dest_srv, "\\\\"); + strcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL)) + { + info_level = strtoul(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %D\n", + dest_srv, info_level)); + + DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + + hnd.ptr_hnd = 1; + hnd.handle = 0; + + /* enumerate sessions on server */ + res = res ? do_srv_net_srv_sess_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; + + /* close the session */ + do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_sess: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_sess: query failed\n")); + } +} + +/**************************************************************************** +server enum files +****************************************************************************/ +void cmd_srv_enum_files(struct client_info *info) +{ + fstring dest_srv; + fstring tmp; + SRV_FILE_INFO_CTR ctr; + ENUM_HND hnd; + uint32 info_level = 3; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + strcpy(dest_srv, "\\\\"); + strcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL)) + { + info_level = strtoul(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_enum_files: server:%s info level: %D\n", + dest_srv, info_level)); + + DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + + hnd.ptr_hnd = 1; + hnd.handle = 0; + + /* enumerate files on server */ + res = res ? do_srv_net_srv_file_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; + + if (res) + { + display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); + display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); + display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + } + + /* close the session */ + do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_files: query failed\n")); + } +} + -- cgit From ff07b2e4a37f23af90a27456a116b773ae3bbf97 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 25 Sep 1998 21:20:37 +0000 Subject: added wksinfo command to rpcclient, which don't work too good. (This used to be commit 8d23da91cbd74a45a5b030688fd89d88a25738dc) --- source3/rpcclient/cmd_srvsvc.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 8dc11bd29e..2964d1b54b 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -81,9 +81,9 @@ void cmd_srv_query_info(struct client_info *info) { DEBUG(5,("cmd_srv_query_info: query succeeded\n")); - display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); - display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); - display_srv_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + display_srv_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } else { @@ -138,9 +138,9 @@ void cmd_srv_enum_conn(struct client_info *info) if (res) { - display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); - display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); - display_srv_conn_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + display_srv_conn_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_conn_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_conn_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } /* close the session */ @@ -198,9 +198,9 @@ void cmd_srv_enum_shares(struct client_info *info) if (res) { - display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); - display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); - display_srv_share_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + display_srv_share_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_share_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_share_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } /* close the session */ @@ -309,9 +309,9 @@ void cmd_srv_enum_files(struct client_info *info) if (res) { - display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_HEADER , &ctr); - display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_ENUMERATE, &ctr); - display_srv_file_info_ctr(out_hnd, DISPLAY_TXT, ACTION_FOOTER , &ctr); + display_srv_file_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_file_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_file_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } /* close the session */ -- cgit From 732d4ff7dacce985fb209ee99569cef907e2cbf4 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 2 Oct 1998 21:09:23 +0000 Subject: Makefile.in : - added srvsvc client files clientgen.c : - replaced cli_error(cli, int *cls, int *err) with cli_error(cli, uint8 cls, uint32 *err). this version detects 32 bit status messages. the DOS error "MORE_DATA", the equivalent of the 32 bit *warning* 0x8000 0005 (STATUS_BUFFER_OVERFLOW), was being processed as an error, terminating the cli_receive_trans() call. cli_pipe.c : - replaced calls that had been incorrectly modified from 32 bit warnings (0x8000 0005 - STATUS_BUFFER_OVERFLOW) to 8 bit DOS errors (0x01 0xEA - MORE_DATA). the use of the old version of cli_error (DOS only) instead of the new one (DOS and 32 bit) caused the dce/rpc client code to fail. - replaced 2 space indentation with tab indentation in all functions. cli_srvsvc.c : cmd_srvsvc.c : - added these files back in, fixing them up to use jeremy's modified versions of the dce/rpc client functions. parse_srv.c : - added back in some "unused" functions required by dce/rpc client-side code. it would be helpful if all such "unused" functions could be added back in. rpcclient.c : - added "session", "file", "share", "connection" enumeration functions back in. these are equivalent to nt's "NetXXXXXEnum" Win32 (MSDN) functions. - added "srvinfo" function back in. this is equivalent to nt's NetServerGetInfo Win32 (MSDN) function. (This used to be commit bcf39ffdcc64e049bca2d70a394a99976291e81d) --- source3/rpcclient/cmd_srvsvc.c | 65 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 33 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 2964d1b54b..063174a1d1 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -34,7 +34,6 @@ extern int DEBUGLEVEL; #define DEBUG_TESTING extern struct cli_state *smb_cli; -extern int smb_tidx; extern FILE* out_hnd; @@ -53,11 +52,11 @@ void cmd_srv_query_info(struct client_info *info) bzero(&ctr, sizeof(ctr)); - strcpy(dest_srv, "\\\\"); - strcat(dest_srv, info->dest_host); + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL)) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { info_level = strtoul(tmp, (char**)NULL, 10); } @@ -68,14 +67,14 @@ void cmd_srv_query_info(struct client_info *info) DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); /* open LSARPC session. */ - res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + res = res ? do_srv_net_srv_get_info(smb_cli, dest_srv, info_level, &ctr) : False; /* close the session */ - do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + cli_nt_session_close(smb_cli); if (res) { @@ -107,15 +106,15 @@ void cmd_srv_enum_conn(struct client_info *info) bzero(&ctr, sizeof(ctr)); - strcpy(qual_srv, "\\\\"); - strcat(qual_srv, info->myhostname); + fstrcpy(qual_srv, "\\\\"); + fstrcat(qual_srv, info->myhostname); strupper(qual_srv); - strcpy(dest_srv, "\\\\"); - strcat(dest_srv, info->dest_host); + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL)) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { info_level = strtoul(tmp, (char**)NULL, 10); } @@ -126,13 +125,13 @@ void cmd_srv_enum_conn(struct client_info *info) DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + res = res ? do_srv_net_srv_conn_enum(smb_cli, dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -144,7 +143,7 @@ void cmd_srv_enum_conn(struct client_info *info) } /* close the session */ - do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + cli_nt_session_close(smb_cli); if (res) { @@ -171,11 +170,11 @@ void cmd_srv_enum_shares(struct client_info *info) bzero(&ctr, sizeof(ctr)); - strcpy(dest_srv, "\\\\"); - strcat(dest_srv, info->dest_host); + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL)) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { info_level = strtoul(tmp, (char**)NULL, 10); } @@ -186,13 +185,13 @@ void cmd_srv_enum_shares(struct client_info *info) DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; hnd.ptr_hnd = 0; hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + res = res ? do_srv_net_srv_share_enum(smb_cli, dest_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -204,7 +203,7 @@ void cmd_srv_enum_shares(struct client_info *info) } /* close the session */ - do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + cli_nt_session_close(smb_cli); if (res) { @@ -231,11 +230,11 @@ void cmd_srv_enum_sess(struct client_info *info) bzero(&ctr, sizeof(ctr)); - strcpy(dest_srv, "\\\\"); - strcat(dest_srv, info->dest_host); + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL)) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { info_level = strtoul(tmp, (char**)NULL, 10); } @@ -246,17 +245,17 @@ void cmd_srv_enum_sess(struct client_info *info) DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + res = res ? do_srv_net_srv_sess_enum(smb_cli, dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; /* close the session */ - do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + cli_nt_session_close(smb_cli); if (res) { @@ -283,11 +282,11 @@ void cmd_srv_enum_files(struct client_info *info) bzero(&ctr, sizeof(ctr)); - strcpy(dest_srv, "\\\\"); - strcat(dest_srv, info->dest_host); + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL)) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { info_level = strtoul(tmp, (char**)NULL, 10); } @@ -298,13 +297,13 @@ void cmd_srv_enum_files(struct client_info *info) DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? do_session_open(smb_cli, smb_tidx, PIPE_SRVSVC, &(info->dom.srvsvc_fnum)) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(smb_cli, smb_tidx, info->dom.srvsvc_fnum, + res = res ? do_srv_net_srv_file_enum(smb_cli, dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -315,7 +314,7 @@ void cmd_srv_enum_files(struct client_info *info) } /* close the session */ - do_session_close(smb_cli, smb_tidx, info->dom.srvsvc_fnum); + cli_nt_session_close(smb_cli); if (res) { -- cgit From 788263ba2f749c5bb1546ca6c9363fd508e94280 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 8 Oct 1998 06:21:33 +0000 Subject: - fixed a bunch of warnings and minor errors - got smbtorture to compile - removed %D from some of lukes code - Luke, what is %D? it ain't portable anyway (This used to be commit 91597c12fb593f49b23c7cea5b64dbb89a0428b3) --- source3/rpcclient/cmd_srvsvc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 063174a1d1..4d4fb791a9 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -61,8 +61,8 @@ void cmd_srv_query_info(struct client_info *info) info_level = strtoul(tmp, (char**)NULL, 10); } - DEBUG(4,("cmd_srv_query_info: server:%s info level: %D\n", - dest_srv, info_level)); + DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n", + dest_srv, (int)info_level)); DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); @@ -119,8 +119,8 @@ void cmd_srv_enum_conn(struct client_info *info) info_level = strtoul(tmp, (char**)NULL, 10); } - DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %D\n", - dest_srv, info_level)); + DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", + dest_srv, (int)info_level)); DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); @@ -179,8 +179,8 @@ void cmd_srv_enum_shares(struct client_info *info) info_level = strtoul(tmp, (char**)NULL, 10); } - DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %D\n", - dest_srv, info_level)); + DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", + dest_srv, (int)info_level)); DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); @@ -239,8 +239,8 @@ void cmd_srv_enum_sess(struct client_info *info) info_level = strtoul(tmp, (char**)NULL, 10); } - DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %D\n", - dest_srv, info_level)); + DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", + dest_srv, (int)info_level)); DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); @@ -291,8 +291,8 @@ void cmd_srv_enum_files(struct client_info *info) info_level = strtoul(tmp, (char**)NULL, 10); } - DEBUG(4,("cmd_srv_enum_files: server:%s info level: %D\n", - dest_srv, info_level)); + DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", + dest_srv, (int)info_level)); DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); -- cgit From d4a82ea26d5b9501f210a5c441b1ac09c256a187 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 16 Oct 1998 20:07:02 +0000 Subject: rpc client mods (ntlmssp flags) (This used to be commit 16256f86bf451535c7955b8f51a9b88fc33a8e4d) --- source3/rpcclient/cmd_srvsvc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 4d4fb791a9..65d49984bf 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -67,7 +67,7 @@ void cmd_srv_query_info(struct client_info *info) DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); /* open LSARPC session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; /* send info level: receive requested info. hopefully. */ res = res ? do_srv_net_srv_get_info(smb_cli, @@ -125,7 +125,7 @@ void cmd_srv_enum_conn(struct client_info *info) DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; hnd.ptr_hnd = 1; hnd.handle = 0; @@ -185,7 +185,7 @@ void cmd_srv_enum_shares(struct client_info *info) DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; hnd.ptr_hnd = 0; hnd.handle = 0; @@ -245,7 +245,7 @@ void cmd_srv_enum_sess(struct client_info *info) DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; hnd.ptr_hnd = 1; hnd.handle = 0; @@ -297,7 +297,7 @@ void cmd_srv_enum_files(struct client_info *info) DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, False) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; hnd.ptr_hnd = 1; hnd.handle = 0; -- cgit From 71adb8b0a008ad137fc7dcd8702f3d0e4426a657 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 16 Oct 1998 21:46:07 +0000 Subject: strtoul replace with strtol (This used to be commit 4ebd2c5140e782ec43d9f7700bd588dfa52a16c7) --- source3/rpcclient/cmd_srvsvc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 65d49984bf..f385cecb68 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -58,7 +58,7 @@ void cmd_srv_query_info(struct client_info *info) if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = strtoul(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n", @@ -116,7 +116,7 @@ void cmd_srv_enum_conn(struct client_info *info) if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = strtoul(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", @@ -176,7 +176,7 @@ void cmd_srv_enum_shares(struct client_info *info) if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = strtoul(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", @@ -236,7 +236,7 @@ void cmd_srv_enum_sess(struct client_info *info) if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = strtoul(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", @@ -288,7 +288,7 @@ void cmd_srv_enum_files(struct client_info *info) if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = strtoul(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", -- cgit From 9c848ec329a6ce86cffb2304746590116d9292f0 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Mon, 7 Dec 1998 20:23:41 +0000 Subject: removed nt_pipe_fnum from struct cli_state. need to be able to call LsaLookupSids etc from within SamrQueryAliasMembers, for example. fnum is now a parameter to client functions. thanks to mike black for starting the ball rolling. (This used to be commit bee8f7fa6b0f7f995f71303f4e14a4aaed0c2437) --- source3/rpcclient/cmd_srvsvc.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index f385cecb68..1be35608ee 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -43,6 +43,7 @@ server get info query ****************************************************************************/ void cmd_srv_query_info(struct client_info *info) { + uint16 nt_pipe_fnum; fstring dest_srv; fstring tmp; SRV_INFO_CTR ctr; @@ -67,14 +68,14 @@ void cmd_srv_query_info(struct client_info *info) DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); /* open LSARPC session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(smb_cli, + res = res ? do_srv_net_srv_get_info(smb_cli, nt_pipe_fnum, dest_srv, info_level, &ctr) : False; /* close the session */ - cli_nt_session_close(smb_cli); + cli_nt_session_close(smb_cli, nt_pipe_fnum); if (res) { @@ -95,6 +96,7 @@ server enum connections ****************************************************************************/ void cmd_srv_enum_conn(struct client_info *info) { + uint16 nt_pipe_fnum; fstring dest_srv; fstring qual_srv; fstring tmp; @@ -125,13 +127,13 @@ void cmd_srv_enum_conn(struct client_info *info) DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(smb_cli, + res = res ? do_srv_net_srv_conn_enum(smb_cli, nt_pipe_fnum, dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -143,7 +145,7 @@ void cmd_srv_enum_conn(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli); + cli_nt_session_close(smb_cli, nt_pipe_fnum); if (res) { @@ -160,6 +162,7 @@ server enum shares ****************************************************************************/ void cmd_srv_enum_shares(struct client_info *info) { + uint16 nt_pipe_fnum; fstring dest_srv; fstring tmp; SRV_SHARE_INFO_CTR ctr; @@ -185,13 +188,13 @@ void cmd_srv_enum_shares(struct client_info *info) DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; hnd.ptr_hnd = 0; hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(smb_cli, + res = res ? do_srv_net_srv_share_enum(smb_cli, nt_pipe_fnum, dest_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -203,7 +206,7 @@ void cmd_srv_enum_shares(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli); + cli_nt_session_close(smb_cli, nt_pipe_fnum); if (res) { @@ -220,6 +223,7 @@ server enum sessions ****************************************************************************/ void cmd_srv_enum_sess(struct client_info *info) { + uint16 nt_pipe_fnum; fstring dest_srv; fstring tmp; SRV_SESS_INFO_CTR ctr; @@ -245,17 +249,17 @@ void cmd_srv_enum_sess(struct client_info *info) DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(smb_cli, + res = res ? do_srv_net_srv_sess_enum(smb_cli, nt_pipe_fnum, dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; /* close the session */ - cli_nt_session_close(smb_cli); + cli_nt_session_close(smb_cli, nt_pipe_fnum); if (res) { @@ -272,6 +276,7 @@ server enum files ****************************************************************************/ void cmd_srv_enum_files(struct client_info *info) { + uint16 nt_pipe_fnum; fstring dest_srv; fstring tmp; SRV_FILE_INFO_CTR ctr; @@ -297,13 +302,13 @@ void cmd_srv_enum_files(struct client_info *info) DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(smb_cli, + res = res ? do_srv_net_srv_file_enum(smb_cli, nt_pipe_fnum, dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -314,7 +319,7 @@ void cmd_srv_enum_files(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli); + cli_nt_session_close(smb_cli, nt_pipe_fnum); if (res) { -- cgit From e3a888d5a935047367e531321981cbed8618c5a3 Mon Sep 17 00:00:00 2001 From: Matthew Chapman Date: Sat, 1 May 1999 05:56:55 +0000 Subject: Adding "time" rpcclient command which displays the remote time. Also added special "now" time to the "at" command, e.g.: at now /i cmd ; pops up a command prompt (This used to be commit f456dcf08ec96c631f5e6f2e857115d4bbf94d1b) --- source3/rpcclient/cmd_srvsvc.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 1be35608ee..2cb741b966 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -331,3 +331,44 @@ void cmd_srv_enum_files(struct client_info *info) } } +/**************************************************************************** +display remote time +****************************************************************************/ +void cmd_time(struct client_info *info) +{ + uint16 nt_pipe_fnum; + fstring dest_srv; + TIME_OF_DAY_INFO tod; + BOOL res = True; + + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); + strupper(dest_srv); + + DEBUG(4,("cmd_time: server:%s\n", dest_srv)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + + /* enumerate files on server */ + res = res ? do_srv_net_remote_tod(smb_cli, nt_pipe_fnum, + dest_srv, &tod) : False; + + if (res) + { + fprintf(out_hnd, "\tRemote Time:\t%s\n\n", + http_timestring(tod.elapsedt)); + } + + /* Close the session */ + cli_nt_session_close(smb_cli, nt_pipe_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_files: query failed\n")); + } +} -- cgit From d2d6144253da533fb2f47cae9e0ed008a167585b Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 18 Aug 1999 20:33:49 +0000 Subject: event log update, netsessenum, netconnenum update. (This used to be commit 819af560745b0bec7bfb9067dd9d9d6cfabb1555) --- source3/rpcclient/cmd_srvsvc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 2cb741b966..477e68561c 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -256,7 +256,7 @@ void cmd_srv_enum_sess(struct client_info *info) /* enumerate sessions on server */ res = res ? do_srv_net_srv_sess_enum(smb_cli, nt_pipe_fnum, - dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; + dest_srv, NULL, NULL, info_level, &ctr, 0x1000, &hnd) : False; /* close the session */ cli_nt_session_close(smb_cli, nt_pipe_fnum); @@ -309,7 +309,7 @@ void cmd_srv_enum_files(struct client_info *info) /* enumerate files on server */ res = res ? do_srv_net_srv_file_enum(smb_cli, nt_pipe_fnum, - dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; + dest_srv, NULL, 0, info_level, &ctr, 0x1000, &hnd) : False; if (res) { -- cgit From f4e98283cd0c8ef125f34981f3629806016df430 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 18 Aug 1999 21:13:15 +0000 Subject: display of session enum info (This used to be commit e0713cf9332e562d1b41a794b8044e05aeb2b937) --- source3/rpcclient/cmd_srvsvc.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 477e68561c..c433908e20 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -258,6 +258,13 @@ void cmd_srv_enum_sess(struct client_info *info) res = res ? do_srv_net_srv_sess_enum(smb_cli, nt_pipe_fnum, dest_srv, NULL, NULL, info_level, &ctr, 0x1000, &hnd) : False; + if (res) + { + display_srv_sess_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_sess_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_sess_info_ctr(out_hnd, ACTION_FOOTER , &ctr); + } + /* close the session */ cli_nt_session_close(smb_cli, nt_pipe_fnum); -- cgit From 860688f6e71fca58fee50e364224ee0f6e4f4da4 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Fri, 1 Oct 1999 18:11:57 +0000 Subject: error-code checking in lsa_lookup_sids. anonymous connections for domain info. adjusting net_srv_get_info function. (This used to be commit 42eb916fae0d377f8908dfc42b332e6a53c4e2d9) --- source3/rpcclient/cmd_srvsvc.c | 43 ++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index c433908e20..547b39b2b8 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -41,43 +41,54 @@ extern FILE* out_hnd; /**************************************************************************** server get info query ****************************************************************************/ -void cmd_srv_query_info(struct client_info *info) +BOOL net_srv_get_info(struct client_info *info, + uint32 info_level, + SRV_INFO_CTR *ctr) { uint16 nt_pipe_fnum; fstring dest_srv; - fstring tmp; - SRV_INFO_CTR ctr; - uint32 info_level = 101; BOOL res = True; - bzero(&ctr, sizeof(ctr)); - fstrcpy(dest_srv, "\\\\"); fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n", + DEBUG(4,("net_srv_get_info: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); - /* open LSARPC session. */ res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; /* send info level: receive requested info. hopefully. */ res = res ? do_srv_net_srv_get_info(smb_cli, nt_pipe_fnum, - dest_srv, info_level, &ctr) : False; + dest_srv, info_level, ctr) : False; /* close the session */ cli_nt_session_close(smb_cli, nt_pipe_fnum); - if (res) + return res; +} + +/**************************************************************************** +server get info query +****************************************************************************/ +void cmd_srv_query_info(struct client_info *info) +{ + uint32 info_level = 101; + SRV_INFO_CTR ctr; + fstring tmp; + + bzero(&ctr, sizeof(ctr)); + + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + { + info_level = (uint32)strtol(tmp, (char**)NULL, 10); + } + + DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); + + if (net_srv_get_info(info, info_level, &ctr)) { DEBUG(5,("cmd_srv_query_info: query succeeded\n")); -- cgit From 4cda1d2b4faaf9a3abeb338e909a52f8b51fd89d Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Sat, 30 Oct 1999 22:34:38 +0000 Subject: NetServerTransportEnum parsing, client-side and rpcclient "srvtransports" added. (This used to be commit 37f4aac06fec3fbb34ed40d1010829b2e1f28558) --- source3/rpcclient/cmd_srvsvc.c | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 547b39b2b8..d6f4f33653 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -102,6 +102,67 @@ void cmd_srv_query_info(struct client_info *info) } } +/**************************************************************************** +server enum transports +****************************************************************************/ +void cmd_srv_enum_tprt(struct client_info *info) +{ + uint16 nt_pipe_fnum; + fstring dest_srv; + fstring tmp; + SRV_TPRT_INFO_CTR ctr; + ENUM_HND hnd; + uint32 info_level = 0; + + BOOL res = True; + + bzero(&ctr, sizeof(ctr)); + + fstrcpy(dest_srv, "\\\\"); + fstrcat(dest_srv, info->dest_host); + strupper(dest_srv); + + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + { + info_level = (uint32)strtol(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_enum_tprt: server:%s info level: %d\n", + dest_srv, (int)info_level)); + + DEBUG(5, ("cmd_srv_enum_tprt: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + + hnd.ptr_hnd = 1; + hnd.handle = 0; + + /* enumerate transports on server */ + res = res ? do_srv_net_srv_tprt_enum(smb_cli, nt_pipe_fnum, + dest_srv, + info_level, &ctr, 0xffffffff, &hnd) : False; + + if (res) + { + display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , &ctr); + display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); + display_srv_tprt_info_ctr(out_hnd, ACTION_FOOTER , &ctr); + } + + /* close the session */ + cli_nt_session_close(smb_cli, nt_pipe_fnum); + + if (res) + { + DEBUG(5,("cmd_srv_enum_tprt: query succeeded\n")); + } + else + { + DEBUG(5,("cmd_srv_enum_tprt: query failed\n")); + } +} + /**************************************************************************** server enum connections ****************************************************************************/ -- cgit From dc963d7939c9f4f5f7850f9c92385c5484df51bb Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 3 Nov 1999 21:51:29 +0000 Subject: dynamic mem allocation in net_srv_transport_enum() parsing. (This used to be commit 6b919ebb4ed8c0082d8bffb299766bff9e718faf) --- source3/rpcclient/cmd_srvsvc.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index d6f4f33653..b856d2ff5c 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -161,6 +161,8 @@ void cmd_srv_enum_tprt(struct client_info *info) { DEBUG(5,("cmd_srv_enum_tprt: query failed\n")); } + + free_srv_tprt_ctr(&ctr); } /**************************************************************************** -- cgit From 83f2465f0f1432bc0aba76b83f3a781fb7c3a071 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 3 Nov 1999 22:14:38 +0000 Subject: created msrpc_srv_enum_tprt() function by massaging cmd_srv_enum_tprt(). (This used to be commit 3f9455c535607090103a371ff96051a5ce32e461) --- source3/rpcclient/cmd_srvsvc.c | 103 ++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 47 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index b856d2ff5c..59ad1ede87 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -45,7 +45,7 @@ BOOL net_srv_get_info(struct client_info *info, uint32 info_level, SRV_INFO_CTR *ctr) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; BOOL res = True; @@ -58,14 +58,14 @@ BOOL net_srv_get_info(struct client_info *info, dest_srv, (int)info_level)); /* open LSARPC session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_srv_get_info(smb_cli, fnum, dest_srv, info_level, ctr) : False; /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); return res; } @@ -102,19 +102,46 @@ void cmd_srv_query_info(struct client_info *info) } } +/**************************************************************************** +server enum transports +****************************************************************************/ +BOOL msrpc_srv_enum_tprt(struct cli_state *cli, + const char* dest_srv, + uint32 info_level, + SRV_TPRT_INFO_CTR *ctr, + uint32 pref_sz, + ENUM_HND *hnd) +{ + uint16 fnum; + + BOOL res = True; + BOOL res1 = True; + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; + + /* enumerate transports on server */ + res1 = res ? do_srv_net_srv_tprt_enum(smb_cli, fnum, + dest_srv, + info_level, ctr, pref_sz, hnd) : False; + + /* close the session */ + cli_nt_session_close(smb_cli, fnum); + + return res1; +} + /**************************************************************************** server enum transports ****************************************************************************/ void cmd_srv_enum_tprt(struct client_info *info) { - uint16 nt_pipe_fnum; fstring dest_srv; fstring tmp; SRV_TPRT_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 0; - - BOOL res = True; + uint32 pref_sz = 0xffffffff; bzero(&ctr, sizeof(ctr)); @@ -132,36 +159,18 @@ void cmd_srv_enum_tprt(struct client_info *info) DEBUG(5, ("cmd_srv_enum_tprt: smb_cli->fd:%d\n", smb_cli->fd)); - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; - hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate transports on server */ - res = res ? do_srv_net_srv_tprt_enum(smb_cli, nt_pipe_fnum, - dest_srv, - info_level, &ctr, 0xffffffff, &hnd) : False; - - if (res) + if (msrpc_srv_enum_tprt(smb_cli, dest_srv, + info_level, &ctr, pref_sz, &hnd)) { display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , &ctr); display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); display_srv_tprt_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); - - if (res) - { - DEBUG(5,("cmd_srv_enum_tprt: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_tprt: query failed\n")); - } - free_srv_tprt_ctr(&ctr); } @@ -170,7 +179,7 @@ server enum connections ****************************************************************************/ void cmd_srv_enum_conn(struct client_info *info) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; fstring qual_srv; fstring tmp; @@ -201,13 +210,13 @@ void cmd_srv_enum_conn(struct client_info *info) DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_srv_conn_enum(smb_cli, fnum, dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -219,7 +228,7 @@ void cmd_srv_enum_conn(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); if (res) { @@ -236,7 +245,7 @@ server enum shares ****************************************************************************/ void cmd_srv_enum_shares(struct client_info *info) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; fstring tmp; SRV_SHARE_INFO_CTR ctr; @@ -262,13 +271,13 @@ void cmd_srv_enum_shares(struct client_info *info) DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; hnd.ptr_hnd = 0; hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_srv_share_enum(smb_cli, fnum, dest_srv, info_level, &ctr, 0xffffffff, &hnd) : False; @@ -280,7 +289,7 @@ void cmd_srv_enum_shares(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); if (res) { @@ -297,7 +306,7 @@ server enum sessions ****************************************************************************/ void cmd_srv_enum_sess(struct client_info *info) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; fstring tmp; SRV_SESS_INFO_CTR ctr; @@ -323,13 +332,13 @@ void cmd_srv_enum_sess(struct client_info *info) DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_srv_sess_enum(smb_cli, fnum, dest_srv, NULL, NULL, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -340,7 +349,7 @@ void cmd_srv_enum_sess(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); if (res) { @@ -357,7 +366,7 @@ server enum files ****************************************************************************/ void cmd_srv_enum_files(struct client_info *info) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; fstring tmp; SRV_FILE_INFO_CTR ctr; @@ -383,13 +392,13 @@ void cmd_srv_enum_files(struct client_info *info) DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_srv_file_enum(smb_cli, fnum, dest_srv, NULL, 0, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -400,7 +409,7 @@ void cmd_srv_enum_files(struct client_info *info) } /* close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); if (res) { @@ -417,7 +426,7 @@ display remote time ****************************************************************************/ void cmd_time(struct client_info *info) { - uint16 nt_pipe_fnum; + uint16 fnum; fstring dest_srv; TIME_OF_DAY_INFO tod; BOOL res = True; @@ -429,10 +438,10 @@ void cmd_time(struct client_info *info) DEBUG(4,("cmd_time: server:%s\n", dest_srv)); /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &nt_pipe_fnum) : False; + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; /* enumerate files on server */ - res = res ? do_srv_net_remote_tod(smb_cli, nt_pipe_fnum, + res = res ? do_srv_net_remote_tod(smb_cli, fnum, dest_srv, &tod) : False; if (res) @@ -442,7 +451,7 @@ void cmd_time(struct client_info *info) } /* Close the session */ - cli_nt_session_close(smb_cli, nt_pipe_fnum); + cli_nt_session_close(smb_cli, fnum); if (res) { -- cgit From cae821d45926157a250e9fa047e0c8aa8c0c2c54 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Thu, 4 Nov 1999 00:09:15 +0000 Subject: adding experimental set user password command to rpcclient, it returns error wrong password against nt. ???? (This used to be commit b3f16e6b5aa5ba1b6afa38ad698646c8e765ec90) --- source3/rpcclient/cmd_srvsvc.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 59ad1ede87..63ea653c63 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -2,8 +2,8 @@ Unix SMB/Netbios implementation. Version 1.9. NT Domain Authentication SMB / MSRPC client - Copyright (C) Andrew Tridgell 1994-1997 - Copyright (C) Luke Kenneth Casson Leighton 1996-1997 + Copyright (C) Andrew Tridgell 1994-1999 + Copyright (C) Luke Kenneth Casson Leighton 1996-1999 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 @@ -109,28 +109,43 @@ BOOL msrpc_srv_enum_tprt(struct cli_state *cli, const char* dest_srv, uint32 info_level, SRV_TPRT_INFO_CTR *ctr, - uint32 pref_sz, - ENUM_HND *hnd) + TPRT_INFO_FN(tprt_fn)) { uint16 fnum; BOOL res = True; BOOL res1 = True; + ENUM_HND hnd; + + hnd.ptr_hnd = 1; + hnd.handle = 0; + /* open srvsvc session. */ res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; /* enumerate transports on server */ res1 = res ? do_srv_net_srv_tprt_enum(smb_cli, fnum, dest_srv, - info_level, ctr, pref_sz, hnd) : False; + info_level, ctr, 0xffffffff, &hnd) : False; /* close the session */ cli_nt_session_close(smb_cli, fnum); + tprt_fn(ctr); + + free_srv_tprt_ctr(ctr); + return res1; } +static void srv_display_tprt_ctr(SRV_TPRT_INFO_CTR *ctr) +{ + display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , ctr); + display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, ctr); + display_srv_tprt_info_ctr(out_hnd, ACTION_FOOTER , ctr); +} + /**************************************************************************** server enum transports ****************************************************************************/ @@ -139,9 +154,7 @@ void cmd_srv_enum_tprt(struct client_info *info) fstring dest_srv; fstring tmp; SRV_TPRT_INFO_CTR ctr; - ENUM_HND hnd; uint32 info_level = 0; - uint32 pref_sz = 0xffffffff; bzero(&ctr, sizeof(ctr)); @@ -159,19 +172,10 @@ void cmd_srv_enum_tprt(struct client_info *info) DEBUG(5, ("cmd_srv_enum_tprt: smb_cli->fd:%d\n", smb_cli->fd)); - hnd.ptr_hnd = 1; - hnd.handle = 0; - /* enumerate transports on server */ - if (msrpc_srv_enum_tprt(smb_cli, dest_srv, - info_level, &ctr, pref_sz, &hnd)) - { - display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_tprt_info_ctr(out_hnd, ACTION_FOOTER , &ctr); - } - - free_srv_tprt_ctr(&ctr); + msrpc_srv_enum_tprt(smb_cli, dest_srv, + info_level, &ctr, + srv_display_tprt_ctr); } /**************************************************************************** -- cgit From c6e3fc5838aacde454c4b16436532455c4dd8ecf Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Mon, 8 Nov 1999 20:58:06 +0000 Subject: const feeding frenzy (This used to be commit e0eb390ab3e2a0cce191e78ea4ff90d088a8895c) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 63ea653c63..c0cf56de51 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -139,7 +139,7 @@ BOOL msrpc_srv_enum_tprt(struct cli_state *cli, return res1; } -static void srv_display_tprt_ctr(SRV_TPRT_INFO_CTR *ctr) +static void srv_display_tprt_ctr(const SRV_TPRT_INFO_CTR *ctr) { display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , ctr); display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, ctr); -- cgit From aa12f3e0e922f42318b71c601cba08a6c96ff486 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Mon, 22 Nov 1999 19:02:39 +0000 Subject: okay :) all cmd_() functions now take int argc, char **argv :) that means that some commands need more work, as they still use next_token(), the use of which i wish to avoid. plus, i was getting fed up of the poor command-line processing in some of these commands. i'm starting to need getopt() in them, especially in samsetuser. WARNING: only cmd_samr has been modded to use getopt() so far! reg commands won't work, esp. (This used to be commit 9a1efa03c8bb86c9b7e73f102a9d48fb6a57a523) --- source3/rpcclient/cmd_srvsvc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index c0cf56de51..ca2a8f4dc3 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -73,7 +73,7 @@ BOOL net_srv_get_info(struct client_info *info, /**************************************************************************** server get info query ****************************************************************************/ -void cmd_srv_query_info(struct client_info *info) +void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) { uint32 info_level = 101; SRV_INFO_CTR ctr; @@ -149,7 +149,7 @@ static void srv_display_tprt_ctr(const SRV_TPRT_INFO_CTR *ctr) /**************************************************************************** server enum transports ****************************************************************************/ -void cmd_srv_enum_tprt(struct client_info *info) +void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]) { fstring dest_srv; fstring tmp; @@ -181,7 +181,7 @@ void cmd_srv_enum_tprt(struct client_info *info) /**************************************************************************** server enum connections ****************************************************************************/ -void cmd_srv_enum_conn(struct client_info *info) +void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; @@ -247,7 +247,7 @@ void cmd_srv_enum_conn(struct client_info *info) /**************************************************************************** server enum shares ****************************************************************************/ -void cmd_srv_enum_shares(struct client_info *info) +void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; @@ -308,7 +308,7 @@ void cmd_srv_enum_shares(struct client_info *info) /**************************************************************************** server enum sessions ****************************************************************************/ -void cmd_srv_enum_sess(struct client_info *info) +void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; @@ -368,7 +368,7 @@ void cmd_srv_enum_sess(struct client_info *info) /**************************************************************************** server enum files ****************************************************************************/ -void cmd_srv_enum_files(struct client_info *info) +void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; @@ -428,7 +428,7 @@ void cmd_srv_enum_files(struct client_info *info) /**************************************************************************** display remote time ****************************************************************************/ -void cmd_time(struct client_info *info) +void cmd_time(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; -- cgit From bb876dc6c3b6b5f1a89524e97bfafd97237bf0ca Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Mon, 22 Nov 1999 19:26:56 +0000 Subject: another one (This used to be commit c1ba1bfd68fa96937decad8f1d7421daad6e30fe) --- source3/rpcclient/cmd_srvsvc.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index ca2a8f4dc3..ee67cc7421 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -77,13 +77,12 @@ void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) { uint32 info_level = 101; SRV_INFO_CTR ctr; - fstring tmp; bzero(&ctr, sizeof(ctr)); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); @@ -152,7 +151,6 @@ server enum transports void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]) { fstring dest_srv; - fstring tmp; SRV_TPRT_INFO_CTR ctr; uint32 info_level = 0; @@ -162,9 +160,9 @@ void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_tprt: server:%s info level: %d\n", @@ -186,7 +184,6 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) uint16 fnum; fstring dest_srv; fstring qual_srv; - fstring tmp; SRV_CONN_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 0; @@ -203,9 +200,9 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", @@ -251,7 +248,6 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; - fstring tmp; SRV_SHARE_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 1; @@ -264,9 +260,9 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", @@ -312,7 +308,6 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; - fstring tmp; SRV_SESS_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 0; @@ -325,9 +320,9 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", @@ -372,7 +367,6 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) { uint16 fnum; fstring dest_srv; - fstring tmp; SRV_FILE_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 3; @@ -385,9 +379,9 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + if (argc > 1) { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); + info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", -- cgit From 4a6761a58d5718c386c7ab4fa89c34fa08dca53b Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Sat, 27 Nov 1999 22:19:51 +0000 Subject: using "abstracted" cli_connection, got \PIPE\srvsvc commands up and running again. (This used to be commit 6b67d6164dbfda3ba690d86597ae560b7e5c7584) --- source3/rpcclient/cmd_srvsvc.c | 92 +++++------------------------------------- 1 file changed, 11 insertions(+), 81 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index ee67cc7421..74368dea89 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -33,8 +33,6 @@ extern int DEBUGLEVEL; #define DEBUG_TESTING -extern struct cli_state *smb_cli; - extern FILE* out_hnd; @@ -45,7 +43,6 @@ BOOL net_srv_get_info(struct client_info *info, uint32 info_level, SRV_INFO_CTR *ctr) { - uint16 fnum; fstring dest_srv; BOOL res = True; @@ -57,15 +54,8 @@ BOOL net_srv_get_info(struct client_info *info, DEBUG(4,("net_srv_get_info: server:%s info level: %d\n", dest_srv, (int)info_level)); - /* open LSARPC session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(smb_cli, fnum, - dest_srv, info_level, ctr) : False; - - /* close the session */ - cli_nt_session_close(smb_cli, fnum); + res = res ? do_srv_net_srv_get_info(dest_srv, info_level, ctr) : False; return res; } @@ -85,8 +75,6 @@ void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) info_level = (uint32)strtol(argv[1], (char**)NULL, 10); } - DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); - if (net_srv_get_info(info, info_level, &ctr)) { DEBUG(5,("cmd_srv_query_info: query succeeded\n")); @@ -104,14 +92,11 @@ void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) /**************************************************************************** server enum transports ****************************************************************************/ -BOOL msrpc_srv_enum_tprt(struct cli_state *cli, - const char* dest_srv, +BOOL msrpc_srv_enum_tprt( const char* dest_srv, uint32 info_level, SRV_TPRT_INFO_CTR *ctr, TPRT_INFO_FN(tprt_fn)) { - uint16 fnum; - BOOL res = True; BOOL res1 = True; @@ -120,17 +105,10 @@ BOOL msrpc_srv_enum_tprt(struct cli_state *cli, hnd.ptr_hnd = 1; hnd.handle = 0; - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - /* enumerate transports on server */ - res1 = res ? do_srv_net_srv_tprt_enum(smb_cli, fnum, - dest_srv, + res1 = res ? do_srv_net_srv_tprt_enum(dest_srv, info_level, ctr, 0xffffffff, &hnd) : False; - /* close the session */ - cli_nt_session_close(smb_cli, fnum); - tprt_fn(ctr); free_srv_tprt_ctr(ctr); @@ -168,10 +146,8 @@ void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_srv_enum_tprt: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_enum_tprt: smb_cli->fd:%d\n", smb_cli->fd)); - /* enumerate transports on server */ - msrpc_srv_enum_tprt(smb_cli, dest_srv, + msrpc_srv_enum_tprt(dest_srv, info_level, &ctr, srv_display_tprt_ctr); } @@ -181,7 +157,6 @@ server enum connections ****************************************************************************/ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) { - uint16 fnum; fstring dest_srv; fstring qual_srv; SRV_CONN_INFO_CTR ctr; @@ -208,17 +183,11 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(smb_cli, fnum, - dest_srv, qual_srv, + res = res ? do_srv_net_srv_conn_enum(dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; if (res) @@ -228,9 +197,6 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) display_srv_conn_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - /* close the session */ - cli_nt_session_close(smb_cli, fnum); - if (res) { DEBUG(5,("cmd_srv_enum_conn: query succeeded\n")); @@ -246,7 +212,6 @@ server enum shares ****************************************************************************/ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) { - uint16 fnum; fstring dest_srv; SRV_SHARE_INFO_CTR ctr; ENUM_HND hnd; @@ -268,17 +233,11 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - hnd.ptr_hnd = 0; hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(smb_cli, fnum, - dest_srv, + res = res ? do_srv_net_srv_share_enum(dest_srv, info_level, &ctr, 0xffffffff, &hnd) : False; if (res) @@ -288,9 +247,6 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) display_srv_share_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - /* close the session */ - cli_nt_session_close(smb_cli, fnum); - if (res) { DEBUG(5,("cmd_srv_enum_shares: query succeeded\n")); @@ -306,7 +262,6 @@ server enum sessions ****************************************************************************/ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) { - uint16 fnum; fstring dest_srv; SRV_SESS_INFO_CTR ctr; ENUM_HND hnd; @@ -328,17 +283,12 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(smb_cli, fnum, - dest_srv, NULL, NULL, info_level, &ctr, 0x1000, &hnd) : False; + res = res ? do_srv_net_srv_sess_enum(dest_srv, NULL, NULL, + info_level, &ctr, 0x1000, &hnd) : False; if (res) { @@ -347,9 +297,6 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) display_srv_sess_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - /* close the session */ - cli_nt_session_close(smb_cli, fnum); - if (res) { DEBUG(5,("cmd_srv_enum_sess: query succeeded\n")); @@ -365,7 +312,6 @@ server enum files ****************************************************************************/ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) { - uint16 fnum; fstring dest_srv; SRV_FILE_INFO_CTR ctr; ENUM_HND hnd; @@ -387,17 +333,12 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", dest_srv, (int)info_level)); - DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(smb_cli, fnum, - dest_srv, NULL, 0, info_level, &ctr, 0x1000, &hnd) : False; + res = res ? do_srv_net_srv_file_enum(dest_srv, NULL, 0, + info_level, &ctr, 0x1000, &hnd) : False; if (res) { @@ -406,9 +347,6 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) display_srv_file_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - /* close the session */ - cli_nt_session_close(smb_cli, fnum); - if (res) { DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); @@ -424,7 +362,6 @@ display remote time ****************************************************************************/ void cmd_time(struct client_info *info, int argc, char *argv[]) { - uint16 fnum; fstring dest_srv; TIME_OF_DAY_INFO tod; BOOL res = True; @@ -435,12 +372,8 @@ void cmd_time(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_time: server:%s\n", dest_srv)); - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC, &fnum) : False; - /* enumerate files on server */ - res = res ? do_srv_net_remote_tod(smb_cli, fnum, - dest_srv, &tod) : False; + res = res ? do_srv_net_remote_tod(dest_srv, &tod) : False; if (res) { @@ -448,9 +381,6 @@ void cmd_time(struct client_info *info, int argc, char *argv[]) http_timestring(tod.elapsedt)); } - /* Close the session */ - cli_nt_session_close(smb_cli, fnum); - if (res) { DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); -- cgit From e4a2e8e46f2392aab2bead21c32e101f577eb2ab Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Sat, 27 Nov 1999 22:35:58 +0000 Subject: removed do_ prefix from srvsvc API (This used to be commit e4e5743a407b60c3695410eaf3df4ca3de4a870e) --- source3/rpcclient/cmd_srvsvc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 74368dea89..f0b10fe0d6 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -55,7 +55,7 @@ BOOL net_srv_get_info(struct client_info *info, dest_srv, (int)info_level)); /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(dest_srv, info_level, ctr) : False; + res = res ? srv_net_srv_get_info(dest_srv, info_level, ctr) : False; return res; } @@ -106,7 +106,7 @@ BOOL msrpc_srv_enum_tprt( const char* dest_srv, hnd.handle = 0; /* enumerate transports on server */ - res1 = res ? do_srv_net_srv_tprt_enum(dest_srv, + res1 = res ? srv_net_srv_tprt_enum(dest_srv, info_level, ctr, 0xffffffff, &hnd) : False; tprt_fn(ctr); @@ -187,7 +187,7 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) hnd.handle = 0; /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(dest_srv, qual_srv, + res = res ? srv_net_srv_conn_enum(dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; if (res) @@ -237,7 +237,7 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(dest_srv, + res = res ? srv_net_srv_share_enum(dest_srv, info_level, &ctr, 0xffffffff, &hnd) : False; if (res) @@ -287,7 +287,7 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) hnd.handle = 0; /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(dest_srv, NULL, NULL, + res = res ? srv_net_srv_sess_enum(dest_srv, NULL, NULL, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -337,7 +337,7 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) hnd.handle = 0; /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(dest_srv, NULL, 0, + res = res ? srv_net_srv_file_enum(dest_srv, NULL, 0, info_level, &ctr, 0x1000, &hnd) : False; if (res) @@ -373,7 +373,7 @@ void cmd_time(struct client_info *info, int argc, char *argv[]) DEBUG(4,("cmd_time: server:%s\n", dest_srv)); /* enumerate files on server */ - res = res ? do_srv_net_remote_tod(dest_srv, &tod) : False; + res = res ? srv_net_remote_tod(dest_srv, &tod) : False; if (res) { -- cgit From 3db52feb1f3b2c07ce0b06ad4a7099fa6efe3fc7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Dec 1999 13:27:58 +0000 Subject: first pass at updating head branch to be to be the same as the SAMBA_2_0 branch (This used to be commit 453a822a76780063dff23526c35408866d0c0154) --- source3/rpcclient/cmd_srvsvc.c | 244 +++++++++++++++-------------------------- 1 file changed, 90 insertions(+), 154 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index f0b10fe0d6..9deb9e801c 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -2,8 +2,8 @@ Unix SMB/Netbios implementation. Version 1.9. NT Domain Authentication SMB / MSRPC client - Copyright (C) Andrew Tridgell 1994-1999 - Copyright (C) Luke Kenneth Casson Leighton 1996-1999 + Copyright (C) Andrew Tridgell 1994-1997 + Copyright (C) Luke Kenneth Casson Leighton 1996-1997 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 @@ -33,49 +33,50 @@ extern int DEBUGLEVEL; #define DEBUG_TESTING +extern struct cli_state *smb_cli; + extern FILE* out_hnd; /**************************************************************************** server get info query ****************************************************************************/ -BOOL net_srv_get_info(struct client_info *info, - uint32 info_level, - SRV_INFO_CTR *ctr) +void cmd_srv_query_info(struct client_info *info) { fstring dest_srv; + fstring tmp; + SRV_INFO_CTR ctr; + uint32 info_level = 101; BOOL res = True; + memset((char *)&ctr, '\0', sizeof(ctr)); + fstrcpy(dest_srv, "\\\\"); fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - DEBUG(4,("net_srv_get_info: server:%s info level: %d\n", + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) + { + info_level = (uint32)strtol(tmp, (char**)NULL, 10); + } + + DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n", dest_srv, (int)info_level)); - /* send info level: receive requested info. hopefully. */ - res = res ? srv_net_srv_get_info(dest_srv, info_level, ctr) : False; + DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); - return res; -} + /* open LSARPC session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; -/**************************************************************************** -server get info query -****************************************************************************/ -void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) -{ - uint32 info_level = 101; - SRV_INFO_CTR ctr; - - bzero(&ctr, sizeof(ctr)); + /* send info level: receive requested info. hopefully. */ + res = res ? do_srv_net_srv_get_info(smb_cli, + dest_srv, info_level, &ctr) : False; - if (argc > 1) - { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); - } + /* close the session */ + cli_nt_session_close(smb_cli); - if (net_srv_get_info(info, info_level, &ctr)) + if (res) { DEBUG(5,("cmd_srv_query_info: query succeeded\n")); @@ -89,83 +90,21 @@ void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]) } } -/**************************************************************************** -server enum transports -****************************************************************************/ -BOOL msrpc_srv_enum_tprt( const char* dest_srv, - uint32 info_level, - SRV_TPRT_INFO_CTR *ctr, - TPRT_INFO_FN(tprt_fn)) -{ - BOOL res = True; - BOOL res1 = True; - - ENUM_HND hnd; - - hnd.ptr_hnd = 1; - hnd.handle = 0; - - /* enumerate transports on server */ - res1 = res ? srv_net_srv_tprt_enum(dest_srv, - info_level, ctr, 0xffffffff, &hnd) : False; - - tprt_fn(ctr); - - free_srv_tprt_ctr(ctr); - - return res1; -} - -static void srv_display_tprt_ctr(const SRV_TPRT_INFO_CTR *ctr) -{ - display_srv_tprt_info_ctr(out_hnd, ACTION_HEADER , ctr); - display_srv_tprt_info_ctr(out_hnd, ACTION_ENUMERATE, ctr); - display_srv_tprt_info_ctr(out_hnd, ACTION_FOOTER , ctr); -} - -/**************************************************************************** -server enum transports -****************************************************************************/ -void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]) -{ - fstring dest_srv; - SRV_TPRT_INFO_CTR ctr; - uint32 info_level = 0; - - bzero(&ctr, sizeof(ctr)); - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (argc > 1) - { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_enum_tprt: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - /* enumerate transports on server */ - msrpc_srv_enum_tprt(dest_srv, - info_level, &ctr, - srv_display_tprt_ctr); -} - /**************************************************************************** server enum connections ****************************************************************************/ -void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) +void cmd_srv_enum_conn(struct client_info *info) { fstring dest_srv; fstring qual_srv; + fstring tmp; SRV_CONN_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 0; BOOL res = True; - bzero(&ctr, sizeof(ctr)); + memset((char *)&ctr, '\0', sizeof(ctr)); fstrcpy(qual_srv, "\\\\"); fstrcat(qual_srv, info->myhostname); @@ -175,19 +114,25 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (argc > 1) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", dest_srv, (int)info_level)); + DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate connections on server */ - res = res ? srv_net_srv_conn_enum(dest_srv, qual_srv, + res = res ? do_srv_net_srv_conn_enum(smb_cli, + dest_srv, qual_srv, info_level, &ctr, 0xffffffff, &hnd) : False; if (res) @@ -197,6 +142,9 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) display_srv_conn_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } + /* close the session */ + cli_nt_session_close(smb_cli); + if (res) { DEBUG(5,("cmd_srv_enum_conn: query succeeded\n")); @@ -210,43 +158,52 @@ void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]) /**************************************************************************** server enum shares ****************************************************************************/ -void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) +void cmd_srv_enum_shares(struct client_info *info) { fstring dest_srv; - SRV_SHARE_INFO_CTR ctr; + fstring tmp; + SRV_R_NET_SHARE_ENUM r_o; ENUM_HND hnd; uint32 info_level = 1; BOOL res = True; - bzero(&ctr, sizeof(ctr)); - fstrcpy(dest_srv, "\\\\"); fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (argc > 1) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", dest_srv, (int)info_level)); + DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + hnd.ptr_hnd = 0; hnd.handle = 0; /* enumerate shares_files on server */ - res = res ? srv_net_srv_share_enum(dest_srv, - info_level, &ctr, 0xffffffff, &hnd) : False; + res = res ? do_srv_net_srv_share_enum(smb_cli, + dest_srv, + info_level, &r_o, 0xffffffff, &hnd) : False; if (res) { - display_srv_share_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_share_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_share_info_ctr(out_hnd, ACTION_FOOTER , &ctr); + display_srv_share_info_ctr(out_hnd, ACTION_HEADER , &r_o.ctr); + display_srv_share_info_ctr(out_hnd, ACTION_ENUMERATE, &r_o.ctr); + display_srv_share_info_ctr(out_hnd, ACTION_FOOTER , &r_o.ctr); + free_srv_r_net_share_enum(&r_o); } + /* close the session */ + cli_nt_session_close(smb_cli); + if (res) { DEBUG(5,("cmd_srv_enum_shares: query succeeded\n")); @@ -260,42 +217,44 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]) /**************************************************************************** server enum sessions ****************************************************************************/ -void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) +void cmd_srv_enum_sess(struct client_info *info) { fstring dest_srv; + fstring tmp; SRV_SESS_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 0; BOOL res = True; - bzero(&ctr, sizeof(ctr)); + memset((char *)&ctr, '\0', sizeof(ctr)); fstrcpy(dest_srv, "\\\\"); fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (argc > 1) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", dest_srv, (int)info_level)); + DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate sessions on server */ - res = res ? srv_net_srv_sess_enum(dest_srv, NULL, NULL, - info_level, &ctr, 0x1000, &hnd) : False; + res = res ? do_srv_net_srv_sess_enum(smb_cli, + dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; - if (res) - { - display_srv_sess_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_sess_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_sess_info_ctr(out_hnd, ACTION_FOOTER , &ctr); - } + /* close the session */ + cli_nt_session_close(smb_cli); if (res) { @@ -310,35 +269,42 @@ void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]) /**************************************************************************** server enum files ****************************************************************************/ -void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) +void cmd_srv_enum_files(struct client_info *info) { fstring dest_srv; + fstring tmp; SRV_FILE_INFO_CTR ctr; ENUM_HND hnd; uint32 info_level = 3; BOOL res = True; - bzero(&ctr, sizeof(ctr)); + memset((char *)&ctr, '\0', sizeof(ctr)); fstrcpy(dest_srv, "\\\\"); fstrcat(dest_srv, info->dest_host); strupper(dest_srv); - if (argc > 1) + if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) { - info_level = (uint32)strtol(argv[1], (char**)NULL, 10); + info_level = (uint32)strtol(tmp, (char**)NULL, 10); } DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", dest_srv, (int)info_level)); + DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open srvsvc session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; + hnd.ptr_hnd = 1; hnd.handle = 0; /* enumerate files on server */ - res = res ? srv_net_srv_file_enum(dest_srv, NULL, 0, - info_level, &ctr, 0x1000, &hnd) : False; + res = res ? do_srv_net_srv_file_enum(smb_cli, + dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; + if (res) { @@ -347,39 +313,8 @@ void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]) display_srv_file_info_ctr(out_hnd, ACTION_FOOTER , &ctr); } - if (res) - { - DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_files: query failed\n")); - } -} - -/**************************************************************************** -display remote time -****************************************************************************/ -void cmd_time(struct client_info *info, int argc, char *argv[]) -{ - fstring dest_srv; - TIME_OF_DAY_INFO tod; - BOOL res = True; - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - DEBUG(4,("cmd_time: server:%s\n", dest_srv)); - - /* enumerate files on server */ - res = res ? srv_net_remote_tod(dest_srv, &tod) : False; - - if (res) - { - fprintf(out_hnd, "\tRemote Time:\t%s\n\n", - http_timestring(tod.elapsedt)); - } + /* close the session */ + cli_nt_session_close(smb_cli); if (res) { @@ -390,3 +325,4 @@ void cmd_time(struct client_info *info, int argc, char *argv[]) DEBUG(5,("cmd_srv_enum_files: query failed\n")); } } + -- cgit From 00e3fe132476fcaed0f4b9bbe74b0a6559c39df0 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 25 Apr 2000 14:06:57 +0000 Subject: moved trans2.h and nterr.h into includes.h with all our other includes (This used to be commit d7cd7c88fdabb01d9e40ae8a657737907a21ac37) --- source3/rpcclient/cmd_srvsvc.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 9deb9e801c..e1d95af381 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -27,7 +27,6 @@ #endif #include "includes.h" -#include "nterr.h" extern int DEBUGLEVEL; -- cgit From 40ff4007c7ea1c1512592c8a0cb3833be2fe97d1 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 24 May 2001 00:20:32 +0000 Subject: Added stubs for SRVSVC and NETLOGON rpcclient commands. (This used to be commit 3343c9f0d67d98687e5933e1a73c0ff487279160) --- source3/rpcclient/cmd_srvsvc.c | 317 +++-------------------------------------- 1 file changed, 21 insertions(+), 296 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index e1d95af381..636e708a09 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -1,10 +1,10 @@ /* Unix SMB/Netbios implementation. - Version 1.9. - NT Domain Authentication SMB / MSRPC client - Copyright (C) Andrew Tridgell 1994-1997 - Copyright (C) Luke Kenneth Casson Leighton 1996-1997 - + Version 2.2 + RPC pipe client + + Copyright (C) Tim Potter 2000 + 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 @@ -20,308 +20,33 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#ifdef SYSLOG -#undef SYSLOG -#endif - #include "includes.h" extern int DEBUGLEVEL; -#define DEBUG_TESTING +/* Server query info */ -extern struct cli_state *smb_cli; - -extern FILE* out_hnd; - - -/**************************************************************************** -server get info query -****************************************************************************/ -void cmd_srv_query_info(struct client_info *info) +static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, + char **argv) { - fstring dest_srv; - fstring tmp; - SRV_INFO_CTR ctr; uint32 info_level = 101; + SRV_INFO_CTR ctr; + TALLOC_CTX *mem_ctx; - BOOL res = True; - - memset((char *)&ctr, '\0', sizeof(ctr)); - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open LSARPC session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; - - /* send info level: receive requested info. hopefully. */ - res = res ? do_srv_net_srv_get_info(smb_cli, - dest_srv, info_level, &ctr) : False; - - /* close the session */ - cli_nt_session_close(smb_cli); - - if (res) - { - DEBUG(5,("cmd_srv_query_info: query succeeded\n")); - - display_srv_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_info_ctr(out_hnd, ACTION_FOOTER , &ctr); - } - else - { - DEBUG(5,("cmd_srv_query_info: query failed\n")); - } -} - -/**************************************************************************** -server enum connections -****************************************************************************/ -void cmd_srv_enum_conn(struct client_info *info) -{ - fstring dest_srv; - fstring qual_srv; - fstring tmp; - SRV_CONN_INFO_CTR ctr; - ENUM_HND hnd; - uint32 info_level = 0; - - BOOL res = True; - - memset((char *)&ctr, '\0', sizeof(ctr)); - - fstrcpy(qual_srv, "\\\\"); - fstrcat(qual_srv, info->myhostname); - strupper(qual_srv); - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; - - hnd.ptr_hnd = 1; - hnd.handle = 0; - - /* enumerate connections on server */ - res = res ? do_srv_net_srv_conn_enum(smb_cli, - dest_srv, qual_srv, - info_level, &ctr, 0xffffffff, &hnd) : False; - - if (res) - { - display_srv_conn_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_conn_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_conn_info_ctr(out_hnd, ACTION_FOOTER , &ctr); - } - - /* close the session */ - cli_nt_session_close(smb_cli); - - if (res) - { - DEBUG(5,("cmd_srv_enum_conn: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_conn: query failed\n")); - } -} - -/**************************************************************************** -server enum shares -****************************************************************************/ -void cmd_srv_enum_shares(struct client_info *info) -{ - fstring dest_srv; - fstring tmp; - SRV_R_NET_SHARE_ENUM r_o; - ENUM_HND hnd; - uint32 info_level = 1; - - BOOL res = True; - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; - - hnd.ptr_hnd = 0; - hnd.handle = 0; - - /* enumerate shares_files on server */ - res = res ? do_srv_net_srv_share_enum(smb_cli, - dest_srv, - info_level, &r_o, 0xffffffff, &hnd) : False; - - if (res) - { - display_srv_share_info_ctr(out_hnd, ACTION_HEADER , &r_o.ctr); - display_srv_share_info_ctr(out_hnd, ACTION_ENUMERATE, &r_o.ctr); - display_srv_share_info_ctr(out_hnd, ACTION_FOOTER , &r_o.ctr); - free_srv_r_net_share_enum(&r_o); + if (argc > 2) { + printf("Usage: %s [infolevel]\n", argv[0]); + return 0; } - /* close the session */ - cli_nt_session_close(smb_cli); + if (argc == 2) + info_level = atoi(argv[1]); - if (res) - { - DEBUG(5,("cmd_srv_enum_shares: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_shares: query failed\n")); - } + return 0; } -/**************************************************************************** -server enum sessions -****************************************************************************/ -void cmd_srv_enum_sess(struct client_info *info) -{ - fstring dest_srv; - fstring tmp; - SRV_SESS_INFO_CTR ctr; - ENUM_HND hnd; - uint32 info_level = 0; - - BOOL res = True; - - memset((char *)&ctr, '\0', sizeof(ctr)); - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; - - hnd.ptr_hnd = 1; - hnd.handle = 0; - - /* enumerate sessions on server */ - res = res ? do_srv_net_srv_sess_enum(smb_cli, - dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; - - /* close the session */ - cli_nt_session_close(smb_cli); - - if (res) - { - DEBUG(5,("cmd_srv_enum_sess: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_sess: query failed\n")); - } -} - -/**************************************************************************** -server enum files -****************************************************************************/ -void cmd_srv_enum_files(struct client_info *info) -{ - fstring dest_srv; - fstring tmp; - SRV_FILE_INFO_CTR ctr; - ENUM_HND hnd; - uint32 info_level = 3; - - BOOL res = True; - - memset((char *)&ctr, '\0', sizeof(ctr)); - - fstrcpy(dest_srv, "\\\\"); - fstrcat(dest_srv, info->dest_host); - strupper(dest_srv); - - if (next_token(NULL, tmp, NULL, sizeof(tmp)-1)) - { - info_level = (uint32)strtol(tmp, (char**)NULL, 10); - } - - DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n", - dest_srv, (int)info_level)); - - DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd)); - - /* open srvsvc session. */ - res = res ? cli_nt_session_open(smb_cli, PIPE_SRVSVC) : False; - - hnd.ptr_hnd = 1; - hnd.handle = 0; - - /* enumerate files on server */ - res = res ? do_srv_net_srv_file_enum(smb_cli, - dest_srv, NULL, info_level, &ctr, 0x1000, &hnd) : False; - - - if (res) - { - display_srv_file_info_ctr(out_hnd, ACTION_HEADER , &ctr); - display_srv_file_info_ctr(out_hnd, ACTION_ENUMERATE, &ctr); - display_srv_file_info_ctr(out_hnd, ACTION_FOOTER , &ctr); - } - - /* close the session */ - cli_nt_session_close(smb_cli); - - if (res) - { - DEBUG(5,("cmd_srv_enum_files: query succeeded\n")); - } - else - { - DEBUG(5,("cmd_srv_enum_files: query failed\n")); - } -} +/* List of commands exported by this module */ +struct cmd_set srvsvc_commands[] = { + { "SRVSVC", NULL, "" }, + { NULL, NULL, NULL } +}; -- cgit From 43bc613e74f06d4e6169c359149db72c9f925039 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 24 May 2001 08:10:50 +0000 Subject: Added srvinfo and partial logonctrl and logonctrl2 commands. (This used to be commit c93718daa1375269e4e0ef52016271b7a607e292) --- source3/rpcclient/cmd_srvsvc.c | 193 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 192 insertions(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 636e708a09..b804cc383d 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -3,6 +3,8 @@ Version 2.2 RPC pipe client + Copyright (C) Andrew Tridgell 1992-1999 + Copyright (C) Luke Kenneth Casson Leighton 1996 - 1999 Copyright (C) Tim Potter 2000 This program is free software; you can redistribute it and/or modify @@ -24,6 +26,160 @@ extern int DEBUGLEVEL; +/* Display server query info */ + +static char *get_server_type_str(uint32 type) +{ + static fstring typestr; + int i; + + if (type == SV_TYPE_ALL) { + fstrcpy(typestr, "All"); + return typestr; + } + + typestr[0] = 0; + + for (i = 0; i < 32; i++) { + if (type & (1 << i)) { + switch (1 << i) { + case SV_TYPE_WORKSTATION: + fstrcat(typestr, "Wk "); + break; + case SV_TYPE_SERVER: + fstrcat(typestr, "Sv "); + break; + case SV_TYPE_SQLSERVER: + fstrcat(typestr, "Sql "); + break; + case SV_TYPE_DOMAIN_CTRL: + fstrcat(typestr, "PDC "); + break; + case SV_TYPE_DOMAIN_BAKCTRL: + fstrcat(typestr, "BDC "); + break; + case SV_TYPE_TIME_SOURCE: + fstrcat(typestr, "Tim "); + break; + case SV_TYPE_AFP: + fstrcat(typestr, "AFP "); + break; + case SV_TYPE_NOVELL: + fstrcat(typestr, "Nov "); + break; + case SV_TYPE_DOMAIN_MEMBER: + fstrcat(typestr, "Dom "); + break; + case SV_TYPE_PRINTQ_SERVER: + fstrcat(typestr, "PrQ "); + break; + case SV_TYPE_DIALIN_SERVER: + fstrcat(typestr, "Din "); + break; + case SV_TYPE_SERVER_UNIX: + fstrcat(typestr, "Unx "); + break; + case SV_TYPE_NT: + fstrcat(typestr, "NT "); + break; + case SV_TYPE_WFW: + fstrcat(typestr, "Wfw "); + break; + case SV_TYPE_SERVER_MFPN: + fstrcat(typestr, "Mfp "); + break; + case SV_TYPE_SERVER_NT: + fstrcat(typestr, "SNT "); + break; + case SV_TYPE_POTENTIAL_BROWSER: + fstrcat(typestr, "PtB "); + break; + case SV_TYPE_BACKUP_BROWSER: + fstrcat(typestr, "BMB "); + break; + case SV_TYPE_MASTER_BROWSER: + fstrcat(typestr, "LMB "); + break; + case SV_TYPE_DOMAIN_MASTER: + fstrcat(typestr, "DMB "); + break; + case SV_TYPE_SERVER_OSF: + fstrcat(typestr, "OSF "); + break; + case SV_TYPE_SERVER_VMS: + fstrcat(typestr, "VMS "); + break; + case SV_TYPE_WIN95_PLUS: + fstrcat(typestr, "W95 "); + break; + case SV_TYPE_ALTERNATE_XPORT: + fstrcat(typestr, "Xpt "); + break; + case SV_TYPE_LOCAL_LIST_ONLY: + fstrcat(typestr, "Dom "); + break; + case SV_TYPE_DOMAIN_ENUM: + fstrcat(typestr, "Loc "); + break; + } + } + } + + i = strlen(typestr) - 1; + + if (typestr[i] == ' ') + typestr[i] = 0; + + return typestr; +} + +static void display_server(char *sname, uint32 type, const char *comment) +{ + printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), + comment); +} + +static void display_srv_info_101(SRV_INFO_101 *sv101) +{ + fstring name; + fstring comment; + + unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1); + unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1); + + display_server(name, sv101->srv_type, comment); + + printf("\tplatform_id :\t%d\n", sv101->platform_id); + printf("\tos version :\t%d.%d\n", sv101->ver_major, + sv101->ver_minor); + + printf("\tserver type :\t0x%x\n", sv101->srv_type); +} + +static void display_srv_info_102(SRV_INFO_102 *sv102) +{ + fstring name; + fstring comment; + fstring usr_path; + + unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1); + unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1); + unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1); + + display_server(name, sv102->srv_type, comment); + + printf("\tplatform_id :\t%d\n", sv102->platform_id); + printf("\tos version :\t%d.%d\n", sv102->ver_major, + sv102->ver_minor); + + printf("\tusers :\t%x\n", sv102->users); + printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden); + printf("\tannounce, delta :\t%d, %d\n", sv102->announce, + sv102->ann_delta); + printf("\tlicenses :\t%d\n", sv102->licenses); + printf("\tuser path :\t%s\n", usr_path); +} + /* Server query info */ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, @@ -32,6 +188,7 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, uint32 info_level = 101; SRV_INFO_CTR ctr; TALLOC_CTX *mem_ctx; + uint32 result = NT_STATUS_UNSUCCESSFUL; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -41,12 +198,46 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, if (argc == 2) info_level = atoi(argv[1]); - return 0; + if (!(mem_ctx = talloc_init())) { + DEBUG(0,("cmd_srvsvc_srv_query_info: talloc_init failed\n")); + goto done; + } + + /* Initialise RPC connection */ + + if (!cli_nt_session_open (cli, PIPE_SRVSVC)) { + DEBUG(0, ("Could not initialize srvsvc pipe!\n")); + goto done; + } + + if ((result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, + &ctr) + != NT_STATUS_NOPROBLEMO)) { + goto done; + } + + /* Display results */ + + switch (info_level) { + case 101: + display_srv_info_101(&ctr.srv.sv101); + break; + case 102: + display_srv_info_102(&ctr.srv.sv102); + break; + default: + printf("unsupported info level %d\n", info_level); + break; + } + + done: + return result; } /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { { "SRVSVC", NULL, "" }, + { "srvinfo", cmd_srvsvc_srv_query_info, "Server query info" }, { NULL, NULL, NULL } }; -- cgit From 8db78af9702dab2e89f1f7adf56996a20a8cb2f4 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Fri, 20 Jul 2001 04:38:58 +0000 Subject: Started adding some help/usage info for rpcclient commands. (This used to be commit 37052a1bcc5cd049918c3d5ac4c41c3a669290af) --- source3/rpcclient/cmd_srvsvc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index b804cc383d..c097f5325d 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -237,7 +237,10 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { - { "SRVSVC", NULL, "" }, - { "srvinfo", cmd_srvsvc_srv_query_info, "Server query info" }, - { NULL, NULL, NULL } + + { "SRVSVC" }, + + { "srvinfo", cmd_srvsvc_srv_query_info, "Server query info", "" }, + + { NULL } }; -- cgit From acc149c427e780b35ebe3028722ed0c42c4c3854 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 10 Aug 2001 09:52:10 +0000 Subject: - avoid possible mem leaks in rpcclient/cmd_*.c (talloc_destroy not performed) - ported two rpc back from TNG (WINREG: shutdown and abort shutdown) - some optimizations and changed some DEBUG statement in loadparm.c - changed rpcclient a bit moved from non reentrant next_token_nr to next_token - in cmd_reg.c not sure if getopt will work ok on all platforms only setting optind=0 (This used to be commit fd54412ce9c3504a547e232602d6129e08dd9d4d) --- source3/rpcclient/cmd_srvsvc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index c097f5325d..b74dc5a833 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -200,7 +200,7 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, if (!(mem_ctx = talloc_init())) { DEBUG(0,("cmd_srvsvc_srv_query_info: talloc_init failed\n")); - goto done; + return result; } /* Initialise RPC connection */ @@ -231,6 +231,8 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, } done: + talloc_destroy(mem_ctx); + return result; } -- cgit From b031af348c7dcc8c74bf49945211c466b8eca079 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Aug 2001 19:46:22 +0000 Subject: converted another bunch of stuff to NTSTATUS (This used to be commit 1d36250e338ae0ff9fbbf86019809205dd97d05e) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index b74dc5a833..63d84db9c8 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -212,7 +212,7 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, if ((result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, &ctr) - != NT_STATUS_NOPROBLEMO)) { + != NT_STATUS_OK)) { goto done; } -- cgit From c76dd1404041f42d3a398339cefbeb60f22d2910 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 4 Sep 2001 10:57:29 +0000 Subject: it now all compiles - so try enabling it by default and see what explodes on the build farm (This used to be commit 5bb7e4f0f65edf1db20245f403cbe81833134240) --- source3/rpcclient/cmd_srvsvc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 63d84db9c8..e5addc1acc 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -182,17 +182,17 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) /* Server query info */ -static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, +static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, char **argv) { uint32 info_level = 101; SRV_INFO_CTR ctr; TALLOC_CTX *mem_ctx; - uint32 result = NT_STATUS_UNSUCCESSFUL; + NTSTATUS result = NT_STATUS_UNSUCCESSFUL; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return 0; + return NT_STATUS_OK; } if (argc == 2) @@ -210,9 +210,9 @@ static uint32 cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, goto done; } - if ((result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, - &ctr) - != NT_STATUS_OK)) { + result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, + &ctr); + if (!NT_STATUS_IS_OK(result)) { goto done; } -- cgit From dc1fc3ee8ec2199bc73bb5d7ec711c6800f61d65 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Tue, 2 Oct 2001 04:29:50 +0000 Subject: Removed 'extern int DEBUGLEVEL' as it is now in the smb.h header. (This used to be commit 2d0922b0eabfdc0aaf1d0797482fef47ed7fde8e) --- source3/rpcclient/cmd_srvsvc.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index e5addc1acc..9e5b2054ee 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -24,8 +24,6 @@ #include "includes.h" -extern int DEBUGLEVEL; - /* Display server query info */ static char *get_server_type_str(uint32 type) -- cgit From 439c7e0ca2ceb866cac4f0fbed65e157aa12482d Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Fri, 12 Oct 2001 05:56:23 +0000 Subject: Some old stuff hanging around since the CIFS conference. Big cleanup of rpcclient code. Refactored cmd_* functions to move common mem_ctx and pipe opening stuff up one level. Moved rpcclient.h into rpcclient directory and out of includes/smb.h (This used to be commit a40facba9651f9fb1dcc9e143f92ca298a324312) --- source3/rpcclient/cmd_srvsvc.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 9e5b2054ee..f4ff11adf1 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -23,6 +23,7 @@ */ #include "includes.h" +#include "rpcclient.h" /* Display server query info */ @@ -180,12 +181,12 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) /* Server query info */ -static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, - char **argv) +static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, char **argv) { uint32 info_level = 101; SRV_INFO_CTR ctr; - TALLOC_CTX *mem_ctx; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; if (argc > 2) { @@ -196,20 +197,9 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, if (argc == 2) info_level = atoi(argv[1]); - if (!(mem_ctx = talloc_init())) { - DEBUG(0,("cmd_srvsvc_srv_query_info: talloc_init failed\n")); - return result; - } - - /* Initialise RPC connection */ - - if (!cli_nt_session_open (cli, PIPE_SRVSVC)) { - DEBUG(0, ("Could not initialize srvsvc pipe!\n")); - goto done; - } - result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, &ctr); + if (!NT_STATUS_IS_OK(result)) { goto done; } @@ -229,8 +219,6 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, int argc, } done: - talloc_destroy(mem_ctx); - return result; } @@ -240,7 +228,7 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", cmd_srvsvc_srv_query_info, "Server query info", "" }, + { "srvinfo", cmd_srvsvc_srv_query_info, PIPE_SRVSVC, "Server query info", "" }, { NULL } }; -- cgit From cd68afe31256ad60748b34f7318a180cfc2127cc Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Wed, 30 Jan 2002 06:08:46 +0000 Subject: Removed version number from file header. Changed "SMB/Netbios" to "SMB/CIFS" in file header. (This used to be commit 6a58c9bd06d0d7502a24bf5ce5a2faf0a146edfa) --- source3/rpcclient/cmd_srvsvc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index f4ff11adf1..6fbd152dfb 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -1,6 +1,5 @@ /* - Unix SMB/Netbios implementation. - Version 2.2 + Unix SMB/CIFS implementation. RPC pipe client Copyright (C) Andrew Tridgell 1992-1999 -- cgit From e90b65284812aaa5ff9e9935ce9bbad7791cbbcd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 15 Jul 2002 10:35:28 +0000 Subject: updated the 3.0 branch from the head branch - ready for alpha18 (This used to be commit 03ac082dcb375b6f3ca3d810a6a6367542bc23ce) --- source3/rpcclient/cmd_srvsvc.c | 131 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 6fbd152dfb..43bfb25048 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -4,7 +4,7 @@ Copyright (C) Andrew Tridgell 1992-1999 Copyright (C) Luke Kenneth Casson Leighton 1996 - 1999 - Copyright (C) Tim Potter 2000 + Copyright (C) Tim Potter 2000,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 @@ -221,6 +221,132 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, return result; } +static void display_share_info_1(SRV_SHARE_INFO_1 *info1) +{ + fstring netname = "", remark = ""; + + rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); +} + +static void display_share_info_2(SRV_SHARE_INFO_2 *info2) +{ + fstring netname = "", remark = "", path = "", passwd = ""; + + rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark); + rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path); + rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); + printf("\tpath:\t%s\n", path); + printf("\tpassword:\t%s\n", passwd); +} + +static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, char **argv) +{ + uint32 info_level = 2; + SRV_SHARE_INFO_CTR ctr; + WERROR result; + ENUM_HND hnd; + uint32 preferred_len = 0xffffffff, i; + + if (argc > 2) { + printf("Usage: %s [infolevel]\n", argv[0]); + return NT_STATUS_OK; + } + + if (argc == 2) + info_level = atoi(argv[1]); + + init_enum_hnd(&hnd, 0); + + result = cli_srvsvc_net_share_enum( + cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); + + if (!W_ERROR_IS_OK(result)) + goto done; + + /* Display results */ + + switch (info_level) { + case 1: + for (i = 0; i < ctr.num_entries; i++) + display_share_info_1(&ctr.share.info1[i]); + break; + case 2: + for (i = 0; i < ctr.num_entries; i++) + display_share_info_2(&ctr.share.info2[i]); + break; + default: + printf("unsupported info level %d\n", info_level); + break; + } + + done: + return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; +} + +static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, char **argv) +{ + TIME_OF_DAY_INFO tod; + WERROR result; + + if (argc > 1) { + printf("Usage: %s\n", argv[0]); + return NT_STATUS_OK; + } + + result = cli_srvsvc_net_remote_tod( + cli, mem_ctx, cli->srv_name_slash, &tod); + + if (!W_ERROR_IS_OK(result)) + goto done; + + done: + return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; +} + +static NTSTATUS cmd_srvsvc_net_file_enum(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, char **argv) +{ + uint32 info_level = 3; + SRV_FILE_INFO_CTR ctr; + WERROR result; + ENUM_HND hnd; + uint32 preferred_len = 0; + + if (argc > 2) { + printf("Usage: %s [infolevel]\n", argv[0]); + return NT_STATUS_OK; + } + + if (argc == 2) + info_level = atoi(argv[1]); + + init_enum_hnd(&hnd, 0); + + ZERO_STRUCT(ctr); + + result = cli_srvsvc_net_file_enum( + cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); + + if (!W_ERROR_IS_OK(result)) + goto done; + + done: + return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; +} + /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { @@ -228,6 +354,9 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, { "srvinfo", cmd_srvsvc_srv_query_info, PIPE_SRVSVC, "Server query info", "" }, + { "netshareenum", cmd_srvsvc_net_share_enum, PIPE_SRVSVC, "Enumerate shares", "" }, + { "netfileenum", cmd_srvsvc_net_file_enum, PIPE_SRVSVC, "Enumerate open files", "" }, + { "netremotetod", cmd_srvsvc_net_remote_tod, PIPE_SRVSVC, "Fetch remote time of day", "" }, { NULL } }; -- cgit From 64c53e819b53035ff07f9fa00ca4daef18138f51 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 17 Aug 2002 15:33:49 +0000 Subject: sync 3.0 branch with HEAD (This used to be commit 6497eb78e87a6ffa4c2c61aa4ef6ecd451821a27) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 43bfb25048..8d416f8db0 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -270,7 +270,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, result = cli_srvsvc_net_share_enum( cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); - if (!W_ERROR_IS_OK(result)) + if (!W_ERROR_IS_OK(result) || !ctr.num_entries) goto done; /* Display results */ -- cgit From 36ef82a52953384acedbd51f54ded9357fa8ca3e Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 4 Oct 2002 04:10:23 +0000 Subject: merge of new client side support the Win2k LSARPC UUID in rpcbind from APP_HEAD (This used to be commit 1cfd2ee433305e91e87804dd55d10e025d30a69e) --- source3/rpcclient/cmd_srvsvc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 8d416f8db0..282cbb3b99 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -353,10 +353,10 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", cmd_srvsvc_srv_query_info, PIPE_SRVSVC, "Server query info", "" }, - { "netshareenum", cmd_srvsvc_net_share_enum, PIPE_SRVSVC, "Enumerate shares", "" }, - { "netfileenum", cmd_srvsvc_net_file_enum, PIPE_SRVSVC, "Enumerate open files", "" }, - { "netremotetod", cmd_srvsvc_net_remote_tod, PIPE_SRVSVC, "Fetch remote time of day", "" }, + { "srvinfo", cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" }, + { "netshareenum", cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" }, + { "netfileenum", cmd_srvsvc_net_file_enum, PI_SRVSVC, "Enumerate open files", "" }, + { "netremotetod", cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" }, { NULL } }; -- cgit From 7024ab8dcaab5ee590975fc8660dfd37e0b6a776 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Wed, 19 Feb 2003 22:52:50 +0000 Subject: Merge NTSTATUS vs WERROR return for cli_srvsvc_net_srv_get_info() (This used to be commit 7edaf937963fa1d0f06343969b46ed6e4f39a6ea) --- source3/rpcclient/cmd_srvsvc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 282cbb3b99..10fdfd7437 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -179,14 +179,13 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) } /* Server query info */ - static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, char **argv) { uint32 info_level = 101; SRV_INFO_CTR ctr; - NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + WERROR result; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -199,7 +198,7 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, &ctr); - if (!NT_STATUS_IS_OK(result)) { + if (!W_ERROR_IS_OK(result)) { goto done; } @@ -218,7 +217,7 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, } done: - return result; + return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; } static void display_share_info_1(SRV_SHARE_INFO_1 *info1) -- cgit From 1788f806e7655aa37cff22eaa6f3f424fb779274 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Tue, 25 Feb 2003 23:51:56 +0000 Subject: Merge: const fixes. (This used to be commit a20aba09996e470425a151271237f2d48a8302af) --- source3/rpcclient/cmd_srvsvc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 10fdfd7437..8597c7bc2e 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -181,7 +181,7 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) /* Server query info */ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, TALLOC_CTX *mem_ctx, - int argc, char **argv) + int argc, const char **argv) { uint32 info_level = 101; SRV_INFO_CTR ctr; @@ -248,7 +248,7 @@ static void display_share_info_2(SRV_SHARE_INFO_2 *info2) static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, - int argc, char **argv) + int argc, const char **argv) { uint32 info_level = 2; SRV_SHARE_INFO_CTR ctr; @@ -294,7 +294,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, TALLOC_CTX *mem_ctx, - int argc, char **argv) + int argc, const char **argv) { TIME_OF_DAY_INFO tod; WERROR result; @@ -316,7 +316,7 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, static NTSTATUS cmd_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, - int argc, char **argv) + int argc, const char **argv) { uint32 info_level = 3; SRV_FILE_INFO_CTR ctr; -- cgit From 417bf608f4253fadf4b227b5f7360f03b0193ff2 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Tue, 18 Mar 2003 06:30:30 +0000 Subject: Merge of waider's rpcclient return type patch. (This used to be commit fb91bfa7a28f548dcc549f7e09805e4485c83538) --- source3/rpcclient/cmd_srvsvc.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 8597c7bc2e..3e569f51ce 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -179,7 +179,7 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) } /* Server query info */ -static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, +static WERROR cmd_srvsvc_srv_query_info(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -189,7 +189,7 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) @@ -217,7 +217,7 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct cli_state *cli, } done: - return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return result; } static void display_share_info_1(SRV_SHARE_INFO_1 *info1) @@ -246,7 +246,7 @@ static void display_share_info_2(SRV_SHARE_INFO_2 *info2) printf("\tpassword:\t%s\n", passwd); } -static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, +static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -258,7 +258,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) @@ -289,10 +289,10 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct cli_state *cli, } done: - return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return result; } -static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, +static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -301,7 +301,7 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, if (argc > 1) { printf("Usage: %s\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } result = cli_srvsvc_net_remote_tod( @@ -311,10 +311,10 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct cli_state *cli, goto done; done: - return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return result; } -static NTSTATUS cmd_srvsvc_net_file_enum(struct cli_state *cli, +static WERROR cmd_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -326,7 +326,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct cli_state *cli, if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) @@ -343,7 +343,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct cli_state *cli, goto done; done: - return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return result; } /* List of commands exported by this module */ @@ -352,10 +352,10 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" }, - { "netshareenum", cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" }, - { "netfileenum", cmd_srvsvc_net_file_enum, PI_SRVSVC, "Enumerate open files", "" }, - { "netremotetod", cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" }, + { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" }, + { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" }, + { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, "Enumerate open files", "" }, + { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" }, { NULL } }; -- cgit From c8137eeea40c0b9f5526fd0c9cfd5843a572a8a0 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 21 Jul 2004 01:32:09 +0000 Subject: r1553: Good patch from Guenther Deschner to display share ACL entries from rpcclient. Jeremy. (This used to be commit bd64f0c08143545a8613688402f769a713227557) --- source3/rpcclient/cmd_srvsvc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 3e569f51ce..6e295a50fa 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -246,6 +246,25 @@ static void display_share_info_2(SRV_SHARE_INFO_2 *info2) printf("\tpassword:\t%s\n", passwd); } +static void display_share_info_502(SRV_SHARE_INFO_502 *info502) +{ + fstring netname = "", remark = "", path = "", passwd = ""; + + rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark); + rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path); + rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); + printf("\tpath:\t%s\n", path); + printf("\tpassword:\t%s\n", passwd); + + if (info502->info_502_str.sd) + display_sec_desc(info502->info_502_str.sd); + +} + static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) @@ -283,6 +302,10 @@ static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, for (i = 0; i < ctr.num_entries; i++) display_share_info_2(&ctr.share.info2[i]); break; + case 502: + for (i = 0; i < ctr.num_entries; i++) + display_share_info_502(&ctr.share.info502[i]); + break; default: printf("unsupported info level %d\n", info_level); break; -- cgit From 9f1335b0158aa136630f2591030d1e3e4f6fa124 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Mon, 13 Jun 2005 13:16:55 +0000 Subject: r7534: Add missing cli_srvsvc_net_share_set_info-function and rpcclient-testers. Needed in preparation of share-ACL migration in net. Guenther (This used to be commit 08d124079f4ed1ad008a83510c05b430c86fbf78) --- source3/rpcclient/cmd_srvsvc.c | 83 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 6e295a50fa..bdb2f22b54 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -315,6 +315,87 @@ static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, return result; } +static WERROR cmd_srvsvc_net_share_get_info(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + uint32 info_level = 502; + SRV_SHARE_INFO info; + WERROR result; + + if (argc > 3) { + printf("Usage: %s [sharename] [infolevel]\n", argv[0]); + return WERR_OK; + } + + if (argc == 3) + info_level = atoi(argv[2]); + + result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); + + if (!W_ERROR_IS_OK(result)) + goto done; + + /* Display results */ + + switch (info_level) { + case 1: + display_share_info_1(&info.share.info1); + break; + case 2: + display_share_info_2(&info.share.info2); + break; + case 502: + display_share_info_502(&info.share.info502); + break; + default: + printf("unsupported info level %d\n", info_level); + break; + } + + done: + return result; +} + +static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + uint32 info_level = 502; + SRV_SHARE_INFO info_get; + WERROR result; + + if (argc > 3) { + printf("Usage: %s [sharename] [comment]\n", argv[0]); + return WERR_OK; + } + + /* retrieve share info */ + result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + if (!W_ERROR_IS_OK(result)) + goto done; + + info_get.switch_value = info_level; + info_get.ptr_share_ctr = 1; + init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); + + /* set share info */ + result = cli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); + + if (!W_ERROR_IS_OK(result)) + goto done; + + /* re-retrieve share info and display */ + result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + if (!W_ERROR_IS_OK(result)) + goto done; + + display_share_info_502(&info_get.share.info502); + + done: + return result; +} + static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) @@ -377,6 +458,8 @@ struct cmd_set srvsvc_commands[] = { { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" }, { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" }, + { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, "Get Share Info", "" }, + { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, "Set Share Info", "" }, { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, "Enumerate open files", "" }, { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" }, -- cgit From 75545d578eb8f3450021c8eec4b1158dd95f44ef Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 16 Jun 2005 09:36:53 +0000 Subject: r7632: Cleanup "net share migrate"-code. * Allow to copy share security descriptors to already existing shares separatly. * Added abstraction function to enum all or a single share info Guenther (This used to be commit 97097497ae42d7a03286bbe16bcffb8224137688) --- source3/rpcclient/cmd_srvsvc.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index bdb2f22b54..1d173ffdff 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -260,6 +260,11 @@ static void display_share_info_502(SRV_SHARE_INFO_502 *info502) printf("\tpath:\t%s\n", path); printf("\tpassword:\t%s\n", passwd); + printf("\ttype:\t0x%x\n", info502->info_502.type); + printf("\tperms:\t%d\n", info502->info_502.perms); + printf("\tmax_uses:\t%d\n", info502->info_502.max_uses); + printf("\tnum_uses:\t%d\n", info502->info_502.num_uses); + if (info502->info_502_str.sd) display_sec_desc(info502->info_502_str.sd); -- cgit From 54abd2aa66069e6baf7769c496f46d9dba18db39 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Fri, 30 Sep 2005 17:13:37 +0000 Subject: r10656: BIG merge from trunk. Features not copied over * \PIPE\unixinfo * winbindd's {group,alias}membership new functions * winbindd's lookupsids() functionality * swat (trunk changes to be reverted as per discussion with Deryck) (This used to be commit 939c3cb5d78e3a2236209b296aa8aba8bdce32d3) --- source3/rpcclient/cmd_srvsvc.c | 44 ++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 21 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 1d173ffdff..da81a82c8d 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -179,7 +179,7 @@ static void display_srv_info_102(SRV_INFO_102 *sv102) } /* Server query info */ -static WERROR cmd_srvsvc_srv_query_info(struct cli_state *cli, +static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -195,7 +195,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct cli_state *cli, if (argc == 2) info_level = atoi(argv[1]); - result = cli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, + result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, &ctr); if (!W_ERROR_IS_OK(result)) { @@ -270,7 +270,7 @@ static void display_share_info_502(SRV_SHARE_INFO_502 *info502) } -static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, +static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -290,7 +290,7 @@ static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, init_enum_hnd(&hnd, 0); - result = cli_srvsvc_net_share_enum( + result = rpccli_srvsvc_net_share_enum( cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); if (!W_ERROR_IS_OK(result) || !ctr.num_entries) @@ -320,7 +320,7 @@ static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli, return result; } -static WERROR cmd_srvsvc_net_share_get_info(struct cli_state *cli, +static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -336,7 +336,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct cli_state *cli, if (argc == 3) info_level = atoi(argv[2]); - result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); if (!W_ERROR_IS_OK(result)) goto done; @@ -362,7 +362,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct cli_state *cli, return result; } -static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, +static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -376,7 +376,7 @@ static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, } /* retrieve share info */ - result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; @@ -385,13 +385,13 @@ static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); /* set share info */ - result = cli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; /* re-retrieve share info and display */ - result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; @@ -401,11 +401,12 @@ static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, return result; } -static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, +static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { TIME_OF_DAY_INFO tod; + fstring srv_name_slash; WERROR result; if (argc > 1) { @@ -413,8 +414,9 @@ static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, return WERR_OK; } - result = cli_srvsvc_net_remote_tod( - cli, mem_ctx, cli->srv_name_slash, &tod); + fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); + result = rpccli_srvsvc_net_remote_tod( + cli, mem_ctx, srv_name_slash, &tod); if (!W_ERROR_IS_OK(result)) goto done; @@ -423,7 +425,7 @@ static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, return result; } -static WERROR cmd_srvsvc_net_file_enum(struct cli_state *cli, +static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -445,7 +447,7 @@ static WERROR cmd_srvsvc_net_file_enum(struct cli_state *cli, ZERO_STRUCT(ctr); - result = cli_srvsvc_net_file_enum( + result = rpccli_srvsvc_net_file_enum( cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); if (!W_ERROR_IS_OK(result)) @@ -461,12 +463,12 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" }, - { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" }, - { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, "Get Share Info", "" }, - { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, "Set Share Info", "" }, - { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, "Enumerate open files", "" }, - { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" }, + { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" }, + { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" }, + { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" }, + { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, + { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, + { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, { NULL } }; -- cgit From 967ab90b175112aabde4da449bef912372da669c Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 13 Jan 2006 11:19:59 +0000 Subject: r12901: Fix netfileenum returning WERR_BUF_TOO_SMALL. Guenther (This used to be commit b8ff07b04afe82bdce5d1f69513ce67ecde5b030) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index da81a82c8d..53ee7300da 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -433,7 +433,7 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, SRV_FILE_INFO_CTR ctr; WERROR result; ENUM_HND hnd; - uint32 preferred_len = 0; + uint32 preferred_len = 0xffff; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); -- cgit From 7ba2554d88a187ca1f4f40014363fdf9de2223a0 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 21 Sep 2006 23:57:32 +0000 Subject: r18802: Use the pidl-generated code for the srvsvc interface, both client and server code. This has had some basic testing. I'll do more during the next couple of days and hopefully also make RPC-SRVSVC from Samba4 pass against it. (This used to be commit ef10672399c4b82700dc431b4d93431ffdd42d98) --- source3/rpcclient/cmd_srvsvc.c | 172 +++++++++++++++++------------------------ 1 file changed, 70 insertions(+), 102 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 53ee7300da..d6e01eee85 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -131,51 +131,38 @@ static char *get_server_type_str(uint32 type) return typestr; } -static void display_server(char *sname, uint32 type, const char *comment) +static void display_server(const char *sname, uint32 type, const char *comment) { printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), comment); } -static void display_srv_info_101(SRV_INFO_101 *sv101) +static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *sv101) { - fstring name; - fstring comment; - - unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1); - unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1); - - display_server(name, sv101->srv_type, comment); + display_server(sv101->server_name, sv101->server_type, sv101->comment); printf("\tplatform_id :\t%d\n", sv101->platform_id); - printf("\tos version :\t%d.%d\n", sv101->ver_major, - sv101->ver_minor); + printf("\tos version :\t%d.%d\n", sv101->version_major, + sv101->version_minor); - printf("\tserver type :\t0x%x\n", sv101->srv_type); + printf("\tserver type :\t0x%x\n", sv101->server_type); } -static void display_srv_info_102(SRV_INFO_102 *sv102) +static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102) { - fstring name; - fstring comment; - fstring usr_path; - - unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1); - unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1); - unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1); - - display_server(name, sv102->srv_type, comment); + display_server(sv102->server_name, sv102->server_type, + sv102->comment); printf("\tplatform_id :\t%d\n", sv102->platform_id); - printf("\tos version :\t%d.%d\n", sv102->ver_major, - sv102->ver_minor); + printf("\tos version :\t%d.%d\n", sv102->version_major, + sv102->version_minor); printf("\tusers :\t%x\n", sv102->users); printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden); printf("\tannounce, delta :\t%d, %d\n", sv102->announce, - sv102->ann_delta); + sv102->anndelta); printf("\tlicenses :\t%d\n", sv102->licenses); - printf("\tuser path :\t%s\n", usr_path); + printf("\tuser path :\t%s\n", sv102->userpath); } /* Server query info */ @@ -184,7 +171,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 101; - SRV_INFO_CTR ctr; + union srvsvc_NetSrvInfo ctr; WERROR result; if (argc > 2) { @@ -195,7 +182,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, + result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level, &ctr); if (!W_ERROR_IS_OK(result)) { @@ -206,10 +193,10 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, switch (info_level) { case 101: - display_srv_info_101(&ctr.srv.sv101); + display_srv_info_101(ctr.info101); break; case 102: - display_srv_info_102(&ctr.srv.sv102); + display_srv_info_102(ctr.info102); break; default: printf("unsupported info level %d\n", info_level); @@ -220,53 +207,34 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, return result; } -static void display_share_info_1(SRV_SHARE_INFO_1 *info1) +static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1) { - fstring netname = "", remark = ""; - - rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); + printf("netname: %s\n", info1->name); + printf("\tremark:\t%s\n", info1->comment); } -static void display_share_info_2(SRV_SHARE_INFO_2 *info2) +static void display_share_info_2(struct srvsvc_NetShareInfo2 *info2) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); + printf("netname: %s\n", info2->name); + printf("\tremark:\t%s\n", info2->comment); + printf("\tpath:\t%s\n", info2->path); + printf("\tpassword:\t%s\n", info2->password); } -static void display_share_info_502(SRV_SHARE_INFO_502 *info502) +static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); - - printf("\ttype:\t0x%x\n", info502->info_502.type); - printf("\tperms:\t%d\n", info502->info_502.perms); - printf("\tmax_uses:\t%d\n", info502->info_502.max_uses); - printf("\tnum_uses:\t%d\n", info502->info_502.num_uses); + printf("netname: %s\n", info502->name); + printf("\tremark:\t%s\n", info502->comment); + printf("\tpath:\t%s\n", info502->path); + printf("\tpassword:\t%s\n", info502->password); + + printf("\ttype:\t0x%x\n", info502->type); + printf("\tperms:\t%d\n", info502->permissions); + printf("\tmax_uses:\t%d\n", info502->max_users); + printf("\tnum_uses:\t%d\n", info502->current_users); - if (info502->info_502_str.sd) - display_sec_desc(info502->info_502_str.sd); + if (info502->sd) + display_sec_desc(info502->sd); } @@ -275,10 +243,11 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 2; - SRV_SHARE_INFO_CTR ctr; + union srvsvc_NetShareCtr ctr; WERROR result; - ENUM_HND hnd; + uint32 hnd; uint32 preferred_len = 0xffffffff, i; + uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -288,28 +257,29 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - init_enum_hnd(&hnd, 0); + hnd = 0; - result = rpccli_srvsvc_net_share_enum( - cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); + result = rpccli_srvsvc_NetShareEnum( + cli, mem_ctx, NULL, &info_level, &ctr, preferred_len, &numentries, + &hnd); - if (!W_ERROR_IS_OK(result) || !ctr.num_entries) + if (!W_ERROR_IS_OK(result) || !numentries) goto done; /* Display results */ switch (info_level) { case 1: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_1(&ctr.share.info1[i]); + for (i = 0; i < numentries; i++) + display_share_info_1(&ctr.ctr1->array[i]); break; case 2: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_2(&ctr.share.info2[i]); + for (i = 0; i < numentries; i++) + display_share_info_2(&ctr.ctr2->array[i]); break; case 502: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_502(&ctr.share.info502[i]); + for (i = 0; i < numentries; i++) + display_share_info_502(&ctr.ctr502->array[i]); break; default: printf("unsupported info level %d\n", info_level); @@ -325,7 +295,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info; + union srvsvc_NetShareInfo info; WERROR result; if (argc > 3) { @@ -336,7 +306,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, if (argc == 3) info_level = atoi(argv[2]); - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info); if (!W_ERROR_IS_OK(result)) goto done; @@ -345,13 +315,13 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, switch (info_level) { case 1: - display_share_info_1(&info.share.info1); + display_share_info_1(info.info1); break; case 2: - display_share_info_2(&info.share.info2); + display_share_info_2(info.info2); break; case 502: - display_share_info_502(&info.share.info502); + display_share_info_502(info.info502); break; default: printf("unsupported info level %d\n", info_level); @@ -367,8 +337,9 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info_get; + union srvsvc_NetShareInfo info_get; WERROR result; + uint32 parm_error; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); @@ -376,26 +347,22 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, } /* retrieve share info */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; - info_get.switch_value = info_level; - info_get.ptr_share_ctr = 1; - init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); - /* set share info */ - result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error); if (!W_ERROR_IS_OK(result)) goto done; /* re-retrieve share info and display */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; - display_share_info_502(&info_get.share.info502); + display_share_info_502(info_get.info502); done: return result; @@ -405,9 +372,9 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { - TIME_OF_DAY_INFO tod; fstring srv_name_slash; WERROR result; + struct srvsvc_NetRemoteTODInfo tod; if (argc > 1) { printf("Usage: %s\n", argv[0]); @@ -415,7 +382,7 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, } fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); - result = rpccli_srvsvc_net_remote_tod( + result = rpccli_srvsvc_NetRemoteTOD( cli, mem_ctx, srv_name_slash, &tod); if (!W_ERROR_IS_OK(result)) @@ -430,10 +397,11 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 3; - SRV_FILE_INFO_CTR ctr; + union srvsvc_NetFileCtr ctr; WERROR result; - ENUM_HND hnd; + uint32 hnd; uint32 preferred_len = 0xffff; + uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -443,12 +411,12 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - init_enum_hnd(&hnd, 0); + hnd = 0; ZERO_STRUCT(ctr); - result = rpccli_srvsvc_net_file_enum( - cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); + result = rpccli_srvsvc_NetFileEnum( + cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); if (!W_ERROR_IS_OK(result)) goto done; -- cgit From 0c3194816b513e3743ddcacd1eca2b683ca39b88 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 24 Sep 2006 02:32:34 +0000 Subject: r18865: fixed some of the most obvious NTSTATUS/WERROR mixups in Samba3. It still doesn't compile with immediate structures and the NTSTATUS/WERROR separation, as there are still several places where the two error types are mixed up. I haven't fixed those as they require decisions about the rpcclient code that I really don't want to get into (the error handling there is a mess) So samba3 compiles now, but only becaise HAVE_IMMEDIATE_STRUCTURES is not used (look for HAVE_IMMEDIATE_STRUCTURES_XX_DISABLED) (This used to be commit 8438a6a7d4506d395c8b4bd0e99f9c100e5e3c4e) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index d6e01eee85..208e7a2543 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -172,7 +172,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, { uint32 info_level = 101; union srvsvc_NetSrvInfo ctr; - WERROR result; + NTSTATUS result; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); -- cgit From 323b724ce99ebf53e8b8a78a8c4da650d5c145fc Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 24 Sep 2006 22:10:20 +0000 Subject: r18874: Fix some NTSTATUS/WERROR mixups (This used to be commit ecac9b59594ef14a65091591c258b000036575fc) --- source3/rpcclient/cmd_srvsvc.c | 62 +++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 208e7a2543..c58f908cec 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -166,7 +166,7 @@ static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102) } /* Server query info */ -static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { @@ -176,7 +176,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } if (argc == 2) @@ -185,7 +185,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level, &ctr); - if (!W_ERROR_IS_OK(result)) { + if (!NT_STATUS_IS_OK(result)) { goto done; } @@ -238,20 +238,20 @@ static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502) } -static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 2; union srvsvc_NetShareCtr ctr; - WERROR result; + NTSTATUS result; uint32 hnd; uint32 preferred_len = 0xffffffff, i; uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } if (argc == 2) @@ -263,7 +263,7 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, cli, mem_ctx, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); - if (!W_ERROR_IS_OK(result) || !numentries) + if (!NT_STATUS_IS_OK(result) || !numentries) goto done; /* Display results */ @@ -290,17 +290,17 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, return result; } -static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 502; union srvsvc_NetShareInfo info; - WERROR result; + NTSTATUS result; if (argc > 3) { printf("Usage: %s [sharename] [infolevel]\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } if (argc == 3) @@ -308,7 +308,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; /* Display results */ @@ -332,34 +332,34 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, return result; } -static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 502; union srvsvc_NetShareInfo info_get; - WERROR result; + NTSTATUS result; uint32 parm_error; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } /* retrieve share info */ result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; /* set share info */ result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; /* re-retrieve share info and display */ result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; display_share_info_502(info_get.info502); @@ -368,44 +368,44 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, return result; } -static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { fstring srv_name_slash; - WERROR result; + NTSTATUS result; struct srvsvc_NetRemoteTODInfo tod; if (argc > 1) { printf("Usage: %s\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); result = rpccli_srvsvc_NetRemoteTOD( cli, mem_ctx, srv_name_slash, &tod); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; done: return result; } -static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, +static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 3; union srvsvc_NetFileCtr ctr; - WERROR result; + NTSTATUS result; uint32 hnd; uint32 preferred_len = 0xffff; uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return WERR_OK; + return NT_STATUS_OK; } if (argc == 2) @@ -418,7 +418,7 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, result = rpccli_srvsvc_NetFileEnum( cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(result)) goto done; done: @@ -431,12 +431,12 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" }, - { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" }, - { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" }, - { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, - { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, - { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, + { "srvinfo", RPC_RTYPE_NTSTATUS, cmd_srvsvc_srv_query_info, NULL, PI_SRVSVC, NULL, "Server query info", "" }, + { "netshareenum",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_enum, NULL, PI_SRVSVC, NULL, "Enumerate shares", "" }, + { "netsharegetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_get_info, NULL, PI_SRVSVC, NULL, "Get Share Info", "" }, + { "netsharesetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_set_info, NULL, PI_SRVSVC, NULL, "Set Share Info", "" }, + { "netfileenum", RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_file_enum, NULL, PI_SRVSVC, NULL, "Enumerate open files", "" }, + { "netremotetod",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_remote_tod, NULL, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, { NULL } }; -- cgit From efffbc90362aa9d09f4c3f2e17f040ad81f7988d Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 26 Sep 2006 23:43:58 +0000 Subject: r18935: Make "netshareenum" work again. There is most probably a better way to do this... Any pointers? Guenther (This used to be commit 1f09e54fec9ac2e6173272d83d8c96d33636f1a0) --- source3/rpcclient/cmd_srvsvc.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index c58f908cec..e1e5af752a 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -249,6 +249,8 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, uint32 preferred_len = 0xffffffff, i; uint32 numentries; + ZERO_STRUCT(ctr); + if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); return NT_STATUS_OK; @@ -259,8 +261,33 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, hnd = 0; + switch (info_level) { + case 1: { + struct srvsvc_NetShareCtr1 ctr1; + ZERO_STRUCT(ctr1); + ctr.ctr1 = &ctr1; + } + break; + + case 2: { + struct srvsvc_NetShareCtr2 ctr2; + ZERO_STRUCT(ctr2); + ctr.ctr2 = &ctr2; + } + break; + case 502: { + struct srvsvc_NetShareCtr502 ctr502; + ZERO_STRUCT(ctr502); + ctr.ctr502 = &ctr502; + } + break; + + default: + break; + } + result = rpccli_srvsvc_NetShareEnum( - cli, mem_ctx, NULL, &info_level, &ctr, preferred_len, &numentries, + cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries, &hnd); if (!NT_STATUS_IS_OK(result) || !numentries) -- cgit From ef05328552f125bc393e44fe96f99a540520ddb1 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 22 Oct 2006 10:30:46 +0000 Subject: r19451: Another cleanup of 18802. Referring to structures after the block has been left is not a good idea. Volker (This used to be commit 88ac17db196c828e15a73c7561fda291b15e2613) --- source3/rpcclient/cmd_srvsvc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index e1e5af752a..9f6e606c3a 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -243,6 +243,9 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 2; + struct srvsvc_NetShareCtr1 ctr1; + struct srvsvc_NetShareCtr2 ctr2; + struct srvsvc_NetShareCtr502 ctr502; union srvsvc_NetShareCtr ctr; NTSTATUS result; uint32 hnd; @@ -263,20 +266,17 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, switch (info_level) { case 1: { - struct srvsvc_NetShareCtr1 ctr1; ZERO_STRUCT(ctr1); ctr.ctr1 = &ctr1; } break; case 2: { - struct srvsvc_NetShareCtr2 ctr2; ZERO_STRUCT(ctr2); ctr.ctr2 = &ctr2; } break; case 502: { - struct srvsvc_NetShareCtr502 ctr502; ZERO_STRUCT(ctr502); ctr.ctr502 = &ctr502; } -- cgit From 01367cdfd03d2412904c57807e1ff3c62696d05f Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 19 Nov 2006 18:57:52 +0000 Subject: r19797: Convert the remaining pipes to the "new" unique out ptr handling (This used to be commit bc4e0a388a2859d2ddcfb8f07920f3b121a37894) --- source3/rpcclient/cmd_srvsvc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 9f6e606c3a..1d1c2f7852 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -249,6 +249,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, union srvsvc_NetShareCtr ctr; NTSTATUS result; uint32 hnd; + uint32 *phnd = &hnd; uint32 preferred_len = 0xffffffff, i; uint32 numentries; @@ -288,7 +289,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, result = rpccli_srvsvc_NetShareEnum( cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries, - &hnd); + &phnd); if (!NT_STATUS_IS_OK(result) || !numentries) goto done; @@ -366,7 +367,7 @@ static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, uint32 info_level = 502; union srvsvc_NetShareInfo info_get; NTSTATUS result; - uint32 parm_error; + uint32 *parm_error = NULL; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); @@ -401,7 +402,7 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, { fstring srv_name_slash; NTSTATUS result; - struct srvsvc_NetRemoteTODInfo tod; + struct srvsvc_NetRemoteTODInfo *tod; if (argc > 1) { printf("Usage: %s\n", argv[0]); @@ -427,6 +428,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, union srvsvc_NetFileCtr ctr; NTSTATUS result; uint32 hnd; + uint32 *phnd = &hnd; uint32 preferred_len = 0xffff; uint32 numentries; @@ -443,7 +445,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, ZERO_STRUCT(ctr); result = rpccli_srvsvc_NetFileEnum( - cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); + cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &phnd); if (!NT_STATUS_IS_OK(result)) goto done; -- cgit From 62e11c4f1748d98f479110c8c0e656a8f65dca4d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 16 Jan 2007 15:42:03 +0000 Subject: r20832: Remove extra pointers previously added to unique [out] pointers. Instead, add [ref] pointers where necessary (top-level [ref] pointers, by spec, don't appear on the wire). This brings us closer to the DCE/RPC standard again. (This used to be commit 580f2a7197b1bc9db14a643fdd112b40ef37aaef) --- source3/rpcclient/cmd_srvsvc.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 1d1c2f7852..87b0fb3531 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -249,7 +249,6 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, union srvsvc_NetShareCtr ctr; NTSTATUS result; uint32 hnd; - uint32 *phnd = &hnd; uint32 preferred_len = 0xffffffff, i; uint32 numentries; @@ -289,7 +288,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, result = rpccli_srvsvc_NetShareEnum( cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries, - &phnd); + &hnd); if (!NT_STATUS_IS_OK(result) || !numentries) goto done; @@ -367,7 +366,7 @@ static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, uint32 info_level = 502; union srvsvc_NetShareInfo info_get; NTSTATUS result; - uint32 *parm_error = NULL; + uint32 parm_error = 0; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); @@ -402,7 +401,7 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, { fstring srv_name_slash; NTSTATUS result; - struct srvsvc_NetRemoteTODInfo *tod; + struct srvsvc_NetRemoteTODInfo tod; if (argc > 1) { printf("Usage: %s\n", argv[0]); @@ -428,7 +427,6 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, union srvsvc_NetFileCtr ctr; NTSTATUS result; uint32 hnd; - uint32 *phnd = &hnd; uint32 preferred_len = 0xffff; uint32 numentries; @@ -445,7 +443,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, ZERO_STRUCT(ctr); result = rpccli_srvsvc_NetFileEnum( - cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &phnd); + cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); if (!NT_STATUS_IS_OK(result)) goto done; -- cgit From d824b98f80ba186030cbb70b3a1e5daf80469ecd Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 9 Jul 2007 19:25:36 +0000 Subject: r23779: Change from v2 or later to v3 or later. Jeremy. (This used to be commit 407e6e695b8366369b7c76af1ff76869b45347b3) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 87b0fb3531..e5c9f90aee 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -8,7 +8,7 @@ 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, -- cgit From 5e54558c6dea67b56bbfaba5698f3a434d3dffb6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 Jul 2007 00:52:41 +0000 Subject: r23784: use the GPLv3 boilerplate as recommended by the FSF and the license text (This used to be commit b0132e94fc5fef936aa766fb99a306b3628e9f07) --- source3/rpcclient/cmd_srvsvc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index e5c9f90aee..b1cefb5f21 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -17,8 +17,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program. If not, see . */ #include "includes.h" -- cgit From e5a951325a6cac8567af3a66de6d2df577508ae4 Mon Sep 17 00:00:00 2001 From: "Gerald (Jerry) Carter" Date: Wed, 10 Oct 2007 15:34:30 -0500 Subject: [GLUE] Rsync SAMBA_3_2_0 SVN r25598 in order to create the v3-2-test branch. (This used to be commit 5c6c8e1fe93f340005110a7833946191659d88ab) --- source3/rpcclient/cmd_srvsvc.c | 261 +++++++++++++++++++++-------------------- 1 file changed, 133 insertions(+), 128 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index b1cefb5f21..572609981d 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -130,61 +130,74 @@ static char *get_server_type_str(uint32 type) return typestr; } -static void display_server(const char *sname, uint32 type, const char *comment) +static void display_server(char *sname, uint32 type, const char *comment) { printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), comment); } -static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *sv101) +static void display_srv_info_101(SRV_INFO_101 *sv101) { - display_server(sv101->server_name, sv101->server_type, sv101->comment); + fstring name; + fstring comment; + + unistr2_to_ascii(name, &sv101->uni_name, sizeof(name)); + unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment)); + + display_server(name, sv101->srv_type, comment); printf("\tplatform_id :\t%d\n", sv101->platform_id); - printf("\tos version :\t%d.%d\n", sv101->version_major, - sv101->version_minor); + printf("\tos version :\t%d.%d\n", sv101->ver_major, + sv101->ver_minor); - printf("\tserver type :\t0x%x\n", sv101->server_type); + printf("\tserver type :\t0x%x\n", sv101->srv_type); } -static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102) +static void display_srv_info_102(SRV_INFO_102 *sv102) { - display_server(sv102->server_name, sv102->server_type, - sv102->comment); + fstring name; + fstring comment; + fstring usr_path; + + unistr2_to_ascii(name, &sv102->uni_name, sizeof(name)); + unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment)); + unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path)); + + display_server(name, sv102->srv_type, comment); printf("\tplatform_id :\t%d\n", sv102->platform_id); - printf("\tos version :\t%d.%d\n", sv102->version_major, - sv102->version_minor); + printf("\tos version :\t%d.%d\n", sv102->ver_major, + sv102->ver_minor); printf("\tusers :\t%x\n", sv102->users); printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden); printf("\tannounce, delta :\t%d, %d\n", sv102->announce, - sv102->anndelta); + sv102->ann_delta); printf("\tlicenses :\t%d\n", sv102->licenses); - printf("\tuser path :\t%s\n", sv102->userpath); + printf("\tuser path :\t%s\n", usr_path); } /* Server query info */ -static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 101; - union srvsvc_NetSrvInfo ctr; - NTSTATUS result; + SRV_INFO_CTR ctr; + WERROR result; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) info_level = atoi(argv[1]); - result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level, + result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, &ctr); - if (!NT_STATUS_IS_OK(result)) { + if (!W_ERROR_IS_OK(result)) { goto done; } @@ -192,10 +205,10 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, switch (info_level) { case 101: - display_srv_info_101(ctr.info101); + display_srv_info_101(&ctr.srv.sv101); break; case 102: - display_srv_info_102(ctr.info102); + display_srv_info_102(&ctr.srv.sv102); break; default: printf("unsupported info level %d\n", info_level); @@ -206,106 +219,96 @@ static NTSTATUS cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, return result; } -static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1) +static void display_share_info_1(SRV_SHARE_INFO_1 *info1) { - printf("netname: %s\n", info1->name); - printf("\tremark:\t%s\n", info1->comment); + fstring netname = "", remark = ""; + + rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); } -static void display_share_info_2(struct srvsvc_NetShareInfo2 *info2) +static void display_share_info_2(SRV_SHARE_INFO_2 *info2) { - printf("netname: %s\n", info2->name); - printf("\tremark:\t%s\n", info2->comment); - printf("\tpath:\t%s\n", info2->path); - printf("\tpassword:\t%s\n", info2->password); + fstring netname = "", remark = "", path = "", passwd = ""; + + rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark); + rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path); + rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); + printf("\tpath:\t%s\n", path); + printf("\tpassword:\t%s\n", passwd); } -static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502) +static void display_share_info_502(SRV_SHARE_INFO_502 *info502) { - printf("netname: %s\n", info502->name); - printf("\tremark:\t%s\n", info502->comment); - printf("\tpath:\t%s\n", info502->path); - printf("\tpassword:\t%s\n", info502->password); - - printf("\ttype:\t0x%x\n", info502->type); - printf("\tperms:\t%d\n", info502->permissions); - printf("\tmax_uses:\t%d\n", info502->max_users); - printf("\tnum_uses:\t%d\n", info502->current_users); + fstring netname = "", remark = "", path = "", passwd = ""; + + rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname); + rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark); + rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path); + rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd); + + printf("netname: %s\n", netname); + printf("\tremark:\t%s\n", remark); + printf("\tpath:\t%s\n", path); + printf("\tpassword:\t%s\n", passwd); + + printf("\ttype:\t0x%x\n", info502->info_502.type); + printf("\tperms:\t%d\n", info502->info_502.perms); + printf("\tmax_uses:\t%d\n", info502->info_502.max_uses); + printf("\tnum_uses:\t%d\n", info502->info_502.num_uses); - if (info502->sd) - display_sec_desc(info502->sd); + if (info502->info_502_str.sd) + display_sec_desc(info502->info_502_str.sd); } -static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 2; - struct srvsvc_NetShareCtr1 ctr1; - struct srvsvc_NetShareCtr2 ctr2; - struct srvsvc_NetShareCtr502 ctr502; - union srvsvc_NetShareCtr ctr; - NTSTATUS result; - uint32 hnd; + SRV_SHARE_INFO_CTR ctr; + WERROR result; + ENUM_HND hnd; uint32 preferred_len = 0xffffffff, i; - uint32 numentries; - - ZERO_STRUCT(ctr); if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) info_level = atoi(argv[1]); - hnd = 0; - - switch (info_level) { - case 1: { - ZERO_STRUCT(ctr1); - ctr.ctr1 = &ctr1; - } - break; - - case 2: { - ZERO_STRUCT(ctr2); - ctr.ctr2 = &ctr2; - } - break; - case 502: { - ZERO_STRUCT(ctr502); - ctr.ctr502 = &ctr502; - } - break; - - default: - break; - } + init_enum_hnd(&hnd, 0); - result = rpccli_srvsvc_NetShareEnum( - cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries, - &hnd); + result = rpccli_srvsvc_net_share_enum( + cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); - if (!NT_STATUS_IS_OK(result) || !numentries) + if (!W_ERROR_IS_OK(result) || !ctr.num_entries) goto done; /* Display results */ switch (info_level) { case 1: - for (i = 0; i < numentries; i++) - display_share_info_1(&ctr.ctr1->array[i]); + for (i = 0; i < ctr.num_entries; i++) + display_share_info_1(&ctr.share.info1[i]); break; case 2: - for (i = 0; i < numentries; i++) - display_share_info_2(&ctr.ctr2->array[i]); + for (i = 0; i < ctr.num_entries; i++) + display_share_info_2(&ctr.share.info2[i]); break; case 502: - for (i = 0; i < numentries; i++) - display_share_info_502(&ctr.ctr502->array[i]); + for (i = 0; i < ctr.num_entries; i++) + display_share_info_502(&ctr.share.info502[i]); break; default: printf("unsupported info level %d\n", info_level); @@ -316,38 +319,38 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, return result; } -static NTSTATUS cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 502; - union srvsvc_NetShareInfo info; - NTSTATUS result; + SRV_SHARE_INFO info; + WERROR result; if (argc > 3) { printf("Usage: %s [sharename] [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 3) info_level = atoi(argv[2]); - result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info); + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); - if (!NT_STATUS_IS_OK(result)) + if (!W_ERROR_IS_OK(result)) goto done; /* Display results */ switch (info_level) { case 1: - display_share_info_1(info.info1); + display_share_info_1(&info.share.info1); break; case 2: - display_share_info_2(info.info2); + display_share_info_2(&info.share.info2); break; case 502: - display_share_info_502(info.info502); + display_share_info_502(&info.share.info502); break; default: printf("unsupported info level %d\n", info_level); @@ -358,93 +361,95 @@ static NTSTATUS cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, return result; } -static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 502; - union srvsvc_NetShareInfo info_get; - NTSTATUS result; - uint32 parm_error = 0; + SRV_SHARE_INFO info_get; + WERROR result; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } /* retrieve share info */ - result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); - if (!NT_STATUS_IS_OK(result)) + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + if (!W_ERROR_IS_OK(result)) goto done; + info_get.switch_value = info_level; + info_get.ptr_share_ctr = 1; + init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); + /* set share info */ - result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error); + result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); - if (!NT_STATUS_IS_OK(result)) + if (!W_ERROR_IS_OK(result)) goto done; /* re-retrieve share info and display */ - result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); - if (!NT_STATUS_IS_OK(result)) + result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + if (!W_ERROR_IS_OK(result)) goto done; - display_share_info_502(info_get.info502); + display_share_info_502(&info_get.share.info502); done: return result; } -static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { + TIME_OF_DAY_INFO tod; fstring srv_name_slash; - NTSTATUS result; - struct srvsvc_NetRemoteTODInfo tod; + WERROR result; if (argc > 1) { printf("Usage: %s\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); - result = rpccli_srvsvc_NetRemoteTOD( + result = rpccli_srvsvc_net_remote_tod( cli, mem_ctx, srv_name_slash, &tod); - if (!NT_STATUS_IS_OK(result)) + if (!W_ERROR_IS_OK(result)) goto done; done: return result; } -static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, +static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 3; - union srvsvc_NetFileCtr ctr; - NTSTATUS result; - uint32 hnd; + SRV_FILE_INFO_CTR ctr; + WERROR result; + ENUM_HND hnd; uint32 preferred_len = 0xffff; - uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); - return NT_STATUS_OK; + return WERR_OK; } if (argc == 2) info_level = atoi(argv[1]); - hnd = 0; + init_enum_hnd(&hnd, 0); ZERO_STRUCT(ctr); - result = rpccli_srvsvc_NetFileEnum( - cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); + result = rpccli_srvsvc_net_file_enum( + cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); - if (!NT_STATUS_IS_OK(result)) + if (!W_ERROR_IS_OK(result)) goto done; done: @@ -457,12 +462,12 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", RPC_RTYPE_NTSTATUS, cmd_srvsvc_srv_query_info, NULL, PI_SRVSVC, NULL, "Server query info", "" }, - { "netshareenum",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_enum, NULL, PI_SRVSVC, NULL, "Enumerate shares", "" }, - { "netsharegetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_get_info, NULL, PI_SRVSVC, NULL, "Get Share Info", "" }, - { "netsharesetinfo",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_share_set_info, NULL, PI_SRVSVC, NULL, "Set Share Info", "" }, - { "netfileenum", RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_file_enum, NULL, PI_SRVSVC, NULL, "Enumerate open files", "" }, - { "netremotetod",RPC_RTYPE_NTSTATUS, cmd_srvsvc_net_remote_tod, NULL, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, + { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" }, + { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" }, + { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" }, + { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, + { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, + { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, { NULL } }; -- cgit From 640f53fe5bd989c57365e6ca85be29d2441c4b99 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 4 Mar 2008 23:11:53 +0100 Subject: Use rpccli_srvsvc_NetSrvGetInfo() in rpcclient. Guenther (This used to be commit 4a74f1e8d2c45574973fc4c0ce4fbc9a843afaa0) --- source3/rpcclient/cmd_srvsvc.c | 78 ++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 40 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 572609981d..4b3601a5ff 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -130,51 +130,37 @@ static char *get_server_type_str(uint32 type) return typestr; } -static void display_server(char *sname, uint32 type, const char *comment) +static void display_server(const char *sname, uint32 type, const char *comment) { printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), comment); } -static void display_srv_info_101(SRV_INFO_101 *sv101) +static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *r) { - fstring name; - fstring comment; + display_server(r->server_name, r->server_type, r->comment); - unistr2_to_ascii(name, &sv101->uni_name, sizeof(name)); - unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment)); - - display_server(name, sv101->srv_type, comment); - - printf("\tplatform_id :\t%d\n", sv101->platform_id); - printf("\tos version :\t%d.%d\n", sv101->ver_major, - sv101->ver_minor); - - printf("\tserver type :\t0x%x\n", sv101->srv_type); + printf("\tplatform_id :\t%d\n", r->platform_id); + printf("\tos version :\t%d.%d\n", + r->version_major, r->version_minor); + printf("\tserver type :\t0x%x\n", r->server_type); } -static void display_srv_info_102(SRV_INFO_102 *sv102) +static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *r) { - fstring name; - fstring comment; - fstring usr_path; - - unistr2_to_ascii(name, &sv102->uni_name, sizeof(name)); - unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment)); - unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path)); - - display_server(name, sv102->srv_type, comment); - - printf("\tplatform_id :\t%d\n", sv102->platform_id); - printf("\tos version :\t%d.%d\n", sv102->ver_major, - sv102->ver_minor); - - printf("\tusers :\t%x\n", sv102->users); - printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden); - printf("\tannounce, delta :\t%d, %d\n", sv102->announce, - sv102->ann_delta); - printf("\tlicenses :\t%d\n", sv102->licenses); - printf("\tuser path :\t%s\n", usr_path); + display_server(r->server_name, r->server_type, r->comment); + + printf("\tplatform_id :\t%d\n", r->platform_id); + printf("\tos version :\t%d.%d\n", + r->version_major, r->version_minor); + printf("\tserver type :\t0x%x\n", r->server_type); + + printf("\tusers :\t%x\n", r->users); + printf("\tdisc, hidden :\t%x, %x\n", r->disc, r->hidden); + printf("\tannounce, delta :\t%d, %d\n", r->announce, + r->anndelta); + printf("\tlicenses :\t%d\n", r->licenses); + printf("\tuser path :\t%s\n", r->userpath); } /* Server query info */ @@ -183,8 +169,10 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 101; - SRV_INFO_CTR ctr; + union srvsvc_NetSrvInfo info; WERROR result; + NTSTATUS status; + const char *server_name; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -194,8 +182,18 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, - &ctr); + server_name = talloc_asprintf_strupper_m(mem_ctx, "\\\\%s", + cli->cli->desthost); + W_ERROR_HAVE_NO_MEMORY(server_name); + + status = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, + server_name, + info_level, + &info, + &result); + if (!NT_STATUS_IS_OK(status)) { + return ntstatus_to_werror(status); + } if (!W_ERROR_IS_OK(result)) { goto done; @@ -205,10 +203,10 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, switch (info_level) { case 101: - display_srv_info_101(&ctr.srv.sv101); + display_srv_info_101(info.info101); break; case 102: - display_srv_info_102(&ctr.srv.sv102); + display_srv_info_102(info.info102); break; default: printf("unsupported info level %d\n", info_level); -- cgit From b0dad261add75789cbbbfed12ed1d3f25c3e2182 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 5 Mar 2008 10:38:13 +0100 Subject: Use rpccli_srvsvc_NetRemoteTOD() in rpcclient. Guenther (This used to be commit 5e9d8cdc948b678e5aa6e04ee13635376b7306f5) --- source3/rpcclient/cmd_srvsvc.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 4b3601a5ff..2e84f0498f 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -402,9 +402,10 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { - TIME_OF_DAY_INFO tod; + struct srvsvc_NetRemoteTODInfo *tod = NULL; fstring srv_name_slash; WERROR result; + NTSTATUS status; if (argc > 1) { printf("Usage: %s\n", argv[0]); @@ -412,8 +413,14 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, } fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); - result = rpccli_srvsvc_net_remote_tod( - cli, mem_ctx, srv_name_slash, &tod); + status = rpccli_srvsvc_NetRemoteTOD(cli, mem_ctx, + srv_name_slash, + &tod, + &result); + if (!NT_STATUS_IS_OK(status)) { + result = ntstatus_to_werror(status); + goto done; + } if (!W_ERROR_IS_OK(result)) goto done; -- cgit From 024cf110b002bc71b0d45ff25ede9aa7e969a49b Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 7 Mar 2008 22:55:33 +0100 Subject: Use pidl generated NetShareGet/SetInfo and Enum calls in rpcclient. Guenther (This used to be commit c940c62029fbce5f2b943f0fb06037fc89bfd297) --- source3/rpcclient/cmd_srvsvc.c | 270 +++++++++++++++++++++++++++++------------ 1 file changed, 191 insertions(+), 79 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 2e84f0498f..e480b71237 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -217,96 +217,161 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, return result; } -static void display_share_info_1(SRV_SHARE_INFO_1 *info1) +static void display_share_info_1(struct srvsvc_NetShareInfo1 *r) { - fstring netname = "", remark = ""; - - rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); + printf("netname: %s\n", r->name); + printf("\tremark:\t%s\n", r->comment); } -static void display_share_info_2(SRV_SHARE_INFO_2 *info2) +static void display_share_info_2(struct srvsvc_NetShareInfo2 *r) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); + printf("netname: %s\n", r->name); + printf("\tremark:\t%s\n", r->comment); + printf("\tpath:\t%s\n", r->path); + printf("\tpassword:\t%s\n", r->password); } -static void display_share_info_502(SRV_SHARE_INFO_502 *info502) +static void display_share_info_502(struct srvsvc_NetShareInfo502 *r) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); - - printf("\ttype:\t0x%x\n", info502->info_502.type); - printf("\tperms:\t%d\n", info502->info_502.perms); - printf("\tmax_uses:\t%d\n", info502->info_502.max_uses); - printf("\tnum_uses:\t%d\n", info502->info_502.num_uses); - - if (info502->info_502_str.sd) - display_sec_desc(info502->info_502_str.sd); + printf("netname: %s\n", r->name); + printf("\tremark:\t%s\n", r->comment); + printf("\tpath:\t%s\n", r->path); + printf("\tpassword:\t%s\n", r->password); + + printf("\ttype:\t0x%x\n", r->type); + printf("\tperms:\t%d\n", r->permissions); + printf("\tmax_uses:\t%d\n", r->max_users); + printf("\tnum_uses:\t%d\n", r->current_users); + + if (r->sd) + display_sec_desc(r->sd); } -static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - int argc, const char **argv) +static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv, + uint32_t opcode) { uint32 info_level = 2; - SRV_SHARE_INFO_CTR ctr; + struct srvsvc_NetShareInfoCtr info_ctr; + struct srvsvc_NetShareCtr0 ctr0; + struct srvsvc_NetShareCtr1 ctr1; + struct srvsvc_NetShareCtr2 ctr2; + struct srvsvc_NetShareCtr501 ctr501; + struct srvsvc_NetShareCtr502 ctr502; + struct srvsvc_NetShareCtr1004 ctr1004; + struct srvsvc_NetShareCtr1005 ctr1005; + struct srvsvc_NetShareCtr1006 ctr1006; + struct srvsvc_NetShareCtr1007 ctr1007; + struct srvsvc_NetShareCtr1501 ctr1501; WERROR result; - ENUM_HND hnd; + NTSTATUS status; + uint32_t totalentries = 0; + uint32_t resume_handle = 0; uint32 preferred_len = 0xffffffff, i; - if (argc > 2) { - printf("Usage: %s [infolevel]\n", argv[0]); + if (argc > 3) { + printf("Usage: %s [infolevel] [resume_handle]\n", argv[0]); return WERR_OK; } - if (argc == 2) + if (argc >= 2) { info_level = atoi(argv[1]); + } - init_enum_hnd(&hnd, 0); + if (argc == 3) { + resume_handle = atoi(argv[2]); + } + + ZERO_STRUCT(info_ctr); - result = rpccli_srvsvc_net_share_enum( - cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); + info_ctr.level = info_level; - if (!W_ERROR_IS_OK(result) || !ctr.num_entries) + switch (info_level) { + case 0: + ZERO_STRUCT(ctr0); + info_ctr.ctr.ctr0 = &ctr0; + break; + case 1: + ZERO_STRUCT(ctr1); + info_ctr.ctr.ctr1 = &ctr1; + break; + case 2: + ZERO_STRUCT(ctr2); + info_ctr.ctr.ctr2 = &ctr2; + break; + case 501: + ZERO_STRUCT(ctr501); + info_ctr.ctr.ctr501 = &ctr501; + break; + case 502: + ZERO_STRUCT(ctr502); + info_ctr.ctr.ctr502 = &ctr502; + break; + case 1004: + ZERO_STRUCT(ctr1004); + info_ctr.ctr.ctr1004 = &ctr1004; + break; + case 1005: + ZERO_STRUCT(ctr1005); + info_ctr.ctr.ctr1005 = &ctr1005; + break; + case 1006: + ZERO_STRUCT(ctr1006); + info_ctr.ctr.ctr1006 = &ctr1006; + break; + case 1007: + ZERO_STRUCT(ctr1007); + info_ctr.ctr.ctr1007 = &ctr1007; + break; + case 1501: + ZERO_STRUCT(ctr1501); + info_ctr.ctr.ctr1501 = &ctr1501; + break; + } + + switch (opcode) { + case NDR_SRVSVC_NETSHAREENUM: + status = rpccli_srvsvc_NetShareEnum(cli, mem_ctx, + cli->cli->desthost, + &info_ctr, + preferred_len, + &totalentries, + &resume_handle, + &result); + break; + case NDR_SRVSVC_NETSHAREENUMALL: + status = rpccli_srvsvc_NetShareEnumAll(cli, mem_ctx, + cli->cli->desthost, + &info_ctr, + preferred_len, + &totalentries, + &resume_handle, + &result); + break; + default: + return WERR_INVALID_PARAM; + } + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { goto done; + } /* Display results */ switch (info_level) { case 1: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_1(&ctr.share.info1[i]); + for (i = 0; i < totalentries; i++) + display_share_info_1(&info_ctr.ctr.ctr1->array[i]); break; case 2: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_2(&ctr.share.info2[i]); + for (i = 0; i < totalentries; i++) + display_share_info_2(&info_ctr.ctr.ctr2->array[i]); break; case 502: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_502(&ctr.share.info502[i]); + for (i = 0; i < totalentries; i++) + display_share_info_502(&info_ctr.ctr.ctr502->array[i]); break; default: printf("unsupported info level %d\n", info_level); @@ -317,15 +382,34 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + return cmd_srvsvc_net_share_enum_int(cli, mem_ctx, + argc, argv, + NDR_SRVSVC_NETSHAREENUM); +} + +static WERROR cmd_srvsvc_net_share_enum_all(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + return cmd_srvsvc_net_share_enum_int(cli, mem_ctx, + argc, argv, + NDR_SRVSVC_NETSHAREENUMALL); +} + static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info; + union srvsvc_NetShareInfo info; WERROR result; + NTSTATUS status; - if (argc > 3) { + if (argc < 2 || argc > 3) { printf("Usage: %s [sharename] [infolevel]\n", argv[0]); return WERR_OK; } @@ -333,22 +417,28 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, if (argc == 3) info_level = atoi(argv[2]); - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); + status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, + cli->cli->desthost, + argv[1], + info_level, + &info, + &result); - if (!W_ERROR_IS_OK(result)) + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { goto done; + } /* Display results */ switch (info_level) { case 1: - display_share_info_1(&info.share.info1); + display_share_info_1(info.info1); break; case 2: - display_share_info_2(&info.share.info2); + display_share_info_2(info.info2); break; case 502: - display_share_info_502(&info.share.info502); + display_share_info_502(info.info502); break; default: printf("unsupported info level %d\n", info_level); @@ -364,8 +454,10 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info_get; + union srvsvc_NetShareInfo info_get; WERROR result; + NTSTATUS status; + uint32_t parm_err = 0; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); @@ -373,27 +465,46 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, } /* retrieve share info */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); - if (!W_ERROR_IS_OK(result)) + status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, + cli->cli->desthost, + argv[1], + info_level, + &info_get, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { goto done; + } - info_get.switch_value = info_level; - info_get.ptr_share_ctr = 1; - init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); - - /* set share info */ - result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); + info_get.info502->comment = argv[2]; - if (!W_ERROR_IS_OK(result)) + /* set share info */ + status = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, + cli->cli->desthost, + argv[1], + info_level, + &info_get, + &parm_err, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { goto done; + } /* re-retrieve share info and display */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); - if (!W_ERROR_IS_OK(result)) + status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, + cli->cli->desthost, + argv[1], + info_level, + &info_get, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { goto done; + } + + display_share_info_502(info_get.info502); - display_share_info_502(&info_get.share.info502); - done: return result; } @@ -469,6 +580,7 @@ struct cmd_set srvsvc_commands[] = { { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" }, { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" }, + { "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, PI_SRVSVC, NULL, "Enumerate all shares", "" }, { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" }, { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, -- cgit From 5e6e3ccd00b715f912523d128cad05041366b3ce Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 7 Mar 2008 23:39:34 +0100 Subject: Add netnamevalidate command to rpcclient. Guenther (This used to be commit 140885d3d87ea2de14b3393a7384dff74a4dd44c) --- source3/rpcclient/cmd_srvsvc.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index e480b71237..8c85372bf5 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -572,6 +572,39 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_name_validate(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + WERROR result; + NTSTATUS status; + uint32_t name_type = 9; + uint32_t flags = 0; + + if (argc < 2 || argc > 3) { + printf("Usage: %s [sharename] [type]\n", argv[0]); + return WERR_OK; + } + + if (argc == 3) { + name_type = atoi(argv[2]); + } + + status = rpccli_srvsvc_NetNameValidate(cli, mem_ctx, + cli->cli->desthost, + argv[1], + name_type, + flags, + &result); + + if (!W_ERROR_IS_OK(result)) + goto done; + + done: + return result; +} + + /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { @@ -585,6 +618,7 @@ struct cmd_set srvsvc_commands[] = { { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, + { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" }, { NULL } }; -- cgit From 62ca78bd27a015681ee22676c88d0fad4d1d7ced Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Sat, 8 Mar 2008 23:00:09 +0100 Subject: Add netfilegetsec command to rpcclient. Guenther (This used to be commit 8c2c17573c179c774d093d780716e95833cb992f) --- source3/rpcclient/cmd_srvsvc.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 8c85372bf5..25a33baa27 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -604,6 +604,36 @@ static WERROR cmd_srvsvc_net_name_validate(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_file_get_sec(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + WERROR result; + NTSTATUS status; + struct sec_desc_buf *sd_buf = NULL; + + if (argc < 2 || argc > 4) { + printf("Usage: %s [sharename] [file]\n", argv[0]); + return WERR_OK; + } + + status = rpccli_srvsvc_NetGetFileSecurity(cli, mem_ctx, + cli->cli->desthost, + argv[1], + argv[2], + SECINFO_DACL, + &sd_buf, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { + goto done; + } + + display_sec_desc(sd_buf->sd); + + done: + return result; +} /* List of commands exported by this module */ @@ -619,6 +649,7 @@ struct cmd_set srvsvc_commands[] = { { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" }, + { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" }, { NULL } }; -- cgit From 64adc15e66b0c98dca827550e432f319ef709b5a Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Sun, 9 Mar 2008 20:04:35 +0100 Subject: Add netsessdel command to rpcclient. Guenther (This used to be commit 5e112ff3d7984c278949833a00349a9f523d4b23) --- source3/rpcclient/cmd_srvsvc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 25a33baa27..351b0cb5c0 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -635,6 +635,33 @@ static WERROR cmd_srvsvc_net_file_get_sec(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_sess_del(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + WERROR result; + NTSTATUS status; + + if (argc < 2 || argc > 4) { + printf("Usage: %s [client] [user]\n", argv[0]); + return WERR_OK; + } + + status = rpccli_srvsvc_NetSessDel(cli, mem_ctx, + cli->cli->desthost, + argv[1], + argv[2], + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { + goto done; + } + + done: + return result; +} + + /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { @@ -650,6 +677,7 @@ struct cmd_set srvsvc_commands[] = { { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" }, { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" }, + { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" }, { NULL } }; -- cgit From 28d53070345e23e6a3b7bea91602a619eb5792bd Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Sun, 9 Mar 2008 20:55:19 +0100 Subject: Add netsessenum command to rpcclient. Guenther (This used to be commit f90306bd24bc243c8f30a16c0414031d69d05c03) --- source3/rpcclient/cmd_srvsvc.c | 84 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 351b0cb5c0..3e0050c728 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -661,6 +661,89 @@ static WERROR cmd_srvsvc_net_sess_del(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + WERROR result; + NTSTATUS status; + struct srvsvc_NetSessInfoCtr info_ctr; + struct srvsvc_NetSessCtr0 ctr0; + struct srvsvc_NetSessCtr1 ctr1; + struct srvsvc_NetSessCtr2 ctr2; + struct srvsvc_NetSessCtr10 ctr10; + struct srvsvc_NetSessCtr502 ctr502; + uint32_t total_entries = 0; + uint32_t resume_handle = 0; + uint32_t level = 1; + const char *client = NULL; + const char *user = NULL; + + if (argc > 5) { + printf("Usage: %s [client] [user]\n", argv[0]); + return WERR_OK; + } + + if (argc >= 2) { + client = argv[1]; + } + + if (argc >= 3) { + user = argv[2]; + } + + if (argc >= 4) { + level = atoi(argv[3]); + } + + ZERO_STRUCT(info_ctr); + + info_ctr.level = level; + + d_printf("trying level: %d\n", level); + + switch (level) { + case 0: + ZERO_STRUCT(ctr0); + info_ctr.ctr.ctr0 = &ctr0; + break; + case 1: + ZERO_STRUCT(ctr1); + info_ctr.ctr.ctr1 = &ctr1; + break; + case 2: + ZERO_STRUCT(ctr2); + info_ctr.ctr.ctr2 = &ctr2; + break; + case 10: + ZERO_STRUCT(ctr10); + info_ctr.ctr.ctr10 = &ctr10; + break; + case 502: + ZERO_STRUCT(ctr502); + info_ctr.ctr.ctr502 = &ctr502; + break; + } + + status = rpccli_srvsvc_NetSessEnum(cli, mem_ctx, + cli->cli->desthost, + client, + user, + &info_ctr, + 0xffffffff, + &total_entries, + &resume_handle, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { + goto done; + } + + done: + return result; +} + + /* List of commands exported by this module */ @@ -678,6 +761,7 @@ struct cmd_set srvsvc_commands[] = { { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" }, { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" }, { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" }, + { "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, PI_SRVSVC, NULL, "Enumerate Sessions", "" }, { NULL } }; -- cgit From cfa16eaca01e13ab20a6560f1020216462af98ba Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Mon, 10 Mar 2008 17:08:55 +0100 Subject: Use rpccli_srvsvc_NetFileEnum in net and rpcclient. Guenther (This used to be commit 348af272f7c0dc0cb316cc06780339dd13eafd0f) --- source3/rpcclient/cmd_srvsvc.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 3e0050c728..1062c95c72 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -545,10 +545,13 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 3; - SRV_FILE_INFO_CTR ctr; + struct srvsvc_NetFileInfoCtr info_ctr; + struct srvsvc_NetFileCtr3 ctr3; WERROR result; - ENUM_HND hnd; + NTSTATUS status; uint32 preferred_len = 0xffff; + uint32_t total_entries = 0; + uint32_t resume_handle = 0; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -558,14 +561,23 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - init_enum_hnd(&hnd, 0); - - ZERO_STRUCT(ctr); - - result = rpccli_srvsvc_net_file_enum( - cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); + ZERO_STRUCT(info_ctr); + ZERO_STRUCT(ctr3); - if (!W_ERROR_IS_OK(result)) + info_ctr.level = info_level; + info_ctr.ctr.ctr3 = &ctr3; + + status = rpccli_srvsvc_NetFileEnum(cli, mem_ctx, + cli->cli->desthost, + NULL, + NULL, + &info_ctr, + preferred_len, + &total_entries, + &resume_handle, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) goto done; done: -- cgit From aa054bd6f31d7bade94b20006eff2b83c2df44a2 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Mon, 10 Mar 2008 17:30:22 +0100 Subject: Add netdiskenum to rpcclient. Guenther (This used to be commit 3ef4d6b524d26f2c345321d5a8c9f7526e322ccd) --- source3/rpcclient/cmd_srvsvc.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 1062c95c72..29ec97f8c9 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -755,7 +755,48 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_disk_enum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + struct srvsvc_NetDiskInfo info; + WERROR result; + NTSTATUS status; + uint32_t total_entries = 0; + uint32_t resume_handle = 0; + uint32_t level = 0; + + if (argc > 2) { + printf("Usage: %s [level] [resume_handle]\n", argv[0]); + return WERR_OK; + } + + if (argc >= 2) { + level = atoi(argv[1]); + } + if (argc >= 3) { + resume_handle = atoi(argv[2]); + } + + ZERO_STRUCT(info); + + status = rpccli_srvsvc_NetDiskEnum(cli, mem_ctx, + cli->cli->desthost, + level, + &info, + 0xffffffff, + &total_entries, + &resume_handle, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { + goto done; + } + + done: + return result; +} /* List of commands exported by this module */ @@ -774,6 +815,7 @@ struct cmd_set srvsvc_commands[] = { { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" }, { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" }, { "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, PI_SRVSVC, NULL, "Enumerate Sessions", "" }, + { "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, PI_SRVSVC, NULL, "Enumerate Disks", "" }, { NULL } }; -- cgit From 0c10ab5cc3144fd7f2082c3b0a7f0e0b7f9bfca6 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Mon, 10 Mar 2008 18:34:50 +0100 Subject: Add netconnenum to rpcclient. Guenther (This used to be commit 627688c7bac4d3afcc846164c2fefebdbbc10d68) --- source3/rpcclient/cmd_srvsvc.c | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 29ec97f8c9..a5eb69c41c 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -798,6 +798,72 @@ static WERROR cmd_srvsvc_net_disk_enum(struct rpc_pipe_client *cli, return result; } +static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + int argc, const char **argv) +{ + struct srvsvc_NetConnInfoCtr info_ctr; + struct srvsvc_NetConnCtr0 ctr0; + struct srvsvc_NetConnCtr1 ctr1; + WERROR result; + NTSTATUS status; + uint32_t total_entries = 0; + uint32_t resume_handle = 0; + uint32_t level = 1; + const char *path = "IPC$"; + + if (argc > 4) { + printf("Usage: %s [level] [path] [resume_handle]\n", argv[0]); + return WERR_OK; + } + + if (argc >= 2) { + level = atoi(argv[1]); + } + + if (argc >= 3) { + path = argv[2]; + } + + if (argc >= 4) { + resume_handle = atoi(argv[3]); + } + + ZERO_STRUCT(info_ctr); + + info_ctr.level = level; + + switch (level) { + case 0: + ZERO_STRUCT(ctr0); + info_ctr.ctr.ctr0 = &ctr0; + break; + case 1: + ZERO_STRUCT(ctr1); + info_ctr.ctr.ctr1 = &ctr1; + break; + default: + return WERR_INVALID_PARAM; + } + + status = rpccli_srvsvc_NetConnEnum(cli, mem_ctx, + cli->cli->desthost, + path, + &info_ctr, + 0xffffffff, + &total_entries, + &resume_handle, + &result); + + if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { + goto done; + } + + done: + return result; +} + + /* List of commands exported by this module */ struct cmd_set srvsvc_commands[] = { @@ -816,6 +882,7 @@ struct cmd_set srvsvc_commands[] = { { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" }, { "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, PI_SRVSVC, NULL, "Enumerate Sessions", "" }, { "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, PI_SRVSVC, NULL, "Enumerate Disks", "" }, + { "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, PI_SRVSVC, NULL, "Enumerate Connections", "" }, { NULL } }; -- cgit From e45b6a595ce4573764d37edcda66ee33421a3ae2 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 11 Mar 2008 04:52:46 +0100 Subject: Fix netdiskenum call in rpcclient. Guenther (This used to be commit dcbfdd1330cf1c7e8d1b4ebc051db139ed6a0053) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index a5eb69c41c..f6985cbc13 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -766,7 +766,7 @@ static WERROR cmd_srvsvc_net_disk_enum(struct rpc_pipe_client *cli, uint32_t resume_handle = 0; uint32_t level = 0; - if (argc > 2) { + if (argc > 4) { printf("Usage: %s [level] [resume_handle]\n", argv[0]); return WERR_OK; } -- cgit From 45a3c8275f374cba853ba92b3c1c2e404ce276c5 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 11 Mar 2008 11:29:49 +0100 Subject: Allow to send no resume_handle in rpcclient's NetShareEnum* calls. Guenther (This used to be commit 7e178a3dc970f55ddb30b4fc467aaaa06ef35b0f) --- source3/rpcclient/cmd_srvsvc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index f6985cbc13..0c447e0306 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -269,6 +269,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, NTSTATUS status; uint32_t totalentries = 0; uint32_t resume_handle = 0; + uint32_t *resume_handle_p = NULL; uint32 preferred_len = 0xffffffff, i; if (argc > 3) { @@ -282,6 +283,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, if (argc == 3) { resume_handle = atoi(argv[2]); + resume_handle_p = &resume_handle; } ZERO_STRUCT(info_ctr); @@ -338,7 +340,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, &info_ctr, preferred_len, &totalentries, - &resume_handle, + resume_handle_p, &result); break; case NDR_SRVSVC_NETSHAREENUMALL: @@ -347,7 +349,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, &info_ctr, preferred_len, &totalentries, - &resume_handle, + resume_handle_p, &result); break; default: -- cgit From fd62e5688b4ced6568da1111f5a97bff0a54932e Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 12 Mar 2008 16:35:41 +0100 Subject: Use existing srv_name_slash. Guenther (This used to be commit 5f2b3145fcaeee58f285b6527e9fac09c5337e8a) --- source3/rpcclient/cmd_srvsvc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 0c447e0306..fc00f8a178 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -516,7 +516,6 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, int argc, const char **argv) { struct srvsvc_NetRemoteTODInfo *tod = NULL; - fstring srv_name_slash; WERROR result; NTSTATUS status; @@ -525,9 +524,8 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, return WERR_OK; } - fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); status = rpccli_srvsvc_NetRemoteTOD(cli, mem_ctx, - srv_name_slash, + cli->cli->srv_name_slash, &tod, &result); if (!NT_STATUS_IS_OK(status)) { -- cgit From 4489ad0998e62f0f0e24194908f5b2b8ac3b012c Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 21 Mar 2008 01:14:23 +0100 Subject: Allow to set or unset resume_handle in netconnenum in rpcclient. Guenther (This used to be commit f1b93c24fea0441deb5319f6fc4df0373d0dc939) --- source3/rpcclient/cmd_srvsvc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index fc00f8a178..a8549829fa 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -809,6 +809,7 @@ static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli, NTSTATUS status; uint32_t total_entries = 0; uint32_t resume_handle = 0; + uint32_t *resume_handle_p = NULL; uint32_t level = 1; const char *path = "IPC$"; @@ -827,6 +828,7 @@ static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli, if (argc >= 4) { resume_handle = atoi(argv[3]); + resume_handle_p = &resume_handle; } ZERO_STRUCT(info_ctr); @@ -852,7 +854,7 @@ static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli, &info_ctr, 0xffffffff, &total_entries, - &resume_handle, + resume_handle_p, &result); if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { -- cgit From 3c2d315b4cb9c13df5c9cc5d45544b422cc42567 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 21 Mar 2008 03:50:49 +0100 Subject: Add support for setting resume handle in netsessenum rpcclient command. Guenther (This used to be commit a01588d65f67ac23a5a2a741bb0419830e42868c) --- source3/rpcclient/cmd_srvsvc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index a8549829fa..51c9819c49 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -687,12 +687,13 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, struct srvsvc_NetSessCtr502 ctr502; uint32_t total_entries = 0; uint32_t resume_handle = 0; + uint32_t *resume_handle_p = NULL; uint32_t level = 1; const char *client = NULL; const char *user = NULL; - if (argc > 5) { - printf("Usage: %s [client] [user]\n", argv[0]); + if (argc > 6) { + printf("Usage: %s [client] [user] [level] [resume_handle]\n", argv[0]); return WERR_OK; } @@ -708,6 +709,11 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, level = atoi(argv[3]); } + if (argc >= 5) { + resume_handle = atoi(argv[4]); + resume_handle_p = &resume_handle; + } + ZERO_STRUCT(info_ctr); info_ctr.level = level; @@ -744,7 +750,7 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, &info_ctr, 0xffffffff, &total_entries, - &resume_handle, + resume_handle_p, &result); if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) { -- cgit From c523c2c3e678756b72665127a23443a7a6b32bde Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 1 Apr 2008 00:32:23 +0200 Subject: Fix build of rpcclient. Guenther (This used to be commit 3cb1cdee9307cafa80ab95233a536f5dd7882ff1) --- source3/rpcclient/cmd_srvsvc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 51c9819c49..070fb36e30 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -243,8 +243,8 @@ static void display_share_info_502(struct srvsvc_NetShareInfo502 *r) printf("\tmax_uses:\t%d\n", r->max_users); printf("\tnum_uses:\t%d\n", r->current_users); - if (r->sd) - display_sec_desc(r->sd); + if (r->sd_buf.sd) + display_sec_desc(r->sd_buf.sd); } -- cgit From 2a2188591b5ed922d09dc723adcf10f8b8f5e5a0 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 19 Apr 2008 21:56:43 +0200 Subject: Add "desthost" to rpc_pipe_client This reduces the dependency on cli_state (This used to be commit 783afab9c891dd7bcb78895b2a639b6f3a0edf5b) --- source3/rpcclient/cmd_srvsvc.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 070fb36e30..7709d47e49 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -183,7 +183,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, info_level = atoi(argv[1]); server_name = talloc_asprintf_strupper_m(mem_ctx, "\\\\%s", - cli->cli->desthost); + cli->desthost); W_ERROR_HAVE_NO_MEMORY(server_name); status = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, @@ -336,7 +336,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, switch (opcode) { case NDR_SRVSVC_NETSHAREENUM: status = rpccli_srvsvc_NetShareEnum(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, &info_ctr, preferred_len, &totalentries, @@ -345,7 +345,7 @@ static WERROR cmd_srvsvc_net_share_enum_int(struct rpc_pipe_client *cli, break; case NDR_SRVSVC_NETSHAREENUMALL: status = rpccli_srvsvc_NetShareEnumAll(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, &info_ctr, preferred_len, &totalentries, @@ -420,7 +420,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, info_level = atoi(argv[2]); status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], info_level, &info, @@ -468,7 +468,7 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, /* retrieve share info */ status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], info_level, &info_get, @@ -482,7 +482,7 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, /* set share info */ status = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], info_level, &info_get, @@ -495,7 +495,7 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, /* re-retrieve share info and display */ status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], info_level, &info_get, @@ -568,7 +568,7 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, info_ctr.ctr.ctr3 = &ctr3; status = rpccli_srvsvc_NetFileEnum(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, NULL, NULL, &info_ctr, @@ -603,7 +603,7 @@ static WERROR cmd_srvsvc_net_name_validate(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetNameValidate(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], name_type, flags, @@ -630,7 +630,7 @@ static WERROR cmd_srvsvc_net_file_get_sec(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetGetFileSecurity(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], argv[2], SECINFO_DACL, @@ -660,7 +660,7 @@ static WERROR cmd_srvsvc_net_sess_del(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetSessDel(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, argv[1], argv[2], &result); @@ -744,7 +744,7 @@ static WERROR cmd_srvsvc_net_sess_enum(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetSessEnum(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, client, user, &info_ctr, @@ -788,7 +788,7 @@ static WERROR cmd_srvsvc_net_disk_enum(struct rpc_pipe_client *cli, ZERO_STRUCT(info); status = rpccli_srvsvc_NetDiskEnum(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, level, &info, 0xffffffff, @@ -855,7 +855,7 @@ static WERROR cmd_srvsvc_net_conn_enum(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetConnEnum(cli, mem_ctx, - cli->cli->desthost, + cli->desthost, path, &info_ctr, 0xffffffff, -- cgit From 9048cafbeaf82d1916de6538024fd660612dd25f Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 19 Apr 2008 23:03:16 +0200 Subject: Move srv_name_slash from cli_state to rpc_pipe_client (This used to be commit a9061e52e1ff8e31aa480f4a30cda64c9d93214e) --- source3/rpcclient/cmd_srvsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 7709d47e49..9efd4c9792 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -525,7 +525,7 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, } status = rpccli_srvsvc_NetRemoteTOD(cli, mem_ctx, - cli->cli->srv_name_slash, + cli->srv_name_slash, &tod, &result); if (!NT_STATUS_IS_OK(status)) { -- cgit From fe2c8e38d3b3bff0fd3c4126a27ad683450e5408 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 29 Apr 2008 20:14:17 +0200 Subject: rpcclient: fix another srv_name_slash. Guenther (This used to be commit de946e6158526ec109b0c3381bab6e6d8e9cc1b2) --- source3/rpcclient/cmd_srvsvc.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 9efd4c9792..b84622f438 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -172,7 +172,6 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, union srvsvc_NetSrvInfo info; WERROR result; NTSTATUS status; - const char *server_name; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -182,12 +181,8 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - server_name = talloc_asprintf_strupper_m(mem_ctx, "\\\\%s", - cli->desthost); - W_ERROR_HAVE_NO_MEMORY(server_name); - status = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, - server_name, + cli->srv_name_slash, info_level, &info, &result); -- cgit From 82b5f54f96b1161b8357a69b985c75f2853573ef Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 20 Jul 2008 18:17:52 +0200 Subject: Refactoring: rpcclient uses ndr_syntax_id instead of pipe_idx (This used to be commit 85db87c451dacf80e9575c04e9e08c625b3f1199) --- source3/rpcclient/cmd_srvsvc.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'source3/rpcclient/cmd_srvsvc.c') diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index b84622f438..10017fa19b 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -873,19 +873,19 @@ struct cmd_set srvsvc_commands[] = { { "SRVSVC" }, - { "srvinfo", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" }, - { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" }, - { "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, PI_SRVSVC, NULL, "Enumerate all shares", "" }, - { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" }, - { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" }, - { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum, PI_SRVSVC, NULL, "Enumerate open files", "" }, - { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" }, - { "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" }, - { "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" }, - { "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" }, - { "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, PI_SRVSVC, NULL, "Enumerate Sessions", "" }, - { "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, PI_SRVSVC, NULL, "Enumerate Disks", "" }, - { "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, PI_SRVSVC, NULL, "Enumerate Connections", "" }, + { "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", "" }, { NULL } }; -- cgit