From c6727717584fde46f93fa3d4cc778b0725df83d4 Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Tue, 29 Jul 2003 20:42:38 +0000 Subject: [PATCH] Added simultaneous bbs login check --- ChangeLog | 16 ++++ TODO | 44 ++++++----- html/setup/global.html | 5 +- lang/Language.xref | 4 +- lang/dutch.txt | 4 +- lang/english.txt | 4 +- lang/galego.txt | 4 +- lang/german.txt | 4 +- lang/italian.txt | 4 +- lang/spanish.txt | 4 +- lib/structs.h | 2 +- mbsebbs/bye.c | 12 +-- mbsebbs/exitinfo.c | 1 - mbsebbs/user.c | 43 ++++++++++- mbsetup/m_global.c | 171 +++++++++++++++++++---------------------- mbtask/mbtask.c | 1 + 16 files changed, 180 insertions(+), 143 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce0ff481..c4312f4c 100644 --- a/ChangeLog +++ b/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 diff --git a/TODO b/TODO index 06ce2a96..375cf1c0 100644 --- a/TODO +++ b/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 <-touch> + L: Update <-touch> - N: Rearc + L: Rearc - 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 diff --git a/html/setup/global.html b/html/setup/global.html index 38a5f1ba..b40947f1 100644 --- a/html/setup/global.html +++ b/html/setup/global.html @@ -12,7 +12,7 @@
-
Last update 12-Jul-2003
+
Last update 29-Jul-2003

MBSE BBS Setup - Global Setup

@@ -118,10 +118,11 @@ files. CrashMail level Minimum level to allow sending netmail crash FileAttach level Minimum level to allow attach files to netmail Min diskspace MB At which low diskspace level utilities should stop working. +Simult. logins Maximum simultaneous logins allowed, 0 is unlimited, 1 is adviced. 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.

diff --git a/lang/Language.xref b/lang/Language.xref index e1d5e01c..5c9a2b56 100644 --- a/lang/Language.xref +++ b/lang/Language.xref @@ -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 | diff --git a/lang/dutch.txt b/lang/dutch.txt index 0153e6c0..2fae01c6 100644 --- a/lang/dutch.txt +++ b/lang/dutch.txt @@ -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 | | | diff --git a/lang/english.txt b/lang/english.txt index 028287bc..89b9056d 100644 --- a/lang/english.txt +++ b/lang/english.txt @@ -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 | | | diff --git a/lang/galego.txt b/lang/galego.txt index 57e98bf8..697e7fbb 100644 --- a/lang/galego.txt +++ b/lang/galego.txt @@ -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 | | | diff --git a/lang/german.txt b/lang/german.txt index 7d79ccb3..0bc925cc 100644 --- a/lang/german.txt +++ b/lang/german.txt @@ -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 | | | diff --git a/lang/italian.txt b/lang/italian.txt index bdecd58f..a70276be 100644 --- a/lang/italian.txt +++ b/lang/italian.txt @@ -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 | | | diff --git a/lang/spanish.txt b/lang/spanish.txt index 3d2b8cc1..439e1829 100644 --- a/lang/spanish.txt +++ b/lang/spanish.txt @@ -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 | | | diff --git a/lib/structs.h b/lib/structs.h index d6d34c5e..5bea43e7 100644 --- a/lib/structs.h +++ b/lib/structs.h @@ -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 */ diff --git a/mbsebbs/bye.c b/mbsebbs/bye.c index 223af6de..4060d893 100644 --- a/mbsebbs/bye.c +++ b/mbsebbs/bye.c @@ -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); diff --git a/mbsebbs/exitinfo.c b/mbsebbs/exitinfo.c index d0392096..722b7cc5 100644 --- a/mbsebbs/exitinfo.c +++ b/mbsebbs/exitinfo.c @@ -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); diff --git a/mbsebbs/user.c b/mbsebbs/user.c index 7aaa340c..1a9b1370 100644 --- a/mbsebbs/user.c +++ b/mbsebbs/user.c @@ -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. */ diff --git a/mbsetup/m_global.c b/mbsetup/m_global.c index 39c22e1e..25c82374 100644 --- a/mbsetup/m_global.c +++ b/mbsetup/m_global.c @@ -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"); diff --git a/mbtask/mbtask.c b/mbtask/mbtask.c index 2ad3b64f..aa1d1004 100644 --- a/mbtask/mbtask.c +++ b/mbtask/mbtask.c @@ -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;