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);