Skip to content
Snippets Groups Projects
Commit 2ad81713 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

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!
parent 6e64c31f
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #3956 passed
......@@ -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;
......
......@@ -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);
......
......@@ -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);
......
......@@ -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(&section, name, "startup_dir", cfg->xtrn[i]->path, NULL);
iniSetShortInt(&section, name, "textra", cfg->xtrn[i]->textra, NULL);
iniSetShortInt(&section, name, "max_time", cfg->xtrn[i]->maxtime, NULL);
iniSetUInteger(&section, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL);
iniSetDuration(&section, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL);
strListMerge(&ini, section);
free(section);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment