Skip to content

Commit d6d3b5c

Browse files
committed
Respect user index in VFS start_server
1 parent 58c8e77 commit d6d3b5c

1 file changed

Lines changed: 25 additions & 3 deletions

File tree

src/webui.c

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4850,6 +4850,17 @@ static bool _webui_file_exist_mg(_webui_window_t* win, struct mg_connection* cli
48504850

48514851
const struct mg_request_info * ri = mg_get_request_info(client);
48524852
const char* url = ri->local_uri;
4853+
const char* handler_url = url;
4854+
char user_index_url[WEBUI_MAX_PATH];
4855+
// Respect user-defined index file when using an external file handler.
4856+
if (strcmp(url, "/") == 0 && !_webui_is_empty(win->user_index_file)) {
4857+
if (win->user_index_file[0] == '/') {
4858+
handler_url = win->user_index_file;
4859+
} else {
4860+
WEBUI_SN_PRINTF_STATIC(user_index_url, WEBUI_MAX_PATH, "/%s", win->user_index_file);
4861+
handler_url = user_index_url;
4862+
}
4863+
}
48534864
size_t url_len = _webui_strlen(url);
48544865

48554866
// Get file name
@@ -5175,6 +5186,17 @@ static int _webui_external_file_handler(_webui_window_t* win, struct mg_connecti
51755186
int http_status_code = 0;
51765187
const struct mg_request_info * ri = mg_get_request_info(client);
51775188
const char* url = ri->local_uri;
5189+
const char* handler_url = url;
5190+
char user_index_url[WEBUI_MAX_PATH];
5191+
// Respect user-defined index file when using an external file handler.
5192+
if (strcmp(url, "/") == 0 && !_webui_is_empty(win->user_index_file)) {
5193+
if (win->user_index_file[0] == '/') {
5194+
handler_url = win->user_index_file;
5195+
} else {
5196+
WEBUI_SN_PRINTF_STATIC(user_index_url, WEBUI_MAX_PATH, "/%s", win->user_index_file);
5197+
handler_url = user_index_url;
5198+
}
5199+
}
51785200

51795201
if (win->files_handler != NULL || win->files_handler_window != NULL) {
51805202
// Get file content from the external files handler
@@ -5200,7 +5222,7 @@ static int _webui_external_file_handler(_webui_window_t* win, struct mg_connecti
52005222
if(win->files_handler_window) {
52015223
pt = win->files_handler_window;
52025224
}
5203-
_webui_log_debug("[Core]\t\t_webui_external_file_handler() -> Path [%s]\n", url);
5225+
_webui_log_debug("[Core]\t\t_webui_external_file_handler() -> Path [%s]\n", handler_url);
52045226
_webui_log_debug("[Core]\t\t_webui_external_file_handler() -> Calling custom files handler callback at address 0x%p\n", pt);
52055227
_webui_log_debug("[Call]\n");
52065228
#endif
@@ -5215,9 +5237,9 @@ static int _webui_external_file_handler(_webui_window_t* win, struct mg_connecti
52155237
// Call user callback
52165238
const void* callback_resp = NULL;
52175239
if (win->files_handler_window != NULL) {
5218-
callback_resp = win->files_handler_window(win->num, url, (int*)&length);
5240+
callback_resp = win->files_handler_window(win->num, handler_url, (int*)&length);
52195241
} else {
5220-
callback_resp = win->files_handler(url, (int*)&length);
5242+
callback_resp = win->files_handler(handler_url, (int*)&length);
52215243
}
52225244

52235245
// Async response wait

0 commit comments

Comments
 (0)