1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <stdio.h>
30 #include <stdlib.h>
31
32 #include "../public/nsapi.h"
33
34 #include <cx/string.h>
35
36 #include "httplistener.h"
37 #include "log.h"
38 #include "configmanager.h"
39
40 static ServerConfiguration *current_config =
NULL;
41
42
43 static conf_global_vars_s global_vars;
44
45 void init_configuration_manager() {
46
47 init_server_config_parser();
48 }
49
50 NSAPI_PUBLIC conf_global_vars_s* conf_getglobals() {
51 return &global_vars;
52 }
53
54 int cfgmgr_load_config(CfgManager *mgr) {
55 ZERO(mgr,
sizeof(CfgManager));
56 ServerConfiguration *config = load_server_conf(mgr,
"config/server.conf");
57
58 if(!config) {
59 log_ereport(
LOG_FAILURE,
"cfgmgr: cannot load server config file %s",
"config/server.conf");
60 return 1;
61 }
62
63 mgr->cfg = config;
64
65 return 0;
66 }
67
68 int cfgmgr_apply_config(CfgManager *mgr) {
69
70 if(!apply_server_conf(mgr)) {
71 log_ereport(
LOG_FAILURE,
"cfgmgr: stage 2 config loading failed");
72 return 1;
73 }
74
75
76 if(current_config) {
77 if(migrate_server_conf(current_config, mgr->cfg)) {
78 log_ereport(
LOG_FAILURE,
"cfgmgr: config migration failed");
79 return 1;
80 }
81
82 cfg_unref(current_config);
83 }
84
85 current_config = mgr->cfg;
86
87 return 0;
88 }
89
90 ServerConfiguration *cfgmgr_get_server_config() {
91 return current_config;
92 }
93
94
95