1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef LDAP_AUTH_H
30 #define LDAP_AUTH_H
31
32 #include "../public/auth.h"
33 #include <sys/types.h>
34 #include <ldap.h>
35 #include <ucx/map.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 typedef struct ldap_auth_db LDAPAuthDB;
42 typedef struct ldap_config LDAPConfig;
43 typedef struct ldap_user LDAPUser;
44 typedef struct ldap_group LDAPGroup;
45 typedef struct ldap_member LDAPMember;
46 typedef struct ldap_group_cache LDAPGroupCache;
47
48 struct ldap_config {
49 char *hostname;
50 int port;
51 int ssl;
52 char *basedn;
53 char *binddn;
54 char *bindpw;
55 char *usersearch;
56 char *groupsearch;
57 };
58
59 struct ldap_group_cache {
60 LDAPGroup *first;
61 LDAPGroup *last;
62 UcxMap *map;
63 };
64
65 struct ldap_auth_db {
66 AuthDB authdb;
67 LDAPConfig config;
68 LDAPGroupCache groups;
69 };
70
71 struct ldap_user {
72 User user;
73 LDAPAuthDB *authdb;
74 LDAP *ldap;
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;
91 };
92
93 AuthDB* create_ldap_authdb(
char *name, LDAPConfig *conf);
94
95 LDAP* get_ldap_session(LDAPAuthDB *authdb);
96
97 User* ldap_get_user(AuthDB *sb,
char *username);
98
99 LDAPGroup* ldap_get_group(LDAPAuthDB *authdb,
char *group);
100
101 int ldap_user_verify_password(User *user,
char *password);
102 int ldap_user_check_group(User *user,
char *group);
103 void ldap_user_free(User *user);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif
110
111