summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/client/client.c10
-rw-r--r--source3/include/ntdomain.h4
-rw-r--r--source3/include/proto.h21
-rw-r--r--source3/include/rpcclient.h24
-rw-r--r--source3/lib/util.c21
-rw-r--r--source3/libsmb/namequery.c24
-rw-r--r--source3/rpc_client/cli_atsvc.c13
-rw-r--r--source3/rpc_client/cli_samr.c1
-rw-r--r--source3/rpc_client/msrpc_samr.c42
-rw-r--r--source3/rpcclient/cmd_atsvc.c6
-rw-r--r--source3/rpcclient/cmd_reg.c10
-rw-r--r--source3/rpcclient/cmd_samr.c375
-rw-r--r--source3/rpcclient/cmd_svcctl.c3
-rw-r--r--source3/rpcclient/display.c692
-rw-r--r--source3/rpcclient/rpcclient.c467
15 files changed, 875 insertions, 838 deletions
diff --git a/source3/client/client.c b/source3/client/client.c
index 8d1e73c5c2..e27e169405 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -1846,8 +1846,8 @@ struct cli_state *do_connect(char *server, char *share, int smb_port)
make_nmb_name(&called , server, name_type, "");
make_nmb_name(&stupid_smbserver_called , "*SMBSERVER", 0x20, scope);
- fstrcpy(smb_cli->user_name, username);
- fstrcpy(smb_cli->domain, workgroup);
+ fstrcpy(smb_cli->usr.user_name, username);
+ fstrcpy(smb_cli->usr.domain, workgroup);
ip = ipzero;
if (have_ip) ip = dest_ip;
@@ -1862,17 +1862,17 @@ struct cli_state *do_connect(char *server, char *share, int smb_port)
{
if (password[0] == 0)
{
- pwd_set_nullpwd(&(smb_cli->pwd));
+ pwd_set_nullpwd(&(smb_cli->usr.pwd));
}
else
{
/* generate 16 byte hashes */
- pwd_make_lm_nt_16(&(smb_cli->pwd), password);
+ pwd_make_lm_nt_16(&(smb_cli->usr.pwd), password);
}
}
else
{
- pwd_read(&(smb_cli->pwd), "Password:", True);
+ pwd_read(&(smb_cli->usr.pwd), "Password:", True);
}
/* paranoia: destroy the local copy of the password */
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index 67befd81dc..603dce0a17 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -183,6 +183,10 @@ struct acct_info
void (*fn)(const char*, const DOM_SID*, uint32, const char*,\
uint32, const uint32*, char *const *const, uint32* const)
+#define DISP_FN(fn)\
+ void (*fn)(const char*, const DOM_SID*, uint16, uint32, \
+ SAM_DISPINFO_CTR *)
+
#define REG_FN(fn)\
void (*fn)(int, const char *, int)
#define REG_KEY_FN(fn)\
diff --git a/source3/include/proto.h b/source3/include/proto.h
index cb61009a64..ec340ec1d6 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -481,8 +481,6 @@ int set_maxfiles(int requested_max);
void reg_get_subkey(char *full_keyname, char *key_name, char *subkey_name);
BOOL reg_split_key(const char *full_keyname, uint32 *reg_type, char *key_name);
BOOL become_user_permanently(uid_t uid, gid_t gid);
-BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
- struct in_addr *ip);
/*The following definitions come from lib/util_array.c */
@@ -805,6 +803,8 @@ FILE *startlmhosts(char *fname);
BOOL getlmhostsent( FILE *fp, pstring name, int *name_type, struct in_addr *ipaddr);
void endlmhosts(FILE *fp);
BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type);
+BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
+ struct in_addr *ip);
BOOL find_master_ip(char *group, struct in_addr *master_ip);
/*The following definitions come from libsmb/nmblib.c */
@@ -1776,7 +1776,7 @@ BOOL at_del_job(struct cli_state *cli, uint16 fnum,
char *server_name, uint32 min_jobid, uint32 max_jobid);
BOOL at_enum_jobs(struct cli_state *cli, uint16 fnum,
char *server_name, uint32 *num_jobs,
- AT_ENUM_INFO *jobs, fstring *commands);
+ AT_ENUM_INFO *jobs, char ***commands);
BOOL at_query_job(struct cli_state *cli, uint16 fnum, char *server_name,
uint32 jobid, AT_JOB_INFO *job, fstring command);
@@ -2293,6 +2293,11 @@ BOOL get_samr_query_aliasinfo(
BOOL msrpc_sam_create_dom_user(const char* srv_name, DOM_SID *sid1,
char *acct_name, uint16 acb_info,
uint32 *rid);
+BOOL msrpc_sam_query_dispinfo(const char* srv_name, const char* domain,
+ DOM_SID *sid1,
+ uint16 switch_value,
+ uint32 *num_entries, SAM_DISPINFO_CTR *ctr,
+ DISP_FN(disp_fn));
/*The following definitions come from rpc_parse/parse_at.c */
@@ -3769,7 +3774,8 @@ void display_query_svc_cfg(FILE *out_hnd, enum action_type action,
void display_svc_info(FILE *out_hnd, enum action_type action,
const ENUM_SRVC_STATUS *const svc);
void display_at_enum_info(FILE *out_hnd, enum action_type action,
- uint32 num_jobs, const AT_ENUM_INFO *const jobs, const fstring *const commands);
+ uint32 num_jobs, const AT_ENUM_INFO *const jobs,
+ char *const *const commands);
void display_at_job_info(FILE *out_hnd, enum action_type action,
AT_JOB_INFO *const job, fstring command);
void display_eventlog_eventrecord(FILE *out_hnd, enum action_type action, EVENTLOGRECORD *const ev);
@@ -3784,6 +3790,13 @@ void display_sam_unk_info_2(FILE *out_hnd, enum action_type action,
SAM_UNK_INFO_2 *const info2);
void display_sam_unk_ctr(FILE *out_hnd, enum action_type action,
uint32 switch_value, SAM_UNK_CTR *const ctr);
+void display_sam_info_1(FILE *out_hnd, enum action_type action,
+ SAM_ENTRY1 *const e1, SAM_STR1 *const s1);
+void display_sam_info_1_ctr(FILE *out_hnd, enum action_type action,
+ uint32 count, SAM_DISPINFO_1 *const ctr);
+void display_sam_disp_info_ctr(FILE *out_hnd, enum action_type action,
+ uint16 level, uint32 count,
+ SAM_DISPINFO_CTR *const ctr);
void display_print_info_0(FILE *out_hnd, enum action_type action,
PRINTER_INFO_0 *const i0);
void display_print_info_1(FILE *out_hnd, enum action_type action,
diff --git a/source3/include/rpcclient.h b/source3/include/rpcclient.h
index e843d56010..ba284e66f0 100644
--- a/source3/include/rpcclient.h
+++ b/source3/include/rpcclient.h
@@ -76,34 +76,10 @@ struct client_info
{
struct in_addr dest_ip;
fstring dest_host;
- fstring query_host;
- uint8 name_type;
fstring myhostname;
fstring mach_acct;
- pstring cur_dir;
- pstring base_dir;
- pstring file_sel;
-
- fstring service;
- fstring share;
- fstring svc_type;
-
- time_t newer_than;
- int archive_level;
- int dir_total;
- int put_total_time_ms;
- int put_total_size;
- int get_total_time_ms;
- int get_total_size;
- int print_mode;
- BOOL translation;
- BOOL recurse_dir;
- BOOL prompt;
- BOOL lowercase;
- BOOL abort_mget;
-
struct tar_client_info tar;
struct nt_client_info dom;
};
diff --git a/source3/lib/util.c b/source3/lib/util.c
index cd6368ee77..26f0482162 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -3228,24 +3228,3 @@ BOOL become_user_permanently(uid_t uid, gid_t gid)
return(True);
}
-BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
- struct in_addr *ip)
-{
- DEBUG(10,("resolve_srv_name: %s\n", srv_name));
-
- if (srv_name == NULL || strequal("\\\\.", srv_name))
- {
- fstrcpy(dest_host, global_myname);
- ip = interpret_addr2("127.0.0.1");
- return True;
- }
-
- if (!strnequal("\\\\", srv_name, 2))
- {
- return False;
- }
-
- fstrcpy(dest_host, &srv_name[2]);
- return resolve_name(dest_host, ip, 0x20);
-}
-
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index 149b977746..114f656d8c 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -23,6 +23,7 @@
#include "includes.h"
extern pstring scope;
+extern pstring global_myname;
extern int DEBUGLEVEL;
/* nmbd.c sets this to True. */
@@ -646,7 +647,30 @@ BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type)
return False;
}
+/********************************************************
+ resolve a name of format \\server_name or \\ipaddress
+ into a name. also, cut the \\ from the front for us.
+*********************************************************/
+BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
+ struct in_addr *ip)
+{
+ DEBUG(10,("resolve_srv_name: %s\n", srv_name));
+ if (srv_name == NULL || strequal("\\\\.", srv_name))
+ {
+ fstrcpy(dest_host, global_myname);
+ ip = interpret_addr2("127.0.0.1");
+ return True;
+ }
+
+ if (!strnequal("\\\\", srv_name, 2))
+ {
+ return False;
+ }
+
+ fstrcpy(dest_host, &srv_name[2]);
+ return resolve_name(dest_host, ip, 0x20);
+}
/********************************************************
find the IP address of the master browser or DMB for a workgroup
diff --git a/source3/rpc_client/cli_atsvc.c b/source3/rpc_client/cli_atsvc.c
index bebc4d0bc7..ba18a36313 100644
--- a/source3/rpc_client/cli_atsvc.c
+++ b/source3/rpc_client/cli_atsvc.c
@@ -128,7 +128,7 @@ enumerate scheduled jobs
****************************************************************************/
BOOL at_enum_jobs(struct cli_state *cli, uint16 fnum,
char *server_name, uint32 *num_jobs,
- AT_ENUM_INFO *jobs, fstring *commands)
+ AT_ENUM_INFO *jobs, char ***commands)
{
prs_struct rbuf;
prs_struct buf;
@@ -167,13 +167,18 @@ BOOL at_enum_jobs(struct cli_state *cli, uint16 fnum,
{
int i;
- *num_jobs = r_e.num_entries;
+ *num_jobs = 0;
memcpy(jobs, &r_e.info, r_e.num_entries * sizeof(AT_ENUM_INFO));
for (i = 0; i < r_e.num_entries; i++)
{
- unistr2_to_ascii(commands[i], &r_e.command[i],
- sizeof(commands[i]));
+ fstring cmd;
+ unistr2_to_ascii(cmd, &r_e.command[i], sizeof(cmd));
+ add_chars_to_array(num_jobs, commands, cmd);
+ }
+ if ((*num_jobs) != r_e.num_entries)
+ {
+ p = False;
}
}
}
diff --git a/source3/rpc_client/cli_samr.c b/source3/rpc_client/cli_samr.c
index 44425b5358..86f78d1816 100644
--- a/source3/rpc_client/cli_samr.c
+++ b/source3/rpc_client/cli_samr.c
@@ -2444,6 +2444,7 @@ BOOL samr_query_dispinfo( POLICY_HND *pol_domain, uint16 level,
if (p && r_o.ptr_entries != 0)
{
valid_query = True;
+ (*num_entries) = r_o.num_entries;
}
}
diff --git a/source3/rpc_client/msrpc_samr.c b/source3/rpc_client/msrpc_samr.c
index 8dd5201bb1..d72e57308c 100644
--- a/source3/rpc_client/msrpc_samr.c
+++ b/source3/rpc_client/msrpc_samr.c
@@ -1388,12 +1388,50 @@ BOOL msrpc_sam_create_dom_user(const char* srv_name, DOM_SID *sid1,
if (res2)
{
- DEBUG(5,("cmd_sam_create_dom_user: succeeded\n"));
+ DEBUG(5,("msrpc_sam_create_dom_user: succeeded\n"));
}
else
{
- DEBUG(5,("cmd_sam_create_dom_user: failed\n"));
+ DEBUG(5,("msrpc_sam_create_dom_user: failed\n"));
}
return res2;
}
+
+/****************************************************************************
+experimental SAM query display info.
+****************************************************************************/
+BOOL msrpc_sam_query_dispinfo(const char* srv_name, const char* domain,
+ DOM_SID *sid1,
+ uint16 switch_value,
+ uint32 *num_entries, SAM_DISPINFO_CTR *ctr,
+ DISP_FN(disp_fn))
+{
+ BOOL res = True;
+ BOOL res1 = True;
+ uint32 ace_perms = 0x304; /* absolutely no idea. */
+ POLICY_HND sam_pol;
+ POLICY_HND pol_dom;
+
+ /* establish a connection. */
+ res = res ? samr_connect( srv_name, 0x02000000, &sam_pol) : False;
+
+ /* connect to the domain */
+ res = res ? samr_open_domain( &sam_pol, ace_perms, sid1,
+ &pol_dom) : False;
+
+ /* send a samr query_disp_info command */
+ res1 = res ? samr_query_dispinfo( &pol_dom, switch_value,
+ num_entries, ctr) : False;
+
+ res = res ? samr_close(&sam_pol) : False;
+ res = res ? samr_close(&pol_dom) : False;
+
+ if (res1 && disp_fn != NULL)
+ {
+ disp_fn(domain, sid1, switch_value, *num_entries, ctr);
+ }
+
+ return res1;
+}
+
diff --git a/source3/rpcclient/cmd_atsvc.c b/source3/rpcclient/cmd_atsvc.c
index 5c5986eaa0..e07a89f4d9 100644
--- a/source3/rpcclient/cmd_atsvc.c
+++ b/source3/rpcclient/cmd_atsvc.c
@@ -344,16 +344,18 @@ void cmd_at(struct client_info *info, int argc, char *argv[])
else if (jobid == -1) /* enumerate */
{
AT_ENUM_INFO jobs[AT_MAX_JOBS];
- fstring commands[AT_MAX_JOBS];
+ char **commands;
uint32 num_jobs;
if (at_enum_jobs(smb_cli, nt_pipe_fnum, dest_wks, &num_jobs,
- jobs, commands))
+ jobs, &commands))
{
display_at_enum_info(out_hnd, ACTION_HEADER , num_jobs, jobs, commands);
display_at_enum_info(out_hnd, ACTION_ENUMERATE, num_jobs, jobs, commands);
display_at_enum_info(out_hnd, ACTION_FOOTER , num_jobs, jobs, commands);
}
+
+ free_char_array(num_jobs, commands);
}
else /* job info */
{
diff --git a/source3/rpcclient/cmd_reg.c b/source3/rpcclient/cmd_reg.c
index cae24faf9f..38c14ea96b 100644
--- a/source3/rpcclient/cmd_reg.c
+++ b/source3/rpcclient/cmd_reg.c
@@ -294,13 +294,10 @@ void cmd_reg_enum(struct client_info *info, int argc, char *argv[])
full_keyname = argv[1];
- if (msrpc_reg_enum_key(srv_name, full_keyname,
+ (void)(msrpc_reg_enum_key(srv_name, full_keyname,
reg_display_key,
reg_display_key_info,
- reg_display_val_info))
- {
- pstrcpy(info->cur_dir, full_keyname);
- }
+ reg_display_val_info));
}
/****************************************************************************
@@ -1104,9 +1101,6 @@ void cmd_reg_shutdown(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv,"fim:t:r-")) != EOF)
{
switch (opt)
diff --git a/source3/rpcclient/cmd_samr.c b/source3/rpcclient/cmd_samr.c
index cdb56e0a32..fbfde7c9a4 100644
--- a/source3/rpcclient/cmd_samr.c
+++ b/source3/rpcclient/cmd_samr.c
@@ -278,15 +278,13 @@ void cmd_sam_lookup_domain(struct client_info *info, int argc, char *argv[])
report(out_hnd, "Lookup Domain in SAM Server\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_query_lookup_domain(
- &sam_pol, domain, &dom_sid) : False;
+ res = res ? samr_query_lookup_domain( &sam_pol, domain, &dom_sid) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (res)
{
@@ -350,18 +348,15 @@ void cmd_sam_del_aliasmem(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Domain Alias Member\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* connect to the domain */
- res1 = res ? samr_open_alias(
- &pol_dom,
+ res1 = res ? samr_open_alias( &pol_dom,
0x000f001f, alias_rid, &alias_pol) : False;
while (argc > 0 && res2 && res1)
@@ -370,7 +365,7 @@ void cmd_sam_del_aliasmem(struct client_info *info, int argc, char *argv[])
argv++;
/* get a sid, delete a member from the alias */
res2 = res2 ? string_to_sid(&member_sid, argv[0]) : False;
- res2 = res2 ? samr_del_aliasmem( &alias_pol, &member_sid) : False;
+ res2 = res2 ? samr_del_aliasmem(&alias_pol, &member_sid) : False;
if (res2)
{
@@ -378,9 +373,9 @@ void cmd_sam_del_aliasmem(struct client_info *info, int argc, char *argv[])
}
}
- res1 = res1 ? samr_close( &alias_pol) : False;
- res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res1 ? samr_close(&alias_pol) : False;
+ res = res ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (res && res1 && res2)
{
@@ -442,19 +437,16 @@ void cmd_sam_delete_dom_alias(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Delete Domain Alias\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
names[0] = name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x000003e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x000003e8,
1, names,
&num_rids, rid, type) : False;
@@ -464,15 +456,14 @@ void cmd_sam_delete_dom_alias(struct client_info *info, int argc, char *argv[])
}
/* connect to the domain */
- res1 = res1 ? samr_open_alias(
- &pol_dom,
+ res1 = res1 ? samr_open_alias( &pol_dom,
0x000f001f, alias_rid, &alias_pol) : False;
- res2 = res1 ? samr_delete_dom_alias( &alias_pol) : False;
+ res2 = res1 ? samr_delete_dom_alias(&alias_pol) : False;
- res1 = res1 ? samr_close( &alias_pol) : False;
- res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res1 ? samr_close(&alias_pol) : False;
+ res = res ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (res && res1 && res2)
{
@@ -539,11 +530,11 @@ void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Domain Alias Member\n");
/* lookup domain controller; receive a policy handle */
- res3 = res3 ? lsa_open_policy( srv_name,
+ res3 = res3 ? lsa_open_policy(srv_name,
&lsa_pol, True) : False;
/* send lsa lookup sids call */
- res4 = res3 ? lsa_lookup_names( &lsa_pol,
+ res4 = res3 ? lsa_lookup_names(&lsa_pol,
num_names, names,
&sids, NULL, &num_sids) : False;
@@ -572,24 +563,21 @@ void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[])
}
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* connect to the domain */
- res1 = res ? samr_open_alias(
- &pol_dom,
+ res1 = res ? samr_open_alias( &pol_dom,
0x000f001f, alias_rid, &alias_pol) : False;
for (i = 1; i < num_sids && res2 && res1; i++)
{
/* add a member to the alias */
- res2 = res2 ? samr_add_aliasmem( &alias_pol, &sids[i]) : False;
+ res2 = res2 ? samr_add_aliasmem(&alias_pol, &sids[i]) : False;
if (res2)
{
@@ -598,9 +586,9 @@ void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[])
}
}
- res1 = res1 ? samr_close( &alias_pol) : False;
- res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res1 ? samr_close(&alias_pol) : False;
+ res = res ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (sids != NULL)
{
@@ -743,9 +731,6 @@ void cmd_sam_create_dom_user(struct client_info *info, int argc, char *argv[])
acb_info = ACB_WSTRUST;
}
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv,"is")) != EOF)
{
switch (opt)
@@ -834,25 +819,20 @@ void cmd_sam_create_dom_alias(struct client_info *info, int argc, char *argv[])
domain, acct_name, acct_desc);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* create a domain alias */
- res1 = res ? create_samr_domain_alias(
- &pol_dom,
+ res1 = res ? create_samr_domain_alias( &pol_dom,
acct_name, acct_desc, &alias_rid) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
if (res && res1)
{
@@ -914,18 +894,15 @@ void cmd_sam_del_groupmem(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Add Domain Group member\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* connect to the domain */
- res1 = res ? samr_open_group(
- &pol_dom,
+ res1 = res ? samr_open_group( &pol_dom,
0x0000001f, group_rid, &pol_grp) : False;
while (argc > 0 && res2 && res1)
@@ -935,7 +912,7 @@ void cmd_sam_del_groupmem(struct client_info *info, int argc, char *argv[])
/* get a rid, delete a member from the group */
member_rid = get_number(argv[0]);
- res2 = res2 ? samr_del_groupmem( &pol_grp, member_rid) : False;
+ res2 = res2 ? samr_del_groupmem(&pol_grp, member_rid) : False;
if (res2)
{
@@ -943,9 +920,9 @@ void cmd_sam_del_groupmem(struct client_info *info, int argc, char *argv[])
}
}
- res1 = res1 ? samr_close( &pol_grp) : False;
- res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res1 ? samr_close(&pol_grp) : False;
+ res = res ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (res && res1 && res2)
{
@@ -1008,19 +985,16 @@ void cmd_sam_delete_dom_group(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Delete Domain Group\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
names[0] = name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x000003e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x000003e8,
1, names,
&num_rids, rid, type) : False;
@@ -1030,15 +1004,14 @@ void cmd_sam_delete_dom_group(struct client_info *info, int argc, char *argv[])
}
/* connect to the domain */
- res1 = res1 ? samr_open_group(
- &pol_dom,
+ res1 = res1 ? samr_open_group( &pol_dom,
0x0000001f, group_rid, &pol_grp) : False;
- res2 = res1 ? samr_delete_dom_group( &pol_grp) : False;
+ res2 = res1 ? samr_delete_dom_group(&pol_grp) : False;
- res1 = res1 ? samr_close( &pol_grp) : False;
- res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res1 ? samr_close(&pol_grp) : False;
+ res = res ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
if (res && res1 && res2)
{
@@ -1121,40 +1094,33 @@ void cmd_sam_add_groupmem(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Add Domain Group member\n");
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res4 = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res4 = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* connect to the domain */
- res3 = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid_1_5_20,
+ res3 = res ? samr_open_domain( &sam_pol, ace_perms, &sid_1_5_20,
&pol_blt) : False;
- res2 = res4 ? samr_query_lookup_names(
- &pol_dom, 0x000003e8,
+ res2 = res4 ? samr_query_lookup_names( &pol_dom, 0x000003e8,
1, group_names,
&num_group_rids, group_rid, group_type) : False;
/* open the group */
- res2 = res2 ? samr_open_group(
- &pol_dom,
+ res2 = res2 ? samr_open_group( &pol_dom,
0x0000001f, group_rid[0], &pol_grp) : False;
if (!res2 || (group_type != NULL && group_type[0] == SID_NAME_UNKNOWN))
{
- res2 = res3 ? samr_query_lookup_names(
- &pol_blt, 0x000003e8,
+ res2 = res3 ? samr_query_lookup_names( &pol_blt, 0x000003e8,
1, group_names,
&num_group_rids, group_rid, group_type) : False;
/* open the group */
- res2 = res2 ? samr_open_group(
- &pol_blt,
+ res2 = res2 ? samr_open_group( &pol_blt,
0x0000001f, group_rid[0], &pol_grp) : False;
}
@@ -1164,8 +1130,7 @@ void cmd_sam_add_groupmem(struct client_info *info, int argc, char *argv[])
group_name);
return;
}
- res1 = res2 ? samr_query_lookup_names(
- &pol_dom, 0x000003e8,
+ res1 = res2 ? samr_query_lookup_names( &pol_dom, 0x000003e8,
num_names, names,
&num_rids, rid, type) : False;
@@ -1181,7 +1146,7 @@ void cmd_sam_add_groupmem(struct client_info *info, int argc, char *argv[])
}
else
{
- if (samr_add_groupmem( &pol_grp, rid[i]))
+ if (samr_add_groupmem(&pol_grp, rid[i]))
{
report(out_hnd, "RID added to Group 0x%x: 0x%x\n",
group_rid[0], rid[i]);
@@ -1189,10 +1154,10 @@ void cmd_sam_add_groupmem(struct client_info *info, int argc, char *argv[])
}
}
- res1 = res ? samr_close( &pol_grp) : False;
- res1 = res3 ? samr_close( &pol_blt) : False;
- res1 = res4 ? samr_close( &pol_dom) : False;
- res = res ? samr_close( &sam_pol) : False;
+ res1 = res ? samr_close(&pol_grp) : False;
+ res1 = res3 ? samr_close(&pol_blt) : False;
+ res1 = res4 ? samr_close(&pol_dom) : False;
+ res = res ? samr_close(&sam_pol) : False;
free_char_array(num_names, names);
@@ -1274,25 +1239,20 @@ void cmd_sam_create_dom_group(struct client_info *info, int argc, char *argv[])
domain, acct_name, acct_desc);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
+ res = res ? samr_open_domain( &sam_pol, ace_perms, &sid1,
&pol_dom) : False;
/* read some users */
- res1 = res ? create_samr_domain_group(
- &pol_dom,
+ res1 = res ? create_samr_domain_group( &pol_dom,
acct_name, acct_desc, &group_rid) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
if (res && res1)
{
@@ -1336,9 +1296,6 @@ void cmd_sam_enum_users(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv, "uga")) != EOF)
{
switch (opt)
@@ -1363,7 +1320,7 @@ void cmd_sam_enum_users(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Enumerate Users\n");
- msrpc_sam_enum_users( srv_name, domain, &sid1,
+ msrpc_sam_enum_users(srv_name, domain, &sid1,
&sam, &num_sam_entries,
sam_display_user,
request_user_info ? sam_display_user_info : NULL,
@@ -1425,26 +1382,22 @@ void cmd_sam_query_groupmem(struct client_info *info, int argc, char *argv[])
info->myhostname, srv_name, domain, sid_str);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x304, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x304, &sid,
&pol_dom) : False;
/* look up group rid */
names[0] = group_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
if (res1 && num_rids == 1)
{
- res1 = req_groupmem_info(
- &pol_dom,
+ res1 = req_groupmem_info( &pol_dom,
domain,
&sid,
rid[0],
@@ -1452,11 +1405,9 @@ void cmd_sam_query_groupmem(struct client_info *info, int argc, char *argv[])
sam_display_group_members);
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -1517,37 +1468,31 @@ void cmd_sam_query_group(struct client_info *info, int argc, char *argv[])
info->myhostname, srv_name, domain, sid_str);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x304, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x304, &sid,
&pol_dom) : False;
/* look up group rid */
names[0] = group_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
if (res1 && num_rids == 1)
{
- res1 = query_groupinfo(
- &pol_dom,
+ res1 = query_groupinfo( &pol_dom,
domain,
&sid,
rid[0],
sam_display_group_info);
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -1608,37 +1553,31 @@ void cmd_sam_query_user(struct client_info *info, int argc, char *argv[])
info->myhostname, srv_name, domain, sid_str);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x304, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x304, &sid,
&pol_dom) : False;
/* look up user rid */
names[0] = user_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
/* send user info query */
if (res1 && num_rids == 1)
{
- res1 = req_user_info(
- &pol_dom,
+ res1 = req_user_info( &pol_dom,
domain,
&sid,
rid[0],
sam_display_user_info);
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -1696,9 +1635,6 @@ void cmd_sam_set_userinfo2(struct client_info *info, int argc, char *argv[])
safe_strcpy(user_name, argv[0], sizeof(user_name));
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv,"s:")) != EOF)
{
switch (opt)
@@ -1721,25 +1657,21 @@ void cmd_sam_set_userinfo2(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Set User Info: %s\n", user_name);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x02000000, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x02000000, &sid,
&pol_dom) : False;
/* look up user rid */
names[0] = user_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
/* send set user info */
- if (res1 && num_rids == 1 && get_samr_query_userinfo(
- &pol_dom,
+ if (res1 && num_rids == 1 && get_samr_query_userinfo( &pol_dom,
0x10, rid[0],
(void*)&usr16))
{
@@ -1762,16 +1694,13 @@ void cmd_sam_set_userinfo2(struct client_info *info, int argc, char *argv[])
if (usr != NULL)
{
- res1 = set_samr_set_userinfo2(
- &pol_dom,
+ res1 = set_samr_set_userinfo2( &pol_dom,
switch_value, rid[0], usr);
}
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -1830,10 +1759,7 @@ void cmd_sam_set_userinfo(struct client_info *info, int argc, char *argv[])
safe_strcpy(user_name, argv[0], sizeof(user_name));
- argc--;
- argv++;
-
- if (argc == 0)
+ if (argc == 1)
{
fstring pass_str;
char *pass;
@@ -1875,25 +1801,21 @@ void cmd_sam_set_userinfo(struct client_info *info, int argc, char *argv[])
report(out_hnd, "Password: %s\n", password);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x02000000, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x02000000, &sid,
&pol_dom) : False;
/* look up user rid */
names[0] = user_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
/* send set user info */
- if (res1 && num_rids == 1 && get_samr_query_userinfo(
- &pol_dom,
+ if (res1 && num_rids == 1 && get_samr_query_userinfo( &pol_dom,
0x15, rid[0], &usr21))
{
void *usr = NULL;
@@ -1954,16 +1876,13 @@ void cmd_sam_set_userinfo(struct client_info *info, int argc, char *argv[])
}
if (usr != NULL)
{
- res1 = set_samr_set_userinfo(
- &pol_dom,
+ res1 = set_samr_set_userinfo( &pol_dom,
switch_value, rid[0], usr);
}
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -1977,6 +1896,17 @@ void cmd_sam_set_userinfo(struct client_info *info, int argc, char *argv[])
}
}
+static void sam_display_disp_info(const char* domain, const DOM_SID *sid,
+ uint16 info, uint32 num,
+ SAM_DISPINFO_CTR *ctr)
+
+{
+ report(out_hnd, "SAM Display Info for Domain %s\n", domain);
+
+ display_sam_disp_info_ctr(out_hnd, ACTION_HEADER , info, num, ctr);
+ display_sam_disp_info_ctr(out_hnd, ACTION_ENUMERATE, info, num, ctr);
+ display_sam_disp_info_ctr(out_hnd, ACTION_FOOTER , info, num, ctr);
+}
/****************************************************************************
experimental SAM query display info.
@@ -1987,14 +1917,10 @@ void cmd_sam_query_dispinfo(struct client_info *info, int argc, char *argv[])
fstring domain;
fstring sid;
DOM_SID sid1;
- BOOL res = True;
uint16 switch_value = 1;
- uint32 ace_perms = 0x304; /* absolutely no idea. */
SAM_DISPINFO_CTR ctr;
SAM_DISPINFO_1 inf1;
uint32 num_entries;
- POLICY_HND sam_pol;
- POLICY_HND pol_dom;
sid_to_string(sid, &info->dom.level5_sid);
fstrcpy(domain, info->dom.level5_dom);
@@ -2016,41 +1942,14 @@ void cmd_sam_query_dispinfo(struct client_info *info, int argc, char *argv[])
switch_value = strtoul(argv[1], (char**)NULL, 10);
}
- fprintf(out_hnd, "SAM Query Domain Info: info level %d\n", switch_value);
- fprintf(out_hnd, "From: %s To: %s Domain: %s SID: %s\n",
- info->myhostname, srv_name, domain, sid);
-
- /* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
- &sam_pol) : False;
-
- /* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, ace_perms, &sid1,
- &pol_dom) : False;
-
ctr.sam.info1 = &inf1;
- /* send a samr query_disp_info command */
- res = res ? samr_query_dispinfo(
- &pol_dom, switch_value,
- &num_entries, &ctr) : False;
-
- res = res ? samr_close(
- &sam_pol) : False;
-
- res = res ? samr_close(
- &pol_dom) : False;
-
- if (res)
+ if (msrpc_sam_query_dispinfo( srv_name, domain, &sid1,
+ switch_value,
+ &num_entries, &ctr, sam_display_disp_info))
{
+
DEBUG(5,("cmd_sam_query_dispinfo: succeeded\n"));
-#if 0
- display_sam_disp_info_ctr(out_hnd, ACTION_HEADER , switch_value, &ctr);
- display_sam_disp_info_ctr(out_hnd, ACTION_ENUMERATE, switch_value, &ctr);
- display_sam_disp_info_ctr(out_hnd, ACTION_FOOTER , switch_value, &ctr);
-#endif
}
else
{
@@ -2094,7 +1993,7 @@ void cmd_sam_query_dominfo(struct client_info *info, int argc, char *argv[])
report(out_hnd, "From: %s Domain: %s SID: %s\n",
info->myhostname, domain, sid);
- if (sam_query_dominfo( srv_name, &sid1, switch_value, &ctr))
+ if (sam_query_dominfo(srv_name, &sid1, switch_value, &ctr))
{
DEBUG(5,("cmd_sam_query_dominfo: succeeded\n"));
display_sam_unk_ctr(out_hnd, ACTION_HEADER , switch_value, &ctr);
@@ -2155,25 +2054,22 @@ void cmd_sam_query_aliasmem(struct client_info *info, int argc, char *argv[])
info->myhostname, srv_name, domain, sid_str);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x304, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x304, &sid,
&pol_dom) : False;
/* look up alias rid */
names[0] = alias_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
if (res1 && num_rids == 1)
{
- res1 = req_aliasmem_info(
+ res1 = req_aliasmem_info(srv_name,
&pol_dom,
domain,
&sid,
@@ -2182,11 +2078,9 @@ void cmd_sam_query_aliasmem(struct client_info *info, int argc, char *argv[])
sam_display_alias_members);
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -2247,37 +2141,31 @@ void cmd_sam_query_alias(struct client_info *info, int argc, char *argv[])
info->myhostname, srv_name, domain, sid_str);
/* establish a connection. */
- res = res ? samr_connect(
- srv_name, 0x02000000,
+ res = res ? samr_connect( srv_name, 0x02000000,
&sam_pol) : False;
/* connect to the domain */
- res = res ? samr_open_domain(
- &sam_pol, 0x304, &sid,
+ res = res ? samr_open_domain( &sam_pol, 0x304, &sid,
&pol_dom) : False;
/* look up alias rid */
names[0] = alias_name;
- res1 = res ? samr_query_lookup_names(
- &pol_dom, 0x3e8,
+ res1 = res ? samr_query_lookup_names( &pol_dom, 0x3e8,
1, names,
&num_rids, rid, type) : False;
if (res1 && num_rids == 1)
{
- res1 = query_aliasinfo(
- &pol_dom,
+ res1 = query_aliasinfo( &pol_dom,
domain,
&sid,
rid[0],
sam_display_alias_info);
}
- res = res ? samr_close(
- &sam_pol) : False;
+ res = res ? samr_close( &sam_pol) : False;
- res = res ? samr_close(
- &pol_dom) : False;
+ res = res ? samr_close( &pol_dom) : False;
if (res1)
{
@@ -2319,9 +2207,6 @@ void cmd_sam_enum_aliases(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv, "ma")) != EOF)
{
switch (opt)
@@ -2382,9 +2267,6 @@ void cmd_sam_enum_groups(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv, "mg")) != EOF)
{
switch (opt)
@@ -2432,9 +2314,6 @@ void cmd_sam_enum_domains(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv, "i")) != EOF)
{
switch (opt)
diff --git a/source3/rpcclient/cmd_svcctl.c b/source3/rpcclient/cmd_svcctl.c
index 7f3f8532a5..d118a7d15d 100644
--- a/source3/rpcclient/cmd_svcctl.c
+++ b/source3/rpcclient/cmd_svcctl.c
@@ -201,9 +201,6 @@ void cmd_svc_enum(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- argc--;
- argv++;
-
while ((opt = getopt(argc, argv,"i")) != EOF)
{
switch (opt)
diff --git a/source3/rpcclient/display.c b/source3/rpcclient/display.c
index d1dfbd117d..58bdba5ffb 100644
--- a/source3/rpcclient/display.c
+++ b/source3/rpcclient/display.c
@@ -181,7 +181,7 @@ void display_srv_info_101(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Server Info Level 101:\n");
+ report(out_hnd, "Server Info Level 101:\n");
break;
}
@@ -195,8 +195,8 @@ void display_srv_info_101(FILE *out_hnd, enum action_type action,
display_server(out_hnd, action, name, sv101->srv_type, comment);
- fprintf(out_hnd, "\tplatform_id :\t%d\n" , sv101->platform_id);
- fprintf(out_hnd, "\tos version :\t%d.%d\n" , sv101->ver_major, sv101->ver_minor);
+ report(out_hnd, "\tplatform_id :\t%d\n" , sv101->platform_id);
+ report(out_hnd, "\tos version :\t%d.%d\n" , sv101->ver_major, sv101->ver_minor);
break;
}
@@ -222,7 +222,7 @@ void display_srv_info_102(FILE *out_hnd, enum action_type action, SRV_INFO_102 *
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Server Info Level 102:\n");
+ report(out_hnd, "Server Info Level 102:\n");
break;
}
@@ -239,14 +239,14 @@ void display_srv_info_102(FILE *out_hnd, enum action_type action, SRV_INFO_102 *
display_server(out_hnd, action, name, sv102->srv_type, comment);
- fprintf(out_hnd, "\tplatform_id :\t%d\n" , sv102->platform_id);
- fprintf(out_hnd, "\tos version :\t%d.%d\n" , sv102->ver_major, sv102->ver_minor);
+ report(out_hnd, "\tplatform_id :\t%d\n" , sv102->platform_id);
+ report(out_hnd, "\tos version :\t%d.%d\n" , sv102->ver_major, sv102->ver_minor);
- fprintf(out_hnd, "\tusers :\t%x\n" , sv102->users );
- fprintf(out_hnd, "\tdisc, hidden :\t%x, %x\n" , sv102->disc , sv102->hidden );
- fprintf(out_hnd, "\tannounce, delta :\t%d, %d\n", sv102->announce , sv102->ann_delta);
- fprintf(out_hnd, "\tlicenses :\t%d\n" , sv102->licenses );
- fprintf(out_hnd, "\tuser path :\t%s\n" , usr_path);
+ report(out_hnd, "\tusers :\t%x\n" , sv102->users );
+ report(out_hnd, "\tdisc, hidden :\t%x, %x\n" , sv102->disc , sv102->hidden );
+ report(out_hnd, "\tannounce, delta :\t%d, %d\n", sv102->announce , sv102->ann_delta);
+ report(out_hnd, "\tlicenses :\t%d\n" , sv102->licenses );
+ report(out_hnd, "\tuser path :\t%s\n" , usr_path);
break;
}
@@ -264,7 +264,7 @@ void display_srv_info_ctr(FILE *out_hnd, enum action_type action, SRV_INFO_CTR *
{
if (ctr == NULL || ctr->ptr_srv_ctr == 0)
{
- fprintf(out_hnd, "Server Information: unavailable due to an error\n");
+ report(out_hnd, "Server Information: unavailable due to an error\n");
return;
}
@@ -282,7 +282,7 @@ void display_srv_info_ctr(FILE *out_hnd, enum action_type action, SRV_INFO_CTR *
}
default:
{
- fprintf(out_hnd, "Server Information: Unknown Info Level\n");
+ report(out_hnd, "Server Information: Unknown Info Level\n");
break;
}
}
@@ -303,19 +303,19 @@ void display_conn_info_0(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Connection Info Level 0:\n");
+ report(out_hnd, "Connection Info Level 0:\n");
break;
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\tid:\t%d\n", info0->id);
+ report(out_hnd, "\tid:\t%d\n", info0->id);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -337,7 +337,7 @@ void display_conn_info_1(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Connection Info Level 1:\n");
+ report(out_hnd, "Connection Info Level 1:\n");
break;
}
@@ -349,20 +349,20 @@ void display_conn_info_1(FILE *out_hnd, enum action_type action,
unistr2_to_ascii(usr_name, &str1->uni_usr_name, sizeof(usr_name)-1);
unistr2_to_ascii(net_name, &str1->uni_net_name, sizeof(net_name)-1);
- fprintf(out_hnd, "\tid :\t%d\n", info1->id);
- fprintf(out_hnd, "\ttype :\t%s\n", get_share_type_str(info1->type));
- fprintf(out_hnd, "\tnum_opens:\t%d\n", info1->num_opens);
- fprintf(out_hnd, "\tnum_users:\t%d\n", info1->num_users);
- fprintf(out_hnd, "\topen_time:\t%d\n", info1->open_time);
+ report(out_hnd, "\tid :\t%d\n", info1->id);
+ report(out_hnd, "\ttype :\t%s\n", get_share_type_str(info1->type));
+ report(out_hnd, "\tnum_opens:\t%d\n", info1->num_opens);
+ report(out_hnd, "\tnum_users:\t%d\n", info1->num_users);
+ report(out_hnd, "\topen_time:\t%d\n", info1->open_time);
- fprintf(out_hnd, "\tuser name:\t%s\n", usr_name);
- fprintf(out_hnd, "\tnet name:\t%s\n", net_name);
+ report(out_hnd, "\tuser name:\t%s\n", usr_name);
+ report(out_hnd, "\tnet name:\t%s\n", net_name);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -377,7 +377,7 @@ void display_srv_conn_info_0_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_conn_info_0_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_conn_info_0_ctr: unavailable due to an internal error\n");
return;
}
@@ -414,7 +414,7 @@ void display_srv_conn_info_1_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_conn_info_1_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_conn_info_1_ctr: unavailable due to an internal error\n");
return;
}
@@ -451,7 +451,7 @@ void display_srv_conn_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL || ctr->ptr_conn_ctr == 0)
{
- fprintf(out_hnd, "display_srv_conn_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_conn_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -471,7 +471,7 @@ void display_srv_conn_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_srv_conn_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_srv_conn_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -493,7 +493,7 @@ void display_tprt_info_0(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Transport Info Level 0:\n");
+ report(out_hnd, "Transport Info Level 0:\n");
break;
}
@@ -507,16 +507,16 @@ void display_tprt_info_0(FILE *out_hnd, enum action_type action,
buffer4_to_str(trans_addr, &str0->buf_trans_addr, sizeof(trans_addr)-1);
unistr2_to_ascii(addr_name, &str0->uni_addr_name, sizeof(addr_name)-1);
- fprintf(out_hnd, "\tnum_vcs :\t%d\n", info0->num_vcs);
- fprintf(out_hnd, "\ttransport name:\t%s\n", trans_name);
- fprintf(out_hnd, "\ttransport addr:\t%s\n", trans_addr);
- fprintf(out_hnd, "\taddress name:\t%s\n", addr_name);
+ report(out_hnd, "\tnum_vcs :\t%d\n", info0->num_vcs);
+ report(out_hnd, "\ttransport name:\t%s\n", trans_name);
+ report(out_hnd, "\ttransport addr:\t%s\n", trans_addr);
+ report(out_hnd, "\taddress name:\t%s\n", addr_name);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -531,7 +531,7 @@ void display_srv_tprt_info_0_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_tprt_info_0_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_tprt_info_0_ctr: unavailable due to an internal error\n");
return;
}
@@ -568,7 +568,7 @@ void display_srv_tprt_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL || ctr->ptr_tprt_ctr == 0)
{
- fprintf(out_hnd, "display_srv_tprt_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_tprt_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -582,7 +582,7 @@ void display_srv_tprt_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_srv_tprt_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_srv_tprt_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -604,7 +604,7 @@ void display_share_info_1(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Share Info Level 1:\n");
+ report(out_hnd, "Share Info Level 1:\n");
break;
}
@@ -622,7 +622,7 @@ void display_share_info_1(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -644,7 +644,7 @@ void display_share_info_2(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Share Info Level 2:\n");
+ report(out_hnd, "Share Info Level 2:\n");
break;
}
@@ -668,7 +668,7 @@ void display_share_info_2(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -683,7 +683,7 @@ void display_srv_share_info_1_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_share_info_1_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_share_info_1_ctr: unavailable due to an internal error\n");
return;
}
@@ -720,7 +720,7 @@ void display_srv_share_info_2_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_share_info_2_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_share_info_2_ctr: unavailable due to an internal error\n");
return;
}
@@ -757,7 +757,7 @@ void display_srv_share_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL || ctr->ptr_share_ctr == 0)
{
- fprintf(out_hnd, "display_srv_share_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_share_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -777,7 +777,7 @@ void display_srv_share_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_srv_share_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_srv_share_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -799,7 +799,7 @@ void display_file_info_3(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "File Info Level 3:\n");
+ report(out_hnd, "File Info Level 3:\n");
break;
}
@@ -813,18 +813,18 @@ void display_file_info_3(FILE *out_hnd, enum action_type action,
unistr2_to_ascii(user_name, &str3->uni_user_name,
sizeof(user_name)-1);
- fprintf(out_hnd, "\tid :\t%d\n", info3->id);
- fprintf(out_hnd, "\tperms :\t%s\n", get_file_mode_str(info3->perms));
- fprintf(out_hnd, "\tnum_locks:\t%d\n", info3->num_locks);
+ report(out_hnd, "\tid :\t%d\n", info3->id);
+ report(out_hnd, "\tperms :\t%s\n", get_file_mode_str(info3->perms));
+ report(out_hnd, "\tnum_locks:\t%d\n", info3->num_locks);
- fprintf(out_hnd, "\tpath name:\t%s\n", path_name);
- fprintf(out_hnd, "\tuser name:\t%s\n", user_name);
+ report(out_hnd, "\tpath name:\t%s\n", path_name);
+ report(out_hnd, "\tuser name:\t%s\n", user_name);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -839,7 +839,7 @@ void display_srv_file_info_3_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_file_info_3_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_file_info_3_ctr: unavailable due to an internal error\n");
return;
}
@@ -876,7 +876,7 @@ void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL || ctr->ptr_file_ctr == 0)
{
- fprintf(out_hnd, "display_srv_file_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_file_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -890,7 +890,7 @@ void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_srv_file_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_srv_file_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -911,7 +911,7 @@ void display_sess_info_0(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Session Info Level 0:\n");
+ report(out_hnd, "Session Info Level 0:\n");
break;
}
@@ -922,13 +922,13 @@ void display_sess_info_0(FILE *out_hnd, enum action_type action,
unistr2_to_ascii(name, &str0->uni_name,
sizeof(name)-1);
- fprintf(out_hnd, "\tname:\t%s\n", name);
+ report(out_hnd, "\tname:\t%s\n", name);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -950,7 +950,7 @@ void display_sess_info_1(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Session Info Level 1:\n");
+ report(out_hnd, "Session Info Level 1:\n");
break;
}
@@ -964,20 +964,20 @@ void display_sess_info_1(FILE *out_hnd, enum action_type action,
unistr2_to_ascii(name, &str1->uni_name,
sizeof(name)-1);
- fprintf(out_hnd, "\tname:\t%s\n", name);
+ report(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);
+ report(out_hnd, "\topen :\t%d\n", info1->num_opens);
+ report(out_hnd, "\ttime :\t%d\n", info1->open_time);
+ report(out_hnd, "\tidle :\t%d\n", info1->idle_time);
+ report(out_hnd, "\tflags:\t%d\n", info1->user_flags);
- fprintf(out_hnd, "\tuser :\t%s\n", user_name);
+ report(out_hnd, "\tuser :\t%s\n", user_name);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -992,7 +992,7 @@ void display_srv_sess_info_0_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_sess_info_0_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_sess_info_0_ctr: unavailable due to an internal error\n");
return;
}
@@ -1029,7 +1029,7 @@ void display_srv_sess_info_1_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_srv_sess_info_1_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_sess_info_1_ctr: unavailable due to an internal error\n");
return;
}
@@ -1066,7 +1066,7 @@ void display_srv_sess_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL || ctr->ptr_sess_ctr == 0)
{
- fprintf(out_hnd, "display_srv_sess_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_srv_sess_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -1086,7 +1086,7 @@ void display_srv_sess_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_srv_sess_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_srv_sess_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -1106,7 +1106,7 @@ void display_server(FILE *out_hnd, enum action_type action,
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t%-15.15s%-20s %s\n",
+ report(out_hnd, "\t%-15.15s%-20s %s\n",
sname, get_server_type_str(type), comment);
break;
}
@@ -1131,7 +1131,7 @@ void display_share(FILE *out_hnd, enum action_type action,
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t%-15.15s%-10.10s%s\n",
+ report(out_hnd, "\t%-15.15s%-10.10s%s\n",
sname, get_share_type_str(type), comment);
break;
}
@@ -1159,7 +1159,7 @@ void display_share2(FILE *out_hnd, enum action_type action,
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t%-15.15s%-10.10s%s %x %x %x %s %s\n",
+ report(out_hnd, "\t%-15.15s%-10.10s%s %x %x %x %s %s\n",
sname, get_share_type_str(type), comment,
perms, max_uses, num_uses, path, passwd);
break;
@@ -1186,7 +1186,7 @@ void display_name(FILE *out_hnd, enum action_type action,
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t%-21.21s\n", sname);
+ report(out_hnd, "\t%-21.21s\n", sname);
break;
}
case ACTION_FOOTER:
@@ -1210,12 +1210,12 @@ void display_alias_members(FILE *out_hnd, enum action_type action,
{
if (num_mem == 0)
{
- fprintf(out_hnd, "\tNo Alias Members\n");
+ report(out_hnd, "\tNo Alias Members\n");
}
else
{
- fprintf(out_hnd, "\tAlias Members:\n");
- fprintf(out_hnd, "\t-------------\n");
+ report(out_hnd, "\tAlias Members:\n");
+ report(out_hnd, "\t-------------\n");
}
break;
}
@@ -1227,7 +1227,7 @@ void display_alias_members(FILE *out_hnd, enum action_type action,
{
if (sid_mem[i] != NULL)
{
- fprintf(out_hnd, "\tMember Name:\t%s\tType:\t%s\n",
+ report(out_hnd, "\tMember Name:\t%s\tType:\t%s\n",
sid_mem[i],
get_sid_name_use_str(type[i]));
}
@@ -1237,7 +1237,7 @@ void display_alias_members(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1259,12 +1259,12 @@ void display_alias_rid_info(FILE *out_hnd, enum action_type action,
sid_to_string(sid_str, sid);
if (num_rids == 0)
{
- fprintf(out_hnd, "\tNo Aliases:\tSid %s\n", sid_str);
+ report(out_hnd, "\tNo Aliases:\tSid %s\n", sid_str);
}
else
{
- fprintf(out_hnd, "\tAlias Info:\tSid %s\n", sid_str);
- fprintf(out_hnd, "\t----------\n");
+ report(out_hnd, "\tAlias Info:\tSid %s\n", sid_str);
+ report(out_hnd, "\t----------\n");
}
break;
}
@@ -1274,14 +1274,14 @@ void display_alias_rid_info(FILE *out_hnd, enum action_type action,
for (i = 0; i < num_rids; i++)
{
- fprintf(out_hnd, "\tAlias RID:\t%8x\n", rid[i]);
+ report(out_hnd, "\tAlias RID:\t%8x\n", rid[i]);
}
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1299,12 +1299,12 @@ void display_group_members(FILE *out_hnd, enum action_type action,
{
if (num_mem == 0)
{
- fprintf(out_hnd, "\tNo Members\n");
+ report(out_hnd, "\tNo Members\n");
}
else
{
- fprintf(out_hnd, "\tMembers:\n");
- fprintf(out_hnd, "\t-------\n");
+ report(out_hnd, "\tMembers:\n");
+ report(out_hnd, "\t-------\n");
}
break;
}
@@ -1314,7 +1314,7 @@ void display_group_members(FILE *out_hnd, enum action_type action,
for (i = 0; i < num_mem; i++)
{
- fprintf(out_hnd, "\tMember Name:\t%s\tType:\t%s\n",
+ report(out_hnd, "\tMember Name:\t%s\tType:\t%s\n",
name[i], get_sid_name_use_str(type[i]));
}
@@ -1322,7 +1322,7 @@ void display_group_members(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1346,11 +1346,11 @@ void display_group_info1(FILE *out_hnd, enum action_type action, GROUP_INFO1 *co
fstring temp;
unistr2_to_ascii(temp, &info1->uni_acct_name, sizeof(temp)-1);
- fprintf(out_hnd, "\tGroup Name:\t%s\n", temp);
+ report(out_hnd, "\tGroup Name:\t%s\n", temp);
unistr2_to_ascii(temp, &info1->uni_acct_desc, sizeof(temp)-1);
- fprintf(out_hnd, "\tDescription:\t%s\n", temp);
- fprintf(out_hnd, "\tunk1:%d\n", info1->unknown_1);
- fprintf(out_hnd, "\tNum Members:%d\n", info1->num_members);
+ report(out_hnd, "\tDescription:\t%s\n", temp);
+ report(out_hnd, "\tunk1:%d\n", info1->unknown_1);
+ report(out_hnd, "\tNum Members:%d\n", info1->num_members);
break;
}
case ACTION_FOOTER:
@@ -1377,7 +1377,7 @@ void display_group_info4(FILE *out_hnd, enum action_type action, GROUP_INFO4 *co
fstring desc;
unistr2_to_ascii(desc, &info4->uni_acct_desc, sizeof(desc)-1);
- fprintf(out_hnd, "\tGroup Description:%s\n",
+ report(out_hnd, "\tGroup Description:%s\n",
desc);
break;
}
@@ -1398,8 +1398,8 @@ void display_group_info_ctr(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tSAM Group Info\n");
- fprintf(out_hnd, "\t--------------\n");
+ report(out_hnd, "\tSAM Group Info\n");
+ report(out_hnd, "\t--------------\n");
break;
}
@@ -1426,7 +1426,7 @@ void display_group_info_ctr(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1444,12 +1444,12 @@ void display_group_rid_info(FILE *out_hnd, enum action_type action,
{
if (num_gids == 0)
{
- fprintf(out_hnd, "\tNo Groups\n");
+ report(out_hnd, "\tNo Groups\n");
}
else
{
- fprintf(out_hnd, "\tGroup Info\n");
- fprintf(out_hnd, "\t----------\n");
+ report(out_hnd, "\tGroup Info\n");
+ report(out_hnd, "\t----------\n");
}
break;
}
@@ -1459,7 +1459,7 @@ void display_group_rid_info(FILE *out_hnd, enum action_type action,
for (i = 0; i < num_gids; i++)
{
- fprintf(out_hnd, "\tGroup RID:\t%8x attr:\t%x\n",
+ report(out_hnd, "\tGroup RID:\t%8x attr:\t%x\n",
gid[i].g_rid, gid[i].attr);
}
@@ -1467,7 +1467,7 @@ void display_group_rid_info(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1486,12 +1486,12 @@ void display_alias_name_info(FILE *out_hnd, enum action_type action,
{
if (num_aliases == 0)
{
- fprintf(out_hnd, "\tNo Aliases\n");
+ report(out_hnd, "\tNo Aliases\n");
}
else
{
- fprintf(out_hnd, "\tAlias Names\n");
- fprintf(out_hnd, "\t----------- \n");
+ report(out_hnd, "\tAlias Names\n");
+ report(out_hnd, "\t----------- \n");
}
break;
}
@@ -1501,7 +1501,7 @@ void display_alias_name_info(FILE *out_hnd, enum action_type action,
for (i = 0; i < num_aliases; i++)
{
- fprintf(out_hnd, "\tAlias Name:\t%s Attributes:\t%3d\n",
+ report(out_hnd, "\tAlias Name:\t%s Attributes:\t%3d\n",
alias_name[i], num_als_usrs[i]);
}
@@ -1509,7 +1509,7 @@ void display_alias_name_info(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1532,7 +1532,7 @@ void display_alias_info3(FILE *out_hnd, enum action_type action, ALIAS_INFO3 *co
fstring temp;
unistr2_to_ascii(temp, &info3->uni_acct_desc, sizeof(temp)-1);
- fprintf(out_hnd, "\tDescription:\t%s\n", temp);
+ report(out_hnd, "\tDescription:\t%s\n", temp);
break;
}
case ACTION_FOOTER:
@@ -1552,8 +1552,8 @@ void display_alias_info_ctr(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tSAM Group Info\n");
- fprintf(out_hnd, "\t--------------\n");
+ report(out_hnd, "\tSAM Group Info\n");
+ report(out_hnd, "\t--------------\n");
break;
}
@@ -1573,7 +1573,7 @@ void display_alias_info_ctr(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1589,8 +1589,8 @@ void display_sam_user_info_21(FILE *out_hnd, enum action_type action, SAM_USER_I
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tUser Info, Level 0x15\n");
- fprintf(out_hnd, "\t---------------------\n");
+ report(out_hnd, "\tUser Info, Level 0x15\n");
+ report(out_hnd, "\t---------------------\n");
break;
}
@@ -1599,64 +1599,64 @@ void display_sam_user_info_21(FILE *out_hnd, enum action_type action, SAM_USER_I
fstring temp;
unistr2_to_ascii(temp, &usr->uni_user_name, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tUser Name :\t%s\n", temp);
+ report(out_hnd, "\t\tUser Name :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_full_name, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tFull Name :\t%s\n", temp);
+ report(out_hnd, "\t\tFull Name :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_home_dir, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tHome Drive :\t%s\n", temp);
+ report(out_hnd, "\t\tHome Drive :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_dir_drive, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tDir Drive :\t%s\n", temp);
+ report(out_hnd, "\t\tDir Drive :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_profile_path, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tProfile Path:\t%s\n", temp);
+ report(out_hnd, "\t\tProfile Path:\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_logon_script, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tLogon Script:\t%s\n", temp);
+ report(out_hnd, "\t\tLogon Script:\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_acct_desc, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tDescription :\t%s\n", temp);
+ report(out_hnd, "\t\tDescription :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_workstations, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tWorkstations:\t%s\n", temp);
+ report(out_hnd, "\t\tWorkstations:\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_unknown_str, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tUnknown Str :\t%s\n", temp);
+ report(out_hnd, "\t\tUnknown Str :\t%s\n", temp);
unistr2_to_ascii(temp, &usr->uni_munged_dial, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tRemote Dial :\t%s\n", temp);
-
- fprintf(out_hnd, "\t\tLogon Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->logon_time ))));
- fprintf(out_hnd, "\t\tLogoff Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->logoff_time ))));
- fprintf(out_hnd, "\t\tKickoff Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->kickoff_time ))));
- fprintf(out_hnd, "\t\tPassword last set Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_last_set_time ))));
- fprintf(out_hnd, "\t\tPassword can change Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_can_change_time ))));
- fprintf(out_hnd, "\t\tPassword must change Time:\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_must_change_time))));
+ report(out_hnd, "\t\tRemote Dial :\t%s\n", temp);
+
+ report(out_hnd, "\t\tLogon Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->logon_time ))));
+ report(out_hnd, "\t\tLogoff Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->logoff_time ))));
+ report(out_hnd, "\t\tKickoff Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->kickoff_time ))));
+ report(out_hnd, "\t\tPassword last set Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_last_set_time ))));
+ report(out_hnd, "\t\tPassword can change Time :\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_can_change_time ))));
+ report(out_hnd, "\t\tPassword must change Time:\t%s\n", http_timestring(nt_time_to_unix(&(usr->pass_must_change_time))));
- fprintf(out_hnd, "\t\tunknown_2[0..31]...\n"); /* user passwords? */
+ report(out_hnd, "\t\tunknown_2[0..31]...\n"); /* user passwords? */
- fprintf(out_hnd, "\t\tuser_rid :\t%x\n" , usr->user_rid ); /* User ID */
- fprintf(out_hnd, "\t\tgroup_rid:\t%x\n" , usr->group_rid); /* Group ID */
- fprintf(out_hnd, "\t\tacb_info :\t%04x\n", usr->acb_info ); /* Account Control Info */
+ report(out_hnd, "\t\tuser_rid :\t%x\n" , usr->user_rid ); /* User ID */
+ report(out_hnd, "\t\tgroup_rid:\t%x\n" , usr->group_rid); /* Group ID */
+ report(out_hnd, "\t\tacb_info :\t%04x\n", usr->acb_info ); /* Account Control Info */
- fprintf(out_hnd, "\t\tunknown_3:\t%08x\n", usr->unknown_3); /* 0x00ff ffff */
- fprintf(out_hnd, "\t\tlogon_divs:\t%d\n", usr->logon_divs); /* 0x0000 00a8 which is 168 which is num hrs in a week */
- fprintf(out_hnd, "\t\tunknown_5:\t%08x\n", usr->unknown_5); /* 0x0002 0000 */
+ report(out_hnd, "\t\tunknown_3:\t%08x\n", usr->unknown_3); /* 0x00ff ffff */
+ report(out_hnd, "\t\tlogon_divs:\t%d\n", usr->logon_divs); /* 0x0000 00a8 which is 168 which is num hrs in a week */
+ report(out_hnd, "\t\tunknown_5:\t%08x\n", usr->unknown_5); /* 0x0002 0000 */
- fprintf(out_hnd, "\t\tpadding1[0..7]...\n");
+ report(out_hnd, "\t\tpadding1[0..7]...\n");
if (usr->ptr_logon_hrs)
{
- fprintf(out_hnd, "\t\tlogon_hrs[0..%d]...\n", usr->logon_hrs.len);
+ report(out_hnd, "\t\tlogon_hrs[0..%d]...\n", usr->logon_hrs.len);
}
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1740,7 +1740,7 @@ void display_sec_access(FILE *out_hnd, enum action_type action, SEC_ACCESS *cons
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t\tPermissions:\t%s\n",
+ report(out_hnd, "\t\tPermissions:\t%s\n",
get_sec_mask_str(info->mask));
}
case ACTION_FOOTER:
@@ -1759,7 +1759,7 @@ void display_sec_ace(FILE *out_hnd, enum action_type action, SEC_ACE *const ace)
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tACE\n");
+ report(out_hnd, "\tACE\n");
break;
}
case ACTION_ENUMERATE:
@@ -1771,7 +1771,7 @@ void display_sec_ace(FILE *out_hnd, enum action_type action, SEC_ACE *const ace)
display_sec_access(out_hnd, ACTION_FOOTER , &ace->info);
sid_to_string(sid_str, &ace->sid);
- fprintf(out_hnd, "\t\tSID:\t%s\n", sid_str);
+ report(out_hnd, "\t\tSID:\t%s\n", sid_str);
}
case ACTION_FOOTER:
{
@@ -1789,9 +1789,9 @@ void display_sec_acl(FILE *out_hnd, enum action_type action, SEC_ACL *const sec_
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tACL\tNum ACEs:\t%d\trevision:\t%x\n",
+ report(out_hnd, "\tACL\tNum ACEs:\t%d\trevision:\t%x\n",
sec_acl->num_aces, sec_acl->revision);
- fprintf(out_hnd, "\t---\n");
+ report(out_hnd, "\t---\n");
break;
}
@@ -1812,7 +1812,7 @@ void display_sec_acl(FILE *out_hnd, enum action_type action, SEC_ACL *const sec_
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1827,9 +1827,9 @@ void display_sec_desc(FILE *out_hnd, enum action_type action, SEC_DESC *const se
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tSecurity Descriptor\trevision:\t%x\ttype:\t%x\n",
+ report(out_hnd, "\tSecurity Descriptor\trevision:\t%x\ttype:\t%x\n",
sec->revision, sec->type);
- fprintf(out_hnd, "\t-------------------\n");
+ report(out_hnd, "\t-------------------\n");
break;
}
@@ -1852,19 +1852,19 @@ void display_sec_desc(FILE *out_hnd, enum action_type action, SEC_DESC *const se
if (sec->off_owner_sid != 0)
{
sid_to_string(sid_str, sec->owner_sid);
- fprintf(out_hnd, "\tOwner SID:\t%s\n", sid_str);
+ report(out_hnd, "\tOwner SID:\t%s\n", sid_str);
}
if (sec->off_grp_sid != 0)
{
sid_to_string(sid_str, sec->grp_sid);
- fprintf(out_hnd, "\tParent SID:\t%s\n", sid_str);
+ report(out_hnd, "\tParent SID:\t%s\n", sid_str);
}
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -1926,7 +1926,7 @@ static void print_reg_value(FILE *out_hnd, const char *val_name,
{
unibuf_to_ascii(valstr, value->buffer,
MIN(value->buf_len, sizeof(valstr)-1));
- fprintf(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr);
+ report(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr);
break;
}
@@ -1935,13 +1935,13 @@ static void print_reg_value(FILE *out_hnd, const char *val_name,
{
if (value->buf_len <= 8)
{
- fprintf(out_hnd, "\t%s:\t%s:\t", val_name, type);
+ report(out_hnd, "\t%s:\t%s:\t", val_name, type);
out_data(out_hnd, (const char*)value->buffer,
value->buf_len, 8);
}
else
{
- fprintf(out_hnd, "\t%s:\t%s:\n", val_name, type);
+ report(out_hnd, "\t%s:\t%s:\n", val_name, type);
out_data(out_hnd, (const char*)value->buffer,
value->buf_len, 16);
}
@@ -1950,14 +1950,14 @@ static void print_reg_value(FILE *out_hnd, const char *val_name,
case 0x04: /* uint32 */
{
- fprintf(out_hnd, "\t%s:\t%s:\t0x%08x\n", val_name, type, buffer2_to_uint32(value));
+ report(out_hnd, "\t%s:\t%s:\t0x%08x\n", val_name, type, buffer2_to_uint32(value));
break;
}
case 0x07: /* multiunistr */
{
buffer2_to_multistr(valstr, value, sizeof(valstr)-1);
- fprintf(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr);
+ report(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr);
break;
}
}
@@ -2002,7 +2002,7 @@ void display_reg_key_info(FILE *out_hnd, enum action_type action,
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\t%s\t(%s)\n",
+ report(out_hnd, "\t%s\t(%s)\n",
key_name, http_timestring(key_mod_time));
break;
}
@@ -2047,8 +2047,8 @@ void display_query_svc_cfg(FILE *out_hnd, enum action_type action,
fstring service;
unistr2_to_ascii(service, &cfg->uni_display_name, sizeof(service)-1);
- fprintf(out_hnd, "\tService:\t%s\n", service);
- fprintf(out_hnd, "\t-------\n");
+ report(out_hnd, "\tService:\t%s\n", service);
+ report(out_hnd, "\t-------\n");
break;
}
case ACTION_ENUMERATE:
@@ -2056,27 +2056,27 @@ void display_query_svc_cfg(FILE *out_hnd, enum action_type action,
fstring temp;
unistr2_to_ascii(temp, &cfg->uni_bin_path_name, sizeof(temp)-1);
- fprintf(out_hnd, "\tPath:\t%s\n", temp);
+ report(out_hnd, "\tPath:\t%s\n", temp);
unistr2_to_ascii(temp, &cfg->uni_load_order_grp, sizeof(temp)-1);
- fprintf(out_hnd, "\tLoad Order:\t%s\n", temp);
+ report(out_hnd, "\tLoad Order:\t%s\n", temp);
unistr2_to_ascii(temp, &cfg->uni_dependencies, sizeof(temp)-1);
- fprintf(out_hnd, "\tDependencies:\t%s\n", temp);
+ report(out_hnd, "\tDependencies:\t%s\n", temp);
unistr2_to_ascii(temp, &cfg->uni_service_start_name, sizeof(temp)-1);
- fprintf(out_hnd, "\tService Start:\t%s\n", temp);
+ report(out_hnd, "\tService Start:\t%s\n", temp);
- fprintf(out_hnd, "\tService Type:\t%d\n", cfg->service_type);
- fprintf(out_hnd, "\tStart Type:\t%s\n" , get_svc_start_type_str(cfg->start_type));
- fprintf(out_hnd, "\tError Control:\t%d\n" , cfg->error_control);
- fprintf(out_hnd, "\tTag Id:\t%d\n" , cfg->tag_id);
+ report(out_hnd, "\tService Type:\t%d\n", cfg->service_type);
+ report(out_hnd, "\tStart Type:\t%s\n" , get_svc_start_type_str(cfg->start_type));
+ report(out_hnd, "\tError Control:\t%d\n" , cfg->error_control);
+ report(out_hnd, "\tTag Id:\t%d\n" , cfg->tag_id);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2100,11 +2100,11 @@ void display_svc_info(FILE *out_hnd, enum action_type action,
unistr_to_ascii(name, svc->uni_srvc_name.buffer,
sizeof(name)-1); /* service name */
- fprintf(out_hnd, "\t%s:", name);
+ report(out_hnd, "\t%s:", name);
unistr_to_ascii(name, svc->uni_disp_name.buffer,
sizeof(name)-1); /* display name */
- fprintf(out_hnd, "\t%s\n", name);
+ report(out_hnd, "\t%s\n", name);
break;
}
case ACTION_FOOTER:
@@ -2189,7 +2189,8 @@ static char *get_at_days_str(uint32 monthdays, uint8 weekdays, uint8 flags)
display scheduled jobs
****************************************************************************/
void display_at_enum_info(FILE *out_hnd, enum action_type action,
- uint32 num_jobs, const AT_ENUM_INFO *const jobs, const fstring *const commands)
+ uint32 num_jobs, const AT_ENUM_INFO *const jobs,
+ char *const *const commands)
{
switch (action)
{
@@ -2197,12 +2198,12 @@ void display_at_enum_info(FILE *out_hnd, enum action_type action,
{
if (num_jobs == 0)
{
- fprintf(out_hnd, "\tNo Jobs.\n");
+ report(out_hnd, "\tNo Jobs.\n");
}
else
{
- fprintf(out_hnd, "\tJobs:\n");
- fprintf(out_hnd, "\t-----\n");
+ report(out_hnd, "\tJobs:\n");
+ report(out_hnd, "\t-----\n");
}
break;
}
@@ -2214,7 +2215,7 @@ void display_at_enum_info(FILE *out_hnd, enum action_type action,
{
const AT_JOB_INFO *const job = &jobs[i].info;
- fprintf(out_hnd, "\t%d\t%s\t%s\t%s\n",
+ report(out_hnd, "\t%d\t%s\t%s\t%s\n",
jobs[i].jobid,
get_at_time_str(job->time),
get_at_days_str(job->monthdays,
@@ -2227,7 +2228,7 @@ void display_at_enum_info(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2243,37 +2244,37 @@ void display_at_job_info(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tJob Information:\n");
- fprintf(out_hnd, "\t----------------\n");
+ report(out_hnd, "\tJob Information:\n");
+ report(out_hnd, "\t----------------\n");
break;
}
case ACTION_ENUMERATE:
{
- fprintf(out_hnd, "\tTime: %s\n",
+ report(out_hnd, "\tTime: %s\n",
get_at_time_str(job->time));
- fprintf(out_hnd, "\tSchedule: %s\n",
+ report(out_hnd, "\tSchedule: %s\n",
get_at_days_str(job->monthdays, job->weekdays,
job->flags));
- fprintf(out_hnd, "\tStatus: %s",
+ report(out_hnd, "\tStatus: %s",
(job->flags & JOB_EXEC_ERR) ? "Failed" : "OK");
if (job->flags & JOB_RUNS_TODAY)
{
- fprintf(out_hnd, ", Runs Today");
+ report(out_hnd, ", Runs Today");
}
- fprintf(out_hnd, "\n\tInteractive: %s\n",
+ report(out_hnd, "\n\tInteractive: %s\n",
(job->flags & JOB_NONINTERACTIVE) ? "No"
: "Yes");
- fprintf(out_hnd, "\tCommand: %s\n", command);
+ report(out_hnd, "\tCommand: %s\n", command);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2288,68 +2289,68 @@ void display_eventlog_eventrecord(FILE *out_hnd, enum action_type action, EVENTL
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tevent log records\n");
- fprintf(out_hnd, "\t-----------------\n");
+ report(out_hnd, "\tevent log records\n");
+ report(out_hnd, "\t-----------------\n");
break;
}
case ACTION_ENUMERATE:
{
fstring temp;
- fprintf(out_hnd, "\t\trecord n.:\t%d\n", ev->recordnumber);
+ report(out_hnd, "\t\trecord n.:\t%d\n", ev->recordnumber);
- fprintf(out_hnd, "\t\tsource\teventnumber\teventtype\tcategory\n");
+ report(out_hnd, "\t\tsource\teventnumber\teventtype\tcategory\n");
unistr_to_ascii(temp, ev->sourcename.buffer, sizeof(temp)-1);
- fprintf(out_hnd, "\t\t%s", temp);
+ report(out_hnd, "\t\t%s", temp);
- fprintf(out_hnd, "\t%d\t\t", ev->eventnumber&0x0000FFFF);
+ report(out_hnd, "\t%d\t\t", ev->eventnumber&0x0000FFFF);
switch (ev->eventtype)
{
case EVENTLOG_OK:
- fprintf(out_hnd, "Normal");
+ report(out_hnd, "Normal");
break;
case EVENTLOG_ERROR:
- fprintf(out_hnd, "Error");
+ report(out_hnd, "Error");
break;
case EVENTLOG_WARNING:
- fprintf(out_hnd, "Warning");
+ report(out_hnd, "Warning");
break;
case EVENTLOG_INFORMATION:
- fprintf(out_hnd, "Information");
+ report(out_hnd, "Information");
break;
case EVENTLOG_AUDIT_OK:
- fprintf(out_hnd, "Audit Normal");
+ report(out_hnd, "Audit Normal");
break;
case EVENTLOG_AUDIT_ERROR:
- fprintf(out_hnd, "Audit Error\n");
+ report(out_hnd, "Audit Error\n");
break;
}
- fprintf(out_hnd, "\t%d\n", ev->category);
- fprintf(out_hnd, "\t\tcreationtime:\t%s\n", http_timestring(ev->creationtime));
- fprintf(out_hnd, "\t\twritetime:\t%s\n", http_timestring(ev->writetime));
+ report(out_hnd, "\t%d\n", ev->category);
+ report(out_hnd, "\t\tcreationtime:\t%s\n", http_timestring(ev->creationtime));
+ report(out_hnd, "\t\twritetime:\t%s\n", http_timestring(ev->writetime));
unistr_to_ascii(temp, ev->computername.buffer, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tcomputer:\t%s\n", temp);
+ report(out_hnd, "\t\tcomputer:\t%s\n", temp);
if (ev->num_of_strings!=0)
{
unistr_to_ascii(temp, ev->strings.buffer, sizeof(temp)-1);
- fprintf(out_hnd, "\t\tdescription:\t%s\n", temp);
+ report(out_hnd, "\t\tdescription:\t%s\n", temp);
}
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2377,13 +2378,13 @@ void display_sam_sync_ctr(FILE *out_hnd, enum action_type action,
case 1:
{
unistr2_to_ascii(name, &(ctr->domain_info.uni_dom_name), sizeof(name)-1);
- fprintf(out_hnd, "Domain: %s\n", name);
+ report(out_hnd, "Domain: %s\n", name);
break;
}
case 2:
{
unistr2_to_ascii(name, &(ctr->group_info.uni_grp_name), sizeof(name)-1);
- fprintf(out_hnd, "Group: %s\n", name);
+ report(out_hnd, "Group: %s\n", name);
break;
}
case 5:
@@ -2392,7 +2393,7 @@ void display_sam_sync_ctr(FILE *out_hnd, enum action_type action,
unsigned char nt_pwd[16];
unistr2_to_ascii(name, &(ctr->account_info.uni_acct_name), sizeof(name)-1);
- fprintf(out_hnd, "Account: %s\n", name);
+ report(out_hnd, "Account: %s\n", name);
sam_pwd_hash(ctr->account_info.user_rid, ctr->account_info.pass.buf_lm_pwd, lm_pwd, 0);
out_struct(out_hnd, lm_pwd, 16, 8);
@@ -2422,8 +2423,8 @@ void display_sam_sync(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tSAM Database Sync\n");
- fprintf(out_hnd, "\t-----------------\n");
+ report(out_hnd, "\tSAM Database Sync\n");
+ report(out_hnd, "\t-----------------\n");
break;
}
@@ -2440,7 +2441,7 @@ void display_sam_sync(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2462,30 +2463,30 @@ void display_sam_unk_info_2(FILE *out_hnd, enum action_type action,
{
fstring name;
unistr2_to_ascii(name, &(info2->uni_domain), sizeof(name)-1);
- fprintf(out_hnd, "Domain:\t%s\n", name);
+ report(out_hnd, "Domain:\t%s\n", name);
unistr2_to_ascii(name, &(info2->uni_server), sizeof(name)-1);
- fprintf(out_hnd, "Server:\t%s\n", name);
+ report(out_hnd, "Server:\t%s\n", name);
- fprintf(out_hnd, "Total Users:\t%d\n", info2->num_domain_usrs);
- fprintf(out_hnd, "Total Groups:\t%d\n", info2->num_domain_grps);
- fprintf(out_hnd, "Total Aliases:\t%d\n", info2->num_local_grps);
+ report(out_hnd, "Total Users:\t%d\n", info2->num_domain_usrs);
+ report(out_hnd, "Total Groups:\t%d\n", info2->num_domain_grps);
+ report(out_hnd, "Total Aliases:\t%d\n", info2->num_local_grps);
- fprintf(out_hnd, "Sequence No:\t%d\n", info2->seq_num);
+ report(out_hnd, "Sequence No:\t%d\n", info2->seq_num);
- fprintf(out_hnd, "Unknown 0:\t0x%x\n", info2->unknown_0);
- fprintf(out_hnd, "Unknown 1:\t0x%x\n", info2->unknown_1);
- fprintf(out_hnd, "Unknown 2:\t0x%x\n", info2->unknown_2);
- fprintf(out_hnd, "Unknown 3:\t0x%x\n", info2->unknown_3);
- fprintf(out_hnd, "Unknown 4:\t0x%x\n", info2->unknown_4);
- fprintf(out_hnd, "Unknown 5:\t0x%x\n", info2->unknown_5);
- fprintf(out_hnd, "Unknown 6:\t0x%x\n", info2->unknown_6);
+ report(out_hnd, "Unknown 0:\t0x%x\n", info2->unknown_0);
+ report(out_hnd, "Unknown 1:\t0x%x\n", info2->unknown_1);
+ report(out_hnd, "Unknown 2:\t0x%x\n", info2->unknown_2);
+ report(out_hnd, "Unknown 3:\t0x%x\n", info2->unknown_3);
+ report(out_hnd, "Unknown 4:\t0x%x\n", info2->unknown_4);
+ report(out_hnd, "Unknown 5:\t0x%x\n", info2->unknown_5);
+ report(out_hnd, "Unknown 6:\t0x%x\n", info2->unknown_6);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2501,8 +2502,8 @@ void display_sam_unk_ctr(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\tSAM Domain Info\n");
- fprintf(out_hnd, "\t---------------\n");
+ report(out_hnd, "\tSAM Domain Info\n");
+ report(out_hnd, "\t---------------\n");
break;
}
@@ -2522,7 +2523,120 @@ void display_sam_unk_ctr(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+sam info level 1 display function
+****************************************************************************/
+void display_sam_info_1(FILE *out_hnd, enum action_type action,
+ SAM_ENTRY1 *const e1, SAM_STR1 *const s1)
+{
+ if (e1 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ report(out_hnd, "Sam Level 1:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring tmp;
+
+ report(out_hnd, "\tIndex:\t%d\n", e1->user_idx);
+ report(out_hnd, "\tRID:\t0x%x\n", e1->rid_user);
+ report(out_hnd, "\tACB:\t%s\n",
+ pwdb_encode_acct_ctrl(e1->acb_info,
+ NEW_PW_FORMAT_SPACE_PADDED_LEN));
+
+ unistr_to_ascii(tmp, s1->uni_acct_name.buffer, sizeof(tmp)-1);
+ report(out_hnd, "\tAccount Name:\t%s\n", tmp);
+ unistr_to_ascii(tmp, s1->uni_full_name.buffer, sizeof(tmp)-1);
+ report(out_hnd, "\tFull Name:\t%s\n", tmp);
+ unistr_to_ascii(tmp, s1->uni_acct_desc.buffer, sizeof(tmp)-1);
+ report(out_hnd, "\tUser Description:\t%s\n", tmp);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ report(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+connection info level 1 container display function
+****************************************************************************/
+void display_sam_info_1_ctr(FILE *out_hnd, enum action_type action,
+ uint32 count, SAM_DISPINFO_1 *const ctr)
+{
+ if (ctr == NULL)
+ {
+ report(out_hnd, "display_sam_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 < count; i++)
+ {
+ display_sam_info_1(out_hnd, ACTION_HEADER , &ctr->sam[i], &ctr->str[i]);
+ display_sam_info_1(out_hnd, ACTION_ENUMERATE, &ctr->sam[i], &ctr->str[i]);
+ display_sam_info_1(out_hnd, ACTION_FOOTER , &ctr->sam[i], &ctr->str[i]);
+ }
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+connection info container display function
+****************************************************************************/
+void display_sam_disp_info_ctr(FILE *out_hnd, enum action_type action,
+ uint16 level, uint32 count,
+ SAM_DISPINFO_CTR *const ctr)
+{
+ if (ctr == NULL)
+ {
+ report(out_hnd, "display_sam_info_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (level)
+ {
+ case 1:
+ {
+ display_sam_info_1_ctr(out_hnd, action,
+ count, ctr->sam.info1);
+ break;
+ }
+ default:
+ {
+ report(out_hnd, "display_sam_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -2543,7 +2657,7 @@ void display_print_info_0(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Printer Info Level 0:\n");
+ report(out_hnd, "Printer Info Level 0:\n");
break;
}
@@ -2555,15 +2669,15 @@ void display_print_info_0(FILE *out_hnd, enum action_type action,
unistr_to_ascii(name, i0->printername.buffer, sizeof(name)-1);
unistr_to_ascii(serv, i0->servername .buffer, sizeof(serv)-1);
- fprintf(out_hnd, "\tprinter name:\t%s\n", name);
- fprintf(out_hnd, "\tserver name:\t%s\n", serv);
- fprintf(out_hnd, "\t[Other info not displayed]\n");
+ report(out_hnd, "\tprinter name:\t%s\n", name);
+ report(out_hnd, "\tserver name:\t%s\n", serv);
+ report(out_hnd, "\t[Other info not displayed]\n");
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2585,7 +2699,7 @@ void display_print_info_1(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Printer Info Level 1:\n");
+ report(out_hnd, "Printer Info Level 1:\n");
break;
}
@@ -2599,16 +2713,16 @@ void display_print_info_1(FILE *out_hnd, enum action_type action,
unistr_to_ascii(name, i1->name .buffer, sizeof(name)-1);
unistr_to_ascii(comm, i1->comment .buffer, sizeof(comm)-1);
- fprintf(out_hnd, "\tflags:\t%d\n", i1->flags);
- fprintf(out_hnd, "\tname:\t%s\n", name);
- fprintf(out_hnd, "\tdescription:\t%s\n", desc);
- fprintf(out_hnd, "\tcomment:\t%s\n", comm);
+ report(out_hnd, "\tflags:\t%d\n", i1->flags);
+ report(out_hnd, "\tname:\t%s\n", name);
+ report(out_hnd, "\tdescription:\t%s\n", desc);
+ report(out_hnd, "\tcomment:\t%s\n", comm);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2623,7 +2737,7 @@ void display_printer_info_0_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_printer_info_0_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_printer_info_0_ctr: unavailable due to an internal error\n");
return;
}
@@ -2660,7 +2774,7 @@ void display_printer_info_1_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_printer_info_1_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_printer_info_1_ctr: unavailable due to an internal error\n");
return;
}
@@ -2698,7 +2812,7 @@ void display_printer_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_printer_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_printer_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -2718,7 +2832,7 @@ void display_printer_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_printer_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_printer_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -2739,7 +2853,7 @@ void display_job_info_2(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Job Info Level 2:\n");
+ report(out_hnd, "Job Info Level 2:\n");
break;
}
@@ -2747,49 +2861,49 @@ void display_job_info_2(FILE *out_hnd, enum action_type action,
{
fstring tmp;
- fprintf(out_hnd, "\tjob id:\t%d\n", i2->jobid);
+ report(out_hnd, "\tjob id:\t%d\n", i2->jobid);
unistr_to_ascii(tmp, i2->printername.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tprinter name:\t%s\n", tmp);
+ report(out_hnd, "\tprinter name:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->machinename.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tmachine name:\t%s\n", tmp);
+ report(out_hnd, "\tmachine name:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->username.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tusername:\t%s\n", tmp);
+ report(out_hnd, "\tusername:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->document.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tdocument:\t%s\n", tmp);
+ report(out_hnd, "\tdocument:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->notifyname.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tnotify name:\t%s\n", tmp);
+ report(out_hnd, "\tnotify name:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->datatype.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tdata type:\t%s\n", tmp);
+ report(out_hnd, "\tdata type:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->printprocessor.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tprint processor:\t%s\n", tmp);
+ report(out_hnd, "\tprint processor:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->parameters.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tparameters:\t%s\n", tmp);
+ report(out_hnd, "\tparameters:\t%s\n", tmp);
unistr_to_ascii(tmp, i2->drivername.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tdriver name:\t%s\n", tmp);
- fprintf(out_hnd, "\tDevice Mode:\tNOT DISPLAYED YET\n");
+ report(out_hnd, "\tdriver name:\t%s\n", tmp);
+ report(out_hnd, "\tDevice Mode:\tNOT DISPLAYED YET\n");
/*
DEVICEMODE *devmode;
*/
unistr_to_ascii(tmp, i2->text_status.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\ttext status:\t%s\n", tmp);
+ report(out_hnd, "\ttext status:\t%s\n", tmp);
/* SEC_DESC sec_desc;*/
- fprintf(out_hnd, "\tstatus:\t%d\n", i2->status);
- fprintf(out_hnd, "\tpriority:\t%d\n", i2->priority);
- fprintf(out_hnd, "\tposition:\t%d\n", i2->position);
- fprintf(out_hnd, "\tstarttime:\t%d\n", i2->starttime);
- fprintf(out_hnd, "\tuntiltime:\t%d\n", i2->untiltime);
- fprintf(out_hnd, "\ttotalpages:\t%d\n", i2->totalpages);
- fprintf(out_hnd, "\tsize:\t%d\n", i2->size);
+ report(out_hnd, "\tstatus:\t%d\n", i2->status);
+ report(out_hnd, "\tpriority:\t%d\n", i2->priority);
+ report(out_hnd, "\tposition:\t%d\n", i2->position);
+ report(out_hnd, "\tstarttime:\t%d\n", i2->starttime);
+ report(out_hnd, "\tuntiltime:\t%d\n", i2->untiltime);
+ report(out_hnd, "\ttotalpages:\t%d\n", i2->totalpages);
+ report(out_hnd, "\tsize:\t%d\n", i2->size);
/*
SYSTEMTIME submitted;
*/
- fprintf(out_hnd, "\tsubmitted:\tNOT DISPLAYED YET\n");
- fprintf(out_hnd, "\ttimeelapsed:\t%d\n", i2->timeelapsed);
- fprintf(out_hnd, "\tpagesprinted:\t%d\n", i2->pagesprinted);
+ report(out_hnd, "\tsubmitted:\tNOT DISPLAYED YET\n");
+ report(out_hnd, "\ttimeelapsed:\t%d\n", i2->timeelapsed);
+ report(out_hnd, "\tpagesprinted:\t%d\n", i2->pagesprinted);
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2811,7 +2925,7 @@ void display_job_info_1(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "Job Info Level 1:\n");
+ report(out_hnd, "Job Info Level 1:\n");
break;
}
@@ -2819,34 +2933,34 @@ void display_job_info_1(FILE *out_hnd, enum action_type action,
{
fstring tmp;
- fprintf(out_hnd, "\tjob id:\t%d\n", i1->jobid);
+ report(out_hnd, "\tjob id:\t%d\n", i1->jobid);
unistr_to_ascii(tmp, i1->printername.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tprinter name:\t%s\n", tmp);
+ report(out_hnd, "\tprinter name:\t%s\n", tmp);
unistr_to_ascii(tmp, i1->machinename.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tmachine name:\t%s\n", tmp);
+ report(out_hnd, "\tmachine name:\t%s\n", tmp);
unistr_to_ascii(tmp, i1->username.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tusername:\t%s\n", tmp);
+ report(out_hnd, "\tusername:\t%s\n", tmp);
unistr_to_ascii(tmp, i1->document.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tdocument:\t%s\n", tmp);
+ report(out_hnd, "\tdocument:\t%s\n", tmp);
unistr_to_ascii(tmp, i1->datatype.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\tdata type:\t%s\n", tmp);
+ report(out_hnd, "\tdata type:\t%s\n", tmp);
unistr_to_ascii(tmp, i1->text_status.buffer, sizeof(tmp)-1);
- fprintf(out_hnd, "\ttext status:\t%s\n", tmp);
- fprintf(out_hnd, "\tstatus:\t%d\n", i1->status);
- fprintf(out_hnd, "\tpriority:\t%d\n", i1->priority);
- fprintf(out_hnd, "\tposition:\t%d\n", i1->position);
- fprintf(out_hnd, "\ttotalpages:\t%d\n", i1->totalpages);
+ report(out_hnd, "\ttext status:\t%s\n", tmp);
+ report(out_hnd, "\tstatus:\t%d\n", i1->status);
+ report(out_hnd, "\tpriority:\t%d\n", i1->priority);
+ report(out_hnd, "\tposition:\t%d\n", i1->position);
+ report(out_hnd, "\ttotalpages:\t%d\n", i1->totalpages);
/*
SYSTEMTIME submitted;
*/
- fprintf(out_hnd, "\tsubmitted:\tNOT DISPLAYED YET\n");
- fprintf(out_hnd, "\tpagesprinted:\t%d\n", i1->pagesprinted);
+ report(out_hnd, "\tsubmitted:\tNOT DISPLAYED YET\n");
+ report(out_hnd, "\tpagesprinted:\t%d\n", i1->pagesprinted);
break;
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
@@ -2861,7 +2975,7 @@ void display_job_info_2_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_job_info_2_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_job_info_2_ctr: unavailable due to an internal error\n");
return;
}
@@ -2898,7 +3012,7 @@ void display_job_info_1_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_job_info_1_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_job_info_1_ctr: unavailable due to an internal error\n");
return;
}
@@ -2936,7 +3050,7 @@ void display_job_info_ctr(FILE *out_hnd, enum action_type action,
{
if (ctr == NULL)
{
- fprintf(out_hnd, "display_job_info_ctr: unavailable due to an internal error\n");
+ report(out_hnd, "display_job_info_ctr: unavailable due to an internal error\n");
return;
}
@@ -2956,7 +3070,7 @@ void display_job_info_ctr(FILE *out_hnd, enum action_type action,
}
default:
{
- fprintf(out_hnd, "display_job_info_ctr: Unknown Info Level\n");
+ report(out_hnd, "display_job_info_ctr: Unknown Info Level\n");
break;
}
}
@@ -2972,8 +3086,8 @@ void display_job_info_ctr(FILE *out_hnd, enum action_type action,
{
case ACTION_HEADER:
{
- fprintf(out_hnd, "\t\n");
- fprintf(out_hnd, "\t-------------------\n");
+ report(out_hnd, "\t\n");
+ report(out_hnd, "\t-------------------\n");
break;
}
@@ -2983,7 +3097,7 @@ void display_job_info_ctr(FILE *out_hnd, enum action_type action,
}
case ACTION_FOOTER:
{
- fprintf(out_hnd, "\n");
+ report(out_hnd, "\n");
break;
}
}
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index 490c52ab3d..70f7d0d87e 100644
--- a/source3/rpcclient/rpcclient.c
+++ b/source3/rpcclient/rpcclient.c
@@ -45,6 +45,7 @@ extern int DEBUGLEVEL;
static int process_tok(fstring tok);
static void cmd_help(struct client_info *info, int argc, char *argv[]);
static void cmd_quit(struct client_info *info, int argc, char *argv[]);
+static void cmd_set (struct client_info *info, int argc, char *argv[]);
static struct user_credentials usr;
@@ -498,6 +499,12 @@ commands[] =
{COMPL_NONE, COMPL_NONE}
},
+ {
+ "rpcclient",
+ cmd_set,
+ "run rpcclient inside rpcclient (change options etc.)",
+ {COMPL_NONE, COMPL_NONE}
+ },
/*
* bye bye
*/
@@ -642,6 +649,9 @@ static int process_tok(char *tok)
return(-2);
}
+/* command options mask */
+static uint32 cmd_set_options = 0xffffffff;
+
/****************************************************************************
process commands from the client
****************************************************************************/
@@ -651,6 +661,9 @@ static BOOL do_command(struct client_info *info, char *line)
char *ptr = line;
pstring tok;
+ cmd_argc = 0;
+ cmd_argv = NULL;
+
/* get the first part of the command */
if (!next_token(&ptr,tok,NULL, sizeof(tok)))
{
@@ -668,10 +681,15 @@ static BOOL do_command(struct client_info *info, char *line)
return False;
}
+ cmd_set_options = 0x0;
+
if ((i = process_tok(cmd_argv[0])) >= 0)
{
- optind = -1;
- commands[i].fn(info, (uint32)cmd_argc, cmd_argv);
+ int argc = (int)cmd_argc;
+ char **argv = cmd_argv;
+ optind = 0;
+
+ commands[i].fn(info, argc, argv);
}
else if (i == -2)
{
@@ -683,8 +701,6 @@ static BOOL do_command(struct client_info *info, char *line)
}
free_char_array(cmd_argc, cmd_argv);
- cmd_argc = 0;
- cmd_argv = NULL;
return True;
}
@@ -728,28 +744,31 @@ static BOOL process( struct client_info *info, char *cmd_str)
pstring line;
char *cmd = cmd_str;
- if (cmd[0] != '\0') while (cmd[0] != '\0')
+ if (cmd != NULL)
{
- char *p;
-
- if ((p = strchr(cmd, ';')) == 0)
+ while (cmd[0] != '\0')
{
- strncpy(line, cmd, 999);
- line[1000] = '\0';
- cmd += strlen(cmd);
- }
- else
- {
- if (p - cmd > 999) p = cmd + 999;
- strncpy(line, cmd, p - cmd);
- line[p - cmd] = '\0';
- cmd = p + 1;
- }
+ char *p;
- /* input language code to internal one */
- CNV_INPUT (line);
+ if ((p = strchr(cmd, ';')) == 0)
+ {
+ strncpy(line, cmd, 999);
+ line[1000] = '\0';
+ cmd += strlen(cmd);
+ }
+ else
+ {
+ if (p - cmd > 999) p = cmd + 999;
+ strncpy(line, cmd, p - cmd);
+ line[p - cmd] = '\0';
+ cmd = p + 1;
+ }
- if (!do_command(info, line)) continue;
+ /* input language code to internal one */
+ CNV_INPUT (line);
+
+ if (!do_command(info, line)) continue;
+ }
}
else while (!feof(stdin))
{
@@ -760,7 +779,7 @@ static BOOL process( struct client_info *info, char *cmd_str)
#ifndef HAVE_LIBREADLINE
/* display a prompt */
- fprintf(out_hnd, "smb: %s> ", CNV_LANG(info->cur_dir));
+ fprintf(out_hnd, "%s$ ", CNV_LANG(cli_info.dest_host));
fflush(out_hnd);
#ifdef CLIX
@@ -786,8 +805,8 @@ static BOOL process( struct client_info *info, char *cmd_str)
#else /* HAVE_LIBREADLINE */
- slprintf(promptline, sizeof(promptline) - 1, "smb: %s> ",
- CNV_LANG(info->cur_dir));
+ slprintf(promptline, sizeof(promptline) - 1, "%s$ ",
+ CNV_LANG(cli_info.dest_host));
if (!readline(promptline))
break;
@@ -824,12 +843,11 @@ usage on the program
****************************************************************************/
static void usage(char *pname)
{
- fprintf(out_hnd, "Usage: %s [service] [-S server] [-d debuglevel] [-l log] ",
+ fprintf(out_hnd, "Usage: %s [password] [-S server] [-U user] -[W domain] [-l log] ",
pname);
fprintf(out_hnd, "\nVersion %s\n",VERSION);
fprintf(out_hnd, "\t-d debuglevel set the debuglevel\n");
- fprintf(out_hnd, "\tservice connect to \\\\server\\share \n");
fprintf(out_hnd, "\t-S server connect to \\\\server\\IPC$ \n");
fprintf(out_hnd, "\t-l log basename. Basename for log/debug files\n");
fprintf(out_hnd, "\t-n netbios name. Use this name as my netbios name\n");
@@ -838,19 +856,13 @@ static void usage(char *pname)
fprintf(out_hnd, "\t-I dest IP use this IP to connect to\n");
fprintf(out_hnd, "\t-E write messages to stderr instead of stdout\n");
fprintf(out_hnd, "\t-U username set the network username\n");
+ fprintf(out_hnd, "\t-U username%%pass set the network username and password\n");
fprintf(out_hnd, "\t-W domain set the domain name\n");
- fprintf(out_hnd, "\t-c command string execute semicolon separated commands\n");
+ fprintf(out_hnd, "\t-c 'command string' execute semicolon separated commands\n");
fprintf(out_hnd, "\t-t terminal code terminal i/o code {sjis|euc|jis7|jis8|junet|hex}\n");
fprintf(out_hnd, "\n");
}
-enum client_action
-{
- CLIENT_NONE,
- CLIENT_IPC,
- CLIENT_SVC
-};
-
#ifdef HAVE_LIBREADLINE
/****************************************************************************
@@ -1320,183 +1332,77 @@ static char *complete_cmd_null(char *text, int state)
#endif /* HAVE_LIBREADLINE */
-/****************************************************************************
- main program
-****************************************************************************/
- int main(int argc,char *argv[])
+static void set_user_password(struct user_credentials *u,
+ BOOL got_pass, char *password)
{
- BOOL interactive = True;
+ /* set the password cache info */
+ if (got_pass)
+ {
+ if (password == NULL)
+ {
+ pwd_set_nullpwd(&(u->pwd));
+ }
+ else
+ {
+ /* generate 16 byte hashes */
+ pwd_make_lm_nt_16(&(u->pwd), password);
+ }
+ }
+ else
+ {
+ pwd_read(&(u->pwd), "Enter Password:", True);
+ }
+}
- int opt;
+#define CMD_INTER 0x0
+#define CMD_STR 0x1
+#define CMD_DBF 0x2
+#define CMD_SVC 0x4
+#define CMD_TERM 0x8
+#define CMD_PASS 0x10
+#define CMD_USER 0x20
+#define CMD_NOPW 0x40
+#define CMD_DBLV 0x80
+#define CMD_HELP 0x100
+#define CMD_SOCK 0x200
+#define CMD_IFACE 0x400
+#define CMD_DOM 0x800
+#define CMD_IP 0x1000
+#define CMD_HOST 0x2000
+#define CMD_NAME 0x4000
+#define CMD_DBG 0x8000
+#define CMD_SCOPE 0x10000
+
+static void cmd_set(struct client_info *info, int argc, char *argv[])
+{
+ BOOL interactive = True;
+ char *cmd_str = NULL;
+ char opt;
extern FILE *dbf;
extern char *optarg;
- extern int optind;
static pstring servicesf = CONFIGFILE;
pstring term_code;
- char *p;
- BOOL got_pass = False;
- char *cmd_str="";
- mode_t myumask = 0755;
- enum client_action cli_action = CLIENT_NONE;
- extern struct user_credentials *usr_creds;
-
pstring password; /* local copy only, if one is entered */
- usr.ntlmssp_flags = 0x0;
-
- usr_creds = &usr;
- out_hnd = stdout;
- fstrcpy(debugf, argv[0]);
-
- init_policy_hnd(64);
-
#ifdef KANJI
pstrcpy(term_code, KANJI);
#else /* KANJI */
*term_code = 0;
#endif /* KANJI */
- DEBUGLEVEL = 2;
-
- cli_info.put_total_size = 0;
- cli_info.put_total_time_ms = 0;
- cli_info.get_total_size = 0;
- cli_info.get_total_time_ms = 0;
-
- cli_info.dir_total = 0;
- cli_info.newer_than = 0;
- cli_info.archive_level = 0;
- cli_info.print_mode = 1;
-
- cli_info.translation = False;
- cli_info.recurse_dir = False;
- cli_info.lowercase = False;
- cli_info.prompt = True;
- cli_info.abort_mget = True;
-
- cli_info.dest_ip.s_addr = 0;
- cli_info.name_type = 0x20;
-
- pstrcpy(cli_info.cur_dir , "\\");
- pstrcpy(cli_info.file_sel, "");
- pstrcpy(cli_info.base_dir, "");
- pstrcpy(usr.domain, "");
- pstrcpy(usr.user_name, "");
- pstrcpy(cli_info.myhostname, "");
- pstrcpy(cli_info.dest_host, "");
-
- pstrcpy(cli_info.svc_type, "A:");
- pstrcpy(cli_info.share, "");
- pstrcpy(cli_info.service, "");
-
- ZERO_STRUCT(cli_info.dom.level3_sid);
- ZERO_STRUCT(cli_info.dom.level5_sid);
- fstrcpy(cli_info.dom.level3_dom, "");
- fstrcpy(cli_info.dom.level5_dom, "");
-
-#ifdef HAVE_LIBREADLINE
-
- /* Initialise GNU Readline */
-
- rl_readline_name = "rpcclient";
- rl_attempted_completion_function = completion_fn;
- rl_completion_entry_function = (Function *)complete_cmd_null;
-
- /* Initialise history list */
-
- using_history();
-
-#endif /* HAVE_LIBREADLINE */
-
- TimeInit();
- charset_initialise();
-
- myumask = umask(0);
- umask(myumask);
-
- if (!get_myname(global_myname, NULL))
- {
- fprintf(stderr, "Failed to get my hostname.\n");
- }
-
- if (getenv("USER"))
- {
- pstrcpy(usr.user_name,getenv("USER"));
-
- /* modification to support userid%passwd syntax in the USER var
- 25.Aug.97, jdblair@uab.edu */
-
- if ((p=strchr(usr.user_name,'%')))
- {
- *p = 0;
- pstrcpy(password,p+1);
- got_pass = True;
- memset(strchr(getenv("USER"),'%')+1,'X',strlen(password));
- }
- strupper(usr.user_name);
- }
-
- password[0] = 0;
-
- /* modification to support PASSWD environmental var
- 25.Aug.97, jdblair@uab.edu */
- if (getenv("PASSWD"))
- {
- pstrcpy(password,getenv("PASSWD"));
- }
-
- if (*usr.user_name == 0 && getenv("LOGNAME"))
- {
- pstrcpy(usr.user_name,getenv("LOGNAME"));
- strupper(usr.user_name);
- }
-
- if (argc < 2)
- {
- usage(argv[0]);
- exit(1);
- }
-
if (*argv[1] != '-')
{
-
- pstrcpy(cli_info.service, argv[1]);
- /* Convert any '/' characters in the service name to '\' characters */
- string_replace( cli_info.service, '/','\\');
- argc--;
- argv++;
-
- fprintf(out_hnd, "service: %s\n", cli_info.service);
-
- if (count_chars(cli_info.service,'\\') < 3)
- {
- usage(argv[0]);
- printf("\n%s: Not enough '\\' characters in service\n", cli_info.service);
- exit(1);
- }
-
- /*
- if (count_chars(cli_info.service,'\\') > 3)
- {
- usage(pname);
- printf("\n%s: Too many '\\' characters in service\n", cli_info.service);
- exit(1);
- }
- */
-
if (argc > 1 && (*argv[1] != '-'))
{
- got_pass = True;
+ cmd_set_options |= CMD_PASS;
pstrcpy(password,argv[1]);
memset(argv[1],'X',strlen(argv[1]));
argc--;
argv++;
}
-
- cli_action = CLIENT_SVC;
}
- while ((opt = getopt(argc, argv,"s:B:O:M:S:i:N:n:d:l:hI:EB:U:L:t:m:W:T:D:c:")) != EOF)
+ while ((opt = getopt(argc, argv, "s:B:O:M:S:i:N:n:d:l:hI:EB:U:L:t:m:W:T:D:c:")) != EOF)
{
switch (opt)
{
@@ -1512,26 +1418,29 @@ static char *complete_cmd_null(char *text, int state)
case 'O':
{
+ cmd_set_options |= CMD_SOCK;
pstrcpy(user_socket_options,optarg);
break;
}
case 'S':
{
+ cmd_set_options |= CMD_HOST;
pstrcpy(cli_info.dest_host,optarg);
strupper(cli_info.dest_host);
- cli_action = CLIENT_IPC;
break;
}
case 'B':
{
+ cmd_set_options |= CMD_IFACE;
iface_set_default(NULL,optarg,NULL);
break;
}
case 'i':
{
+ cmd_set_options |= CMD_SCOPE;
pstrcpy(scope, optarg);
break;
}
@@ -1539,12 +1448,13 @@ static char *complete_cmd_null(char *text, int state)
case 'U':
{
char *lp;
+ cmd_set_options |= CMD_USER;
pstrcpy(usr.user_name,optarg);
if ((lp=strchr(usr.user_name,'%')))
{
*lp = 0;
pstrcpy(password,lp+1);
- got_pass = True;
+ cmd_set_options |= CMD_PASS;
memset(strchr(optarg,'%')+1,'X',strlen(password));
}
break;
@@ -1552,18 +1462,21 @@ static char *complete_cmd_null(char *text, int state)
case 'W':
{
+ cmd_set_options |= CMD_DOM;
pstrcpy(usr.domain,optarg);
break;
}
case 'E':
{
+ cmd_set_options |= CMD_DBG;
dbf = stderr;
break;
}
case 'I':
{
+ cmd_set_options |= CMD_IP;
cli_info.dest_ip = *interpret_addr2(optarg);
if (zero_ip(cli_info.dest_ip))
{
@@ -1574,18 +1487,20 @@ static char *complete_cmd_null(char *text, int state)
case 'n':
{
+ cmd_set_options |= CMD_NAME;
fstrcpy(global_myname, optarg);
break;
}
case 'N':
{
- got_pass = True;
+ cmd_set_options |= CMD_NOPW | CMD_PASS;
break;
}
case 'd':
{
+ cmd_set_options |= CMD_DBLV;
if (*optarg == 'A')
DEBUGLEVEL = 10000;
else
@@ -1595,6 +1510,7 @@ static char *complete_cmd_null(char *text, int state)
case 'l':
{
+ cmd_set_options |= CMD_INTER;
slprintf(debugf, sizeof(debugf)-1,
"%s.client", optarg);
interactive = False;
@@ -1603,106 +1519,201 @@ static char *complete_cmd_null(char *text, int state)
case 'c':
{
+ cmd_set_options |= CMD_STR | CMD_PASS;
cmd_str = optarg;
- got_pass = True;
break;
}
case 'h':
{
+ cmd_set_options |= CMD_HELP;
usage(argv[0]);
- exit(0);
break;
}
case 's':
{
+ cmd_set_options |= CMD_SVC;
pstrcpy(servicesf, optarg);
break;
}
case 't':
{
+ cmd_set_options |= CMD_TERM;
pstrcpy(term_code, optarg);
break;
}
default:
{
+ cmd_set_options |= CMD_HELP;
usage(argv[0]);
- exit(1);
break;
}
}
}
+ if (IS_BITS_SET_ALL(cmd_set_options, CMD_HELP))
+ {
+ return;
+ }
+
setup_logging(debugf, interactive);
+ reopen_logs();
- if (cli_action == CLIENT_NONE)
+ if (IS_BITS_SET_ALL(cmd_set_options, CMD_NOPW))
{
- usage(argv[0]);
- exit(1);
+ set_user_password(&usr, True, NULL);
+ }
+ else if (IS_BITS_SET_ALL(cmd_set_options, CMD_PASS))
+ {
+ set_user_password(&usr, True, password);
}
+ /* paranoia: destroy the local copy of the password */
+ bzero(password, sizeof(password));
+
strupper(global_myname);
fstrcpy(cli_info.myhostname, global_myname);
- DEBUG(3,("%s client started (version %s)\n",timestring(),VERSION));
-
if (!lp_load(servicesf,True, False, False))
{
fprintf(stderr, "Can't load %s - run testparm to debug it\n", servicesf);
}
- codepage_initialise(lp_client_code_page());
-
load_interfaces();
- if (cli_action == CLIENT_IPC)
- {
- pstrcpy(cli_info.share, "IPC$");
- pstrcpy(cli_info.svc_type, "IPC");
- }
-
fstrcpy(cli_info.mach_acct, cli_info.myhostname);
strupper(cli_info.mach_acct);
fstrcat(cli_info.mach_acct, "$");
- /* set the password cache info */
- if (got_pass)
+ if (cmd_str != NULL)
{
- if (password[0] == 0)
- {
- pwd_set_nullpwd(&(usr.pwd));
- }
- else
+ process(&cli_info, cmd_str);
+ }
+}
+
+static void read_user_env(struct user_credentials *u)
+{
+ pstring password;
+
+ password[0] = 0;
+
+ if (getenv("USER"))
+ {
+ char *p;
+ pstrcpy(u->user_name,getenv("USER"));
+
+ /* modification to support userid%passwd syntax in the USER var
+ 25.Aug.97, jdblair@uab.edu */
+
+ if ((p=strchr(u->user_name,'%')))
{
- /* generate 16 byte hashes */
- pwd_make_lm_nt_16(&(usr.pwd), password);
+ *p = 0;
+ pstrcpy(password,p+1);
+ memset(strchr(getenv("USER"),'%')+1,'X',strlen(password));
}
+ strupper(u->user_name);
}
- else
+
+ /* modification to support PASSWD environmental var
+ 25.Aug.97, jdblair@uab.edu */
+ if (getenv("PASSWD"))
{
- pwd_read(&(usr.pwd), "Enter Password:", True);
+ pstrcpy(password,getenv("PASSWD"));
}
+ if (*u->user_name == 0 && getenv("LOGNAME"))
+ {
+ pstrcpy(u->user_name,getenv("LOGNAME"));
+ strupper(u->user_name);
+ }
+
+ set_user_password(u, True, password);
+
/* paranoia: destroy the local copy of the password */
bzero(password, sizeof(password));
+}
+
+/****************************************************************************
+ main program
+****************************************************************************/
+ int main(int argc,char *argv[])
+{
+ extern struct user_credentials *usr_creds;
+ mode_t myumask = 0755;
+
+ DEBUGLEVEL = 2;
+
+ usr.ntlmssp_flags = 0x0;
+
+ usr_creds = &usr;
+ out_hnd = stdout;
+ fstrcpy(debugf, argv[0]);
+
+ init_policy_hnd(64);
+
+ pstrcpy(usr.domain, "");
+ pstrcpy(usr.user_name, "");
+
+ pstrcpy(cli_info.myhostname, "");
+ pstrcpy(cli_info.dest_host, "");
+ cli_info.dest_ip.s_addr = 0;
+
+ ZERO_STRUCT(cli_info.dom.level3_sid);
+ ZERO_STRUCT(cli_info.dom.level5_sid);
+ fstrcpy(cli_info.dom.level3_dom, "");
+ fstrcpy(cli_info.dom.level5_dom, "");
+
+#ifdef HAVE_LIBREADLINE
+
+ /* Initialise GNU Readline */
+
+ rl_readline_name = "rpcclient";
+ rl_attempted_completion_function = completion_fn;
+ rl_completion_entry_function = (Function *)complete_cmd_null;
+
+ /* Initialise history list */
+
+ using_history();
+
+#endif /* HAVE_LIBREADLINE */
+
+ TimeInit();
+ charset_initialise();
+
+ myumask = umask(0);
+ umask(myumask);
- switch (cli_action)
+ if (!get_myname(global_myname, NULL))
{
- case CLIENT_IPC:
- {
- process(&cli_info, cmd_str);
- break;
- }
+ fprintf(stderr, "Failed to get my hostname.\n");
+ }
- default:
- {
- fprintf(stderr, "unknown client action requested\n");
- break;
- }
+ if (argc < 2)
+ {
+ usage(argv[0]);
+ exit(1);
}
+ read_user_env(&usr);
+
+ cmd_set_options &= ~CMD_HELP;
+ cmd_set_options &= ~CMD_NOPW;
+
+ cmd_set(&cli_info, argc, argv);
+
+ if (IS_BITS_SET_ALL(cmd_set_options, CMD_HELP))
+ {
+ exit(0);
+ }
+
+ codepage_initialise(lp_client_code_page());
+
+ DEBUG(3,("%s client started (version %s)\n",timestring(),VERSION));
+
+ process(&cli_info, NULL);
+
return(0);
}