From 56d05276bd602248f7d164ac058e8d8df7bc232e Mon Sep 17 00:00:00 2001 From: Sakthivel Velumani Date: Mon, 30 Sep 2024 16:50:55 -0400 Subject: [PATCH 1/2] Fix bug in websrv opening page allocating enough memory to hold url to index page. --- common/utils/websrv/websrv.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/common/utils/websrv/websrv.c b/common/utils/websrv/websrv.c index 33ae8313bf..6debf1283e 100644 --- a/common/utils/websrv/websrv.c +++ b/common/utils/websrv/websrv.c @@ -267,7 +267,7 @@ int websrv_callback_get_softmodemhelp(const struct _u_request *request, struct _ int httpstatus = 204; // no content char *hlpfile = strstr(request->http_url, "helpfiles"); if (hlpfile != NULL) { - char *hlppath = malloc(strlen(hlpfile) + strlen(websrvparams.fpath) + 1); + char *hlppath = malloc(strlen(hlpfile) + strlen(websrvparams.fpath) + 2); sprintf(hlppath, "%s/%s", websrvparams.fpath, hlpfile); help_string = websrv_read_file(hlppath); if (help_string == NULL) { @@ -291,9 +291,10 @@ int websrv_callback_default(const struct _u_request *request, struct _u_response LOG_I(UTIL, "[websrv] Requested file is: %s %s\n", request->http_verb, request->http_url); websrv_dump_request("default ", request, websrvparams.dbglvl); - char *fpath = malloc(strlen(request->http_url) + strlen(websrvparams.fpath) + 2); + const char *index_file_name = "index.html"; + char *fpath = malloc(strlen(request->http_url) + strlen(websrvparams.fpath) + strlen(index_file_name) + 2); if ((strcmp(request->http_url + 1, websrvparams.fpath) == 0) || (strcmp(request->http_url, "/") == 0)) { - sprintf(fpath, "%s/index.html", websrvparams.fpath); + sprintf(fpath, "%s/%s", websrvparams.fpath, index_file_name); } else { sprintf(fpath, "%s/%s", websrvparams.fpath, request->http_url); } From f8a51921a8c77bcce4f8d78c0f1d4a1fb11ecf99 Mon Sep 17 00:00:00 2001 From: Sakthivel Velumani Date: Mon, 30 Sep 2024 21:02:29 -0400 Subject: [PATCH 2/2] Update default path for websrv resources --- common/utils/websrv/DOC/websrvuse.md | 2 +- common/utils/websrv/websrv.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/utils/websrv/DOC/websrvuse.md b/common/utils/websrv/DOC/websrvuse.md index 684f64b104..27c0795634 100644 --- a/common/utils/websrv/DOC/websrvuse.md +++ b/common/utils/websrv/DOC/websrvuse.md @@ -244,7 +244,7 @@ The web server back-end is using the [oai configuration module](Config/Rtusage). | `listenaddr` | `ipV4 address, ascii format` | "0.0.0.0" | local address the back-end is listening on | | `listenport` | `integer` | 8090 | port number the server is listening on | | debug | `integer` | 0 | When not 0, http requests headers and json objects dump are added to back-end traces | -| fpath | character string | websrv | The path to on-disk http server resources . The default value matches the front-end installation when running the softmodem from the executables repository. | +| fpath | character string | common/utils/websrv | The path to on-disk http server resources . The default value matches the front-end installation when running the softmodem from the executables repository. | | cert, key, rootca | `character string` | null | certificates and key used to trigger https protocol (not tested) | | | | | | diff --git a/common/utils/websrv/websrv.c b/common/utils/websrv/websrv.c index 6debf1283e..f6fb898104 100644 --- a/common/utils/websrv/websrv.c +++ b/common/utils/websrv/websrv.c @@ -56,7 +56,7 @@ paramdef_t websrvoptions[] = { {"listenport", "\n", 0, uptr : &(websrvparams.listenport), defuintval : 8090, TYPE_UINT, 0}, {"priority", "\n", 0, uptr : &websrvparams.dbglvl, defuintval : 0, TYPE_UINT, 0}, - {"fpath", "\n", 0, strptr : &websrvparams.fpath, defstrval : "websrv", TYPE_STRING, 0}, + {"fpath", "\n", 0, strptr : &websrvparams.fpath, defstrval : "common/utils/websrv", TYPE_STRING, 0}, {"cert", "\n", 0, strptr : &websrvparams.certfile, defstrval : NULL, TYPE_STRING, 0}, {"key", "\n", 0, strptr : &websrvparams.keyfile, defstrval : NULL, TYPE_STRING, 0}, {"rootca", "\n", 0, strptr : &websrvparams.rootcafile, defstrval : NULL, TYPE_STRING, 0},