Import Upstream version 0.69.0
[hcoop/debian/courier-authlib.git] / authconfigfile.h
CommitLineData
0e333c05
CE
1#ifndef authconfigfile_h
2#define authconfigfile_h
3
4#if HAVE_CONFIG_H
5#include "courier_auth_config.h"
6#endif
7
8#include <time.h>
9#if HAVE_SYS_TIME_H
10#include <sys/time.h>
11#endif
12
13#include <string>
14#include <sstream>
15#include <map>
16
17namespace courier {
18 namespace auth {
19#if 0
20 }
21}
22#endif
23
24class config_file {
25
26protected:
27 const char *filename;
28
29 std::map<std::string, std::string> parsed_config;
30private:
31 bool loaded;
32 time_t config_timestamp;
33
34public:
35 config_file(const char *filenameArg);
36 bool load(bool reload=false);
37
38private:
39 virtual bool do_load()=0;
40 virtual void do_reload()=0;
41
42 class isspace;
43 class not_isspace;
44
45 bool open_and_load_file(bool reload);
46
47 public:
48
49
50 template<typename value_type>
51 bool config(const char *name,
52 value_type &value,
53 bool required,
54 const char *default_value=0)
55 const
56 {
57 std::string string_value;
58
59 if (!getconfig(name, string_value, required, default_value))
60 return false;
61
62 std::istringstream i(string_value);
63
64 i >> value;
65 return true;
66 }
67
68 std::string config(const char *name) const;
69 std::string config(const char *name, const char *default_value) const;
70
71 bool getconfig(const char *name,
72 std::string &value,
73 bool required,
74 const char *default_value=0) const;
75
76 static std::string expand_string(const std::string &s,
77 const std::map<std::string,
78 std::string> &parameters);
79
80 static std::string
81 parse_custom_query(const std::string &s,
82 const std::string &login,
83 const std::string &defdomain,
84 std::map<std::string,
85 std::string> &parameters);
86};
87
88template<>
89bool config_file::config(const char *name,
90 std::string &value,
91 bool required,
92 const char *default_value) const;
93
94#if 0
95{
96 {
97#endif
98 }
99}
100
101#endif