@@ -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