/****************************************************************************
do a server net tprt enum
****************************************************************************/
-BOOL do_srv_net_srv_tprt_enum(struct cli_state *cli, uint16 fnum,
- const char *server_name,
+BOOL do_srv_net_srv_tprt_enum(
+ const char *srv_name,
uint32 switch_value, SRV_TPRT_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd)
prs_struct data;
prs_struct rdata;
SRV_Q_NET_TPRT_ENUM q_o;
- BOOL valid_enum = False;
+ BOOL valid_enum = False;
+ struct cli_connection *con = NULL;
- if (server_name == NULL || ctr == NULL || preferred_len == 0) return False;
+ if (ctr == NULL || preferred_len == 0) return False;
+
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NETTPRTENUM */
- DEBUG(4,("SRV Net Server Transport Enum(%s), level %d, enum:%8x\n",
- server_name, switch_value, get_enum_hnd(hnd)));
+ DEBUG(4,("SRV Net Server Transport Enum, level %d, enum:%8x\n",
+ switch_value, get_enum_hnd(hnd)));
ctr->switch_value = switch_value;
ctr->ptr_tprt_ctr = 1;
ctr->tprt.info0.ptr_tprt_info = 1;
/* store the parameters */
- make_srv_q_net_tprt_enum(&q_o, server_name,
+ make_srv_q_net_tprt_enum(&q_o, srv_name,
switch_value, ctr,
preferred_len,
hnd);
srv_io_q_net_tprt_enum("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NETTRANSPORTENUM, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NETTRANSPORTENUM, &data, &rdata))
{
SRV_R_NET_TPRT_ENUM r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_enum;
}
/****************************************************************************
do a server net conn enum
****************************************************************************/
-BOOL do_srv_net_srv_conn_enum(struct cli_state *cli, uint16 fnum,
- char *server_name, char *qual_name,
+BOOL do_srv_net_srv_conn_enum( char *srv_name, char *qual_name,
uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd)
prs_struct data;
prs_struct rdata;
SRV_Q_NET_CONN_ENUM q_o;
- BOOL valid_enum = False;
+ BOOL valid_enum = False;
+ struct cli_connection *con = NULL;
- if (server_name == NULL || ctr == NULL || preferred_len == 0) return False;
+ if (ctr == NULL || preferred_len == 0) return False;
+
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NETCONNENUM */
- DEBUG(4,("SRV Net Server Connection Enum(%s, %s), level %d, enum:%8x\n",
- server_name, qual_name, switch_value, get_enum_hnd(hnd)));
+ DEBUG(4,("SRV Net Server Connection Enum %s), level %d, enum:%8x\n",
+ qual_name, switch_value, get_enum_hnd(hnd)));
ctr->switch_value = switch_value;
ctr->ptr_conn_ctr = 1;
ctr->conn.info0.ptr_conn_info = 1;
/* store the parameters */
- make_srv_q_net_conn_enum(&q_o, server_name, qual_name,
+ make_srv_q_net_conn_enum(&q_o, srv_name, qual_name,
switch_value, ctr,
preferred_len,
hnd);
srv_io_q_net_conn_enum("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NETCONNENUM, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NETCONNENUM, &data, &rdata))
{
SRV_R_NET_CONN_ENUM r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_enum;
}
/****************************************************************************
do a server net sess enum
****************************************************************************/
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli, uint16 fnum,
- char *server_name, char *qual_name, char *user_name,
+BOOL do_srv_net_srv_sess_enum( char *srv_name, char *qual_name, char *user_name,
uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd)
prs_struct data;
prs_struct rdata;
SRV_Q_NET_SESS_ENUM q_o;
- BOOL valid_enum = False;
+ BOOL valid_enum = False;
+ struct cli_connection *con = NULL;
- if (server_name == NULL || ctr == NULL || preferred_len == 0) return False;
+ if (ctr == NULL || preferred_len == 0) return False;
+
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NETSESSENUM */
- DEBUG(4,("SRV Net Session Enum (%s), level %d, enum:%8x\n",
- server_name, switch_value, get_enum_hnd(hnd)));
+ DEBUG(4,("SRV Net Session Enum, level %d, enum:%8x\n",
+ switch_value, get_enum_hnd(hnd)));
ctr->switch_value = switch_value;
ctr->ptr_sess_ctr = 1;
ctr->sess.info0.ptr_sess_info = 1;
/* store the parameters */
- make_srv_q_net_sess_enum(&q_o, server_name, qual_name, user_name,
+ make_srv_q_net_sess_enum(&q_o, srv_name, qual_name, user_name,
switch_value, ctr,
preferred_len,
hnd);
srv_io_q_net_sess_enum("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NETSESSENUM, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NETSESSENUM, &data, &rdata))
{
SRV_R_NET_SESS_ENUM r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_enum;
}
/****************************************************************************
do a server net share enum
****************************************************************************/
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli, uint16 fnum,
- char *server_name,
+BOOL do_srv_net_srv_share_enum( char *srv_name,
uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd)
prs_struct data;
prs_struct rdata;
SRV_Q_NET_SHARE_ENUM q_o;
- BOOL valid_enum = False;
+ BOOL valid_enum = False;
+ struct cli_connection *con = NULL;
- if (server_name == NULL || ctr == NULL || preferred_len == 0) return False;
+ if (ctr == NULL || preferred_len == 0) return False;
+
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NETSHAREENUM */
- DEBUG(4,("SRV Get Share Info (%s), level %d, enum:%8x\n",
- server_name, switch_value, get_enum_hnd(hnd)));
+ DEBUG(4,("SRV Get Share Info, level %d, enum:%8x\n",
+ switch_value, get_enum_hnd(hnd)));
q_o.share_level = switch_value;
ctr->share.info1.ptr_share_info = 1;
/* store the parameters */
- make_srv_q_net_share_enum(&q_o, server_name,
+ make_srv_q_net_share_enum(&q_o, srv_name,
switch_value, ctr,
preferred_len,
hnd);
srv_io_q_net_share_enum("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NETSHAREENUM, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NETSHAREENUM, &data, &rdata))
{
SRV_R_NET_SHARE_ENUM r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_enum;
}
/****************************************************************************
do a server net file enum
****************************************************************************/
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli, uint16 fnum,
- char *server_name, char *qual_name, uint32 file_id,
+BOOL do_srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd)
prs_struct data;
prs_struct rdata;
SRV_Q_NET_FILE_ENUM q_o;
- BOOL valid_enum = False;
+ BOOL valid_enum = False;
+ struct cli_connection *con = NULL;
+
+ if (ctr == NULL || preferred_len == 0) return False;
- if (server_name == NULL || ctr == NULL || preferred_len == 0) return False;
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NETFILEENUM */
- DEBUG(4,("SRV Get File Info (%s), level %d, enum:%8x\n",
- server_name, switch_value, get_enum_hnd(hnd)));
+ DEBUG(4,("SRV Get File Info level %d, enum:%8x\n",
+ switch_value, get_enum_hnd(hnd)));
q_o.file_level = switch_value;
ctr->file.info3.ptr_file_info = 1;
/* store the parameters */
- make_srv_q_net_file_enum(&q_o, server_name, qual_name, file_id,
+ make_srv_q_net_file_enum(&q_o, srv_name, qual_name, file_id,
switch_value, ctr,
preferred_len,
hnd);
srv_io_q_net_file_enum("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NETFILEENUM, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NETFILEENUM, &data, &rdata))
{
SRV_R_NET_FILE_ENUM r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_enum;
}
/****************************************************************************
do a server get info
****************************************************************************/
-BOOL do_srv_net_srv_get_info(struct cli_state *cli, uint16 fnum,
- char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr)
+BOOL do_srv_net_srv_get_info( char *srv_name, uint32 switch_value,
+ SRV_INFO_CTR *ctr)
{
prs_struct data;
prs_struct rdata;
SRV_Q_NET_SRV_GET_INFO q_o;
- BOOL valid_info = False;
+ BOOL valid_info = False;
+ struct cli_connection *con = NULL;
+
+ if (switch_value == 0 || ctr == NULL) return False;
- if (server_name == NULL || switch_value == 0 || ctr == NULL) return False;
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NET_SRV_GET_INFO */
- DEBUG(4,("SRV Get Server Info (%s), level %d\n", server_name, switch_value));
+ DEBUG(4,("SRV Get Server Info level %d\n", switch_value));
/* store the parameters */
- make_srv_q_net_srv_get_info(&q_o, server_name, switch_value);
+ make_srv_q_net_srv_get_info(&q_o, srv_name, switch_value);
/* turn parameters into data stream */
srv_io_q_net_srv_get_info("", &q_o, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NET_SRV_GET_INFO, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NET_SRV_GET_INFO, &data, &rdata))
{
SRV_R_NET_SRV_GET_INFO r_o;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_info;
}
/****************************************************************************
get server time
****************************************************************************/
-BOOL do_srv_net_remote_tod(struct cli_state *cli, uint16 fnum,
- char *server_name, TIME_OF_DAY_INFO *tod)
+BOOL do_srv_net_remote_tod( char *srv_name, TIME_OF_DAY_INFO *tod)
{
prs_struct data;
prs_struct rdata;
SRV_Q_NET_REMOTE_TOD q_t;
BOOL valid_info = False;
+ struct cli_connection *con = NULL;
- if (server_name == NULL || tod == NULL) return False;
+ if (tod == NULL) return False;
+
+ if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+ {
+ return False;
+ }
prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SRV_NET_REMOTE_TOD */
- DEBUG(4,("SRV Remote TOD (%s)\n", server_name));
+ DEBUG(4,("SRV Remote TOD (%s)\n", srv_name));
/* store the parameters */
- make_srv_q_net_remote_tod(&q_t, server_name);
+ make_srv_q_net_remote_tod(&q_t, srv_name);
/* turn parameters into data stream */
srv_io_q_net_remote_tod("", &q_t, &data, 0);
/* send the data on \PIPE\ */
- if (rpc_api_pipe_req(cli, fnum, SRV_NET_REMOTE_TOD, &data, &rdata))
+ if (rpc_con_pipe_req(con, SRV_NET_REMOTE_TOD, &data, &rdata))
{
SRV_R_NET_REMOTE_TOD r_t;
BOOL p;
prs_mem_free(&data );
prs_mem_free(&rdata );
+ cli_connection_unlink(con);
+
return valid_info;
}
#define DEBUG_TESTING
-extern struct cli_state *smb_cli;
-
extern FILE* out_hnd;
uint32 info_level,
SRV_INFO_CTR *ctr)
{
- uint16 fnum;
fstring dest_srv;
BOOL res = True;
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;
}
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"));
/****************************************************************************
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;
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);
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);
}
****************************************************************************/
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;
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)
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"));
****************************************************************************/
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;
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)
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"));
****************************************************************************/
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;
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)
{
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"));
****************************************************************************/
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;
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)
{
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"));
****************************************************************************/
void cmd_time(struct client_info *info, int argc, char *argv[])
{
- uint16 fnum;
fstring dest_srv;
TIME_OF_DAY_INFO tod;
BOOL res = True;
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)
{
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"));