&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)
{
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. */
dom_fn(domain_name);
}
-#if 0
if (dom_inf_fn != NULL)
{
- query_domaininfo(&sam_pol,
- domain_name,
- dom_inf_fn);
- }
- if (dom_mem_fn != NULL)
- {
- req_domainmem_info(&sam_pol,
- domain_name,
- dom_mem_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);
+ }
}
-#endif
}
}
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)
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
{
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)
{