From b587e5f81e6b437c85a4c8839e1e824f5b5d561d Mon Sep 17 00:00:00 2001 From: "Rob Swindell (in GitKraken)" <rob@synchro.net> Date: Mon, 20 Mar 2023 09:46:43 -0700 Subject: [PATCH] Support duration notation (e.g. 10M for 10 minutes) in "*Inactivity" .ini keys The recently updated ctrl/sbbs.ini had MaxLoginInactivity = 10M in the [BBS] section, which was parsed as 10 seconds rather than the intended 10 minutes. This fixes that issue and also will now store all of these inactivity values in duration notation. Existing values stored in seconds will work fine since that is always the assumed/fallback unit of time in duration keys. Thanks for the report! --- src/sbbs3/sbbs_ini.c | 37 +++++++++++++++++-------------------- src/sbbs3/scfglib1.c | 2 +- src/sbbs3/scfglib2.c | 2 +- src/sbbs3/scfgsave.c | 4 ++-- 4 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c index f158473301..4fa57207e3 100644 --- a/src/sbbs3/sbbs_ini.c +++ b/src/sbbs3/sbbs_ini.c @@ -461,9 +461,9 @@ void sbbs_read_ini( bbs->login_attempt = get_login_attempt_settings(list, section, global); bbs->max_concurrent_connections = iniGetInteger(list, section, strMaxConConn, 0); - bbs->max_login_inactivity = iniGetShortInt(list, section, strMaxLoginInactivity, 10 * 60); - bbs->max_newuser_inactivity = iniGetShortInt(list, section, strMaxNewUserInactivity, 60 * 60); - bbs->max_session_inactivity = iniGetShortInt(list, section, strMaxSessionInactivity, 0); + bbs->max_login_inactivity = (uint16_t)iniGetDuration(list, section, strMaxLoginInactivity, 10 * 60); + bbs->max_newuser_inactivity = (uint16_t)iniGetDuration(list, section, strMaxNewUserInactivity, 60 * 60); + bbs->max_session_inactivity = (uint16_t)iniGetDuration(list, section, strMaxSessionInactivity, 0); SAFECOPY(bbs->web_file_vpath_prefix, iniGetString(list, "web", strFileVPathPrefix, nulstr, value)); } @@ -488,11 +488,11 @@ void sbbs_read_ini( ftp->max_clients =iniGetShortInt(list,section,strMaxClients,FTP_DEFAULT_MAX_CLIENTS); ftp->max_inactivity - =iniGetShortInt(list,section,strMaxInactivity,FTP_DEFAULT_MAX_INACTIVITY); /* seconds */ + =(uint16_t)iniGetDuration(list,section,strMaxInactivity,FTP_DEFAULT_MAX_INACTIVITY); /* seconds */ ftp->qwk_timeout - =iniGetShortInt(list,section,"QwkTimeout",FTP_DEFAULT_QWK_TIMEOUT); /* seconds */ + =(uint16_t)iniGetDuration(list,section,"QwkTimeout",FTP_DEFAULT_QWK_TIMEOUT); /* seconds */ ftp->sem_chk_freq - =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); + =(uint16_t)iniGetDuration(list,section,strSemFileCheckFrequency,global->sem_chk_freq); ftp->min_fsize =iniGetBytes(list,section,"MinFileSize",1,0); ftp->max_fsize @@ -564,7 +564,7 @@ void sbbs_read_ini( mail->max_clients =iniGetShortInt(list,section,strMaxClients,MAIL_DEFAULT_MAX_CLIENTS); mail->max_inactivity - =iniGetShortInt(list,section,strMaxInactivity,MAIL_DEFAULT_MAX_INACTIVITY); /* seconds */ + =(uint16_t)iniGetDuration(list,section,strMaxInactivity,MAIL_DEFAULT_MAX_INACTIVITY); /* seconds */ mail->max_delivery_attempts =iniGetShortInt(list,section,"MaxDeliveryAttempts",MAIL_DEFAULT_MAX_DELIVERY_ATTEMPTS); mail->rescan_frequency @@ -696,7 +696,7 @@ void sbbs_read_ini( web->max_clients =iniGetShortInt(list,section,strMaxClients,WEB_DEFAULT_MAX_CLIENTS); web->max_inactivity - =iniGetShortInt(list,section,strMaxInactivity,WEB_DEFAULT_MAX_INACTIVITY); /* seconds */ + =(uint16_t)iniGetDuration(list,section,strMaxInactivity,WEB_DEFAULT_MAX_INACTIVITY); /* seconds */ web->sem_chk_freq =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); @@ -738,7 +738,7 @@ void sbbs_read_ini( ,iniGetString(list,section,"JavaScriptExtension",".ssjs",value)); web->max_cgi_inactivity - =iniGetShortInt(list,section,"MaxCgiInactivity",WEB_DEFAULT_MAX_CGI_INACTIVITY); /* seconds */ + =(uint16_t)iniGetDuration(list,section,"MaxCgiInactivity",WEB_DEFAULT_MAX_CGI_INACTIVITY); /* seconds */ sbbs_get_sound_settings(list, section, &web->sound, &global->sound); @@ -875,11 +875,11 @@ BOOL sbbs_write_ini( break; if(!iniSetInteger(lp,section,strMaxConConn,bbs->max_concurrent_connections,&style)) break; - if(!iniSetShortInt(lp, section, strMaxLoginInactivity, bbs->max_login_inactivity, &style)) + if(!iniSetDuration(lp, section, strMaxLoginInactivity, bbs->max_login_inactivity, &style)) break; - if(!iniSetShortInt(lp, section, strMaxNewUserInactivity, bbs->max_newuser_inactivity, &style)) + if(!iniSetDuration(lp, section, strMaxNewUserInactivity, bbs->max_newuser_inactivity, &style)) break; - if(!iniSetShortInt(lp, section, strMaxSessionInactivity, bbs->max_session_inactivity, &style)) + if(!iniSetDuration(lp, section, strMaxSessionInactivity, bbs->max_session_inactivity, &style)) break; if(bbs->sem_chk_freq==global->sem_chk_freq) @@ -967,7 +967,7 @@ BOOL sbbs_write_ini( break; if(!iniSetShortInt(lp,section,strMaxClients,ftp->max_clients,&style)) break; - if(!iniSetShortInt(lp,section,strMaxInactivity,ftp->max_inactivity,&style)) + if(!iniSetDuration(lp,section,strMaxInactivity,ftp->max_inactivity,&style)) break; if(!iniSetInteger(lp,section,strMaxConConn,ftp->max_concurrent_connections,&style)) break; @@ -1078,7 +1078,7 @@ BOOL sbbs_write_ini( break; if(!iniSetShortInt(lp,section,strMaxClients,mail->max_clients,&style)) break; - if(!iniSetShortInt(lp,section,strMaxInactivity,mail->max_inactivity,&style)) + if(!iniSetDuration(lp,section,strMaxInactivity,mail->max_inactivity,&style)) break; if(!iniSetShortInt(lp,section,"MaxDeliveryAttempts",mail->max_delivery_attempts,&style)) break; @@ -1244,7 +1244,9 @@ BOOL sbbs_write_ini( break; if(!iniSetShortInt(lp,section,strMaxClients,web->max_clients,&style)) break; - if(!iniSetShortInt(lp,section,strMaxInactivity,web->max_inactivity,&style)) + if(!iniSetDuration(lp,section,strMaxInactivity,web->max_inactivity,&style)) + break; + if(!iniSetDuration(lp,section,"MaxCgiInactivity",web->max_cgi_inactivity,&style)) break; if(web->sem_chk_freq==global->sem_chk_freq) @@ -1304,11 +1306,6 @@ BOOL sbbs_write_ini( if(!iniSetString(lp,section,"JavaScriptExtension",web->ssjs_ext,&style)) break; - if(!iniSetShortInt(lp,section,strMaxInactivity,web->max_inactivity,&style)) - break; - if(!iniSetShortInt(lp,section,"MaxCgiInactivity",web->max_cgi_inactivity,&style)) - break; - if(!sbbs_set_sound_settings(lp, section, &web->sound, &global->sound, &style)) break; diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index 075eb143f5..e6bb585ca8 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -123,7 +123,7 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen) cfg->max_log_size = (uint32_t)iniGetBytes(ini, ROOT_SECTION, "max_log_size", 1, 0); cfg->max_logs_kept = iniGetUInt16(ini, ROOT_SECTION, "max_logs_kept", 0); cfg->ctrlkey_passthru = iniGetInteger(ini, ROOT_SECTION, "ctrlkey_passthru", 0); - cfg->max_getkey_inactivity = iniGetUInteger(ini, ROOT_SECTION, "max_getkey_inactivity", 300); + cfg->max_getkey_inactivity = iniGetDuration(ini, ROOT_SECTION, "max_getkey_inactivity", 300); cfg->inactivity_warn = (uchar)iniGetShortInt(ini, ROOT_SECTION, "inactivity_warn", 75); cfg->user_backup_level = iniGetInteger(ini, ROOT_SECTION, "user_backup_level", 5); diff --git a/src/sbbs3/scfglib2.c b/src/sbbs3/scfglib2.c index 713165f03a..4102329ea4 100644 --- a/src/sbbs3/scfglib2.c +++ b/src/sbbs3/scfglib2.c @@ -480,7 +480,7 @@ BOOL read_xtrn_cfg(scfg_t* cfg, char* error, size_t maxerrlen) SAFECOPY(cfg->xtrn[i]->path, iniGetString(section, NULL, "startup_dir", "", value)); cfg->xtrn[i]->textra = (uint8_t)iniGetShortInt(section, NULL, "textra", 0); cfg->xtrn[i]->maxtime = (uint8_t)iniGetShortInt(section, NULL, "max_time", 0); - cfg->xtrn[i]->max_inactivity = iniGetUInteger(section, NULL, "max_inactivity", 0); + cfg->xtrn[i]->max_inactivity = (uint)iniGetDuration(section, NULL, "max_inactivity", 0); ++cfg->total_xtrns; } iniFreeStringList(list); diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c index 36bac945dc..efc3f7182a 100644 --- a/src/sbbs3/scfgsave.c +++ b/src/sbbs3/scfgsave.c @@ -140,7 +140,7 @@ BOOL write_main_cfg(scfg_t* cfg, int backup_level) iniSetBytes(&ini, ROOT_SECTION, "max_log_size", 1, cfg->max_log_size, NULL); iniSetShortInt(&ini, ROOT_SECTION, "max_logs_kept", cfg->max_logs_kept, NULL); iniSetHexInt(&ini, ROOT_SECTION, "ctrlkey_passthru", cfg->ctrlkey_passthru, NULL); - iniSetUInteger(&ini, ROOT_SECTION, "max_getkey_inactivity", cfg->max_getkey_inactivity, NULL); + iniSetDuration(&ini, ROOT_SECTION, "max_getkey_inactivity", cfg->max_getkey_inactivity, NULL); iniSetShortInt(&ini, ROOT_SECTION, "inactivity_warn", cfg->inactivity_warn, NULL); iniSetShortInt(&ini, ROOT_SECTION, "user_backup_level", cfg->user_backup_level, NULL); iniSetShortInt(&ini, ROOT_SECTION, "mail_backup_level", cfg->mail_backup_level, NULL); @@ -947,7 +947,7 @@ BOOL write_xtrn_cfg(scfg_t* cfg, int backup_level) iniSetString(§ion, name, "startup_dir", cfg->xtrn[i]->path, NULL); iniSetShortInt(§ion, name, "textra", cfg->xtrn[i]->textra, NULL); iniSetShortInt(§ion, name, "max_time", cfg->xtrn[i]->maxtime, NULL); - iniSetUInteger(§ion, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL); + iniSetDuration(§ion, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL); strListMerge(&ini, section); free(section); } -- GitLab