src/server/daemon/ldap_auth.h

changeset 97
09fbefc0e6a9
parent 59
ab25c0a231d0
child 161
aadda87bad1b
equal deleted inserted replaced
96:0185b13bf41f 97:09fbefc0e6a9
28 28
29 #ifndef LDAP_AUTH_H 29 #ifndef LDAP_AUTH_H
30 #define LDAP_AUTH_H 30 #define LDAP_AUTH_H
31 31
32 #include "../public/auth.h" 32 #include "../public/auth.h"
33 #include <sys/types.h>
33 #include <ldap.h> 34 #include <ldap.h>
35 #include <ucx/map.h>
34 36
35 #ifdef __cplusplus 37 #ifdef __cplusplus
36 extern "C" { 38 extern "C" {
37 #endif 39 #endif
38 40
39 typedef struct ldap_auth_db LDAPAuthDB; 41 typedef struct ldap_auth_db LDAPAuthDB;
40 typedef struct ldap_config LDAPConfig; 42 typedef struct ldap_config LDAPConfig;
41 typedef struct ldap_user LDAPUser; 43 typedef struct ldap_user LDAPUser;
42 44 typedef struct ldap_group LDAPGroup;
45 typedef struct ldap_member LDAPMember;
46 typedef struct ldap_group_cache LDAPGroupCache;
47
43 struct ldap_config { 48 struct ldap_config {
44 char *hostname; 49 char *hostname;
45 int port; 50 int port;
46 int ssl; 51 int ssl;
47 char *basedn; 52 char *basedn;
49 char *bindpw; 54 char *bindpw;
50 char *usersearch; 55 char *usersearch;
51 char *groupsearch; 56 char *groupsearch;
52 }; 57 };
53 58
59 struct ldap_group_cache {
60 LDAPGroup *first;
61 LDAPGroup *last;
62 UcxMap *map;
63 };
64
54 struct ldap_auth_db { 65 struct ldap_auth_db {
55 AuthDB authdb; 66 AuthDB authdb;
56 LDAPConfig config; 67 LDAPConfig config;
68 LDAPGroupCache groups;
57 }; 69 };
58 70
59 struct ldap_user { 71 struct ldap_user {
60 User user; 72 User user;
61 LDAPAuthDB *authdb; 73 LDAPAuthDB *authdb;
62 LDAP *ldap; 74 LDAP *ldap;
63 char *userdn; 75 char *userdn;
76 int uid;
77 int gid;
78 };
79
80 struct ldap_member {
81 char *name;
82 int uid;
83 };
84
85 struct ldap_group {
86 char *name;
87 LDAPMember *members;
88 size_t nmembers;
89 time_t update;
90 LDAPGroup *next;
64 }; 91 };
65 92
66 AuthDB* create_ldap_authdb(char *name, LDAPConfig *conf); 93 AuthDB* create_ldap_authdb(char *name, LDAPConfig *conf);
67 94
95 LDAP* get_ldap_session(LDAPAuthDB *authdb);
96
68 User* ldap_get_user(AuthDB *sb, char *username); 97 User* ldap_get_user(AuthDB *sb, char *username);
98
99 LDAPGroup* ldap_get_group(LDAPAuthDB *authdb, char *group);
69 100
70 int ldap_user_verify_password(User *user, char *password); 101 int ldap_user_verify_password(User *user, char *password);
71 int ldap_user_check_group(User *user, char *group); 102 int ldap_user_check_group(User *user, char *group);
72 void ldap_user_free(User *user); 103 void ldap_user_free(User *user);
73 104

mercurial