src/server/daemon/config.c

changeset 45
a24aa388f02f
parent 44
3da1f7b6847f
child 46
636e05eb48f6
--- a/src/server/daemon/config.c	Tue Jan 01 19:22:56 2013 +0100
+++ b/src/server/daemon/config.c	Wed Jan 02 16:03:50 2013 +0100
@@ -180,6 +180,12 @@
         return NULL;
     }
     
+    list = ucx_map_sstr_get(serverconf->objects, sstrn("AccessLog", 9));
+    UCX_FOREACH(UcxList*, list, elm) {
+        ServerConfigObject *scfgobj = elm->data;
+        cfg_handle_accesslog(serverconfig, scfgobj);
+    }
+    
     list = ucx_map_sstr_get(serverconf->objects, sstrn("AuthDB", 6));
     UCX_FOREACH(UcxList*, list, elm) {
         ServerConfigObject *scfgobj = elm->data;
@@ -376,6 +382,25 @@
     return ret;
 }
 
+int cfg_handle_accesslog(ServerConfiguration *cfg, ServerConfigObject *obj) {
+    // TODO: use a name to identify the log file
+    
+    sstr_t file = cfg_directivelist_get_str(obj->directives, sstr("File"));
+    if(file.ptr == NULL) {
+        return 0;
+    }
+    sstr_t format;
+    format.ptr = NULL; 
+    
+    AccessLog *log = get_access_log(file, format);
+    if(log) {
+        // access logs are only stored in the server config to free them
+        cfg->logfiles = ucx_list_append(cfg->logfiles, log);
+    }
+    
+    return 0;
+}
+
 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) {
     sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name"));
     sstr_t type = cfg_directivelist_get_str(obj->directives, sstr("Type"));
@@ -493,6 +518,10 @@
     }
     vs->objectfile = sstrdup(file); // TODO: pool
     vs->objects = (HTTPObjectConfig*)f->data; // TODO: ref
+    
+    // set the access log for the virtual server
+    // TODO: don't use always the default
+    vs->log = get_default_access_log();
 
     ucx_map_sstr_put(cfg->host_vs, vs->host, vs);
     

mercurial