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

Add optional User (Settings) Configuration loadable module

When used, replaces built-in user (e.g. terminal) settings menu with a
loadable (e.g. JS) module.
parent c0831592
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #4748 passed
......@@ -2837,6 +2837,7 @@ void sys_cfg(void)
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","Logoff",cfg.logoff_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","Logout",cfg.logout_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","New User",cfg.newuser_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","User Config",cfg.usercfg_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","Expired User",cfg.expire_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","Auto Message",cfg.automsg_mod);
snprintf(opt[i++],MAX_OPLN,"%-16.16s%s","Send Feedback",cfg.feedback_mod);
......@@ -2873,6 +2874,7 @@ void sys_cfg(void)
"`Logoff` Terminal logoff procedure (interactive)\n"
"`Logout` Terminal logout procedure (off-line)\n"
"`New User` End of new terminal user creation process\n"
"`User Config` User (e.g. terminal) settings configuration menu\n"
"`Expired User` User account expires (off-line)\n"
"`Auto Message` User chooses to re-read or edit the auto-message\n"
"`Send Feedback` User sending email to a sysop (return error to cancel)\n"
......@@ -2931,90 +2933,94 @@ void sys_cfg(void)
,cfg.newuser_mod,sizeof(cfg.newuser_mod)-1,K_EDIT);
break;
case 6:
uifc.input(WIN_MID | WIN_SAV, 0, 0, "User Configuration"
, cfg.usercfg_mod, sizeof(cfg.usercfg_mod) - 1, K_EDIT);
break;
case 7:
uifc.input(WIN_MID|WIN_SAV,0,0,"Expired User Module"
,cfg.expire_mod,sizeof(cfg.expire_mod)-1,K_EDIT);
break;
case 7:
case 8:
uifc.input(WIN_MID|WIN_SAV,0,0,"Auto Message Module"
,cfg.automsg_mod,sizeof(cfg.automsg_mod)-1,K_EDIT);
break;
case 8:
case 9:
uifc.input(WIN_MID|WIN_SAV,0,0,"Send Feedback Module"
,cfg.feedback_mod,sizeof(cfg.feedback_mod)-1,K_EDIT);
break;
case 9:
case 10:
uifc.input(WIN_MID|WIN_SAV,0,0,"Chat Section Module"
,cfg.chatsec_mod,sizeof(cfg.chatsec_mod)-1,K_EDIT);
break;
case 10:
case 11:
uifc.input(WIN_MID|WIN_SAV,0,0,"Text File Section Module"
,cfg.textsec_mod,sizeof(cfg.textsec_mod)-1,K_EDIT);
break;
case 11:
case 12:
uifc.input(WIN_MID|WIN_SAV,0,0,"External Program Section Module"
,cfg.xtrnsec_mod,sizeof(cfg.xtrnsec_mod)-1,K_EDIT);
break;
case 12:
case 13:
uifc.input(WIN_MID|WIN_SAV,0,0,"Pre External Program Module"
,cfg.prextrn_mod,sizeof(cfg.prextrn_mod)-1,K_EDIT);
break;
case 13:
case 14:
uifc.input(WIN_MID|WIN_SAV,0,0,"Post External Program Module"
,cfg.postxtrn_mod,sizeof(cfg.postxtrn_mod)-1,K_EDIT);
break;
case 14:
case 15:
uifc.input(WIN_MID|WIN_SAV,0,0,"Read Mail Module"
,cfg.readmail_mod,sizeof(cfg.readmail_mod)-1,K_EDIT);
break;
case 15:
case 16:
uifc.input(WIN_MID|WIN_SAV,0,0,"Scan Msgs Module"
,cfg.scanposts_mod,sizeof(cfg.scanposts_mod)-1,K_EDIT);
break;
case 16:
case 17:
uifc.input(WIN_MID|WIN_SAV,0,0,"Scan Subs Module"
,cfg.scansubs_mod,sizeof(cfg.scansubs_mod)-1,K_EDIT);
break;
case 17:
case 18:
uifc.input(WIN_MID|WIN_SAV,0,0,"List Msgs Module"
,cfg.listmsgs_mod,sizeof(cfg.listmsgs_mod)-1,K_EDIT);
break;
case 18:
case 19:
uifc.input(WIN_MID|WIN_SAV,0,0,"List Logons Module"
,cfg.logonlist_mod,sizeof(cfg.logonlist_mod)-1,K_EDIT);
break;
case 19:
case 20:
uifc.input(WIN_MID|WIN_SAV,0,0,"List Users"
,cfg.userlist_mod,sizeof(cfg.userlist_mod)-1,K_EDIT);
break;
case 20:
case 21:
uifc.input(WIN_MID|WIN_SAV,0,0,"List Nodes Module"
,cfg.nodelist_mod,sizeof(cfg.nodelist_mod)-1,K_EDIT);
break;
case 21:
case 22:
uifc.input(WIN_MID|WIN_SAV,0,0,"Who's Online Module"
,cfg.whosonline_mod,sizeof(cfg.whosonline_mod)-1,K_EDIT);
break;
case 22:
case 23:
uifc.input(WIN_MID|WIN_SAV,0,0,"Private Message Module"
,cfg.privatemsg_mod,sizeof(cfg.privatemsg_mod)-1,K_EDIT);
break;
case 23:
case 24:
uifc.input(WIN_MID|WIN_SAV,0,0,"Scan Dirs Module"
,cfg.scandirs_mod,sizeof(cfg.scandirs_mod)-1,K_EDIT);
break;
case 24:
case 25:
uifc.input(WIN_MID|WIN_SAV,0,0,"List Files Module"
,cfg.listfiles_mod,sizeof(cfg.listfiles_mod)-1,K_EDIT);
break;
case 25:
case 26:
uifc.input(WIN_MID|WIN_SAV,0,0,"View File Information Module"
,cfg.fileinfo_mod,sizeof(cfg.fileinfo_mod)-1,K_EDIT);
break;
case 26:
case 27:
uifc.input(WIN_MID|WIN_SAV,0,0,"Batch File Transfer Module"
,cfg.batxfer_mod, sizeof(cfg.batxfer_mod)-1, K_EDIT);
break;
case 27:
case 28:
uifc.input(WIN_MID|WIN_SAV,0,0,"Temporary File Transfer Module"
,cfg.tempxfer_mod, sizeof(cfg.tempxfer_mod)-1, K_EDIT);
break;
......
......@@ -610,6 +610,7 @@ typedef struct
char privatemsg_mod[LEN_CMD+1];
char logonlist_mod[LEN_CMD+1];
char userlist_mod[LEN_CMD+1];
char usercfg_mod[LEN_CMD+1];
char prextrn_mod[LEN_CMD+1]; /* External Program pre-execution module */
char postxtrn_mod[LEN_CMD+1]; /* External Program post-execution module */
char tempxfer_mod[LEN_CMD+1];
......
......@@ -230,6 +230,7 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
SAFECOPY(cfg->logon_mod, iniGetString(section, NULL, "logon", "logon", value));
SAFECOPY(cfg->logoff_mod, iniGetString(section, NULL, "logoff", "", value));
SAFECOPY(cfg->newuser_mod, iniGetString(section, NULL, "newuser", "newuser", value));
SAFECOPY(cfg->usercfg_mod, iniGetString(section, NULL, "usercfg", "", value));
SAFECOPY(cfg->login_mod, iniGetString(section, NULL, "login", "login", value));
SAFECOPY(cfg->logout_mod, iniGetString(section, NULL, "logout", "", value));
SAFECOPY(cfg->sync_mod, iniGetString(section, NULL, "sync", "", value));
......
......@@ -238,6 +238,7 @@ BOOL write_main_cfg(scfg_t* cfg)
iniSetString(&ini, name, "logon", cfg->logon_mod, NULL);
iniSetString(&ini, name, "logoff", cfg->logoff_mod, NULL);
iniSetString(&ini, name, "newuser", cfg->newuser_mod, NULL);
iniSetString(&ini, name, "usercfg", cfg->usercfg_mod, NULL);
iniSetString(&ini, name, "login", cfg->login_mod, NULL);
iniSetString(&ini, name, "logout", cfg->logout_mod, NULL);
iniSetString(&ini, name, "sync", cfg->sync_mod, NULL);
......
......@@ -718,6 +718,12 @@ void sbbs_t::maindflts(user_t* user)
int i;
action=NODE_DFLT;
if (cfg.usercfg_mod[0]) {
char cmdline[256];
snprintf(cmdline, sizeof(cmdline), "%s %u", cfg.usercfg_mod, user->number);
exec_bin(cmdline, &main_csi);
return;
}
while(online) {
CLS;
getuserdat(&cfg,user);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment