mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
improved enumdomains added -i option.
(This used to be commit 50dc709fa9
)
This commit is contained in:
parent
bd4bea62ad
commit
10b82d30b7
@ -173,6 +173,8 @@ struct acct_info
|
||||
|
||||
#define DOMAIN_FN(fn)\
|
||||
void (*fn)(const char*)
|
||||
#define DOMAIN_INFO_FN(fn)\
|
||||
void (*fn)(const char*, const DOM_SID *, uint32, SAM_UNK_CTR *)
|
||||
|
||||
#define USER_FN(fn)\
|
||||
void (*fn)(const char*, const DOM_SID*, uint32, const char*)
|
||||
|
@ -2285,7 +2285,8 @@ BOOL req_groupmem_info( const POLICY_HND *pol_dom,
|
||||
uint32 msrpc_sam_enum_domains( const char* srv_name,
|
||||
struct acct_info **sam,
|
||||
uint32 *num_sam_entries,
|
||||
DOMAIN_FN(dom_fn));
|
||||
DOMAIN_FN(dom_fn),
|
||||
DOMAIN_INFO_FN(dom_inf_fn));
|
||||
uint32 msrpc_sam_enum_groups( const char* srv_name,
|
||||
const char* domain,
|
||||
const DOM_SID *sid1,
|
||||
|
@ -444,19 +444,16 @@ BOOL sam_query_dominfo(const char* srv_name,
|
||||
&sam_pol) : False;
|
||||
|
||||
/* connect to the domain */
|
||||
res1 = res ? samr_open_domain(
|
||||
&sam_pol, ace_perms, sid1,
|
||||
res1 = res ? samr_open_domain( &sam_pol, ace_perms, sid1,
|
||||
&pol_dom) : False;
|
||||
|
||||
/* send a samr 0x8 command */
|
||||
res2 = res ? samr_query_dom_info(
|
||||
&pol_dom, switch_value, ctr) : False;
|
||||
|
||||
res1 = res1 ? samr_close(
|
||||
&sam_pol) : False;
|
||||
res1 = res1 ? samr_close( &sam_pol) : False;
|
||||
|
||||
res = res ? samr_close(
|
||||
&pol_dom) : False;
|
||||
res = res ? samr_close( &pol_dom) : False;
|
||||
|
||||
if (res2)
|
||||
{
|
||||
@ -735,7 +732,8 @@ SAM Domains query.
|
||||
uint32 msrpc_sam_enum_domains( const char* srv_name,
|
||||
struct acct_info **sam,
|
||||
uint32 *num_sam_entries,
|
||||
DOMAIN_FN(dom_fn))
|
||||
DOMAIN_FN(dom_fn),
|
||||
DOMAIN_INFO_FN(dom_inf_fn))
|
||||
{
|
||||
BOOL res = True;
|
||||
uint32 ace_perms = 0x02000000; /* access control permissions. */
|
||||
@ -778,20 +776,22 @@ uint32 msrpc_sam_enum_domains( const char* srv_name,
|
||||
dom_fn(domain_name);
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (dom_inf_fn != NULL)
|
||||
{
|
||||
query_domaininfo(&sam_pol,
|
||||
domain_name,
|
||||
dom_inf_fn);
|
||||
uint32 switch_value = 2;
|
||||
SAM_UNK_CTR ctr;
|
||||
DOM_SID dom_sid;
|
||||
/* connect to the domain */
|
||||
if (samr_query_lookup_domain( &sam_pol,
|
||||
domain_name,
|
||||
&dom_sid) &&
|
||||
sam_query_dominfo(srv_name, &dom_sid,
|
||||
switch_value, &ctr))
|
||||
{
|
||||
dom_inf_fn(domain_name, &dom_sid,
|
||||
switch_value, &ctr);
|
||||
}
|
||||
}
|
||||
if (dom_mem_fn != NULL)
|
||||
{
|
||||
req_domainmem_info(&sam_pol,
|
||||
domain_name,
|
||||
dom_mem_fn);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -42,6 +42,18 @@ static void sam_display_domain(const char *domain)
|
||||
report(out_hnd, "Domain Name: %s\n", domain);
|
||||
}
|
||||
|
||||
static void sam_display_dom_info(const char* domain, const DOM_SID *sid,
|
||||
uint32 switch_value,
|
||||
SAM_UNK_CTR *ctr)
|
||||
{
|
||||
fstring sidstr;
|
||||
sid_to_string(sidstr, sid);
|
||||
report(out_hnd, "Domain Name:\t%s\tSID:\t%s\n", domain, sidstr);
|
||||
display_sam_unk_ctr(out_hnd, ACTION_HEADER , switch_value, ctr);
|
||||
display_sam_unk_ctr(out_hnd, ACTION_ENUMERATE, switch_value, ctr);
|
||||
display_sam_unk_ctr(out_hnd, ACTION_FOOTER , switch_value, ctr);
|
||||
}
|
||||
|
||||
static void sam_display_alias_info(const char *domain, const DOM_SID *sid,
|
||||
uint32 alias_rid,
|
||||
ALIAS_INFO_CTR *const ctr)
|
||||
@ -2055,33 +2067,26 @@ void cmd_sam_query_dominfo(struct client_info *info, int argc, char *argv[])
|
||||
fstrcat(srv_name, info->dest_host);
|
||||
strupper(srv_name);
|
||||
|
||||
|
||||
sid_to_string(sid, &info->dom.level5_sid);
|
||||
fstrcpy(domain, info->dom.level5_dom);
|
||||
|
||||
string_to_sid(&sid1, sid);
|
||||
|
||||
if (sid1.num_auths == 0)
|
||||
{
|
||||
report(out_hnd, "please use 'lsaquery' first, to ascertain the SID\n");
|
||||
return;
|
||||
}
|
||||
|
||||
string_to_sid(&sid1, sid);
|
||||
|
||||
if (argc > 1)
|
||||
{
|
||||
switch_value = strtoul(argv[1], (char**)NULL, 10);
|
||||
}
|
||||
|
||||
report(out_hnd, "SAM Query Domain Info: info level %d\n", switch_value);
|
||||
report(out_hnd, "From: %s Domain: %s SID: %s\n",
|
||||
info->myhostname, domain, sid);
|
||||
|
||||
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);
|
||||
display_sam_unk_ctr(out_hnd, ACTION_ENUMERATE, switch_value, &ctr);
|
||||
display_sam_unk_ctr(out_hnd, ACTION_FOOTER , switch_value, &ctr);
|
||||
sam_display_dom_info(domain, &sid1, switch_value, &ctr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2413,7 +2418,8 @@ void cmd_sam_enum_domains(struct client_info *info, int argc, char *argv[])
|
||||
|
||||
msrpc_sam_enum_domains(srv_name,
|
||||
&sam, &num_sam_entries,
|
||||
sam_display_domain);
|
||||
request_domain_info ? NULL : sam_display_domain,
|
||||
request_domain_info ? sam_display_dom_info : NULL);
|
||||
|
||||
if (sam != NULL)
|
||||
{
|
||||
|
@ -758,6 +758,7 @@ static BOOL process( struct client_info *info, char *cmd_str)
|
||||
pstring pline;
|
||||
BOOL at_sym = False;
|
||||
pline[0] = 0;
|
||||
safe_strcat(pline, "[", sizeof(pline)-1);
|
||||
if (usr.domain[0] != 0)
|
||||
{
|
||||
safe_strcat(pline, usr.domain, sizeof(pline)-1);
|
||||
@ -775,7 +776,7 @@ static BOOL process( struct client_info *info, char *cmd_str)
|
||||
}
|
||||
|
||||
safe_strcat(pline, cli_info.dest_host, sizeof(pline)-1);
|
||||
safe_strcat(pline, "$ ", sizeof(pline)-1);
|
||||
safe_strcat(pline, "]$ ", sizeof(pline)-1);
|
||||
|
||||
#ifndef HAVE_LIBREADLINE
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user