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
|
v0.37.5 12-Jul-2003
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
Check settings menu 1.5.21 for maximum allowed logins.
|
||||||
|
|
||||||
common.a:
|
common.a:
|
||||||
Node locking tests for non-stale lockfiles older then 6 hours.
|
Node locking tests for non-stale lockfiles older then 6 hours.
|
||||||
|
|
||||||
mbcico:
|
mbcico:
|
||||||
Implemented CRAM rev.4 change in binkp driver.
|
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
|
v0.37.4 10-May-2003 - 12-Jul-2003
|
||||||
|
|
||||||
|
44
TODO
44
TODO
@ -12,6 +12,7 @@ $Id$
|
|||||||
Classes: U = Urgent.
|
Classes: U = Urgent.
|
||||||
N = Normal, second priority.
|
N = Normal, second priority.
|
||||||
L = Cosmetic or nice to have.
|
L = Cosmetic or nice to have.
|
||||||
|
X = Will not be done unless it's really needed.
|
||||||
|
|
||||||
install:
|
install:
|
||||||
N: On some (unsupported) distro's with xinetd the installation script
|
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.
|
processed, instead the previous macro value will be returned.
|
||||||
|
|
||||||
mbsebbs:
|
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.
|
N: OLR, implement file requests.
|
||||||
|
|
||||||
@ -32,17 +33,17 @@ mbsebbs:
|
|||||||
|
|
||||||
L: ChangeHandle, allow own unix name as handle.
|
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?
|
N: OLR: qwk, check netmail entered from reader, fido address missing?
|
||||||
|
|
||||||
@ -59,10 +60,10 @@ mbfido:
|
|||||||
|
|
||||||
N: Count posted messages during mailscan.
|
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.
|
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).
|
each run).
|
||||||
|
|
||||||
N: Process GoldED filerequest netmails with the filereq flag set, we
|
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.
|
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
|
N: Force processing of arealists so that all tags are forced to
|
||||||
uppercase. Seems to give problems in some nets.
|
uppercase. Seems to give problems in some nets.
|
||||||
@ -99,23 +100,24 @@ mbfido:
|
|||||||
|
|
||||||
mbcico:
|
mbcico:
|
||||||
N: Doesn't poll internet nodes with non-standard ports when the
|
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
|
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.
|
N: Implement binkp resync when getting files. Transmit works.
|
||||||
|
|
||||||
mbfile:
|
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.
|
N: Override timeout during virus scan when files are imported.
|
||||||
|
-- Check, already done?
|
||||||
|
|
||||||
N: Add area sorting
|
N: Add area sorting
|
||||||
|
|
||||||
@ -128,21 +130,23 @@ mbaff:
|
|||||||
L: Add setup parameters for minimum length of keywords.
|
L: Add setup parameters for minimum length of keywords.
|
||||||
|
|
||||||
mbindex:
|
mbindex:
|
||||||
N: Add usernames index.
|
X: Add usernames index.
|
||||||
|
|
||||||
mbnewusr:
|
mbnewusr:
|
||||||
N: On NetBSD, supress error message from mbpasswd.
|
N: On NetBSD, supress error message from mbpasswd.
|
||||||
|
-- Currently no access to my old Sun Sparcstation.
|
||||||
|
|
||||||
mbsetup:
|
mbsetup:
|
||||||
N: Add a check for double areatag names.
|
N: Add a check for double areatag names.
|
||||||
|
|
||||||
U: PickAka function lets mbsetup crash if domain is 12 characters
|
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
|
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
|
main aka with zone's is listed first. Having zone's mixed gives
|
||||||
too high outbound stats and the outbound is scanned multiple times.
|
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.
|
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
|
N: Add global setup in menus 9.1 and 10.1 at least to change uplink
|
||||||
data.
|
data.
|
||||||
|
|
||||||
L: Generate crossreference document:
|
X: Generate crossreference document:
|
||||||
File Areas <=> BBS groups
|
File Areas <=> BBS groups
|
||||||
File Areas <=> Newfiles groups
|
File Areas <=> Newfiles groups
|
||||||
Filefind flags <=> TIC Areas
|
Filefind flags <=> TIC Areas
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
</HEAD>
|
</HEAD>
|
||||||
<BODY>
|
<BODY>
|
||||||
<BLOCKQUOTE>
|
<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>
|
<div align="center"><H1>MBSE BBS Setup - Global Setup</H1></div>
|
||||||
<P>
|
<P>
|
||||||
@ -118,10 +118,11 @@ files.
|
|||||||
<strong>CrashMail level </strong>Minimum level to allow sending netmail crash
|
<strong>CrashMail level </strong>Minimum level to allow sending netmail crash
|
||||||
<strong>FileAttach level </strong>Minimum level to allow attach files to netmail
|
<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>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>
|
</pre>
|
||||||
The minimum diskspace setting is to prevent that files get corrupted if your filesystem
|
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
|
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.
|
are checked. The lowest free diskspace found counts. Default is 10 MB.
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
15 change.c |Offline Reader: Extended Info turned ON
|
15 change.c |Offline Reader: Extended Info turned ON
|
||||||
16 change.c |Offline Reader: Extended Info turned OFF
|
16 change.c |Offline Reader: Extended Info turned OFF
|
||||||
17 file.c |This is not a plain textfile.
|
17 file.c |This is not a plain textfile.
|
||||||
18 .c |
|
18 user.c |You may only login
|
||||||
19 .c |
|
19 user.c |times at the same time
|
||||||
20 .c |
|
20 .c |
|
||||||
21 .c |
|
21 .c |
|
||||||
22 .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 AAN
|
||||||
|Offline Reader: Uitgebreide Informatie is nu UIT
|
|Offline Reader: Uitgebreide Informatie is nu UIT
|
||||||
|Dit is geen normaal tekst bestand
|
|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 ON
|
||||||
|Offline Reader: Extended Info turned OFF
|
|Offline Reader: Extended Info turned OFF
|
||||||
|This is not a plain textfile.
|
|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 ACTIVADA
|
||||||
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
||||||
|This is not a plain textfile.
|
|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 ON
|
||||||
|Offline Reader: Extended Info turned OFF
|
|Offline Reader: Extended Info turned OFF
|
||||||
|This is not a plain textfile.
|
|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 ON
|
||||||
|Offline Reader: Extended Info turned OFF
|
|Offline Reader: Extended Info turned OFF
|
||||||
|This is not a plain textfile.
|
|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 ACTIVADA
|
||||||
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
|Lector Offline: Informaci¢n extendida DESACTIVADA
|
||||||
|This is not a plain textfile.
|
|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 */
|
unsigned leavecase : 1; /* Leave outbound case */
|
||||||
|
|
||||||
/* BBS Globals */
|
/* BBS Globals */
|
||||||
int xmax_login;
|
int max_logins; /* Max simult. logins */
|
||||||
unsigned NewAreas : 1; /* Notify if new msg areas */
|
unsigned NewAreas : 1; /* Notify if new msg areas */
|
||||||
unsigned xelite_mode : 1;
|
unsigned xelite_mode : 1;
|
||||||
unsigned slow_util : 1; /* Run utils slowly */
|
unsigned slow_util : 1; /* Run utils slowly */
|
||||||
|
@ -80,10 +80,7 @@ void Good_Bye(int onsig)
|
|||||||
|
|
||||||
usrconfig = exitinfo;
|
usrconfig = exitinfo;
|
||||||
fclose(pExitinfo);
|
fclose(pExitinfo);
|
||||||
|
|
||||||
usrconfig.iLastFileArea = iAreaNumber;
|
usrconfig.iLastFileArea = iAreaNumber;
|
||||||
if (!iAreaNumber)
|
|
||||||
WriteError("Setting filearea to zero");
|
|
||||||
|
|
||||||
/* If time expired, do not say say successful logoff */
|
/* If time expired, do not say say successful logoff */
|
||||||
if (!iExpired)
|
if (!iExpired)
|
||||||
@ -92,8 +89,6 @@ void Good_Bye(int onsig)
|
|||||||
usrconfig.iLastMsgArea = iMsgAreaNumber;
|
usrconfig.iLastMsgArea = iMsgAreaNumber;
|
||||||
|
|
||||||
offset = usrconfighdr.hdrsize + (grecno * usrconfighdr.recsize);
|
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) {
|
if (fseek(pUsrConfig, offset, SEEK_SET) != 0) {
|
||||||
WriteError("Can't move pointer in file %s", temp);
|
WriteError("Can't move pointer in file %s", temp);
|
||||||
ExitClient(MBERR_GENERAL);
|
ExitClient(MBERR_GENERAL);
|
||||||
@ -121,10 +116,9 @@ void Good_Bye(int onsig)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush all data to the user, wait 5 seconds to
|
* Flush all data to the user, wait 5 seconds to
|
||||||
* be sure the user received all data, this program
|
* be sure the user received all data.
|
||||||
* and parent are also finished.
|
|
||||||
*/
|
*/
|
||||||
colour(7, 0);
|
colour(LIGHTGRAY, BLACK);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
fflush(stdin);
|
fflush(stdin);
|
||||||
sleep(5);
|
sleep(5);
|
||||||
@ -151,7 +145,7 @@ void Quick_Bye(int onsig)
|
|||||||
unlink(temp);
|
unlink(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
|
|
||||||
colour(7, 0);
|
colour(LIGHTGRAY, BLACK);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
fflush(stdin);
|
fflush(stdin);
|
||||||
sleep(3);
|
sleep(3);
|
||||||
|
@ -69,7 +69,6 @@ int InitExitinfo()
|
|||||||
|
|
||||||
fread(&usrconfighdr, sizeof(usrconfighdr), 1, pUsrConfig);
|
fread(&usrconfighdr, sizeof(usrconfighdr), 1, pUsrConfig);
|
||||||
offset = usrconfighdr.hdrsize + (grecno * usrconfighdr.recsize);
|
offset = usrconfighdr.hdrsize + (grecno * usrconfighdr.recsize);
|
||||||
Syslog('b', "InitExitinfo: read users.data offset %ld", offset);
|
|
||||||
if (fseek(pUsrConfig, offset, 0) != 0) {
|
if (fseek(pUsrConfig, offset, 0) != 0) {
|
||||||
WriteError("$Can't move pointer in %s", temp);
|
WriteError("$Can't move pointer in %s", temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
|
@ -175,9 +175,9 @@ void SwapDate(char *Date3, char *Date4)
|
|||||||
void user()
|
void user()
|
||||||
{
|
{
|
||||||
FILE *pUsrConfig, *pLimits;
|
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;
|
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;
|
time_t LastLogin;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
@ -256,6 +256,43 @@ void user()
|
|||||||
UserCity(mypid, usrconfig.Name, usrconfig.sLocation);
|
UserCity(mypid, usrconfig.Name, usrconfig.sLocation);
|
||||||
else
|
else
|
||||||
UserCity(mypid, usrconfig.Name, (char *)"N/A");
|
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
|
* Set last file and message area so these numbers are saved when
|
||||||
@ -284,8 +321,6 @@ void user()
|
|||||||
if (usrconfig.iTotalCalls == 0)
|
if (usrconfig.iTotalCalls == 0)
|
||||||
IsNew = TRUE;
|
IsNew = TRUE;
|
||||||
|
|
||||||
TermInit(usrconfig.GraphMode);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pause after logo screen.
|
* Pause after logo screen.
|
||||||
*/
|
*/
|
||||||
|
@ -333,88 +333,91 @@ void e_global(void)
|
|||||||
|
|
||||||
void b_screen(void)
|
void b_screen(void)
|
||||||
{
|
{
|
||||||
clr_index();
|
clr_index();
|
||||||
set_color(WHITE, BLACK);
|
set_color(WHITE, BLACK);
|
||||||
mvprintw( 5, 2, "1.5 EDIT GLOBAL SETTINGS");
|
mvprintw( 5, 2, "1.5 EDIT GLOBAL SETTINGS");
|
||||||
set_color(CYAN, BLACK);
|
set_color(CYAN, BLACK);
|
||||||
mvprintw( 7, 2, "1. Exclude Sysop");
|
mvprintw( 7, 2, "1. Exclude Sysop");
|
||||||
mvprintw( 8, 2, "2. Show Connect");
|
mvprintw( 8, 2, "2. Show Connect");
|
||||||
mvprintw( 9, 2, "3. Ask Protocols");
|
mvprintw( 9, 2, "3. Ask Protocols");
|
||||||
mvprintw(10, 2, "4. Sysop Level");
|
mvprintw(10, 2, "4. Sysop Level");
|
||||||
mvprintw(11, 2, "5. Password Length");
|
mvprintw(11, 2, "5. Password Length");
|
||||||
mvprintw(12, 2, "6. Passwd Character");
|
mvprintw(12, 2, "6. Passwd Character");
|
||||||
mvprintw(13, 2, "7. Idle timeout");
|
mvprintw(13, 2, "7. Idle timeout");
|
||||||
mvprintw(14, 2, "8. Login Enters");
|
mvprintw(14, 2, "8. Login Enters");
|
||||||
mvprintw(15, 2, "9. Homedir Quota");
|
mvprintw(15, 2, "9. Homedir Quota");
|
||||||
mvprintw(16, 2, "10. Location length");
|
mvprintw(16, 2, "10. Location length");
|
||||||
|
mvprintw(17, 2, "11. Show new msgarea");
|
||||||
|
|
||||||
mvprintw( 7,37, "11. Show new msgarea");
|
mvprintw( 7,37, "12. OLR Max. msgs.");
|
||||||
mvprintw( 8,37, "12. OLR Max. msgs.");
|
mvprintw( 8,37, "13. OLR Newfile days");
|
||||||
mvprintw( 9,37, "13. OLR Newfile days");
|
mvprintw( 9,37, "14. OLR Max Filereq");
|
||||||
mvprintw(10,37, "14. OLR Max Filereq");
|
mvprintw(10,37, "15. BBS Log Level");
|
||||||
mvprintw(11,37, "15. BBS Log Level");
|
mvprintw(11,37, "16. Utils loglevel");
|
||||||
mvprintw(12,37, "16. Utils loglevel");
|
mvprintw(12,37, "17. Utils slowly");
|
||||||
mvprintw(13,37, "17. Utils slowly");
|
mvprintw(13,37, "18. CrashMail level");
|
||||||
mvprintw(14,37, "18. CrashMail level");
|
mvprintw(14,37, "19. FileAttach level");
|
||||||
mvprintw(15,37, "19. FileAttach level");
|
mvprintw(15,37, "20. Min diskspace MB");
|
||||||
mvprintw(16,37, "20. Min diskspace MB");
|
mvprintw(16,37, "21. Simult. logins");
|
||||||
|
|
||||||
set_color(WHITE, BLACK);
|
set_color(WHITE, BLACK);
|
||||||
show_bool( 7,24, CFG.exclude_sysop);
|
show_bool( 7,24, CFG.exclude_sysop);
|
||||||
show_bool( 8,24, CFG.iConnectString);
|
show_bool( 8,24, CFG.iConnectString);
|
||||||
show_bool( 9,24, CFG.iAskFileProtocols);
|
show_bool( 9,24, CFG.iAskFileProtocols);
|
||||||
show_int( 10,24, CFG.sysop_access);
|
show_int( 10,24, CFG.sysop_access);
|
||||||
show_int( 11,24, CFG.password_length);
|
show_int( 11,24, CFG.password_length);
|
||||||
show_int( 12,24, CFG.iPasswd_Char);
|
show_int( 12,24, CFG.iPasswd_Char);
|
||||||
show_int( 13,24, CFG.idleout);
|
show_int( 13,24, CFG.idleout);
|
||||||
show_int( 14,24, CFG.iCRLoginCount);
|
show_int( 14,24, CFG.iCRLoginCount);
|
||||||
show_int( 15,24, CFG.iQuota);
|
show_int( 15,24, CFG.iQuota);
|
||||||
show_int( 16,24, CFG.CityLen);
|
show_int( 16,24, CFG.CityLen);
|
||||||
|
show_bool(17,24, CFG.NewAreas);
|
||||||
|
|
||||||
show_bool( 7,59, CFG.NewAreas);
|
show_int( 7,59, CFG.OLR_MaxMsgs);
|
||||||
show_int( 8,59, CFG.OLR_MaxMsgs);
|
show_int( 8,59, CFG.OLR_NewFileLimit);
|
||||||
show_int( 9,59, CFG.OLR_NewFileLimit);
|
show_int( 9,59, CFG.OLR_MaxReq);
|
||||||
show_int( 10,59, CFG.OLR_MaxReq);
|
show_logl(10,59, CFG.bbs_loglevel);
|
||||||
show_logl(11,59, CFG.bbs_loglevel);
|
show_logl(11,59, CFG.util_loglevel);
|
||||||
show_logl(12,59, CFG.util_loglevel);
|
show_bool(12,59, CFG.slow_util);
|
||||||
show_bool(13,59, CFG.slow_util);
|
show_int( 13,59, CFG.iCrashLevel);
|
||||||
show_int( 14,59, CFG.iCrashLevel);
|
show_int( 14,59, CFG.iAttachLevel);
|
||||||
show_int( 15,59, CFG.iAttachLevel);
|
show_int( 15,59, CFG.freespace);
|
||||||
show_int( 16,59, CFG.freespace);
|
show_int( 16,59, CFG.max_logins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void e_bbsglob(void)
|
void e_bbsglob(void)
|
||||||
{
|
{
|
||||||
b_screen();
|
b_screen();
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
switch(select_menu(20)) {
|
switch(select_menu(21)) {
|
||||||
case 0: return;
|
case 0: return;
|
||||||
case 1: E_BOOL( 7,24, CFG.exclude_sysop, "^Exclude^ sysop from lists.")
|
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 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 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 4: E_INT( 10,24, CFG.sysop_access, "Sysop ^access level^")
|
||||||
case 5: E_INT( 11,24, CFG.password_length, "Mimimum ^password^ length.")
|
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 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 7: E_INT( 13,24, CFG.idleout, "^Idle timeout^ in minutes")
|
||||||
case 8: E_INT( 14,24, CFG.iCRLoginCount, "Maximum ^Login Return^ count")
|
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 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 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( 7,59, CFG.OLR_MaxMsgs, "^Maximum messages^ to pack for download (0=unlimited)")
|
||||||
case 12:E_INT( 8,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 13:E_INT( 9,59, CFG.OLR_NewFileLimit, "^Limit Newfiles^ listing for maximum days")
|
case 14:E_INT( 9,59, CFG.OLR_MaxReq, "Maximum ^Filerequests^ to honor")
|
||||||
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 15:E_LOGL(CFG.bbs_loglevel, "1.5.15", b_screen)
|
case 16:E_LOGL(CFG.util_loglevel, "1.5.16", 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 17:E_BOOL(13,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 18:E_INT( 14,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 19:E_INT( 15,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 20:E_INT( 16,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 = 0xffffffff;
|
||||||
crc = upd_crc32((char *)&CFG, crc, sizeof(CFG));
|
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) {
|
if (strlen(CFG.bbs_macros) == 0) {
|
||||||
sprintf(CFG.bbs_macros, "%s/english/macro", getenv("MBSE_ROOT"));
|
sprintf(CFG.bbs_macros, "%s/english/macro", getenv("MBSE_ROOT"));
|
||||||
Syslog('+', "Main config, upgraded default macro path");
|
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, " CrashMail level %d\n", CFG.iCrashLevel);
|
||||||
fprintf(fp, " FileAttach level %d\n", CFG.iAttachLevel);
|
fprintf(fp, " FileAttach level %d\n", CFG.iAttachLevel);
|
||||||
fprintf(fp, " Free diskspace %d MB.\n", CFG.freespace);
|
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);
|
page = newpage(fp, page);
|
||||||
addtoc(fp, toc, 1, 7, page, (char *)"Users flag descriptions");
|
addtoc(fp, toc, 1, 7, page, (char *)"Users flag descriptions");
|
||||||
|
@ -201,6 +201,7 @@ void load_maincfg(void)
|
|||||||
CFG.iCrashLevel = 100;
|
CFG.iCrashLevel = 100;
|
||||||
CFG.iAttachLevel = 100;
|
CFG.iAttachLevel = 100;
|
||||||
CFG.new_groups = 25;
|
CFG.new_groups = 25;
|
||||||
|
CFG.max_logins = 1;
|
||||||
|
|
||||||
CFG.slow_util = TRUE;
|
CFG.slow_util = TRUE;
|
||||||
CFG.iCrashLevel = 100;
|
CFG.iCrashLevel = 100;
|
||||||
|
Reference in New Issue
Block a user