Mercurial > dovecot > core-2.2
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 |
rev | line source |
---|---|
14784 | 1 #ifndef DB_DICT_H |
2 #define DB_DICT_H | |
3 | |
4 #include "sql-api.h" | |
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 | 31 struct db_dict_settings { |
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 | 34 const char *iterate_prefix; |
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 | 46 }; |
47 | |
48 struct dict_connection { | |
49 struct dict_connection *next; | |
50 | |
51 pool_t pool; | |
52 int refcount; | |
53 | |
54 char *config_path; | |
55 struct db_dict_settings set; | |
56 struct dict *dict; | |
57 }; | |
58 | |
59 struct dict_connection *db_dict_init(const char *config_path); | |
60 void db_dict_unref(struct dict_connection **conn); | |
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 | 69 bool db_dict_value_iter_next(struct db_dict_value_iter *iter, |
70 const char **key_r, const char **value_r); | |
71 int db_dict_value_iter_deinit(struct db_dict_value_iter **iter, | |
72 const char **error_r); | |
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 | 82 #endif |