Fixed safe cracker door, added setup for safe door
This commit is contained in:
parent
5a57e59627
commit
faa9dcbe4f
@ -4585,6 +4585,7 @@ v0.33.19 26-Oct-2001
|
||||
v0.33.20 10-Feb-2002
|
||||
|
||||
upgrade:
|
||||
Remove /opt/mbse/etc/safe.data
|
||||
Compile sources and install binaries. Restart the BBS.
|
||||
Enter mbsetup, this will upgrade the databases.
|
||||
Go into global configuration, exit and save, this will update
|
||||
@ -4669,6 +4670,10 @@ v0.33.20 10-Feb-2002
|
||||
Some dangerous menus cannot be entered anymore while some
|
||||
programs are being used, ie. the bbs must be free. When these
|
||||
menus are entered, the bbs will be closed for use.
|
||||
Added menu 8.6, edit BBS list entries.
|
||||
Fixed numbering of menu 8.7, edit oneliners.
|
||||
Added menu 8.8 for safe crackers data. If the safe is cracked
|
||||
it can now be reset.
|
||||
|
||||
mbmon:
|
||||
The top statusbar now displays the bbs Free/Down/Busy status.
|
||||
@ -4836,6 +4841,9 @@ v0.33.20 10-Feb-2002
|
||||
When a user has no Location filled in, the bbs doesn't crash
|
||||
anymore.
|
||||
The new files scan colored areasnames bar length is corrected.
|
||||
Fixed the problems with the safecracker door. Removed the
|
||||
cheat codes and added a delay for the display of the safe
|
||||
opening.
|
||||
|
||||
mbnewusr:
|
||||
New users have the default internal fullscreen editor.
|
||||
|
@ -12,7 +12,7 @@
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<BLOCKQUOTE>
|
||||
<h5>Last update 25-Oct-2001</h5>
|
||||
<h5>Last update 05-May-2002</h5>
|
||||
<P> <P>
|
||||
|
||||
<H1>mbsetup - The Setup Program</H1>
|
||||
@ -34,7 +34,14 @@ When <b>mbsetup</b> is started without arguments the databases will be checked
|
||||
and initialized before the main screen is displayed.
|
||||
Both methods are being used to make sure all needed databases excist.
|
||||
For a detailed description of all setup options see
|
||||
<A HREF="../setup/index.htm">MBSE BBS Setup Guide</A>
|
||||
<A HREF="../setup/index.htm">MBSE BBS Setup Guide</A><br>
|
||||
<b>mbsetup</b> uses locking to protect the system databases. Some setup menus
|
||||
can only be entered if the bbs is free, ie. no users logged on, no mailer
|
||||
sessions, not tossing mail etc. If the bbs is free, then these menus can be
|
||||
entered and the bbs will be closed. No users can login, tossers do not run etc.
|
||||
Only mailer calls are still accepted. So be carefull not to stay too long in
|
||||
these menus, you are blocking normal bbs use. In the top status bar this
|
||||
situation is displayed.
|
||||
<P> <P>
|
||||
|
||||
<H3>Environment.</H3>
|
||||
|
38
lib/faddr.c
38
lib/faddr.c
@ -62,31 +62,49 @@ char *aka2str(fidoaddr aka)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Try to create a aka structure of a string.
|
||||
*/
|
||||
fidoaddr str2aka(char *addr)
|
||||
{
|
||||
char a[256];
|
||||
static char b[43];
|
||||
char *temp;
|
||||
fidoaddr n;
|
||||
char *p, *temp = NULL;
|
||||
static fidoaddr n;
|
||||
|
||||
sprintf(b, "%s~", addr);
|
||||
n.zone = 0;
|
||||
n.net = 0;
|
||||
n.node = 0;
|
||||
n.point = 0;
|
||||
n.domain[0] = '\0';
|
||||
|
||||
if ((strchr(b, ':') == NULL) || (strchr(b, '@') == NULL))
|
||||
/*
|
||||
* Safety check
|
||||
*/
|
||||
if (strlen(addr) > 42)
|
||||
return n;
|
||||
|
||||
sprintf(b, "%s~", addr);
|
||||
if ((strchr(b, ':') == NULL) || (strchr(b, '/') == NULL))
|
||||
return n;
|
||||
|
||||
/* First split the f:n/n.p and domain part
|
||||
/*
|
||||
* First split the f:n/n.p and domain part
|
||||
*/
|
||||
temp = strtok(b, "@");
|
||||
strcpy(n.domain, strtok(NULL, "~"));
|
||||
if ((strchr(b, '@'))) {
|
||||
temp = strtok(b, "@");
|
||||
p = strtok(NULL, "~");
|
||||
if (p)
|
||||
strcpy(n.domain, p);
|
||||
}
|
||||
|
||||
/* Handle f:n/n.p part
|
||||
/*
|
||||
* Handle f:n/n.p part
|
||||
*/
|
||||
strcpy(a, strcat(temp, "~"));
|
||||
if (temp)
|
||||
strcpy(a, strcat(temp, "~"));
|
||||
else
|
||||
strcpy(a, b);
|
||||
if (strchr(a, '.') == NULL) {
|
||||
n.zone = atoi(strtok(a, ":"));
|
||||
n.net = atoi(strtok(NULL, "/"));
|
||||
@ -101,5 +119,3 @@ fidoaddr str2aka(char *addr)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -117,7 +117,7 @@ void BBS_Add(void)
|
||||
pout(15, 0, (char *) Language(303));
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
GetstrC(bbs.Phone[0], 20);
|
||||
GetstrC(bbs.Phone[0], 19);
|
||||
|
||||
if((strlen(bbs.Phone[0])) > 3)
|
||||
break;
|
||||
@ -163,7 +163,7 @@ void BBS_Add(void)
|
||||
pout(15, 0, (char *) Language(307));
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
GetstrC(bbs.Speeds[0], 40);
|
||||
GetstrC(bbs.Speeds[0], 39);
|
||||
|
||||
if((strlen(bbs.Speeds[0])) > 2)
|
||||
break;
|
||||
@ -181,11 +181,11 @@ void BBS_Add(void)
|
||||
pout(15, 0, (char *)": ");
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
GetstrC(bbs.Desc[0], 71);
|
||||
GetstrC(bbs.Desc[0], 65);
|
||||
pout(15, 0, (char *)": ");
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
GetstrC(bbs.Desc[1], 71);
|
||||
GetstrC(bbs.Desc[1], 65);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
578
mbsebbs/safe.c
578
mbsebbs/safe.c
@ -49,10 +49,11 @@ FILE *pSafe;
|
||||
|
||||
int iLoop, iFirst, iSecond, iThird;
|
||||
char sFirst[4], sSecond[4], sThird[4];
|
||||
|
||||
int cracked;
|
||||
int tries;
|
||||
|
||||
int getdigits(void);
|
||||
int SafeCheckUser(void);
|
||||
int SafeCheckUser(int);
|
||||
|
||||
|
||||
|
||||
@ -63,6 +64,8 @@ void Safe(void)
|
||||
|
||||
isize = sizeof(int);
|
||||
srand(Time_Now);
|
||||
cracked = FALSE;
|
||||
tries = 0;
|
||||
|
||||
WhosDoingWhat(SAFE);
|
||||
|
||||
@ -77,7 +80,7 @@ void Safe(void)
|
||||
|
||||
DisplayFile(CFG.sSafeWelcome);
|
||||
|
||||
if (SafeCheckUser() == TRUE)
|
||||
if (SafeCheckUser(TRUE) == TRUE)
|
||||
return;
|
||||
|
||||
/* In the safe lies */
|
||||
@ -115,8 +118,10 @@ void Safe(void)
|
||||
*/
|
||||
while (TRUE) {
|
||||
/* Get digits, TRUE if safe cracked. */
|
||||
if (getdigits() == TRUE)
|
||||
break;
|
||||
if (getdigits() == TRUE) {
|
||||
SafeCheckUser(FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
Enter(1);
|
||||
/* Do you want to try again ? [Y/n]: */
|
||||
@ -125,10 +130,12 @@ void Safe(void)
|
||||
|
||||
alarm_on();
|
||||
i = toupper(Getone());
|
||||
if (i == Keystroke(101, 1))
|
||||
break;
|
||||
if (i == Keystroke(101, 1)) {
|
||||
SafeCheckUser(FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
if (SafeCheckUser() == TRUE)
|
||||
if (SafeCheckUser(FALSE) == TRUE)
|
||||
break;
|
||||
}
|
||||
Syslog('+', "User exited Safe Cracker Door");
|
||||
@ -141,211 +148,179 @@ void Safe(void)
|
||||
*/
|
||||
int getdigits(void)
|
||||
{
|
||||
long result;
|
||||
int i;
|
||||
char temp[81];
|
||||
int i;
|
||||
char temp[81];
|
||||
|
||||
colour(WHITE, BLACK);
|
||||
/* Please enter three numbers consisting from 1 to */
|
||||
printf("\n\n%s%d\n", (char *) Language(89), CFG.iSafeMaxNumber);
|
||||
/* Please enter three combinations. */
|
||||
printf("%s", (char *) Language(90));
|
||||
colour(WHITE, BLACK);
|
||||
/* Please enter three numbers consisting from 1 to */
|
||||
printf("\n\n%s%d\n", (char *) Language(89), CFG.iSafeMaxNumber);
|
||||
/* Please enter three combinations. */
|
||||
printf("%s", (char *) Language(90));
|
||||
|
||||
while (TRUE) {
|
||||
Enter(2);
|
||||
/* 1st Digit */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(91));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sFirst, 2);
|
||||
sprintf(temp, "1st: %s", sFirst);
|
||||
if((strcmp(sFirst, "")) != 0) {
|
||||
Syslog('-', temp);
|
||||
iFirst=atoi(sFirst);
|
||||
}
|
||||
|
||||
if((iFirst > CFG.iSafeMaxNumber) || (iFirst <= 0) || (strcmp(sFirst, "") == 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
Syslog('-', "Value out of range!");
|
||||
} else
|
||||
break;
|
||||
while (TRUE) {
|
||||
Enter(2);
|
||||
/* 1st Digit */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(91));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sFirst, 2);
|
||||
sprintf(temp, "1st: %s", sFirst);
|
||||
if((strcmp(sFirst, "")) != 0) {
|
||||
iFirst=atoi(sFirst);
|
||||
}
|
||||
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
/* 2nd digit: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(93));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sSecond, 2);
|
||||
sprintf(temp, "2nd: %s", sSecond);
|
||||
if((strcmp(sSecond, "")) != 0) {
|
||||
Syslog('-', temp);
|
||||
iSecond=atoi(sSecond);
|
||||
}
|
||||
if((iFirst > CFG.iSafeMaxNumber) || (iFirst <= 0) || (strcmp(sFirst, "") == 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
if((iSecond > CFG.iSafeMaxNumber) || (iSecond <= 0) || (strcmp(sSecond, "") == 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
Syslog('-', "Value out of range!");
|
||||
} else
|
||||
break;
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
/* 2nd digit: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(93));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sSecond, 2);
|
||||
sprintf(temp, "2nd: %s", sSecond);
|
||||
if((strcmp(sSecond, "")) != 0) {
|
||||
iSecond=atoi(sSecond);
|
||||
}
|
||||
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
pout(LIGHTRED, BLACK, (char *) Language(94));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sThird, 2);
|
||||
if((strcmp(sThird, "")) != 0) {
|
||||
if((strcmp(sThird, "737") != 0) && (strcmp(sThird, "747") != 0)) {
|
||||
sprintf(temp, "3rd: %s", sThird);
|
||||
Syslog('!', temp);
|
||||
} else {
|
||||
sprintf(temp, "3rd: %d", CFG.iSafeMaxNumber - 1);
|
||||
Syslog('-', temp);
|
||||
}
|
||||
}
|
||||
iThird=atoi(sThird);
|
||||
if((iSecond > CFG.iSafeMaxNumber) || (iSecond <= 0) || (strcmp(sSecond, "") == 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
if((iThird == 737) || (iThird == 747))
|
||||
break;
|
||||
|
||||
if((iThird > CFG.iSafeMaxNumber) || (iThird <= 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
Syslog('-', "Value out of range!");
|
||||
} else
|
||||
break;
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
pout(LIGHTRED, BLACK, (char *) Language(94));
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
fflush(stdout);
|
||||
Getnum(sThird, 2);
|
||||
sprintf(temp, "3rd: %s", sThird);
|
||||
if((strcmp(sThird, "")) != 0) {
|
||||
iThird=atoi(sThird);
|
||||
}
|
||||
|
||||
if((iThird > CFG.iSafeMaxNumber) || (iThird <= 0) || (strcmp(sThird, "") == 0)) {
|
||||
colour(WHITE, BLUE);
|
||||
/* Please try again! You must input a number greater than Zero and less than */
|
||||
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
/* Left: */
|
||||
Enter(1);
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
poutCR(LIGHTBLUE, BLACK, sFirst);
|
||||
|
||||
/* Right: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(96));
|
||||
poutCR(LIGHTBLUE, BLACK, sSecond);
|
||||
|
||||
/* Left: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
poutCR(LIGHTBLUE, BLACK, sThird);
|
||||
|
||||
Enter(1);
|
||||
/* Attempt to open safe with this combination [Y/n]: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(97));
|
||||
fflush(stdout);
|
||||
alarm_on();
|
||||
i = toupper(Getone());
|
||||
sprintf(temp, "%c", i);
|
||||
|
||||
if ((i == Keystroke(97, 0)) || (i == 13)) {
|
||||
printf("\n\n");
|
||||
tries++;
|
||||
Syslog('+', "Attempt %d with combination %d %d %d", tries, iFirst, iSecond, iThird);
|
||||
|
||||
/* Left: */
|
||||
Enter(1);
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
for (iLoop = 0; iLoop < iFirst; iLoop++) {
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
fflush(stdout);
|
||||
usleep(100000);
|
||||
}
|
||||
poutCR(LIGHTBLUE, BLACK, sFirst);
|
||||
|
||||
/* Right: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(96));
|
||||
for (iLoop = 0; iLoop < iSecond; iLoop++) {
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
fflush(stdout);
|
||||
usleep(100000);
|
||||
}
|
||||
poutCR(LIGHTBLUE, BLACK, sSecond);
|
||||
|
||||
/* Left: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
for (iLoop = 0; iLoop < iThird; iLoop++) {
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
fflush(stdout);
|
||||
usleep(100000);
|
||||
}
|
||||
poutCR(LIGHTBLUE, BLACK, sThird);
|
||||
|
||||
Enter(1);
|
||||
/* Attempt to open safe with this combination [Y/n]: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(97));
|
||||
fflush(stdout);
|
||||
alarm_on();
|
||||
i = toupper(Getone());
|
||||
sprintf(temp, "%c", i);
|
||||
|
||||
if ((i == Keystroke(97, 0)) || (i == 13)) {
|
||||
printf("\n\n");
|
||||
|
||||
/* Left: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
for (iLoop = 0; iLoop < iFirst; iLoop++)
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
poutCR(LIGHTBLUE, BLACK, sFirst);
|
||||
|
||||
/* Right: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(96));
|
||||
for (iLoop = 0; iLoop < iSecond; iLoop++)
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
poutCR(LIGHTBLUE, BLACK, sSecond);
|
||||
|
||||
/* Left: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(95));
|
||||
for (iLoop = 0; iLoop < iThird; iLoop++)
|
||||
pout(YELLOW, BLACK, (char *)".");
|
||||
poutCR(LIGHTBLUE, BLACK, sThird);
|
||||
|
||||
if(CFG.iSafeNumGen) {
|
||||
CFG.iSafeFirstDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
CFG.iSafeSecondDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
CFG.iSafeThirdDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
}
|
||||
|
||||
if(CFG.iSafeFirstDigit == iFirst)
|
||||
if(CFG.iSafeSecondDigit == iSecond)
|
||||
if(CFG.iSafeThirdDigit == iThird) {
|
||||
|
||||
DisplayFile(CFG.sSafeOpened);
|
||||
|
||||
Enter(1);
|
||||
/* You have won the following... */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(98));
|
||||
Enter(2);
|
||||
poutCR(LIGHTMAGENTA, BLACK, CFG.sSafePrize);
|
||||
Enter(1);
|
||||
|
||||
sprintf(temp, "%s/etc/safe.data", getenv("MBSE_ROOT"));
|
||||
if(( pSafe = fopen(temp, "r+")) == NULL)
|
||||
WriteError("Can't open %s for updating", temp);
|
||||
else {
|
||||
fseek(pSafe, 0L, SEEK_END);
|
||||
result = ftell(pSafe);
|
||||
result /= sizeof(safe);
|
||||
|
||||
fread(&safe, sizeof(safe), 1, pSafe);
|
||||
|
||||
safe.Opened = TRUE;
|
||||
|
||||
fseek(pSafe, 0L, SEEK_END);
|
||||
result = ftell(pSafe);
|
||||
result /= sizeof(safe);
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
}
|
||||
|
||||
Syslog('!', "User opened Safe Cracker Door");
|
||||
|
||||
Pause();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Enter(1);
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(99));
|
||||
Enter(1);
|
||||
|
||||
if(CFG.iSafeNumGen) {
|
||||
Enter(1);
|
||||
/* The safe code was: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(100));
|
||||
Enter(2);
|
||||
colour(LIGHTRED, BLACK);
|
||||
|
||||
/* Left: */
|
||||
printf("%s%d\n", (char *) Language(95), CFG.iSafeFirstDigit);
|
||||
|
||||
/* Right */
|
||||
printf("%s%d\n", (char *) Language(96), CFG.iSafeSecondDigit);
|
||||
|
||||
/* Left */
|
||||
printf("%s%d\n", (char *) Language(95), CFG.iSafeThirdDigit);
|
||||
}
|
||||
|
||||
if(iThird == 737)
|
||||
CFG.iSafeNumGen = FALSE;
|
||||
|
||||
if(iThird == 747) {
|
||||
colour(LIGHTBLUE, BLACK);
|
||||
printf("Code: %d %d %d\n", CFG.iSafeFirstDigit, CFG.iSafeSecondDigit, CFG.iSafeThirdDigit);
|
||||
}
|
||||
|
||||
Enter(1);
|
||||
/* Please press key to continue */
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(87));
|
||||
alarm_on();
|
||||
getchar();
|
||||
if(CFG.iSafeNumGen) {
|
||||
CFG.iSafeFirstDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
CFG.iSafeSecondDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
CFG.iSafeThirdDigit = (rand() % CFG.iSafeMaxNumber) + 1;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
if ((CFG.iSafeFirstDigit == iFirst) && (CFG.iSafeSecondDigit == iSecond) && (CFG.iSafeThirdDigit == iThird)) {
|
||||
|
||||
DisplayFile(CFG.sSafeOpened);
|
||||
cracked = TRUE;
|
||||
|
||||
Enter(1);
|
||||
/* You have won the following... */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(98));
|
||||
Enter(2);
|
||||
poutCR(LIGHTMAGENTA, BLACK, CFG.sSafePrize);
|
||||
Enter(1);
|
||||
|
||||
Syslog('!', "User opened Safe Cracker Door");
|
||||
|
||||
Pause();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Enter(1);
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(99));
|
||||
Enter(1);
|
||||
|
||||
if(CFG.iSafeNumGen) {
|
||||
Enter(1);
|
||||
/* The safe code was: */
|
||||
pout(LIGHTRED, BLACK, (char *) Language(100));
|
||||
Enter(2);
|
||||
colour(LIGHTRED, BLACK);
|
||||
|
||||
/* Left: */
|
||||
printf("%s%d\n", (char *) Language(95), CFG.iSafeFirstDigit);
|
||||
|
||||
/* Right */
|
||||
printf("%s%d\n", (char *) Language(96), CFG.iSafeSecondDigit);
|
||||
|
||||
/* Left */
|
||||
printf("%s%d\n", (char *) Language(95), CFG.iSafeThirdDigit);
|
||||
}
|
||||
|
||||
Enter(1);
|
||||
/* Please press key to continue */
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(87));
|
||||
alarm_on();
|
||||
getchar();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -353,106 +328,139 @@ int getdigits(void)
|
||||
/*
|
||||
* Returns true when safe already cracked or maximum trys exceeded
|
||||
*/
|
||||
int SafeCheckUser(void)
|
||||
int SafeCheckUser(int init)
|
||||
{
|
||||
int Counter = 0;
|
||||
char *File, *Name, *Date;
|
||||
char *File, *Name, *Date;
|
||||
|
||||
File = calloc(PATH_MAX, sizeof(char));
|
||||
Name = calloc(50, sizeof(char));
|
||||
Date = calloc(50, sizeof(char));
|
||||
File = calloc(PATH_MAX, sizeof(char));
|
||||
Name = calloc(50, sizeof(char));
|
||||
Date = calloc(50, sizeof(char));
|
||||
|
||||
sprintf(Name, "%s", exitinfo.sUserName);
|
||||
sprintf(Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(File, "%s/etc/safe.data", getenv("MBSE_ROOT"));
|
||||
sprintf(Name, "%s", exitinfo.sUserName);
|
||||
sprintf(Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(File, "%s/etc/safe.data", getenv("MBSE_ROOT"));
|
||||
|
||||
if(( pSafe = fopen(File, "r")) == NULL) {
|
||||
if((pSafe = fopen(File, "w")) != NULL) {
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(safe.Name, "%s", Name);
|
||||
safe.Trys = 0;
|
||||
safe.Opened = 0;
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
chmod(File, 0660);
|
||||
}
|
||||
} else {
|
||||
while ( fread(&safe, sizeof(safe), 1, pSafe) == 1) {
|
||||
if(safe.Opened) {
|
||||
fclose(pSafe);
|
||||
Syslog('+', "Safe is currently LOCKED - exiting door.");
|
||||
|
||||
/* THE SAFE IS CURRENTLY LOCKED */
|
||||
poutCR(WHITE, RED, (char *) Language(103));
|
||||
Enter(1);
|
||||
colour(LIGHTRED, BLACK);
|
||||
|
||||
/* has cracked the safe. */
|
||||
printf("%s, %s\n", safe.Name, (char *) Language(104));
|
||||
|
||||
/* The safe will remain locked until the sysop rewards the user. */
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(105));
|
||||
Enter(2);
|
||||
Pause();
|
||||
fclose(pSafe);
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
rewind(pSafe);
|
||||
|
||||
fread(&safe, sizeof(safe), 1, pSafe);
|
||||
if((strcmp(Date, safe.Date)) != 0) {
|
||||
fclose(pSafe);
|
||||
if((pSafe = fopen(File, "w")) != NULL) {
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(safe.Name, "%s", Name);
|
||||
safe.Trys = 0;
|
||||
safe.Opened = 0;
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
}
|
||||
} else {
|
||||
while ( fread(&safe, sizeof(safe), 1, pSafe) == 1) {
|
||||
if((strcmp(Name, safe.Name)) == 0)
|
||||
Counter++;
|
||||
}
|
||||
|
||||
rewind(pSafe);
|
||||
|
||||
if(Counter >= CFG.iSafeMaxTrys - 1) {
|
||||
Enter(2);
|
||||
/* Maximum trys per day exceeded */
|
||||
pout(WHITE, BLACK, (char *) Language(106));
|
||||
Enter(1);
|
||||
sleep(3);
|
||||
fclose(pSafe);
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
fclose(pSafe);
|
||||
|
||||
if(( pSafe = fopen(File, "a+")) == NULL)
|
||||
WriteError("Unable to append to safe.data", File);
|
||||
else {
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(safe.Name, "%s", Name);
|
||||
safe.Trys = 0;
|
||||
safe.Opened = 0;
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
}
|
||||
}
|
||||
if ((pSafe = fopen(File, "r+")) == NULL) {
|
||||
if ((pSafe = fopen(File, "w")) != NULL) {
|
||||
safehdr.hdrsize = sizeof(safehdr);
|
||||
safehdr.recsize = sizeof(safe);
|
||||
fwrite(&safehdr, sizeof(safehdr), 1, pSafe);
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(safe.Name, "%s", Name);
|
||||
safe.Trys = 0;
|
||||
safe.Opened = FALSE;
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
chmod(File, 0660);
|
||||
}
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return FALSE;
|
||||
} else {
|
||||
fread(&safehdr, sizeof(safehdr), 1, pSafe);
|
||||
/*
|
||||
* Check if safe already cracked
|
||||
*/
|
||||
while (fread(&safe, safehdr.recsize, 1, pSafe) == 1) {
|
||||
if (safe.Opened) {
|
||||
fclose(pSafe);
|
||||
Syslog('+', "Safe is currently LOCKED - exiting door.");
|
||||
|
||||
/* THE SAFE IS CURRENTLY LOCKED */
|
||||
poutCR(WHITE, RED, (char *) Language(103));
|
||||
Enter(1);
|
||||
colour(LIGHTRED, BLACK);
|
||||
|
||||
/* has cracked the safe. */
|
||||
printf("%s, %s\n", safe.Name, (char *) Language(104));
|
||||
|
||||
/* The safe will remain locked until the sysop rewards the user. */
|
||||
pout(LIGHTGREEN, BLACK, (char *) Language(105));
|
||||
Enter(2);
|
||||
Pause();
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
fseek(pSafe, safehdr.hdrsize, SEEK_SET);
|
||||
|
||||
/*
|
||||
* Check if this user is already in the database
|
||||
*/
|
||||
while (fread(&safe, safehdr.recsize, 1, pSafe) == 1) {
|
||||
if ((strcmp(Name, safe.Name)) == 0) {
|
||||
if ((strcmp(Date, safe.Date)) != 0) {
|
||||
/*
|
||||
* User found, but last time used is not today.
|
||||
* Reset this user.
|
||||
*/
|
||||
fseek(pSafe, - safehdr.recsize, SEEK_CUR);
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
safe.Trys = 0;
|
||||
tries = 0;
|
||||
safe.Opened = FALSE;
|
||||
fwrite(&safe, safehdr.recsize, 1, pSafe);
|
||||
fclose(pSafe);
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return FALSE;
|
||||
} else {
|
||||
/*
|
||||
* User found, last time is today, check attempts
|
||||
*/
|
||||
fseek(pSafe, - safehdr.recsize, SEEK_CUR);
|
||||
if (init)
|
||||
tries = safe.Trys;
|
||||
else {
|
||||
safe.Trys = tries;
|
||||
}
|
||||
safe.Opened = cracked;
|
||||
fwrite(&safe, safehdr.recsize, 1, pSafe);
|
||||
fclose(pSafe);
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
if (safe.Trys >= CFG.iSafeMaxTrys) {
|
||||
Syslog('+', "Maximum trys per day exceeded");
|
||||
Enter(2);
|
||||
/* Maximum trys per day exceeded */
|
||||
pout(WHITE, BLACK, (char *) Language(106));
|
||||
Enter(1);
|
||||
sleep(3);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* User not found, append new record
|
||||
*/
|
||||
fclose(pSafe);
|
||||
if ((pSafe = fopen(File, "a")) == NULL) {
|
||||
WriteError("Can't append to %s", File);
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return TRUE;
|
||||
}
|
||||
fseek(pSafe, 0, SEEK_END);
|
||||
memset(&safe, 0, sizeof(safe));
|
||||
sprintf(safe.Date, "%s", (char *) GetDateDMY());
|
||||
sprintf(safe.Name, "%s", Name);
|
||||
safe.Trys = 0;
|
||||
safe.Opened = FALSE;
|
||||
tries = 0;
|
||||
fwrite(&safe, sizeof(safe), 1, pSafe);
|
||||
fclose(pSafe);
|
||||
Syslog('+', "Append new safe.data record");
|
||||
}
|
||||
|
||||
free(File);
|
||||
free(Name);
|
||||
free(Date);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -9,17 +9,17 @@ SRCS = grlist.c m_domain.c m_fgroup.c m_lang.c m_marea.c m_new.c \
|
||||
m_limits.c m_menu.c m_ngroup.c m_service.c m_tty.c mutil.c m_archive.c \
|
||||
m_fdb.c m_global.c m_magic.c m_mgroup.c m_node.c m_task.c m_users.c \
|
||||
screen.c m_bbs.c m_ff.c m_hatch.c m_mail.c m_modem.c m_ol.c m_tic.c \
|
||||
m_virus.c stlist.c
|
||||
m_virus.c stlist.c m_bbslist.c m_safe.c
|
||||
HDRS = grlist.h m_domain.h m_fgroup.h m_lang.h m_marea.h m_new.h m_protocol.h \
|
||||
m_ticarea.h mutil.h ledit.h m_farea.h m_fido.h m_limits.h m_menu.h \
|
||||
m_ngroup.h m_service.h m_tty.h screen.h m_archive.h m_fdb.h m_global.h \
|
||||
m_magic.h m_mgroup.h m_node.h m_task.h m_users.h stlist.h m_bbs.h m_ff.h \
|
||||
m_hatch.h m_mail.h m_modem.h m_ol.h m_tic.h m_virus.h
|
||||
m_hatch.h m_mail.h m_modem.h m_ol.h m_tic.h m_virus.h m_bbslist.h m_safe.h
|
||||
OBJS = grlist.o m_domain.o m_fgroup.o m_lang.o m_marea.o m_new.o m_protocol.o \
|
||||
m_ticarea.o mbsetup.o ledit.o m_farea.o m_fido.o m_limits.o m_menu.o \
|
||||
m_ngroup.o m_service.o m_tty.o mutil.o m_archive.o m_fdb.o m_global.o \
|
||||
m_magic.o m_mgroup.o m_node.o m_task.o m_users.o screen.o m_bbs.o m_ff.o \
|
||||
m_hatch.o m_mail.o m_modem.o m_ol.o m_tic.o m_virus.o stlist.o
|
||||
m_hatch.o m_mail.o m_modem.o m_ol.o m_tic.o m_virus.o stlist.o m_bbslist.o m_safe.o
|
||||
LIBS += ../lib/libmemwatch.a ../lib/libclcomm.a ../lib/libcommon.a ../lib/libmsgbase.a ../lib/libdbase.a
|
||||
OTHER = Makefile
|
||||
|
||||
@ -78,7 +78,7 @@ m_marea.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib
|
||||
m_new.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h stlist.h m_global.h grlist.h m_new.h m_lang.h m_marea.h m_ngroup.h
|
||||
m_protocol.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h screen.h mutil.h ledit.h stlist.h m_global.h m_protocol.h
|
||||
m_ticarea.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h stlist.h grlist.h m_global.h m_node.h m_fgroup.h m_farea.h m_archive.h m_ticarea.h
|
||||
mbsetup.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_global.h m_bbs.h m_farea.h m_fgroup.h m_mail.h m_mgroup.h m_hatch.h m_tic.h m_ticarea.h m_magic.h m_fido.h m_lang.h m_archive.h m_virus.h m_tty.h m_limits.h m_users.h m_node.h m_fdb.h m_new.h m_ol.h m_protocol.h m_ff.h m_modem.h m_marea.h m_ngroup.h m_service.h m_domain.h m_task.h
|
||||
mbsetup.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_global.h m_bbs.h m_farea.h m_fgroup.h m_mail.h m_mgroup.h m_hatch.h m_tic.h m_ticarea.h m_magic.h m_fido.h m_lang.h m_archive.h m_virus.h m_tty.h m_limits.h m_users.h m_node.h m_fdb.h m_new.h m_ol.h m_bbslist.h m_protocol.h m_ff.h m_modem.h m_marea.h m_ngroup.h m_service.h m_domain.h m_task.h
|
||||
ledit.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/msg.h screen.h mutil.h ledit.h
|
||||
m_farea.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_global.h m_fgroup.h m_archive.h m_farea.h m_fgroup.h m_ngroup.h
|
||||
m_fido.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h stlist.h m_global.h m_fido.h
|
||||
@ -97,7 +97,7 @@ m_node.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/
|
||||
m_task.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_task.h
|
||||
m_users.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_lang.h m_global.h m_archive.h m_protocol.h m_users.h
|
||||
screen.o: ../lib/libs.h ../lib/structs.h ../lib/ansi.h ../lib/common.h ../lib/clcomm.h screen.h
|
||||
m_bbs.o: ../lib/libs.h ../lib/structs.h ../lib/common.h screen.h mutil.h ledit.h m_lang.h m_protocol.h m_ol.h m_fgroup.h m_farea.h m_menu.h m_bbs.h m_limits.h
|
||||
m_bbs.o: ../lib/libs.h ../lib/structs.h ../lib/common.h screen.h mutil.h ledit.h m_lang.h m_protocol.h m_ol.h m_fgroup.h m_farea.h m_menu.h m_bbs.h m_bbslist.h m_limits.h
|
||||
m_ff.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h screen.h mutil.h ledit.h stlist.h m_global.h m_ff.h m_lang.h m_marea.h
|
||||
m_hatch.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h stlist.h m_global.h m_fgroup.h m_ticarea.h m_hatch.h
|
||||
m_mail.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h screen.h mutil.h ledit.h m_global.h m_marea.h m_mgroup.h m_mail.h
|
||||
@ -106,4 +106,5 @@ m_ol.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/co
|
||||
m_tic.o: ../lib/libs.h ../lib/structs.h ../lib/common.h screen.h mutil.h ledit.h m_fgroup.h m_ticarea.h m_magic.h m_hatch.h m_tic.h
|
||||
m_virus.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h screen.h mutil.h ledit.h stlist.h m_global.h m_virus.h
|
||||
stlist.o: ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/clcomm.h stlist.h
|
||||
m_bbslist.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h screen.h mutil.h ledit.h m_global.h m_bbslist.h
|
||||
# End of generated dependencies
|
||||
|
@ -1,18 +1,13 @@
|
||||
/*****************************************************************************
|
||||
*
|
||||
* File ..................: m_bbs.c
|
||||
* $Id$
|
||||
* Purpose ...............: BBS Setup Program
|
||||
* Last modification date : 17-Jul-1999
|
||||
* Todo ..................:
|
||||
* Edit BBS lists
|
||||
* Edit timebank data
|
||||
* Edit safe data
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-1999
|
||||
* Copyright (C) 1997-2002
|
||||
*
|
||||
* Michiel Broek FIDO: 2:2801/16
|
||||
* Beekmansbos 10 Internet: mbroek@ux123.pttnwb.nl
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
* 1971 BV IJmuiden
|
||||
* the Netherlands
|
||||
*
|
||||
@ -45,10 +40,13 @@
|
||||
#include "m_fgroup.h"
|
||||
#include "m_farea.h"
|
||||
#include "m_menu.h"
|
||||
#include "m_safe.h"
|
||||
#include "m_bbs.h"
|
||||
#include "m_bbslist.h"
|
||||
#include "m_limits.h"
|
||||
|
||||
|
||||
|
||||
void bbs_menu(void)
|
||||
{
|
||||
for (;;) {
|
||||
@ -64,38 +62,33 @@ void bbs_menu(void)
|
||||
mvprintw(11, 6, "5. Edit Transfer Protocols");
|
||||
mvprintw(12, 6, "6. Edit BBS List Data");
|
||||
mvprintw(13, 6, "7. Edit Oneliners");
|
||||
mvprintw(14, 6, "8. Edit TimeBank data");
|
||||
mvprintw(15, 6, "9. Edit Safe Cracker data");
|
||||
mvprintw(14, 6, "8. Edit Safecracker Data");
|
||||
|
||||
switch(select_menu(9)) {
|
||||
case 0:
|
||||
return;
|
||||
switch(select_menu(8)) {
|
||||
case 0: return;
|
||||
|
||||
case 1:
|
||||
EditLimits();
|
||||
case 1: EditLimits();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
EditLanguage();
|
||||
case 2: EditLanguage();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
EditMenus();
|
||||
case 3: EditMenus();
|
||||
break;
|
||||
|
||||
case 4:
|
||||
EditFilearea();
|
||||
case 4: EditFilearea();
|
||||
break;
|
||||
|
||||
case 5:
|
||||
EditProtocol();
|
||||
case 5: EditProtocol();
|
||||
break;
|
||||
|
||||
case 6:
|
||||
case 6: bbslist_menu();
|
||||
break;
|
||||
|
||||
case 7:
|
||||
ol_menu();
|
||||
case 7: ol_menu();
|
||||
break;
|
||||
|
||||
case 8: EditSafe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ int EditOnelRec(int Area)
|
||||
working(0, 0, 0);
|
||||
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 2, "8.8.1 EDIT ONELINER");
|
||||
mvprintw( 5, 2, "8.7.1 EDIT ONELINER");
|
||||
set_color(CYAN, BLACK);
|
||||
mvprintw( 7, 2, "1. Text");
|
||||
mvprintw( 8, 2, "2. User");
|
||||
@ -323,7 +323,7 @@ void EditOneline(void)
|
||||
for (;;) {
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 2, "8.8.1 ONELINERS SETUP");
|
||||
mvprintw( 5, 2, "8.7.1 ONELINERS SETUP");
|
||||
set_color(CYAN, BLACK);
|
||||
if (records != 0) {
|
||||
sprintf(temp, "%s/etc/oneline.temp", getenv("MBSE_ROOT"));
|
||||
@ -409,7 +409,7 @@ void PurgeOneline(void)
|
||||
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 6, "7.8.2 ONELINERS PURGE");
|
||||
mvprintw( 5, 6, "8.7.2 ONELINERS PURGE");
|
||||
set_color(CYAN, BLACK);
|
||||
working(1, 0, 0);
|
||||
|
||||
@ -473,7 +473,7 @@ void ImportOneline(void)
|
||||
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw(5, 6, "8.8.3 IMPORT ONELINERS");
|
||||
mvprintw(5, 6, "8.7.3 IMPORT ONELINERS");
|
||||
set_color(CYAN, BLACK);
|
||||
memset(&temp, 0, sizeof(temp));
|
||||
strcpy(temp, edit_str(21, 6,64, temp, (char *)"The ^full path and filename^ of the file to import"));
|
||||
@ -554,7 +554,7 @@ void ol_menu(void)
|
||||
for (;;) {
|
||||
clr_index();
|
||||
set_color(WHITE, BLACK);
|
||||
mvprintw( 5, 6, "8.8 ONELINER SETUP");
|
||||
mvprintw( 5, 6, "8.7 ONELINER SETUP");
|
||||
set_color(CYAN, BLACK);
|
||||
mvprintw( 7, 6, "1. Edit Oneliners");
|
||||
mvprintw( 8, 6, "2. Purge Oneliners");
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* m_ol.h */
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef _OL_H
|
||||
#define _OL_H
|
||||
|
@ -58,6 +58,8 @@
|
||||
#include "m_fdb.h"
|
||||
#include "m_new.h"
|
||||
#include "m_ol.h"
|
||||
#include "m_bbslist.h"
|
||||
#include "m_safe.h"
|
||||
#include "m_protocol.h"
|
||||
#include "m_ff.h"
|
||||
#include "m_modem.h"
|
||||
@ -360,6 +362,8 @@ void initdatabases(void)
|
||||
InitNGroup();
|
||||
InitNodes();
|
||||
InitOneline();
|
||||
InitBBSlist();
|
||||
InitSafe();
|
||||
InitProtocol();
|
||||
InitService();
|
||||
InitTicarea();
|
||||
|
Reference in New Issue
Block a user