odyssey/sources/ldap_endpoint.h

102 lines
2.3 KiB
C

#ifndef OD_ODYSSEY_LDAP_ENDPOINT_H
#define OD_ODYSSEY_LDAP_ENDPOINT_H
typedef struct {
pthread_mutex_t lock;
char *name;
char *ldapserver;
uint64_t ldapport;
// either null, ldap or ldaps
char *ldapscheme;
char *ldapprefix;
char *ldapsuffix;
char *ldapbindpasswd;
char *ldapsearchfilter;
char *ldapsearchattribute;
char *ldapscope;
char *ldapbasedn;
char *ldapbinddn;
// preparsed connect url
char *ldapurl;
void *ldap_search_pool;
void *ldap_auth_pool;
machine_channel_t *wait_bus;
od_list_t link;
} od_ldap_endpoint_t;
/* ldap endpoints ADD/REMOVE API */
extern od_retcode_t od_ldap_endpoint_prepare(od_ldap_endpoint_t *);
extern od_retcode_t od_ldap_endpoint_add(od_ldap_endpoint_t *ldaps,
od_ldap_endpoint_t *target);
extern od_ldap_endpoint_t *od_ldap_endpoint_find(od_list_t *ldaps,
char *target);
extern od_retcode_t od_ldap_endpoint_remove(od_ldap_endpoint_t *ldaps,
od_ldap_endpoint_t *target);
// -------------------------------------------------------
extern od_ldap_endpoint_t *od_ldap_endpoint_alloc();
extern od_retcode_t od_ldap_endpoint_init(od_ldap_endpoint_t *);
extern od_retcode_t od_ldap_endpoint_free(od_ldap_endpoint_t *le);
/* ldap_storage_credentials */
typedef struct {
char *name;
char *lsc_username;
char *lsc_password;
od_list_t link;
} od_ldap_storage_credentials_t;
static inline void od_ldap_endpoint_lock(od_ldap_endpoint_t *le)
{
pthread_mutex_lock(&le->lock);
}
static inline void od_ldap_endpoint_unlock(od_ldap_endpoint_t *le)
{
pthread_mutex_unlock(&le->lock);
}
static inline int od_ldap_endpoint_wait(od_ldap_endpoint_t *le,
uint32_t time_ms)
{
machine_msg_t *msg;
msg = machine_channel_read(le->wait_bus, time_ms);
if (msg) {
machine_msg_free(msg);
return 0;
}
return -1;
}
static inline int od_ldap_endpoint_signal(od_ldap_endpoint_t *le)
{
machine_msg_t *msg;
msg = machine_msg_create(0);
if (msg == NULL) {
return -1;
}
machine_channel_write(le->wait_bus, msg);
return 0;
}
extern od_ldap_storage_credentials_t *
od_ldap_storage_credentials_find(od_list_t *storage_users, char *target);
// -------------------------------------------------------
extern od_ldap_storage_credentials_t *od_ldap_storage_credentials_alloc();
extern od_retcode_t
od_ldap_storage_credentials_free(od_ldap_storage_credentials_t *lsc);
#endif /* OD_ODYSSEY_LDAP_ENDPOINT_H */