diff -r 21274e5950af -r a1f4cb076d2f src/server/daemon/config.h --- a/src/server/daemon/config.h Tue Aug 13 22:14:32 2019 +0200 +++ b/src/server/daemon/config.h Sat Sep 24 16:26:10 2022 +0200 @@ -35,14 +35,17 @@ #include "../config/objconf.h" #include "../config/initconf.h" -#include "../config/serverconf.h" #include "../config/mimeconf.h" #include "../config/acl.h" #include "../config/keyfile.h" +#include "../config/serverconfig.h" #include "acldata.h" #include "keyfile_auth.h" #include "log.h" +#include "vfs.h" + +#include "../webdav/webdav.h" #include #include @@ -54,74 +57,81 @@ #endif typedef struct mime_map MimeMap; + +typedef struct WebdavRepository WebdavRepository; +typedef struct WebdavBackendInitData WebdavBackendInitData; -typedef struct _server_configuration { +struct ServerConfiguration { pool_handle_t *pool; + UcxAllocator *a; + UcxMap *host_vs; // map of all vservers. key is the host name UcxList *listeners; // list of all listeners UcxList *logfiles; AccessLog *default_log; UcxMap *authdbs; MimeMap *mimetypes; + UcxMap *resources; + UcxMap *dav; sstr_t tmp; sstr_t user; uint32_t ref; // reference counter -} ServerConfiguration; - - -typedef struct ConfigFile ConfigFile; +}; -typedef int(*cfg_reload_f)(ConfigFile*,ServerConfiguration*); +struct WebdavRepository { + VfsType *vfs; + void *vfsInitData; + UcxList *davBackends; // list of WebdavBackendInitData* + sstr_t object; +}; -struct ConfigFile { - sstr_t file; - time_t last_modified; - cfg_reload_f reload; - void *data; +struct WebdavBackendInitData { + WebdavType *davType; + void *davInitData; }; struct mime_map { UcxMap *map; - uint32_t ref; }; +char* cfg_config_file_path(const char *file); + int load_init_conf(char *file); void init_server_config_parser(); -int cfg_handle_runtime(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_runtime(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_logfile(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_logfile(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_threadpool(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_threadpool(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_eventhandler(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_eventhandler(ServerConfiguration *cfg, ConfigNode *obj); + +int cfg_handle_resourcepool(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_accesslog(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_accesslog(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_authdb(ServerConfiguration *cfg, ConfigNode *obj); + +int cfg_handle_listener(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_listener(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_vs(ServerConfiguration *cfg, ConfigNode *obj); -int cfg_handle_vs(ServerConfiguration *cfg, ServerConfigObject *obj); +int cfg_handle_dav(ServerConfiguration *cfg, ConfigNode *obj); -ServerConfiguration* load_server_conf(ServerConfiguration *old, char *file); +ServerConfiguration* load_server_conf(char *file); void cfg_ref(ServerConfiguration *cfg); void cfg_unref(ServerConfiguration *cfg); +HTTPObjectConfig* objconf_load(ServerConfiguration *scfg, sstr_t file); +int mime_conf_load(ServerConfiguration *cfg, sstr_t file); -int object_conf_reload(ConfigFile *file, ServerConfiguration *cfg); -void object_conf_ref(HTTPObjectConfig *conf); -void object_conf_unref(HTTPObjectConfig *conf); -HTTPObjectConfig* load_obj_conf(char *file); -int mime_conf_reload(ConfigFile *file, ServerConfiguration *cfg); -void mime_conf_ref(MimeMap *conf); -void mime_conf_unref(MimeMap *conf); -int acl_conf_reload(ConfigFile *file, ServerConfiguration *cfg); +ACLData* acl_conf_load(ServerConfiguration *cfg, sstr_t file); ACLList* acl_config_convert(ServerConfiguration *cfg, ACLConfig *acl); -int keyfile_reload(ConfigFile *file, ServerConfiguration *cfg); +AuthDB* keyfile_load(ServerConfiguration *cfg, scstr_t file); -sstr_t cfg_load_file(sstr_t file); +pblock* config_obj2pblock(pool_handle_t *pool, ConfigNode *obj); #ifdef __cplusplus }