diff options
author | Luke Leighton <lkcl@samba.org> | 1999-11-27 20:29:16 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1999-11-27 20:29:16 +0000 |
commit | 015dc121ea507dfd6c1011985ad6ac3ba422fa14 (patch) | |
tree | 7037f749d9010e60accd077b38e9e09246071e1e /source3/rpcclient/cmd_samr.c | |
parent | 4c92992b4e9797f34113251c00a99eafa97958bf (diff) | |
download | samba-015dc121ea507dfd6c1011985ad6ac3ba422fa14.tar.gz samba-015dc121ea507dfd6c1011985ad6ac3ba422fa14.tar.bz2 samba-015dc121ea507dfd6c1011985ad6ac3ba422fa14.zip |
enhanced samuser command to do same thing as enumusers command (-g -u -a)
except with only one user. done by sharing same code.
(This used to be commit 4e029d50fcb9148f2d65c6be2703b1003e68cec7)
Diffstat (limited to 'source3/rpcclient/cmd_samr.c')
-rw-r--r-- | source3/rpcclient/cmd_samr.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/source3/rpcclient/cmd_samr.c b/source3/rpcclient/cmd_samr.c index fbfde7c9a4..f436e1b22f 100644 --- a/source3/rpcclient/cmd_samr.c +++ b/source3/rpcclient/cmd_samr.c @@ -1516,6 +1516,7 @@ void cmd_sam_query_user(struct client_info *info, int argc, char *argv[]) DOM_SID sid; BOOL res = True; BOOL res1 = True; + int opt; char *user_name; char *names[1]; @@ -1525,6 +1526,10 @@ void cmd_sam_query_user(struct client_info *info, int argc, char *argv[]) POLICY_HND sam_pol; POLICY_HND pol_dom; + BOOL request_user_info = False; + BOOL request_group_info = False; + BOOL request_alias_info = False; + fstrcpy(domain, info->dom.level5_dom); sid_copy(&sid, &info->dom.level5_sid); @@ -1536,12 +1541,37 @@ void cmd_sam_query_user(struct client_info *info, int argc, char *argv[]) if (argc < 2) { - report(out_hnd, "samuser <name>\n"); + report(out_hnd, "samuser <name> [-u] [-g] [-a]\n"); return; } user_name = argv[1]; + argc--; + argv++; + + while ((opt = getopt(argc, argv, "uga")) != EOF) + { + switch (opt) + { + case 'u': + { + request_user_info = True; + break; + } + case 'g': + { + request_group_info = True; + break; + } + case 'a': + { + request_alias_info = True; + break; + } + } + } + fstrcpy(srv_name, "\\\\"); fstrcat(srv_name, info->dest_host); strupper(srv_name); @@ -1569,14 +1599,21 @@ void cmd_sam_query_user(struct client_info *info, int argc, char *argv[]) /* send user info query */ if (res1 && num_rids == 1) { - res1 = req_user_info( &pol_dom, + msrpc_sam_user( &pol_dom, NULL, domain, - &sid, - rid[0], - sam_display_user_info); + &sid, NULL, + rid[0], names[0], + sam_display_user, + request_user_info ? sam_display_user_info : NULL, + request_group_info ? sam_display_group_members : NULL, + request_alias_info ? sam_display_group_members : NULL); + } + else + { + res1 = False; } - res = res ? samr_close( &sam_pol) : False; + res = res ? samr_close( &sam_pol) : False; res = res ? samr_close( &pol_dom) : False; if (res1) |