db-ldap.h revision 3fb1531681f9cbe49928f8e32357a692bf901c83
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Functions like ldap_bind() have been deprecated in OpenLDAP 2.3
61b0637759146621cbb7edcbd0b03a71cfd66dfeTimo Sirainen This define enables them until the code here can be refactored */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Maximum number of pending requests before delaying new requests. */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* If LDAP connection is down, fail requests after waiting for this long. */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define DB_LDAP_REQUEST_DISCONNECT_TIMEOUT_SECS 4
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* If request is still in queue after this many seconds and other requests
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen have been replied, assume the request was lost and abort it. */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* If server disconnects us, don't reconnect if no requests have been sent
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen for this many seconds. */
f7539a17ea306191b53b8f5e752e228937df9ec3Timo Sirainentypedef void db_search_callback_t(struct ldap_connection *conn,
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen const char *dn;
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen bool userdb_warning_disable; /* deprecated for now at least */
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen /* Dovecot field name. */
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen /* Field value template with %vars. NULL = same as LDAP value. */
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen /* LDAP attribute name, or "" if this is a static field. */
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen /* LDAP value contains a DN, which is looked up and used for @name
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen attributes. */
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo SirainenARRAY_DEFINE_TYPE(ldap_field, struct ldap_field);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen /* msgid for sent requests, -1 if not sent */
17ad2164c747cedbf81dae1893063e71a3df0356Timo Sirainen /* timestamp when request was created */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen const char *dn;
d22301419109ed4a38351715e6760011421dadecTimo Sirainen char **attributes; /* points to pass_attr_names / user_attr_names */
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen ARRAY(struct ldap_request_named_result) named_results;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen const char *dn;
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen /* Not connected */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen /* Binding - either to default dn or doing auth bind */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen /* Bound to auth dn */
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen /* Bound to default dn */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen /* Request queue contains sent requests at tail (msgid != -1) and
48270badadd82279bfe50ae3d187aea8b0b2b30eTimo Sirainen queued requests at head (msgid == -1). */
84ed9f8f3d0e5ed47607ef417618e49e4f865557Timo Sirainen /* Number of messages in queue with msgid != -1 */
5afa8e2edf4f313cd56e5909f92f39c3b5b7b4d3Timo Sirainen /* Timestamp when we last received a reply */
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen char **pass_attr_names, **user_attr_names, **iterate_attr_names;
3852872e6954b7132e637294132005e86b8ebd4aTimo Sirainen ARRAY_TYPE(ldap_field) pass_attr_map, user_attr_map, iterate_attr_map;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid db_ldap_request(struct ldap_connection *conn,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid db_ldap_set_attrs(struct ldap_connection *conn, const char *attrlist,
e3aeeb634245e80d4f643f8d2eea11d6b72336d8Timo Sirainen char ***attr_names_r, ARRAY_TYPE(ldap_field) *attr_map,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstruct ldap_connection *db_ldap_init(const char *config_path, bool userdb);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid db_ldap_unref(struct ldap_connection **conn);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenint db_ldap_connect(struct ldap_connection *conn);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid db_ldap_enable_input(struct ldap_connection *conn, bool enable);
struct db_ldap_result_iterate_context *
const char **name_r,
const char *const **values_r);