diff --git a/src/sbbs3/scfg/scfgsys.c b/src/sbbs3/scfg/scfgsys.c index af731cc960298de0185ef5ecca4b0a3e5186f504..bc02fa561720117dba75c794ab2706fe6644b367 100644 --- a/src/sbbs3/scfg/scfgsys.c +++ b/src/sbbs3/scfg/scfgsys.c @@ -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; diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h index aa0bcc026a45fe725a458863b7dffe8806443103..dc464782f73292517226a2289116bae03db79e22 100644 --- a/src/sbbs3/scfgdefs.h +++ b/src/sbbs3/scfgdefs.h @@ -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]; diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index 2daba463ee589f0f5efe2c315ca35c62c1a1101d..784ebea4b9317a33acd72a8fc664d152d41eee99 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -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)); diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c index ff0d439ea36c5d137bc450faab265d539421532d..2e4a3a794c2514358742af39aea17307ef7cfec7 100644 --- a/src/sbbs3/scfgsave.c +++ b/src/sbbs3/scfgsave.c @@ -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); diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp index 2b3797854c097685b8b68edd655525ae4b34accf..92f94277434fc0715d2c1305d98b941e03a3cb00 100644 --- a/src/sbbs3/useredit.cpp +++ b/src/sbbs3/useredit.cpp @@ -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);