1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

display of session enum info

This commit is contained in:
Luke Leighton 0001-01-01 00:00:00 +00:00
parent 819af56074
commit e0713cf933
3 changed files with 214 additions and 0 deletions

View File

@ -562,6 +562,7 @@ char *client_addr(int fd);
BOOL get_connection_status(struct connect_record **crec,
uint32 *connection_count);
BOOL get_session_count(struct connect_record **srec,uint32 *session_count);
/*The following definitions come from lib/util_str.c */
@ -3225,6 +3226,16 @@ void display_srv_file_info_3_ctr(FILE *out_hnd, enum action_type action,
SRV_FILE_INFO_3 *ctr);
void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
SRV_FILE_INFO_CTR *ctr);
void display_sess_info_0(FILE *out_hnd, enum action_type action,
SESS_INFO_0 *info0, SESS_INFO_0_STR *str0);
void display_sess_info_1(FILE *out_hnd, enum action_type action,
SESS_INFO_1 *info1, SESS_INFO_1_STR *str1);
void display_srv_sess_info_0_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_0 *ctr);
void display_srv_sess_info_1_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_1 *ctr);
void display_srv_sess_info_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_CTR *ctr);
void display_server(FILE *out_hnd, enum action_type action,
char *sname, uint32 type, char *comment);
void display_share(FILE *out_hnd, enum action_type action,

View File

@ -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);

View File

@ -785,6 +785,202 @@ void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
}
}
/****************************************************************************
sess info level 0 display function
****************************************************************************/
void display_sess_info_0(FILE *out_hnd, enum action_type action,
SESS_INFO_0 *info0, SESS_INFO_0_STR *str0)
{
if (info0 == NULL || str0 == NULL)
{
return;
}
switch (action)
{
case ACTION_HEADER:
{
fprintf(out_hnd, "Session Info Level 0:\n");
break;
}
case ACTION_ENUMERATE:
{
fstring name;
unistr2_to_ascii(name, &str0->uni_name,
sizeof(name)-1);
fprintf(out_hnd, "\tname:\t%s\n", name);
break;
}
case ACTION_FOOTER:
{
fprintf(out_hnd, "\n");
break;
}
}
}
/****************************************************************************
sess info level 1 display function
****************************************************************************/
void display_sess_info_1(FILE *out_hnd, enum action_type action,
SESS_INFO_1 *info1, SESS_INFO_1_STR *str1)
{
if (info1 == NULL || str1 == NULL)
{
return;
}
switch (action)
{
case ACTION_HEADER:
{
fprintf(out_hnd, "Session Info Level 1:\n");
break;
}
case ACTION_ENUMERATE:
{
fstring name;
fstring user_name;
unistr2_to_ascii(user_name, &str1->uni_user,
sizeof(user_name)-1);
unistr2_to_ascii(name, &str1->uni_name,
sizeof(name)-1);
fprintf(out_hnd, "\tname:\t%s\n", name);
fprintf(out_hnd, "\topen :\t%d\n", info1->num_opens);
fprintf(out_hnd, "\ttime :\t%d\n", info1->open_time);
fprintf(out_hnd, "\tidle :\t%d\n", info1->idle_time);
fprintf(out_hnd, "\tflags:\t%d\n", info1->user_flags);
fprintf(out_hnd, "\tuser :\t%s\n", user_name);
break;
}
case ACTION_FOOTER:
{
fprintf(out_hnd, "\n");
break;
}
}
}
/****************************************************************************
sess info level 0 container display function
****************************************************************************/
void display_srv_sess_info_0_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_0 *ctr)
{
if (ctr == NULL)
{
fprintf(out_hnd, "display_srv_sess_info_0_ctr: unavailable due to an internal error\n");
return;
}
switch (action)
{
case ACTION_HEADER:
{
break;
}
case ACTION_ENUMERATE:
{
int i;
for (i = 0; i < ctr->num_entries_read; i++)
{
display_sess_info_0(out_hnd, ACTION_HEADER , &(ctr->info_0[i]), &(ctr->info_0_str[i]));
display_sess_info_0(out_hnd, ACTION_ENUMERATE, &(ctr->info_0[i]), &(ctr->info_0_str[i]));
display_sess_info_0(out_hnd, ACTION_FOOTER , &(ctr->info_0[i]), &(ctr->info_0_str[i]));
}
break;
}
case ACTION_FOOTER:
{
break;
}
}
}
/****************************************************************************
sess info level 1 container display function
****************************************************************************/
void display_srv_sess_info_1_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_1 *ctr)
{
if (ctr == NULL)
{
fprintf(out_hnd, "display_srv_sess_info_1_ctr: unavailable due to an internal error\n");
return;
}
switch (action)
{
case ACTION_HEADER:
{
break;
}
case ACTION_ENUMERATE:
{
int i;
for (i = 0; i < ctr->num_entries_read; i++)
{
display_sess_info_1(out_hnd, ACTION_HEADER , &(ctr->info_1[i]), &(ctr->info_1_str[i]));
display_sess_info_1(out_hnd, ACTION_ENUMERATE, &(ctr->info_1[i]), &(ctr->info_1_str[i]));
display_sess_info_1(out_hnd, ACTION_FOOTER , &(ctr->info_1[i]), &(ctr->info_1_str[i]));
}
break;
}
case ACTION_FOOTER:
{
break;
}
}
}
/****************************************************************************
sess info container display function
****************************************************************************/
void display_srv_sess_info_ctr(FILE *out_hnd, enum action_type action,
SRV_SESS_INFO_CTR *ctr)
{
if (ctr == NULL || ctr->ptr_sess_ctr == 0)
{
fprintf(out_hnd, "display_srv_sess_info_ctr: unavailable due to an internal error\n");
return;
}
switch (ctr->switch_value)
{
case 0:
{
display_srv_sess_info_0_ctr(out_hnd, action,
&(ctr->sess.info0));
break;
}
case 1:
{
display_srv_sess_info_1_ctr(out_hnd, action,
&(ctr->sess.info1));
break;
}
default:
{
fprintf(out_hnd, "display_srv_sess_info_ctr: Unknown Info Level\n");
break;
}
}
}
/****************************************************************************
print browse connection on a host
****************************************************************************/