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:
parent
819af56074
commit
e0713cf933
@ -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,
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
****************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user