annotate src/auth/db-dict.h @ 22614:cf66220d281e

doveadm proxy: Don't crash if remote doesn't support log proxying
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 14 Oct 2017 12:54:18 +0300
parents d2ad697ba810
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef DB_DICT_H
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define DB_DICT_H
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "sql-api.h"
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
17040
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
6 struct auth_request;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
7 struct db_dict_value_iter;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
8
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
9 enum db_dict_value_format {
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
10 DB_DICT_VALUE_FORMAT_VALUE = 0,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
11 DB_DICT_VALUE_FORMAT_JSON
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
12 };
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
13
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
14 struct db_dict_key {
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
15 const char *name;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
16 const char *key;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
17 const char *format;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
18 const char *default_value;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
19
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
20 enum db_dict_value_format parsed_format;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
21 };
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
22 ARRAY_DEFINE_TYPE(db_dict_key, struct db_dict_key);
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
23 ARRAY_DEFINE_TYPE(db_dict_key_p, const struct db_dict_key *);
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
24
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
25 struct db_dict_field {
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
26 const char *name;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
27 const char *value;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
28 };
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
29 ARRAY_DEFINE_TYPE(db_dict_field, struct db_dict_field);
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
30
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 struct db_dict_settings {
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 const char *uri;
17040
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
33 const char *default_pass_scheme;
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 const char *iterate_prefix;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 bool iterate_disable;
17040
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
36
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
37 ARRAY_TYPE(db_dict_key) keys;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
38
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
39 const char *passdb_objects;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
40 const char *userdb_objects;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
41 ARRAY_TYPE(db_dict_field) passdb_fields;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
42 ARRAY_TYPE(db_dict_field) userdb_fields;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
43
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
44 ARRAY_TYPE(db_dict_key_p) parsed_passdb_objects;
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
45 ARRAY_TYPE(db_dict_key_p) parsed_userdb_objects;
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46 };
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 struct dict_connection {
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 struct dict_connection *next;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 pool_t pool;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 int refcount;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 char *config_path;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 struct db_dict_settings set;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 struct dict *dict;
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 };
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 struct dict_connection *db_dict_init(const char *config_path);
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 void db_dict_unref(struct dict_connection **conn);
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
61
17040
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
62 /* Returns 1 if ok, 0 if a key without default_value wasn't returned
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
63 ("user doesn't exist"), -1 if internal error */
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
64 int db_dict_value_iter_init(struct dict_connection *conn,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
65 struct auth_request *auth_request,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
66 const ARRAY_TYPE(db_dict_field) *fields,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
67 const ARRAY_TYPE(db_dict_key_p) *objects,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
68 struct db_dict_value_iter **iter_r);
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 bool db_dict_value_iter_next(struct db_dict_value_iter *iter,
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 const char **key_r, const char **value_r);
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 int db_dict_value_iter_deinit(struct db_dict_value_iter **iter,
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 const char **error_r);
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73
17040
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
74 const char *db_dict_parse_cache_key(const ARRAY_TYPE(db_dict_key) *keys,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
75 const ARRAY_TYPE(db_dict_field) *fields,
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
76 const ARRAY_TYPE(db_dict_key_p) *objects);
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
77
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
78 /* private: */
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
79 const struct db_dict_key *
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
80 db_dict_set_key_find(const ARRAY_TYPE(db_dict_key) *keys, const char *name);
d2ad697ba810 auth: passdb/userdb dict rewrite to support more complex configuration.
Timo Sirainen <tss@iki.fi>
parents: 14784
diff changeset
81
14784
523c19238a8b auth: Added "dict" passdb/userdb.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 #endif