diff options
Diffstat (limited to 'source3/passdb/passgrpldap.c')
-rw-r--r-- | source3/passdb/passgrpldap.c | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/source3/passdb/passgrpldap.c b/source3/passdb/passgrpldap.c deleted file mode 100644 index 1092a3c5b1..0000000000 --- a/source3/passdb/passgrpldap.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - Unix SMB/Netbios implementation. - Version 2.0. - LDAP passgrp database for SAMBA - Copyright (C) Matthew Chapman 1998 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include "includes.h" - -#ifdef WITH_LDAP - -#include <lber.h> -#include <ldap.h> - -extern int DEBUGLEVEL; - -/* Internal state */ -extern LDAP *ldap_struct; -extern LDAPMessage *ldap_results; -extern LDAPMessage *ldap_entry; - - -/*************************************************************** - Enumerate RIDs of groups which user is a member of, of type - given by attribute. - ****************************************************************/ - -static void ldappassgrp_member(char *attribute, uint32 **rids, int *numrids) -{ - char **values; - uint32 *ridlist; - int i; - - if((values = ldap_get_values(ldap_struct, ldap_entry, attribute))) { - *numrids = i = ldap_count_values(values); - *rids = ridlist = malloc(i * sizeof(uint32)); - do { - ridlist[--i] = atoi(values[i]); - } while(i > 0); - ldap_value_free(values); - } else { - *numrids = 0; - *rids = NULL; - } -} - - -/*************************************************************** - Begin/end smbgrp enumeration. - ****************************************************************/ - -static void *ldappassgrp_enumfirst(BOOL update) -{ - if (!ldap_connect()) - return NULL; - - ldap_search_for("&(objectclass=sambaAccount)(|(group=*)(alias=*))"); - - return ldap_struct; -} - -static void ldappassgrp_enumclose(void *vp) -{ - ldap_disconnect(); -} - - -/************************************************************************* - Save/restore the current position in a query - *************************************************************************/ - -static SMB_BIG_UINT ldappassgrp_getdbpos(void *vp) -{ - return (SMB_BIG_UINT)((ulong)ldap_entry); -} - -static BOOL ldappassgrp_setdbpos(void *vp, SMB_BIG_UINT tok) -{ - ldap_entry = (LDAPMessage *)((ulong)tok); - return (True); -} - - -/************************************************************************* - Return limited smb_passwd information, and group membership. - *************************************************************************/ - -static struct smb_passwd *ldappassgrp_getpwbynam(const char *name, - uint32 **grp_rids, int *num_grps, - uint32 **als_rids, int *num_alss) -{ - struct smb_passwd *ret; - - if(!ldap_connect()) - return NULL; - - ldap_search_by_ntname(name); - ldappassgrp_member("group", grp_rids, num_grps); - ldappassgrp_member("alias", als_rids, num_alss); - ret = ldap_getpw(); - - ldap_disconnect(); - return ret; -} - -static struct smb_passwd *ldappassgrp_getpwbyuid(uid_t userid, - uint32 **grp_rids, int *num_grps, - uint32 **als_rids, int *num_alss) -{ - struct smb_passwd *ret; - - if(!ldap_connect()) - return NULL; - - ldap_search_by_uid(userid); - ldappassgrp_member("group", grp_rids, num_grps); - ldappassgrp_member("alias", als_rids, num_alss); - ret = ldap_getpw(); - - ldap_disconnect(); - return ret; -} - -static struct smb_passwd *ldappassgrp_getpwbyrid(uint32 user_rid, - uint32 **grp_rids, int *num_grps, - uint32 **als_rids, int *num_alss) -{ - struct smb_passwd *ret; - - if(!ldap_connect()) - return NULL; - - ldap_search_by_rid(user_rid); - ldappassgrp_member("group", grp_rids, num_grps); - ldappassgrp_member("alias", als_rids, num_alss); - ret = ldap_getpw(); - - ldap_disconnect(); - return ret; -} - -static struct smb_passwd *ldappassgrp_getcurrentpw(void *vp, - uint32 **grp_rids, int *num_grps, - uint32 **als_rids, int *num_alss) -{ - ldappassgrp_member("group", grp_rids, num_grps); - ldappassgrp_member("alias", als_rids, num_alss); - return ldap_getpw(); -} - - - -static struct passgrp_ops ldappassgrp_ops = -{ - ldappassgrp_enumfirst, - ldappassgrp_enumclose, - ldappassgrp_getdbpos, - ldappassgrp_setdbpos, - - ldappassgrp_getpwbynam, - ldappassgrp_getpwbyuid, - ldappassgrp_getpwbyrid, - ldappassgrp_getcurrentpw, -}; - -struct passgrp_ops *ldap_initialise_password_grp(void) -{ - return &ldappassgrp_ops; -} - -#else - void passgrpldap_dummy_function(void); - void passgrpldap_dummy_function(void) { } /* stop some compilers complaining */ -#endif - |