samr conversion finished!
Luke Kenneth Casson Leighton
lkcl at samba.org
Mon Jan 31 01:16:04 GMT 2000
On Mon, 31 Jan 2000, Luke Howard wrote:
>
> Hi Luke,
>
> >where lda_struct_info is this:
> >
> >{
> > LDAP_DB_HND *hnd;
> > DOM_SID sid;
> >}
>
> You're very close, it's LDAPDB *hnd :-) Hopefully the LDAPDB API can be
> split off eventually into something useful to other things. At the
> moment it's got a whole lot of samba-specific stuff, but that may
> change.
>
> >then you do your ldap-related lda_get_user_info21(ldap_struct->hnd, ...)
> >and that's it!
>
> So, you want me to deal with SAM_ACCOUNT_INFO & friends directly?
you damn right i do! actually, i'm thinking it may be a better idea to
develop a passdb2 api that conforms to this as the API:
/*The following definitions come from samrd/srv_samr_passdb.c */
uint32 _samr_close(POLICY_HND *hnd);
uint32 _samr_open_domain(const POLICY_HND *connect_pol,
uint32 ace_perms,
const DOM_SID *sid,
POLICY_HND *domain_pol);
uint32 _samr_unknown_2c(const POLICY_HND *user_pol,
uint32 *unknown_0,
uint32 *unknown_1);
uint32 _samr_unknown_3(const POLICY_HND *user_pol, SAM_SID_STUFF *sid_stuff);
uint32 _samr_enum_dom_users( const POLICY_HND *pol, uint32 *start_idx,
uint16 acb_mask, uint16 unk_1, uint32 size,
SAM_ENTRY **sam,
UNISTR2 **uni_acct_name,
uint32 *num_sam_users);
uint32 _samr_add_groupmem(const POLICY_HND *pol, uint32 rid, uint32 unknown);
uint32 _samr_del_groupmem(const POLICY_HND *pol, uint32 rid);
uint32 _samr_add_aliasmem(const POLICY_HND *alias_pol, const DOM_SID *sid);
uint32 _samr_del_aliasmem(const POLICY_HND *alias_pol, const DOM_SID *sid);
uint32 _samr_enum_domains(const POLICY_HND *pol, uint32 *start_idx,
uint32 size,
SAM_ENTRY **sam,
UNISTR2 **uni_acct_name,
uint32 *num_sam_users);
uint32 _samr_enum_dom_groups(const POLICY_HND *pol,
uint32 *start_idx, uint32 size,
SAM_ENTRY **sam,
UNISTR2 **uni_acct_name,
uint32 *num_sam_groups);
uint32 _samr_enum_dom_aliases(const POLICY_HND *pol,
uint32 *start_idx, uint32 size,
SAM_ENTRY **sam,
UNISTR2 **uni_acct_name,
uint32 *num_sam_aliases);
uint32 _samr_query_dispinfo( const POLICY_HND *domain_pol, uint16 level,
uint32 start_idx,
uint32 max_entries,
uint32 max_size,
uint32 *data_size,
uint32 *num_entries,
SAM_DISPINFO_CTR *ctr);
uint32 _samr_delete_dom_group(POLICY_HND *group_pol);
uint32 _samr_query_groupmem(const POLICY_HND *group_pol,
uint32 *num_mem,
uint32 **rid,
uint32 **attr);
uint32 _samr_query_groupinfo(const POLICY_HND *pol,
uint16 switch_level,
GROUP_INFO_CTR* ctr);
uint32 _samr_query_aliasinfo(const POLICY_HND *alias_pol,
uint16 switch_level,
ALIAS_INFO_CTR *ctr);
uint32 _samr_query_useraliases(const POLICY_HND *pol,
const uint32 *ptr_sid, const DOM_SID2 *sid,
uint32 *num_aliases, uint32 **rid);
uint32 _samr_delete_dom_alias(POLICY_HND *alias_pol);
uint32 _samr_query_aliasmem(const POLICY_HND *alias_pol,
uint32 *num_mem, DOM_SID2 **sid);
uint32 _samr_lookup_names(const POLICY_HND *pol,
uint32 num_names1,
uint32 flags,
uint32 ptr,
const UNISTR2 *uni_name,
uint32 *num_rids1,
uint32 rid[MAX_SAM_ENTRIES],
uint32 *num_types1,
uint32 type[MAX_SAM_ENTRIES]);
uint32 _samr_chgpasswd_user( const UNISTR2 *uni_dest_host,
const UNISTR2 *uni_user_name,
const char nt_newpass[516],
const uchar nt_oldhash[16],
const char lm_newpass[516],
const uchar lm_oldhash[16]);
uint32 _samr_unknown_38(const UNISTR2 *uni_srv_name,
uint16 *unk_0, uint16 *unk_1, uint16 *unk_2);
uint32 _samr_lookup_rids(const POLICY_HND *pol, uint32 flags,
uint32 num_rids, const uint32 *rids,
uint32 *num_names,
UNIHDR **hdr_name, UNISTR2** uni_name,
uint32 **types);
uint32 _samr_open_user(const POLICY_HND *domain_pol,
uint32 access_mask, uint32 user_rid,
POLICY_HND *user_pol);
uint32 _samr_query_userinfo(const POLICY_HND *pol, uint16 switch_value,
SAM_USERINFO_CTR *ctr);
uint32 _samr_set_userinfo(const POLICY_HND *pol, uint16 switch_value,
SAM_USERINFO_CTR *ctr);
uint32 _samr_set_userinfo2(const POLICY_HND *pol, uint16 switch_value,
SAM_USERINFO2_CTR *ctr);
uint32 _samr_query_usergroups(const POLICY_HND *pol,
uint32 *num_groups,
DOM_GID **gids);
uint32 _samr_create_dom_alias(const POLICY_HND *domain_pol,
const UNISTR2 *uni_acct_name,
uint32 access_mask,
POLICY_HND *alias_pol, uint32 *rid);
uint32 _samr_create_dom_group(const POLICY_HND *domain_pol,
const UNISTR2 *uni_acct_name,
uint32 access_mask,
POLICY_HND *group_pol, uint32 *rid);
uint32 _samr_query_dom_info(const POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr);
uint32 _samr_create_user(const POLICY_HND *domain_pol,
const UNISTR2 *uni_username,
uint16 acb_info, uint32 access_mask,
POLICY_HND *user_pol,
uint32 *unknown_0, uint32 *user_rid);
uint32 _samr_connect_anon(const UNISTR2 *srv_name, uint32 access_mask,
POLICY_HND *connect_pol);
uint32 _samr_connect(const UNISTR2 *srv_name, uint32 access_mask,
POLICY_HND *connect_pol);
uint32 _samr_open_alias(const POLICY_HND *domain_pol,
uint32 access_mask, uint32 alias_rid,
POLICY_HND *alias_pol);
uint32 _samr_open_group(const POLICY_HND *domain_pol, uint32 access_mask,
uint32 group_rid,
POLICY_HND *group_pol);
uint32 _samr_lookup_domain(const POLICY_HND *connect_pol,
const UNISTR2 *uni_domain,
DOM_SID *dom_sid);
> >do you want to wait until i write samr tdb, or are you going to stick with
> >passdb/*.c groupdb/*.c like you [sensibly] keep telling me?
>
> Well, I can look at samrd/srv_samr_passdb.c as a starting point, yes? In
i just started srv_samr_tdb.c.
More information about the samba-technical
mailing list