Added simultaneous bbs login check
This commit is contained in:
parent
ca7a083e7d
commit
c672771758
16
ChangeLog
16
ChangeLog
@ -7,12 +7,28 @@ $Id$
|
||||
|
||||
v0.37.5 12-Jul-2003
|
||||
|
||||
upgrade:
|
||||
Check settings menu 1.5.21 for maximum allowed logins.
|
||||
|
||||
common.a:
|
||||
Node locking tests for non-stale lockfiles older then 6 hours.
|
||||
|
||||
mbcico:
|
||||
Implemented CRAM rev.4 change in binkp driver.
|
||||
|
||||
mbsebbs:
|
||||
Added check for maximum simultaneous logins.
|
||||
Removed debug logging for userrecord i/o
|
||||
|
||||
mbsetup:
|
||||
Added menu entry 1.5.21 for setting maximum allowed logins.
|
||||
|
||||
mbtask:
|
||||
On new installations sets max logins to 1.
|
||||
|
||||
lang:
|
||||
Added language prompts 18 and 19.
|
||||
|
||||
|
||||
v0.37.4 10-May-2003 - 12-Jul-2003
|
||||
|
||||
|
44
TODO
44
TODO
@ -12,6 +12,7 @@ $Id$
|
||||
Classes: U = Urgent.
|
||||
N = Normal, second priority.
|
||||
L = Cosmetic or nice to have.
|
||||
X = Will not be done unless it's really needed.
|
||||
|
||||
install:
|
||||
N: On some (unsupported) distro's with xinetd the installation script
|
||||
@ -22,9 +23,9 @@ libdiesel.a:
|
||||
processed, instead the previous macro value will be returned.
|
||||
|
||||
mbsebbs:
|
||||
L: Better word wrapping or paragraph justification in editor.
|
||||
X: Better word wrapping or paragraph justification in editor.
|
||||
|
||||
L: E-mail downloads with e-mail verification.
|
||||
X: E-mail downloads with e-mail verification.
|
||||
|
||||
N: OLR, implement file requests.
|
||||
|
||||
@ -32,17 +33,17 @@ mbsebbs:
|
||||
|
||||
L: ChangeHandle, allow own unix name as handle.
|
||||
|
||||
L: OLR: tagged areas must have 3 states, off, on or personal only.
|
||||
X: OLR: tagged areas must have 3 states, off, on or personal only.
|
||||
|
||||
L: OLR: implement limit date function.
|
||||
X: OLR: implement limit date function.
|
||||
|
||||
L: OLR: include private email area in download packets.
|
||||
X: OLR: include private email area in download packets.
|
||||
|
||||
L: OLR: implement some global settings from the offline configuration.
|
||||
X: OLR: implement some global settings from the offline configuration.
|
||||
|
||||
L: OLR: implement keywords and filters.
|
||||
X: OLR: implement keywords and filters.
|
||||
|
||||
L: OLR: check qwke extensions.
|
||||
X: OLR: check qwke extensions.
|
||||
|
||||
N: OLR: qwk, check netmail entered from reader, fido address missing?
|
||||
|
||||
@ -59,10 +60,10 @@ mbfido:
|
||||
|
||||
N: Count posted messages during mailscan.
|
||||
|
||||
U: Code cleanup and make a structure in this program. Remove duplicate
|
||||
N: Code cleanup and make a structure in this program. Remove duplicate
|
||||
or similar functions.
|
||||
|
||||
N: Remove memory leak during toss. (It's ok for less 5000 messages for
|
||||
L: Remove memory leak during toss. (It's ok for less 5000 messages for
|
||||
each run).
|
||||
|
||||
N: Process GoldED filerequest netmails with the filereq flag set, we
|
||||
@ -84,7 +85,7 @@ mbfido:
|
||||
|
||||
L: Maybe store echomail for unknown areas in badmail area.
|
||||
|
||||
N: Make ik possible to only virus scan the complete archives.
|
||||
L: Make ik possible to only virus scan the complete archives.
|
||||
|
||||
N: Force processing of arealists so that all tags are forced to
|
||||
uppercase. Seems to give problems in some nets.
|
||||
@ -99,23 +100,24 @@ mbfido:
|
||||
|
||||
mbcico:
|
||||
N: Doesn't poll internet nodes with non-standard ports when the
|
||||
FQDN:port is in the override field.
|
||||
FQDN:port is in the override field. -- Check this !
|
||||
|
||||
N: See if it is possible with binkp protocol to resume aborted
|
||||
transfers.
|
||||
transfers. -- ND option ??
|
||||
|
||||
N: Implement binkp resync when getting files. Transmit works.
|
||||
|
||||
mbfile:
|
||||
N: Add a check to see if the magic filenames are (still) valid.
|
||||
L: Add a check to see if the magic filenames are (still) valid.
|
||||
|
||||
N: Update <filespec> <area> <-touch>
|
||||
L: Update <filespec> <area> <-touch>
|
||||
|
||||
N: Rearc <area>
|
||||
L: Rearc <area>
|
||||
|
||||
N: Possibility to skip file areas from checking and reindexing.
|
||||
L: Possibility to skip file areas from checking and reindexing.
|
||||
|
||||
N: Override timeout during virus scan when files are imported.
|
||||
-- Check, already done?
|
||||
|
||||
N: Add area sorting
|
||||
|
||||
@ -128,21 +130,23 @@ mbaff:
|
||||
L: Add setup parameters for minimum length of keywords.
|
||||
|
||||
mbindex:
|
||||
N: Add usernames index.
|
||||
X: Add usernames index.
|
||||
|
||||
mbnewusr:
|
||||
N: On NetBSD, supress error message from mbpasswd.
|
||||
-- Currently no access to my old Sun Sparcstation.
|
||||
|
||||
mbsetup:
|
||||
N: Add a check for double areatag names.
|
||||
|
||||
U: PickAka function lets mbsetup crash if domain is 12 characters
|
||||
-- Check, still so?
|
||||
|
||||
N: Use some sort of sorting for the system aka's and make sure the
|
||||
main aka with zone's is listed first. Having zone's mixed gives
|
||||
too high outbound stats and the outbound is scanned multiple times.
|
||||
|
||||
N: Put ZMH fields in the network setup for each zone.
|
||||
N: Put ZMH fields in the network setup for each zone. Currently Z1-6.
|
||||
|
||||
N: Add switch for file area to skip checking and indexing.
|
||||
|
||||
@ -152,7 +156,7 @@ mbsetup:
|
||||
N: Add global setup in menus 9.1 and 10.1 at least to change uplink
|
||||
data.
|
||||
|
||||
L: Generate crossreference document:
|
||||
X: Generate crossreference document:
|
||||
File Areas <=> BBS groups
|
||||
File Areas <=> Newfiles groups
|
||||
Filefind flags <=> TIC Areas
|
||||
|
@ -12,7 +12,7 @@
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<BLOCKQUOTE>
|
||||
<div align="right"><h5>Last update 12-Jul-2003</h5></div>
|
||||
<div align="right"><h5>Last update 29-Jul-2003</h5></div>
|
||||
|
||||
<div align="center"><H1>MBSE BBS Setup - Global Setup</H1></div>
|
||||
<P>
|
||||
@ -118,10 +118,11 @@ files.
|
||||
<strong>CrashMail level </strong>Minimum level to allow sending netmail crash
|
||||
<strong>FileAttach level </strong>Minimum level to allow attach files to netmail
|
||||
<strong>Min diskspace MB </strong>At which low diskspace level utilities should stop working.
|
||||
<strong>Simult. logins </strong>Maximum simultaneous logins allowed, 0 is unlimited, 1 is adviced.
|
||||
</pre>
|
||||
The minimum diskspace setting is to prevent that files get corrupted if your filesystem
|
||||
is full. All drives are checked except CD-roms and floppies and the /boot directory if that
|
||||
one is on a separate filesystem. Ext2, reiserfs, msdos and vfat partitions
|
||||
one is on a separate filesystem. Ext2, ext3, reiserfs, msdos and vfat partitions
|
||||
are checked. The lowest free diskspace found counts. Default is 10 MB.
|
||||
<p>
|
||||
|
||||
|
@ -16,8 +16,8 @@
|
||||
15 change.c |Offline Reader: Extended Info turned ON
|
||||
16 change.c |Offline Reader: Extended Info turned OFF
|
||||
17 file.c |This is not a plain textfile.
|
||||
18 .c |
|
||||
19 .c |
|
||||
18 user.c |You may only login
|
||||
19 user.c |times at the same time
|
||||
20 .c |
|
||||
21 .c |
|
||||
22 .c |
|
||||
|
@ -16,8 +16,8 @@ HR|Exporteer naar (H)ome of (R)egels directory:
|
||||
|Offline Reader: Uitgebreide Informatie is nu AAN
|
||||
|Offline Reader: Uitgebreide Informatie is nu UIT
|
||||
|Dit is geen normaal tekst bestand
|
||||
|
|
||||
|
|
||||
|U mag maar
|
||||
|keer tegelijk inloggen
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -16,8 +16,8 @@ HR|Export to (H)ome or (R)ules directory:
|
||||
|Offline Reader: Extended Info turned ON
|
||||
|Offline Reader: Extended Info turned OFF
|
||||
|This is not a plain textfile.
|
||||
|
|
||||
|
|
||||
|You may only login
|
||||
|times at the same time
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -16,8 +16,8 @@ HR|Exportar
|
||||
|Lector Offline: Informaci¢n extendida ACTIVADA
|
||||
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
||||
|This is not a plain textfile.
|
||||
|
|
||||
|
|
||||
|You may only login
|
||||
|times at the same time
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -16,8 +16,8 @@ HR|Export in (H)ome oder (R)ules Direktorie:
|
||||
|Offline Reader: Extended Info turned ON
|
||||
|Offline Reader: Extended Info turned OFF
|
||||
|This is not a plain textfile.
|
||||
|
|
||||
|
|
||||
|You may only login
|
||||
|times at the same time
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -16,8 +16,8 @@ HR|Export to (H)ome or (R)ules directory:
|
||||
|Offline Reader: Extended Info turned ON
|
||||
|Offline Reader: Extended Info turned OFF
|
||||
|This is not a plain textfile.
|
||||
|
|
||||
|
|
||||
|You may only login
|
||||
|times at the same time
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -16,8 +16,8 @@ PR|Exportar al directorio (P)ersonal o de (R)eglas:
|
||||
|Lector Offline: Informaci¢n extendida ACTIVADA
|
||||
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
||||
|This is not a plain textfile.
|
||||
|
|
||||
|
|
||||
|You may only login
|
||||
|times at the same time
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@ -551,7 +551,7 @@ struct sysconfig {
|
||||
unsigned leavecase : 1; /* Leave outbound case */
|
||||
|
||||
/* BBS Globals */
|
||||
int xmax_login;
|
||||
int max_logins; /* Max simult. logins */
|
||||
unsigned NewAreas : 1; /* Notify if new msg areas */
|
||||
unsigned xelite_mode : 1;
|
||||
unsigned slow_util : 1; /* Run utils slowly */
|
||||
|
@ -80,10 +80,7 @@ void Good_Bye(int onsig)
|
||||
|
||||
usrconfig = exitinfo;
|
||||
fclose(pExitinfo);
|
||||
|
||||
usrconfig.iLastFileArea = iAreaNumber;
|
||||
if (!iAreaNumber)
|
||||
WriteError("Setting filearea to zero");
|
||||
|
||||
/* If time expired, do not say say successful logoff */
|
||||
if (!iExpired)
|
||||
@ -92,8 +89,6 @@ void Good_Bye(int onsig)
|
||||
usrconfig.iLastMsgArea = iMsgAreaNumber;
|
||||
|
||||
offset = usrconfighdr.hdrsize + (grecno * usrconfighdr.recsize);
|
||||
Syslog('b', "hdrsize=%ld recsize=%ld grecno=%ld", usrconfighdr.hdrsize, usrconfighdr.recsize, grecno);
|
||||
Syslog('b', "Good_Bye: write users.data at offset %ld", offset);
|
||||
if (fseek(pUsrConfig, offset, SEEK_SET) != 0) {
|
||||
WriteError("Can't move pointer in file %s", temp);
|
||||
ExitClient(MBERR_GENERAL);
|
||||
@ -121,10 +116,9 @@ void Good_Bye(int onsig)
|
||||
|
||||
/*
|
||||
* Flush all data to the user, wait 5 seconds to
|
||||
* be sure the user received all data, this program
|
||||
* and parent are also finished.
|
||||
* be sure the user received all data.
|
||||
*/
|
||||
colour(7, 0);
|
||||
colour(LIGHTGRAY, BLACK);
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
sleep(5);
|
||||
@ -151,7 +145,7 @@ void Quick_Bye(int onsig)
|
||||
unlink(temp);
|
||||
free(temp);
|
||||
|
||||
colour(7, 0);
|
||||
colour(LIGHTGRAY, BLACK);
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
sleep(3);
|
||||
|
@ -69,7 +69,6 @@ int InitExitinfo()
|
||||
|
||||
fread(&usrconfighdr, sizeof(usrconfighdr), 1, pUsrConfig);
|
||||
offset = usrconfighdr.hdrsize + (grecno * usrconfighdr.recsize);
|
||||
Syslog('b', "InitExitinfo: read users.data offset %ld", offset);
|
||||
if (fseek(pUsrConfig, offset, 0) != 0) {
|
||||
WriteError("$Can't move pointer in %s", temp);
|
||||
free(temp);
|
||||
|
@ -175,9 +175,9 @@ void SwapDate(char *Date3, char *Date4)
|
||||
void user()
|
||||
{
|
||||
FILE *pUsrConfig, *pLimits;
|
||||
int i, x, FoundName = FALSE, iFoundLimit = FALSE, IsNew = FALSE;
|
||||
int i, x, FoundName = FALSE, iFoundLimit = FALSE, IsNew = FALSE, logins = 0, Start;
|
||||
long l1, l2;
|
||||
char *token, temp[PATH_MAX], temp1[84], UserName[37];
|
||||
char *token, temp[PATH_MAX], temp1[84], UserName[37], buf[128], *fullname;
|
||||
time_t LastLogin;
|
||||
struct stat st;
|
||||
|
||||
@ -256,7 +256,44 @@ void user()
|
||||
UserCity(mypid, usrconfig.Name, usrconfig.sLocation);
|
||||
else
|
||||
UserCity(mypid, usrconfig.Name, (char *)"N/A");
|
||||
TermInit(usrconfig.GraphMode);
|
||||
|
||||
/*
|
||||
* Count simultaneous logins
|
||||
*/
|
||||
Start = TRUE;
|
||||
while (TRUE) {
|
||||
if (Start)
|
||||
sprintf(buf, "GMON:1,1;");
|
||||
else
|
||||
sprintf(buf, "GMON:1,0;");
|
||||
Start = FALSE;
|
||||
if (socket_send(buf) == 0) {
|
||||
strcpy(buf, socket_receive());
|
||||
if (strncmp(buf, "100:0;", 6) == 0)
|
||||
break; /* No more data */
|
||||
if (strstr(buf, "mbsebbs")) {
|
||||
/*
|
||||
* Only mbsebbs is wanted
|
||||
*/
|
||||
strtok(buf, ","); /* response */
|
||||
strtok(NULL, ","); /* pid */
|
||||
strtok(NULL, ","); /* tty */
|
||||
fullname = xstrcpy(strtok(NULL, ",")); /* username */
|
||||
if (strcmp(fullname, usrconfig.Name) == 0) {
|
||||
logins++;
|
||||
}
|
||||
free(fullname);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CFG.max_logins && (logins > CFG.max_logins)) {
|
||||
Syslog('+', "User logins %d, allowed %d, disconnecting", logins, CFG.max_logins);
|
||||
colour(LIGHTRED, BLACK);
|
||||
printf("%s %d %s\n", (char *) Language(18), CFG.max_logins, (char *) Language(19));
|
||||
Quick_Bye(MBERR_INIT_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set last file and message area so these numbers are saved when
|
||||
* the user hangs up or is logged off before het gets to the main
|
||||
@ -284,8 +321,6 @@ void user()
|
||||
if (usrconfig.iTotalCalls == 0)
|
||||
IsNew = TRUE;
|
||||
|
||||
TermInit(usrconfig.GraphMode);
|
||||
|
||||
/*
|
||||
* Pause after logo screen.
|
||||
*/
|
||||
|
@ -333,88 +333,91 @@ void e_global(void)
|
||||
|
||||
void b_screen(void)
|
||||
{
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 2, "1.5 EDIT GLOBAL SETTINGS");
|
||||
set_color(CYAN, BLACK);
|
||||
mvprintw( 7, 2, "1. Exclude Sysop");
|
||||
mvprintw( 8, 2, "2. Show Connect");
|
||||
mvprintw( 9, 2, "3. Ask Protocols");
|
||||
mvprintw(10, 2, "4. Sysop Level");
|
||||
mvprintw(11, 2, "5. Password Length");
|
||||
mvprintw(12, 2, "6. Passwd Character");
|
||||
mvprintw(13, 2, "7. Idle timeout");
|
||||
mvprintw(14, 2, "8. Login Enters");
|
||||
mvprintw(15, 2, "9. Homedir Quota");
|
||||
mvprintw(16, 2, "10. Location length");
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 2, "1.5 EDIT GLOBAL SETTINGS");
|
||||
set_color(CYAN, BLACK);
|
||||
mvprintw( 7, 2, "1. Exclude Sysop");
|
||||
mvprintw( 8, 2, "2. Show Connect");
|
||||
mvprintw( 9, 2, "3. Ask Protocols");
|
||||
mvprintw(10, 2, "4. Sysop Level");
|
||||
mvprintw(11, 2, "5. Password Length");
|
||||
mvprintw(12, 2, "6. Passwd Character");
|
||||
mvprintw(13, 2, "7. Idle timeout");
|
||||
mvprintw(14, 2, "8. Login Enters");
|
||||
mvprintw(15, 2, "9. Homedir Quota");
|
||||
mvprintw(16, 2, "10. Location length");
|
||||
mvprintw(17, 2, "11. Show new msgarea");
|
||||
|
||||
mvprintw( 7,37, "12. OLR Max. msgs.");
|
||||
mvprintw( 8,37, "13. OLR Newfile days");
|
||||
mvprintw( 9,37, "14. OLR Max Filereq");
|
||||
mvprintw(10,37, "15. BBS Log Level");
|
||||
mvprintw(11,37, "16. Utils loglevel");
|
||||
mvprintw(12,37, "17. Utils slowly");
|
||||
mvprintw(13,37, "18. CrashMail level");
|
||||
mvprintw(14,37, "19. FileAttach level");
|
||||
mvprintw(15,37, "20. Min diskspace MB");
|
||||
mvprintw(16,37, "21. Simult. logins");
|
||||
|
||||
mvprintw( 7,37, "11. Show new msgarea");
|
||||
mvprintw( 8,37, "12. OLR Max. msgs.");
|
||||
mvprintw( 9,37, "13. OLR Newfile days");
|
||||
mvprintw(10,37, "14. OLR Max Filereq");
|
||||
mvprintw(11,37, "15. BBS Log Level");
|
||||
mvprintw(12,37, "16. Utils loglevel");
|
||||
mvprintw(13,37, "17. Utils slowly");
|
||||
mvprintw(14,37, "18. CrashMail level");
|
||||
mvprintw(15,37, "19. FileAttach level");
|
||||
mvprintw(16,37, "20. Min diskspace MB");
|
||||
set_color(WHITE, BLACK);
|
||||
show_bool( 7,24, CFG.exclude_sysop);
|
||||
show_bool( 8,24, CFG.iConnectString);
|
||||
show_bool( 9,24, CFG.iAskFileProtocols);
|
||||
show_int( 10,24, CFG.sysop_access);
|
||||
show_int( 11,24, CFG.password_length);
|
||||
show_int( 12,24, CFG.iPasswd_Char);
|
||||
show_int( 13,24, CFG.idleout);
|
||||
show_int( 14,24, CFG.iCRLoginCount);
|
||||
show_int( 15,24, CFG.iQuota);
|
||||
show_int( 16,24, CFG.CityLen);
|
||||
show_bool(17,24, CFG.NewAreas);
|
||||
|
||||
set_color(WHITE, BLACK);
|
||||
show_bool( 7,24, CFG.exclude_sysop);
|
||||
show_bool( 8,24, CFG.iConnectString);
|
||||
show_bool( 9,24, CFG.iAskFileProtocols);
|
||||
show_int( 10,24, CFG.sysop_access);
|
||||
show_int( 11,24, CFG.password_length);
|
||||
show_int( 12,24, CFG.iPasswd_Char);
|
||||
show_int( 13,24, CFG.idleout);
|
||||
show_int( 14,24, CFG.iCRLoginCount);
|
||||
show_int( 15,24, CFG.iQuota);
|
||||
show_int( 16,24, CFG.CityLen);
|
||||
|
||||
show_bool( 7,59, CFG.NewAreas);
|
||||
show_int( 8,59, CFG.OLR_MaxMsgs);
|
||||
show_int( 9,59, CFG.OLR_NewFileLimit);
|
||||
show_int( 10,59, CFG.OLR_MaxReq);
|
||||
show_logl(11,59, CFG.bbs_loglevel);
|
||||
show_logl(12,59, CFG.util_loglevel);
|
||||
show_bool(13,59, CFG.slow_util);
|
||||
show_int( 14,59, CFG.iCrashLevel);
|
||||
show_int( 15,59, CFG.iAttachLevel);
|
||||
show_int( 16,59, CFG.freespace);
|
||||
show_int( 7,59, CFG.OLR_MaxMsgs);
|
||||
show_int( 8,59, CFG.OLR_NewFileLimit);
|
||||
show_int( 9,59, CFG.OLR_MaxReq);
|
||||
show_logl(10,59, CFG.bbs_loglevel);
|
||||
show_logl(11,59, CFG.util_loglevel);
|
||||
show_bool(12,59, CFG.slow_util);
|
||||
show_int( 13,59, CFG.iCrashLevel);
|
||||
show_int( 14,59, CFG.iAttachLevel);
|
||||
show_int( 15,59, CFG.freespace);
|
||||
show_int( 16,59, CFG.max_logins);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void e_bbsglob(void)
|
||||
{
|
||||
b_screen();
|
||||
b_screen();
|
||||
|
||||
for (;;) {
|
||||
switch(select_menu(20)) {
|
||||
case 0: return;
|
||||
case 1: E_BOOL( 7,24, CFG.exclude_sysop, "^Exclude^ sysop from lists.")
|
||||
case 2: E_BOOL( 8,24, CFG.iConnectString, "Show ^connect string^ at logon")
|
||||
case 3: E_BOOL( 9,24, CFG.iAskFileProtocols, "Ask ^file protocol^ before every up- download")
|
||||
case 4: E_INT( 10,24, CFG.sysop_access, "Sysop ^access level^")
|
||||
case 5: E_INT( 11,24, CFG.password_length, "Mimimum ^password^ length.")
|
||||
case 6: E_INT( 12,24, CFG.iPasswd_Char, "Ascii number of ^password^ character")
|
||||
case 7: E_INT( 13,24, CFG.idleout, "^Idle timeout^ in minutes")
|
||||
case 8: E_INT( 14,24, CFG.iCRLoginCount, "Maximum ^Login Return^ count")
|
||||
case 9: E_INT( 15,24, CFG.iQuota, "Maximum ^Quota^ in MBytes in users homedirectory");
|
||||
case 10:E_INT( 16,24, CFG.CityLen, "Minimum ^Location name^ length (3..6)")
|
||||
for (;;) {
|
||||
switch(select_menu(21)) {
|
||||
case 0: return;
|
||||
case 1: E_BOOL( 7,24, CFG.exclude_sysop, "^Exclude^ sysop from lists.")
|
||||
case 2: E_BOOL( 8,24, CFG.iConnectString, "Show ^connect string^ at logon")
|
||||
case 3: E_BOOL( 9,24, CFG.iAskFileProtocols, "Ask ^file protocol^ before every up- download")
|
||||
case 4: E_INT( 10,24, CFG.sysop_access, "Sysop ^access level^")
|
||||
case 5: E_INT( 11,24, CFG.password_length, "Mimimum ^password^ length.")
|
||||
case 6: E_INT( 12,24, CFG.iPasswd_Char, "Ascii number of ^password^ character")
|
||||
case 7: E_INT( 13,24, CFG.idleout, "^Idle timeout^ in minutes")
|
||||
case 8: E_INT( 14,24, CFG.iCRLoginCount, "Maximum ^Login Return^ count")
|
||||
case 9: E_INT( 15,24, CFG.iQuota, "Maximum ^Quota^ in MBytes in users homedirectory");
|
||||
case 10:E_INT( 16,24, CFG.CityLen, "Minimum ^Location name^ length (3..6)")
|
||||
case 11:E_BOOL(17,24, CFG.NewAreas, "Show ^new^ or ^deleted^ message areas to the user at login.")
|
||||
|
||||
case 11:E_BOOL( 7,59, CFG.NewAreas, "Show ^new^ or ^deleted^ message areas to the user at login.")
|
||||
case 12:E_INT( 8,59, CFG.OLR_MaxMsgs, "^Maximum messages^ to pack for download (0=unlimited)")
|
||||
case 13:E_INT( 9,59, CFG.OLR_NewFileLimit, "^Limit Newfiles^ listing for maximum days")
|
||||
case 14:E_INT( 10,59, CFG.OLR_MaxReq, "Maximum ^Filerequests^ to honor")
|
||||
case 15:E_LOGL(CFG.bbs_loglevel, "1.5.15", b_screen)
|
||||
case 16:E_LOGL(CFG.util_loglevel, "1.5.16", b_screen)
|
||||
case 17:E_BOOL(13,59, CFG.slow_util, "Let background utilities run ^slowly^")
|
||||
case 18:E_INT( 14,59, CFG.iCrashLevel, "The user level to allow sending ^CrashMail^")
|
||||
case 19:E_INT( 15,59, CFG.iAttachLevel, "The user level to allow sending ^File Attaches^")
|
||||
case 20:E_INT( 16,59, CFG.freespace, "Minimum ^free diskspace^ in MBytes on filesystems")
|
||||
}
|
||||
};
|
||||
case 12:E_INT( 7,59, CFG.OLR_MaxMsgs, "^Maximum messages^ to pack for download (0=unlimited)")
|
||||
case 13:E_INT( 8,59, CFG.OLR_NewFileLimit, "^Limit Newfiles^ listing for maximum days")
|
||||
case 14:E_INT( 9,59, CFG.OLR_MaxReq, "Maximum ^Filerequests^ to honor")
|
||||
case 15:E_LOGL(CFG.bbs_loglevel, "1.5.15", b_screen)
|
||||
case 16:E_LOGL(CFG.util_loglevel, "1.5.16", b_screen)
|
||||
case 17:E_BOOL(12,59, CFG.slow_util, "Let background utilities run ^slowly^")
|
||||
case 18:E_INT( 13,59, CFG.iCrashLevel, "The user level to allow sending ^CrashMail^")
|
||||
case 19:E_INT( 14,59, CFG.iAttachLevel, "The user level to allow sending ^File Attaches^")
|
||||
case 20:E_INT( 15,59, CFG.freespace, "Minimum ^free diskspace^ in MBytes on filesystems")
|
||||
case 21:E_INT( 16,59, CFG.max_logins, "Maximum ^simultaneous logins^ allowed, 0 means unlimited")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1462,26 +1465,6 @@ void global_menu(void)
|
||||
crc = 0xffffffff;
|
||||
crc = upd_crc32((char *)&CFG, crc, sizeof(CFG));
|
||||
|
||||
if (CFG.xmax_login) {
|
||||
/*
|
||||
* Do automatic upgrade for unused fields, erase them.
|
||||
*/
|
||||
Syslog('+', "Main config, clearing unused fields");
|
||||
memset(&CFG.alists_path, 0, sizeof(CFG.alists_path));
|
||||
CFG.xmax_login = 0;
|
||||
CFG.xUseSysDomain = FALSE;
|
||||
CFG.xChkMail = FALSE;
|
||||
memset(&CFG.xquotestr, 0, sizeof(CFG.xquotestr));
|
||||
CFG.xNewBytes = FALSE;
|
||||
memset(&CFG.extra4, 0, sizeof(CFG.extra4));
|
||||
memset(&CFG.xmgrname, 0, sizeof(CFG.xmgrname));
|
||||
memset(&CFG.xtoss_log, 0, sizeof(CFG.xtoss_log));
|
||||
memset(&CFG.xareamgr, 0, sizeof(CFG.xareamgr));
|
||||
CFG.xNoJanus = FALSE;
|
||||
memset(&CFG.extra5, 0, sizeof(CFG.extra5));
|
||||
sprintf(CFG.alists_path, "%s/var/arealists", getenv("MBSE_ROOT"));
|
||||
}
|
||||
|
||||
if (strlen(CFG.bbs_macros) == 0) {
|
||||
sprintf(CFG.bbs_macros, "%s/english/macro", getenv("MBSE_ROOT"));
|
||||
Syslog('+', "Main config, upgraded default macro path");
|
||||
@ -1774,6 +1757,10 @@ int global_doc(FILE *fp, FILE *toc, int page)
|
||||
fprintf(fp, " CrashMail level %d\n", CFG.iCrashLevel);
|
||||
fprintf(fp, " FileAttach level %d\n", CFG.iAttachLevel);
|
||||
fprintf(fp, " Free diskspace %d MB.\n", CFG.freespace);
|
||||
if (CFG.max_logins)
|
||||
fprintf(fp, " Simult. logins %d\n", CFG.max_logins);
|
||||
else
|
||||
fprintf(fp, " Simult. logins unlimited\n");
|
||||
|
||||
page = newpage(fp, page);
|
||||
addtoc(fp, toc, 1, 7, page, (char *)"Users flag descriptions");
|
||||
|
@ -201,6 +201,7 @@ void load_maincfg(void)
|
||||
CFG.iCrashLevel = 100;
|
||||
CFG.iAttachLevel = 100;
|
||||
CFG.new_groups = 25;
|
||||
CFG.max_logins = 1;
|
||||
|
||||
CFG.slow_util = TRUE;
|
||||
CFG.iCrashLevel = 100;
|
||||
|
Reference in New Issue
Block a user