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 |