⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdb_interface.c

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
	if (!pdb_context) {		return;	}	pdb_context->pdb_endsampwent(pdb_context);}BOOL pdb_getsampwent(SAM_ACCOUNT *user) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->pdb_getsampwent(pdb_context, user));}static SAM_ACCOUNT *sam_account_cache = NULL;BOOL pdb_getsampwnam(SAM_ACCOUNT *sam_acct, const char *username) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	if (!NT_STATUS_IS_OK(pdb_context->pdb_getsampwnam(pdb_context,							  sam_acct, username)))		return False;	if (sam_account_cache != NULL) {		pdb_free_sam(&sam_account_cache);		sam_account_cache = NULL;	}	pdb_copy_sam_account(sam_acct, &sam_account_cache);	return True;}BOOL pdb_getsampwsid(SAM_ACCOUNT *sam_acct, const DOM_SID *sid) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	if ((sam_account_cache != NULL) &&	    (sid_equal(sid, pdb_get_user_sid(sam_account_cache))))		return pdb_copy_sam_account(sam_account_cache, &sam_acct);	return NT_STATUS_IS_OK(pdb_context->pdb_getsampwsid(pdb_context, sam_acct, sid));}BOOL pdb_add_sam_account(SAM_ACCOUNT *sam_acct) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}		return NT_STATUS_IS_OK(pdb_context->pdb_add_sam_account(pdb_context, sam_acct));}BOOL pdb_update_sam_account(SAM_ACCOUNT *sam_acct) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	if (sam_account_cache != NULL) {		pdb_free_sam(&sam_account_cache);		sam_account_cache = NULL;	}	return NT_STATUS_IS_OK(pdb_context->pdb_update_sam_account(pdb_context, sam_acct));}BOOL pdb_delete_sam_account(SAM_ACCOUNT *sam_acct) {	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	if (sam_account_cache != NULL) {		pdb_free_sam(&sam_account_cache);		sam_account_cache = NULL;	}	return NT_STATUS_IS_OK(pdb_context->pdb_delete_sam_account(pdb_context, sam_acct));}NTSTATUS pdb_rename_sam_account(SAM_ACCOUNT *oldname, const char *newname){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_NOT_IMPLEMENTED;	}	if (sam_account_cache != NULL) {		pdb_free_sam(&sam_account_cache);		sam_account_cache = NULL;	}	return pdb_context->pdb_rename_sam_account(pdb_context, oldname, newname);}NTSTATUS pdb_update_login_attempts(SAM_ACCOUNT *sam_acct, BOOL success){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_NOT_IMPLEMENTED;	}	return pdb_context->pdb_update_login_attempts(pdb_context, sam_acct, success);}BOOL pdb_getgrsid(GROUP_MAP *map, DOM_SID sid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_getgrsid(pdb_context, map, sid));}BOOL pdb_getgrgid(GROUP_MAP *map, gid_t gid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_getgrgid(pdb_context, map, gid));}BOOL pdb_getgrnam(GROUP_MAP *map, const char *name){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_getgrnam(pdb_context, map, name));}BOOL pdb_add_group_mapping_entry(GROUP_MAP *map){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_add_group_mapping_entry(pdb_context, map));}BOOL pdb_update_group_mapping_entry(GROUP_MAP *map){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_update_group_mapping_entry(pdb_context, map));}BOOL pdb_delete_group_mapping_entry(DOM_SID sid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_delete_group_mapping_entry(pdb_context, sid));}BOOL pdb_enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **pp_rmap,			    size_t *p_num_entries, BOOL unix_only){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_enum_group_mapping(pdb_context, sid_name_use,						      pp_rmap, p_num_entries, unix_only));}NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx,				const DOM_SID *sid,				uint32 **pp_member_rids,				size_t *p_num_members){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_UNSUCCESSFUL;	}	return pdb_context->pdb_enum_group_members(pdb_context, mem_ctx, sid, 						   pp_member_rids, p_num_members);}NTSTATUS pdb_enum_group_memberships(const char *username, gid_t primary_gid,				    DOM_SID **pp_sids, gid_t **pp_gids,				    size_t *p_num_groups){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_UNSUCCESSFUL;	}	return pdb_context->pdb_enum_group_memberships(pdb_context, username,						       primary_gid, pp_sids, pp_gids,						       p_num_groups);}BOOL pdb_find_alias(const char *name, DOM_SID *sid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->pdb_find_alias(pdb_context,							     name, sid));}NTSTATUS pdb_create_alias(const char *name, uint32 *rid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_NOT_IMPLEMENTED;	}	return pdb_context->pdb_create_alias(pdb_context, name, rid);}BOOL pdb_delete_alias(const DOM_SID *sid){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->pdb_delete_alias(pdb_context,							     sid));							    }BOOL pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->pdb_get_aliasinfo(pdb_context, sid,							      info));}BOOL pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->pdb_set_aliasinfo(pdb_context, sid,							      info));}BOOL pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_add_aliasmem(pdb_context, alias, member));}BOOL pdb_del_aliasmem(const DOM_SID *alias, const DOM_SID *member){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_del_aliasmem(pdb_context, alias, member));}BOOL pdb_enum_aliasmem(const DOM_SID *alias,		       DOM_SID **pp_members, size_t *p_num_members){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_enum_aliasmem(pdb_context, alias,						 pp_members, p_num_members));}BOOL pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx, const DOM_SID *domain_sid,				const DOM_SID *members, size_t num_members,				uint32 **pp_alias_rids, size_t *p_num_alias_rids){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_enum_alias_memberships(pdb_context, mem_ctx,							  domain_sid,							  members, num_members,							  pp_alias_rids,							  p_num_alias_rids));}NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid,			 int num_rids,			 uint32 *rids,			 const char **names,			 uint32 *attrs){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return NT_STATUS_NOT_IMPLEMENTED;	}	return pdb_context->pdb_lookup_rids(pdb_context, domain_sid,					    num_rids, rids, names, attrs);}BOOL pdb_get_account_policy(int policy_index, uint32 *value){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_get_account_policy(pdb_context, policy_index, value));}BOOL pdb_set_account_policy(int policy_index, uint32 value){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_set_account_policy(pdb_context, policy_index, value));}BOOL pdb_get_seq_num(time_t *seq_num){	struct pdb_context *pdb_context = pdb_get_static_context(False);	if (!pdb_context) {		return False;	}	return NT_STATUS_IS_OK(pdb_context->			       pdb_get_seq_num(pdb_context, seq_num));}/***************************************************************  Initialize the static context (at smbd startup etc).   If uninitialised, context will auto-init on first use. ***************************************************************/BOOL initialize_password_db(BOOL reload){		return (pdb_get_static_context(reload) != NULL);}/***************************************************************************  Default implementations of some functions. ****************************************************************************/static NTSTATUS pdb_default_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname){	return NT_STATUS_NO_SUCH_USER;}static NTSTATUS pdb_default_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid){	return NT_STATUS_NO_SUCH_USER;}static NTSTATUS pdb_default_add_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd){	DEBUG(0,("this backend (%s) should not be listed as the first passdb backend! You can't add users to it.\n", methods->name));	return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_update_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd){	return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_delete_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd){	return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_rename_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd, const char *newname){	return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_update_login_attempts (struct pdb_methods *methods, SAM_ACCOUNT *newpwd, BOOL success){	return NT_STATUS_OK;}static NTSTATUS pdb_default_setsampwent(struct pdb_methods *methods, BOOL update, uint16 acb_mask){	return NT_STATUS_NOT_IMPLEMENTED;}static NTSTATUS pdb_default_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT *user){	return NT_STATUS_NOT_IMPLEMENTED;}static void pdb_default_endsampwent(struct pdb_methods *methods){	return; /* NT_STATUS_NOT_IMPLEMENTED; */}static NTSTATUS pdb_default_get_account_policy(struct pdb_methods *methods, int policy_index, uint32 *value){	return account_policy_get(policy_index, value) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;}static NTSTATUS pdb_default_set_account_policy(struct pdb_methods *methods, int policy_index, uint32 value){	return account_policy_set(policy_index, value) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;}static NTSTATUS pdb_default_get_seq_num(struct pdb_methods *methods, time_t *seq_num){	*seq_num = time(NULL);	return NT_STATUS_OK;}static void add_uid_to_array_unique(TALLOC_CTX *mem_ctx,				    uid_t uid, uid_t **pp_uids, size_t *p_num){	size_t i;	for (i=0; i<*p_num; i++) {		if ((*pp_uids)[i] == uid)			return;	}		*pp_uids = TALLOC_REALLOC_ARRAY(mem_ctx, *pp_uids, uid_t, *p_num+1);	if (*pp_uids == NULL)		return;	(*pp_uids)[*p_num] = uid;	*p_num += 1;}static BOOL get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size_t *p_num){	struct group *grp;	char **gr;	struct sys_pwent *userlist, *user; 	*pp_uids = NULL;	*p_num = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -