41 |
41 |
42 #include "httplistener.h" |
42 #include "httplistener.h" |
43 #include "config.h" |
43 #include "config.h" |
44 #include "func.h" |
44 #include "func.h" |
45 #include "log.h" |
45 #include "log.h" |
|
46 #include "event.h" |
|
47 #include "threadpools.h" |
46 #include "configmanager.h" |
48 #include "configmanager.h" |
47 |
49 |
48 #include "vserver.h" |
50 #include "vserver.h" |
49 #include "../util/pblock.h" |
51 #include "../util/pblock.h" |
|
52 #include "../util/util.h" |
50 |
53 |
51 pool_handle_t *cfg_pool; |
54 pool_handle_t *cfg_pool; |
52 |
55 |
53 // TODO: Funktion für ConfigDirective -> directive |
56 // TODO: Funktion für ConfigDirective -> directive |
54 // TODO: Funktion für UcxList parameter list -> pblock |
57 // TODO: Funktion für UcxList parameter list -> pblock |
143 |
146 |
144 /* handle config object */ |
147 /* handle config object */ |
145 int hr = 0; |
148 int hr = 0; |
146 if(!sstrcmp(scfgobj->type, sstr("Runtime"))) { |
149 if(!sstrcmp(scfgobj->type, sstr("Runtime"))) { |
147 hr = cfg_handle_runtime(serverconfig, scfgobj); |
150 hr = cfg_handle_runtime(serverconfig, scfgobj); |
148 } else if(!sstrcmp(scfgobj->type, sstr("LogFile"))) { |
151 } else if(!sstrcmp(scfgobj->type, sstr("EventHandler"))) { |
149 //hr = cfg_handle_logfile(serverconfig, scfgobj); |
152 hr = cfg_handle_eventhandler(serverconfig, scfgobj); |
150 } else if(!sstrcmp(scfgobj->type, sstr("AuthDB"))) { |
153 } else if(!sstrcmp(scfgobj->type, sstr("AuthDB"))) { |
151 hr = cfg_handle_authdb(serverconfig, scfgobj); |
154 hr = cfg_handle_authdb(serverconfig, scfgobj); |
152 } else if(!sstrcmp(scfgobj->type, sstr("Listener"))) { |
155 } else if(!sstrcmp(scfgobj->type, sstr("Listener"))) { |
153 hr = cfg_handle_listener(serverconfig, scfgobj); |
156 hr = cfg_handle_listener(serverconfig, scfgobj); |
154 } else if(!sstrcmp(scfgobj->type, sstr("VirtualServer"))) { |
157 } else if(!sstrcmp(scfgobj->type, sstr("VirtualServer"))) { |
162 |
165 |
163 elm = elm->next; |
166 elm = elm->next; |
164 } |
167 } |
165 } |
168 } |
166 |
169 |
167 |
170 /* check event handler config */ |
|
171 if(check_event_handler_cfg() != 0) { |
|
172 /* critical error */ |
|
173 return NULL; |
|
174 } |
|
175 |
|
176 /* check thread pool config */ |
|
177 if(check_thread_pool_cfg() != 0) { |
|
178 /* critical error */ |
|
179 return NULL; |
|
180 } |
168 |
181 |
169 /* set VirtualServer for all listeners */ |
182 /* set VirtualServer for all listeners */ |
170 UcxList *ls = serverconfig->listeners; |
183 UcxList *ls = serverconfig->listeners; |
171 while(ls) { |
184 while(ls) { |
172 HttpListener *listener = ls->data; |
185 HttpListener *listener = ls->data; |
232 int ret = init_log_file(&logcfg); |
245 int ret = init_log_file(&logcfg); |
233 |
246 |
234 free(logcfg.file); |
247 free(logcfg.file); |
235 free(logcfg.level); |
248 free(logcfg.level); |
236 |
249 |
|
250 return ret; |
|
251 } |
|
252 |
|
253 int cfg_handle_eventhandler(ServerConfiguration *c, ServerConfigObject *obj) { |
|
254 EventHandlerConfig evcfg; |
|
255 |
|
256 sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name")); |
|
257 sstr_t threads = cfg_directivelist_get_str( |
|
258 obj->directives, |
|
259 sstr("Threads")); |
|
260 sstr_t isdefault = cfg_directivelist_get_str( |
|
261 obj->directives, |
|
262 sstr("Default")); |
|
263 |
|
264 evcfg.name = name; |
|
265 |
|
266 sstr_t s = sstrdup(threads); |
|
267 evcfg.nthreads = atoi(s.ptr); |
|
268 free(s.ptr); |
|
269 |
|
270 evcfg.isdefault = util_getboolean(isdefault.ptr, 0); |
|
271 |
|
272 int ret = create_event_handler(&evcfg); |
|
273 |
237 return ret; |
274 return ret; |
238 } |
275 } |
239 |
276 |
240 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { |
277 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { |
241 /* TODO: authdb*/ |
278 /* TODO: authdb*/ |