From 2b61e79e430110540d59529d4c76a25246b2dc1c Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sun, 12 Apr 2020 06:06:47 +0000 Subject: [PATCH] Give all the things that can execute JS, access to the text.dat strings via the (new) scfg_t.text member. This will make it much easier for non-Terminal Server JS modules (and the functions they execute) make use of the text.dat strings. --- src/sbbs3/jsexec.c | 3 ++- src/sbbs3/load_cfg.c | 4 ++++ src/sbbs3/mailsrvr.c | 3 ++- src/sbbs3/scfgdefs.h | 1 + src/sbbs3/services.c | 3 ++- src/sbbs3/websrvr.c | 3 ++- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index da223d0730..bab42257cf 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -67,6 +67,7 @@ JSContext* js_cx; JSObject* js_glob; js_callback_t cb; scfg_t scfg; +char* text[TOTAL_TEXT]; ulong js_max_bytes=JAVASCRIPT_MAX_BYTES; ulong js_cx_stack=JAVASCRIPT_CONTEXT_STACK; FILE* confp; @@ -1391,7 +1392,7 @@ int main(int argc, char **argv, char** env) fprintf(errfp,"!ERROR changing directory to: %s\n", scfg.ctrl_dir); fprintf(statfp,"\nLoading configuration files from %s\n",scfg.ctrl_dir); - if(!load_cfg(&scfg,NULL,TRUE,error)) { + if(!load_cfg(&scfg,text,TRUE,error)) { fprintf(errfp,"!ERROR loading configuration files: %s\n",error); return(do_bail(1)); } diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c index b40f249372..4b94fceac1 100644 --- a/src/sbbs3/load_cfg.c +++ b/src/sbbs3/load_cfg.c @@ -118,6 +118,7 @@ BOOL DLLCALL load_cfg(scfg_t* cfg, char* text[], BOOL prep, char* error) ,TOTAL_TEXT,fname); return(FALSE); } + cfg->text = text; } #endif @@ -306,6 +307,9 @@ void DLLCALL free_cfg(scfg_t* cfg) free_chat_cfg(cfg); free_xtrn_cfg(cfg); free_attr_cfg(cfg); + + if(cfg->text != NULL) + free_text(cfg->text); } void DLLCALL free_text(char* text[]) diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 14adc81b2e..c681cfb37d 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -89,6 +89,7 @@ int dns_getmx(char* name, char* mx, char* mx2 static mail_startup_t* startup=NULL; static scfg_t scfg; +static char* text[TOTAL_TEXT]; static struct xpms_set *mail_set=NULL; static BOOL terminated=FALSE; static protected_uint32_t active_clients; @@ -6038,7 +6039,7 @@ void DLLCALL mail_server(void* arg) lprintf(LOG_INFO,"Loading configuration files from %s", scfg.ctrl_dir); scfg.size=sizeof(scfg); SAFECOPY(error,UNKNOWN_LOAD_ERROR); - if(!load_cfg(&scfg, NULL, TRUE, error)) { + if(!load_cfg(&scfg, text, TRUE, error)) { lprintf(LOG_CRIT,"!ERROR %s",error); lprintf(LOG_CRIT,"!Failed to load configuration files"); cleanup(1); diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h index a2235f3779..d2aba430a5 100644 --- a/src/sbbs3/scfgdefs.h +++ b/src/sbbs3/scfgdefs.h @@ -614,6 +614,7 @@ typedef struct uint16_t user_backup_level; uint16_t mail_backup_level; + char** text; // Run-time state information (not configuration) int tls_certificate; diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 0e09ece5b5..c2625c8882 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -71,6 +71,7 @@ static services_startup_t* startup=NULL; static scfg_t scfg; +static char* text[TOTAL_TEXT]; static volatile BOOL terminated=FALSE; static time_t uptime=0; static ulong served=0; @@ -1815,7 +1816,7 @@ void DLLCALL services_thread(void* arg) lprintf(LOG_INFO,"Loading configuration files from %s", scfg.ctrl_dir); scfg.size=sizeof(scfg); SAFECOPY(error,UNKNOWN_LOAD_ERROR); - if(!load_cfg(&scfg, NULL, TRUE, error)) { + if(!load_cfg(&scfg, text, TRUE, error)) { lprintf(LOG_CRIT,"!ERROR %s",error); lprintf(LOG_CRIT,"!Failed to load configuration files"); cleanup(1); diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index ad47f6092e..c702ab1218 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -95,6 +95,7 @@ static const char* error_416="416 Requested Range Not Satisfiable"; static const char* error_500="500 Internal Server Error"; static const char* error_503="503 Service Unavailable\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"; static const char* unknown=STR_UNKNOWN_USER; +static char* text[TOTAL_TEXT]; static int len_503 = 0; #define TIMEOUT_THREAD_WAIT 60 /* Seconds */ @@ -6990,7 +6991,7 @@ void DLLCALL web_server(void* arg) lprintf(LOG_INFO,"Loading configuration files from %s", scfg.ctrl_dir); scfg.size=sizeof(scfg); SAFECOPY(logstr,UNKNOWN_LOAD_ERROR); - if(!load_cfg(&scfg, NULL, TRUE, logstr)) { + if(!load_cfg(&scfg, text, TRUE, logstr)) { lprintf(LOG_CRIT,"!ERROR %s",logstr); lprintf(LOG_CRIT,"!FAILED to load configuration files"); cleanup(1); -- GitLab