178 if(check_event_handler_cfg() != 0) { |
178 if(check_event_handler_cfg() != 0) { |
179 /* critical error */ |
179 /* critical error */ |
180 return NULL; |
180 return NULL; |
181 } |
181 } |
182 |
182 |
|
183 list = ucx_map_sstr_get(serverconf->objects, sstrn("AccessLog", 9)); |
|
184 UCX_FOREACH(UcxList*, list, elm) { |
|
185 ServerConfigObject *scfgobj = elm->data; |
|
186 cfg_handle_accesslog(serverconfig, scfgobj); |
|
187 } |
|
188 |
183 list = ucx_map_sstr_get(serverconf->objects, sstrn("AuthDB", 6)); |
189 list = ucx_map_sstr_get(serverconf->objects, sstrn("AuthDB", 6)); |
184 UCX_FOREACH(UcxList*, list, elm) { |
190 UCX_FOREACH(UcxList*, list, elm) { |
185 ServerConfigObject *scfgobj = elm->data; |
191 ServerConfigObject *scfgobj = elm->data; |
186 cfg_handle_authdb(serverconfig, scfgobj); |
192 cfg_handle_authdb(serverconfig, scfgobj); |
187 } |
193 } |
372 evcfg.isdefault = util_getboolean(isdefault.ptr, 0); |
378 evcfg.isdefault = util_getboolean(isdefault.ptr, 0); |
373 |
379 |
374 int ret = create_event_handler(&evcfg); |
380 int ret = create_event_handler(&evcfg); |
375 |
381 |
376 return ret; |
382 return ret; |
|
383 } |
|
384 |
|
385 int cfg_handle_accesslog(ServerConfiguration *cfg, ServerConfigObject *obj) { |
|
386 // TODO: use a name to identify the log file |
|
387 |
|
388 sstr_t file = cfg_directivelist_get_str(obj->directives, sstr("File")); |
|
389 if(file.ptr == NULL) { |
|
390 return 0; |
|
391 } |
|
392 sstr_t format; |
|
393 format.ptr = NULL; |
|
394 |
|
395 AccessLog *log = get_access_log(file, format); |
|
396 if(log) { |
|
397 // access logs are only stored in the server config to free them |
|
398 cfg->logfiles = ucx_list_append(cfg->logfiles, log); |
|
399 } |
|
400 |
|
401 return 0; |
377 } |
402 } |
378 |
403 |
379 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { |
404 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { |
380 sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name")); |
405 sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name")); |
381 sstr_t type = cfg_directivelist_get_str(obj->directives, sstr("Type")); |
406 sstr_t type = cfg_directivelist_get_str(obj->directives, sstr("Type")); |
491 f->reload(f, cfg); |
516 f->reload(f, cfg); |
492 cfgmgr_attach_file(f); |
517 cfgmgr_attach_file(f); |
493 } |
518 } |
494 vs->objectfile = sstrdup(file); // TODO: pool |
519 vs->objectfile = sstrdup(file); // TODO: pool |
495 vs->objects = (HTTPObjectConfig*)f->data; // TODO: ref |
520 vs->objects = (HTTPObjectConfig*)f->data; // TODO: ref |
|
521 |
|
522 // set the access log for the virtual server |
|
523 // TODO: don't use always the default |
|
524 vs->log = get_default_access_log(); |
496 |
525 |
497 ucx_map_sstr_put(cfg->host_vs, vs->host, vs); |
526 ucx_map_sstr_put(cfg->host_vs, vs->host, vs); |
498 |
527 |
499 return 0; |
528 return 0; |
500 } |
529 } |