Mercurial > blahgd > fmt4
changeset 764:3c8c383e219f v4.0
config: use the config file to locate the static web content dir
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Tue, 20 Oct 2015 17:02:36 -0400 |
parents | a35a7532e239 |
children | 75cd0f221aad 6e462b5c8d01 |
files | README config.c config.cmake config.h.in static.c |
diffstat | 5 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/README Tue Oct 20 16:47:49 2015 -0400 +++ b/README Tue Oct 20 17:02:36 2015 -0400 @@ -26,6 +26,7 @@ considered a spam DEFAULT_DATA_DIR - default path to the data directory + DEFAULT_WEB_DIR - default path to the web directory MATHD_DOOR_PATH - path for the door used to talk to mathd
--- a/config.c Tue Oct 20 16:47:49 2015 -0400 +++ b/config.c Tue Oct 20 17:02:36 2015 -0400 @@ -132,6 +132,7 @@ config_load_u64(lv, CONFIG_COMMENT_CAPTCHA_B, &config.comment_captcha_b, rand()); config_load_str(lv, CONFIG_DATA_DIR, &config.data_dir, DEFAULT_DATA_DIR); + config_load_str(lv, CONFIG_WEB_DIR, &config.web_dir, DEFAULT_WEB_DIR); config_load_url(lv, CONFIG_BASE_URL, &config.base_url); config_load_url(lv, CONFIG_BUG_BASE_URL, &config.bug_base_url); config_load_url(lv, CONFIG_WIKI_BASE_URL, &config.wiki_base_url); @@ -156,6 +157,7 @@ printf("config.comment_captcha_a = %"PRIu64"\n", config.comment_captcha_a); printf("config.comment_captcha_b = %"PRIu64"\n", config.comment_captcha_b); printf("config.data_dir = %s\n", str_cstr(config.data_dir)); + printf("config.web_dir = %s\n", str_cstr(config.web_dir)); printf("config.base_url = %s\n", str_cstr(config.base_url)); printf("config.wiki_base_url = %s\n", str_cstr(config.wiki_base_url)); printf("config.bug_base_url = %s\n", str_cstr(config.bug_base_url));
--- a/config.cmake Tue Oct 20 16:47:49 2015 -0400 +++ b/config.cmake Tue Oct 20 17:02:36 2015 -0400 @@ -19,6 +19,7 @@ set_default(DEFAULT_COMMENT_MIN_THINK 10) # 10 secs min think time set_default(DEFAULT_DATA_DIR "./data") +set_default(DEFAULT_WEB_DIR "./web") set_default(MATHD_DOOR_PATH "/tmp/mathd_door")
--- a/config.h.in Tue Oct 20 16:47:49 2015 -0400 +++ b/config.h.in Tue Oct 20 17:02:36 2015 -0400 @@ -34,6 +34,7 @@ #cmakedefine DEFAULT_COMMENT_MIN_THINK ${DEFAULT_COMMENT_MIN_THINK} #cmakedefine DEFAULT_DATA_DIR "${DEFAULT_DATA_DIR}" +#cmakedefine DEFAULT_WEB_DIR "${DEFAULT_WEB_DIR}" #cmakedefine MATHD_DOOR_PATH "${MATHD_DOOR_PATH}" @@ -63,6 +64,7 @@ #define CONFIG_COMMENT_CAPTCHA_A "comment-captcha-a" #define CONFIG_COMMENT_CAPTCHA_B "comment-captcha-b" #define CONFIG_DATA_DIR "data-dir" +#define CONFIG_WEB_DIR "web-dir" #define CONFIG_BASE_URL "base-url" #define CONFIG_BUG_BASE_URL "bug-base-url" #define CONFIG_WIKI_BASE_URL "wiki-base-url" @@ -88,6 +90,7 @@ uint64_t comment_captcha_a; uint64_t comment_captcha_b; struct str *data_dir; + struct str *web_dir; struct str *base_url; struct str *bug_base_url; struct str *wiki_base_url;
--- a/static.c Tue Oct 20 16:47:49 2015 -0400 +++ b/static.c Tue Oct 20 17:02:36 2015 -0400 @@ -78,6 +78,7 @@ int blahg_static(struct req *req) { + char path[FILENAME_MAX]; const struct uri_info *info; const char *uri; @@ -90,11 +91,13 @@ /* DOCUMENT_URI comes with a leading /, remove it. */ uri++; + snprintf(path, sizeof(path), "%s/%s", str_cstr(config.web_dir), uri); + /* * We assume that the URI is relative to the web dir. Since we * have a whitelist of allowed URIs, whe should be safe here. */ - req->body = read_file_len(uri, &req->bodylen); + req->body = read_file_len(path, &req->bodylen); if (IS_ERR(req->body)) return R404(req, NULL);