mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-12 10:13:29 +00:00
Pass opts structure to mg_http_serve_dir()
This commit is contained in:
+3
-3
@@ -1009,11 +1009,11 @@ static void listdir(struct mg_connection *c, struct mg_http_message *hm,
|
||||
#endif
|
||||
|
||||
void mg_http_serve_dir(struct mg_connection *c, struct mg_http_message *hm,
|
||||
const char *dir) {
|
||||
const struct mg_http_serve_opts *opts) {
|
||||
char path[PATH_MAX + 2], root[sizeof(path) - 2], real[sizeof(path) - 2];
|
||||
path[0] = root[0] = real[0] = '\0';
|
||||
if (realpath(dir, root) == NULL)
|
||||
LOG(LL_DEBUG, ("realpath(%s): %d", dir, errno));
|
||||
if (realpath(opts->root_dir, root) == NULL)
|
||||
LOG(LL_DEBUG, ("realpath(%s): %d", opts->root_dir, errno));
|
||||
if (!mg_is_dir(root)) {
|
||||
mg_http_reply(c, 400, "", "Bad web root [%s]\n", root);
|
||||
} else {
|
||||
|
||||
+7
-1
@@ -665,6 +665,12 @@ struct mg_http_message {
|
||||
struct mg_str message; // Request line + headers + body
|
||||
};
|
||||
|
||||
// Parameter for mg_http_serve_dir()
|
||||
struct mg_http_serve_opts {
|
||||
const char *root_dir;
|
||||
const char *ssi_pattern;
|
||||
};
|
||||
|
||||
int mg_http_parse(const char *s, size_t len, struct mg_http_message *);
|
||||
int mg_http_get_request_len(const unsigned char *buf, size_t buf_len);
|
||||
void mg_http_printf_chunk(struct mg_connection *cnn, const char *fmt, ...);
|
||||
@@ -674,7 +680,7 @@ struct mg_connection *mg_http_listen(struct mg_mgr *, const char *url,
|
||||
struct mg_connection *mg_http_connect(struct mg_mgr *, const char *url,
|
||||
mg_event_handler_t fn, void *fn_data);
|
||||
void mg_http_serve_dir(struct mg_connection *, struct mg_http_message *hm,
|
||||
const char *path);
|
||||
const struct mg_http_serve_opts *);
|
||||
void mg_http_serve_file(struct mg_connection *, struct mg_http_message *,
|
||||
const char *, const char *mime);
|
||||
void mg_http_reply(struct mg_connection *, int status_code, const char *headers,
|
||||
|
||||
+3
-3
@@ -595,11 +595,11 @@ static void listdir(struct mg_connection *c, struct mg_http_message *hm,
|
||||
#endif
|
||||
|
||||
void mg_http_serve_dir(struct mg_connection *c, struct mg_http_message *hm,
|
||||
const char *dir) {
|
||||
const struct mg_http_serve_opts *opts) {
|
||||
char path[PATH_MAX + 2], root[sizeof(path) - 2], real[sizeof(path) - 2];
|
||||
path[0] = root[0] = real[0] = '\0';
|
||||
if (realpath(dir, root) == NULL)
|
||||
LOG(LL_DEBUG, ("realpath(%s): %d", dir, errno));
|
||||
if (realpath(opts->root_dir, root) == NULL)
|
||||
LOG(LL_DEBUG, ("realpath(%s): %d", opts->root_dir, errno));
|
||||
if (!mg_is_dir(root)) {
|
||||
mg_http_reply(c, 400, "", "Bad web root [%s]\n", root);
|
||||
} else {
|
||||
|
||||
+7
-1
@@ -19,6 +19,12 @@ struct mg_http_message {
|
||||
struct mg_str message; // Request line + headers + body
|
||||
};
|
||||
|
||||
// Parameter for mg_http_serve_dir()
|
||||
struct mg_http_serve_opts {
|
||||
const char *root_dir;
|
||||
const char *ssi_pattern;
|
||||
};
|
||||
|
||||
int mg_http_parse(const char *s, size_t len, struct mg_http_message *);
|
||||
int mg_http_get_request_len(const unsigned char *buf, size_t buf_len);
|
||||
void mg_http_printf_chunk(struct mg_connection *cnn, const char *fmt, ...);
|
||||
@@ -28,7 +34,7 @@ struct mg_connection *mg_http_listen(struct mg_mgr *, const char *url,
|
||||
struct mg_connection *mg_http_connect(struct mg_mgr *, const char *url,
|
||||
mg_event_handler_t fn, void *fn_data);
|
||||
void mg_http_serve_dir(struct mg_connection *, struct mg_http_message *hm,
|
||||
const char *path);
|
||||
const struct mg_http_serve_opts *);
|
||||
void mg_http_serve_file(struct mg_connection *, struct mg_http_message *,
|
||||
const char *, const char *mime);
|
||||
void mg_http_reply(struct mg_connection *, int status_code, const char *headers,
|
||||
|
||||
+6
-3
@@ -337,7 +337,8 @@ static void eh1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
|
||||
} else if (mg_http_match_uri(hm, "/bar")) {
|
||||
mg_http_reply(c, 404, "", "not found");
|
||||
} else if (mg_http_match_uri(hm, "/badroot")) {
|
||||
mg_http_serve_dir(c, hm, "/BAAADDD!");
|
||||
struct mg_http_serve_opts opts = {"/BAAADDD!", NULL};
|
||||
mg_http_serve_dir(c, hm, &opts);
|
||||
} else if (mg_http_match_uri(hm, "/creds")) {
|
||||
char user[100], pass[100];
|
||||
mg_http_creds(hm, user, sizeof(user), pass, sizeof(pass));
|
||||
@@ -345,9 +346,11 @@ static void eh1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
|
||||
} else if (mg_http_match_uri(hm, "/upload")) {
|
||||
mg_http_upload(c, hm, ".");
|
||||
} else if (mg_http_match_uri(hm, "/test/")) {
|
||||
mg_http_serve_dir(c, hm, ".");
|
||||
struct mg_http_serve_opts opts = {".", NULL};
|
||||
mg_http_serve_dir(c, hm, &opts);
|
||||
} else {
|
||||
mg_http_serve_dir(c, hm, "./test/data");
|
||||
struct mg_http_serve_opts opts = {"./test/data", NULL};
|
||||
mg_http_serve_dir(c, hm, &opts);
|
||||
}
|
||||
} else if (ev == MG_EV_WS_MSG) {
|
||||
struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
|
||||
|
||||
Reference in New Issue
Block a user