Small fixes again
This commit is contained in:
parent
1740ee0c84
commit
0fac0fcdb5
10
ChangeLog
10
ChangeLog
@ -21,6 +21,8 @@ v0.35.03 06-Jul-2002
|
||||
mbfido:
|
||||
Rollover now only sets IsDoing when it really does a date
|
||||
rollover.
|
||||
When a new tic area was created the first file received for
|
||||
that area was refused.
|
||||
|
||||
newuser:
|
||||
Check for Unix accounts is now case sensitive.
|
||||
@ -43,6 +45,9 @@ v0.35.03 06-Jul-2002
|
||||
mbsetup:
|
||||
Enabled setting of nodelist override settings in menu 7.x.3
|
||||
After nodes setup edit the semafore scanout is set.
|
||||
When a JAM messagebase path is changed in one of the message
|
||||
area, filefind and newfiles records are automatic updated if
|
||||
they were connected to that area.
|
||||
|
||||
script:
|
||||
The bbsdoor.sh and rundoor.sh scripts are now only installed
|
||||
@ -55,8 +60,9 @@ v0.35.02 22-Jun-2002 - 06-Jul-2002
|
||||
upgrade:
|
||||
Delete ~/etc/lastcall.data
|
||||
Delete ~/etc/archiver.data
|
||||
Delete ~/etc/virscan.data
|
||||
Start mbsetup and enter the Edit Archiver Programs. The new
|
||||
values should now be set.
|
||||
values should now be set. Do the same for Virus scanners.
|
||||
|
||||
general:
|
||||
Added checks for GoldED in external program checks.
|
||||
@ -96,7 +102,7 @@ v0.35.02 22-Jun-2002 - 06-Jul-2002
|
||||
tag, mbfido would crash.
|
||||
Filefind netmail replies now set the private flag.
|
||||
Removed debugging messages displaying the incoming tic files.
|
||||
The mbfid test command now needs a extra parameter, the final
|
||||
The mbfido test command now needs a extra parameter, the final
|
||||
destination to test. It doesn't use the internal fixed table
|
||||
anymore.
|
||||
|
||||
|
11
TODO
11
TODO
@ -1,6 +1,6 @@
|
||||
$Id$
|
||||
|
||||
MBSE BBS V0.35.02 TODO list.
|
||||
MBSE BBS V0.35.03 TODO list.
|
||||
----------------------------
|
||||
|
||||
These are a list of things that must be implemented one way or
|
||||
@ -60,13 +60,8 @@ mbfido:
|
||||
|
||||
N: Process To: and Cc: lines in messages gated from Fido to Internet.
|
||||
|
||||
N: Must be able to use more nodelist override's from the setup.
|
||||
|
||||
U: Add routing table to override standard routing.
|
||||
|
||||
N: The first file received in a not yet created tic area is refused
|
||||
after the area is created: node xxx not connected to area xxx.
|
||||
|
||||
N: Add traffic to html.nodes
|
||||
|
||||
N: Add stats for posts made by external programs.
|
||||
@ -117,14 +112,10 @@ mbsetup:
|
||||
main aka with zone's is listed first. Having zone's mixed gives
|
||||
too high outbound stats and the outbound is scanned multiple times.
|
||||
|
||||
U: When moving an JAM messagebase, check filefind records.
|
||||
|
||||
N: Put ZMH fields in the network setup for each zone.
|
||||
|
||||
N: Add switch for file area to skip checking and indexing.
|
||||
|
||||
N: Add more nodelist override settings for nodes.
|
||||
|
||||
L: Generate crossreference document:
|
||||
File Areas <=> BBS groups
|
||||
File Areas <=> Newfiles groups
|
||||
|
@ -169,6 +169,14 @@ int ProcessTic(fa_list *sbl)
|
||||
return 1;
|
||||
}
|
||||
tidy_faddr(p_from);
|
||||
/*
|
||||
* Try to load the .TIC area again.
|
||||
*/
|
||||
if (!SearchTic(TIC.TicIn.Area)) {
|
||||
Bad((char *)"Reload of new created file area %s failed", TIC.TicIn.Area);
|
||||
free(Temp);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ((tic.Secure) && (!TIC.TicIn.Hatch)) {
|
||||
|
@ -993,250 +993,295 @@ void MsgGlobal(void)
|
||||
int EditMsgRec(int);
|
||||
int EditMsgRec(int Area)
|
||||
{
|
||||
unsigned long crc1;
|
||||
int tmp, i, connections = 0, changed = FALSE, Active, Forced = FALSE;
|
||||
sysconnect System;
|
||||
char *temp;
|
||||
unsigned long crc1;
|
||||
int tmp, i, connections = 0, changed = FALSE, Active, Forced = FALSE;
|
||||
sysconnect System;
|
||||
char *temp, oldpath[81];
|
||||
FILE *fil;
|
||||
|
||||
clr_index();
|
||||
IsDoing("Edit Msg Area");
|
||||
clr_index();
|
||||
IsDoing("Edit Msg Area");
|
||||
|
||||
if (LoadMsgRec(Area, TRUE) == -1)
|
||||
return -1;
|
||||
if (LoadMsgRec(Area, TRUE) == -1)
|
||||
return -1;
|
||||
|
||||
SetScreen();
|
||||
SetScreen();
|
||||
|
||||
for (;;) {
|
||||
set_color(WHITE, BLACK);
|
||||
show_str( 6,16,40, msgs.Name);
|
||||
show_str( 7,16,50, msgs.Tag);
|
||||
show_str( 8,16,12, msgs.Group);
|
||||
show_str( 9,16,64, msgs.Newsgroup);
|
||||
show_str(10,16,64, msgs.Base);
|
||||
show_str(11,16,64, msgs.Origin);
|
||||
show_aka(12,16, msgs.Aka);
|
||||
show_str(13,16,13, msgs.QWKname);
|
||||
show_str(14,16,16, msgs.Distribution);
|
||||
show_msgtype(15,16, msgs.Type);
|
||||
show_msgkinds(16,16, msgs.MsgKinds);
|
||||
show_str(17,16,16, printable(getchrs(msgs.Ftncode), 0));
|
||||
show_str(18,16,16, printable(getchrs(msgs.Rfccode), 0));
|
||||
show_bool(19,16, msgs.Active);
|
||||
for (;;) {
|
||||
set_color(WHITE, BLACK);
|
||||
show_str( 6,16,40, msgs.Name);
|
||||
show_str( 7,16,50, msgs.Tag);
|
||||
show_str( 8,16,12, msgs.Group);
|
||||
show_str( 9,16,64, msgs.Newsgroup);
|
||||
show_str(10,16,64, msgs.Base);
|
||||
show_str(11,16,64, msgs.Origin);
|
||||
show_aka(12,16, msgs.Aka);
|
||||
show_str(13,16,13, msgs.QWKname);
|
||||
show_str(14,16,16, msgs.Distribution);
|
||||
show_msgtype(15,16, msgs.Type);
|
||||
show_msgkinds(16,16, msgs.MsgKinds);
|
||||
show_str(17,16,16, printable(getchrs(msgs.Ftncode), 0));
|
||||
show_str(18,16,16, printable(getchrs(msgs.Rfccode), 0));
|
||||
show_bool(19,16, msgs.Active);
|
||||
|
||||
show_int( 13,52, msgs.DaysOld);
|
||||
show_int( 14,52, msgs.MaxMsgs);
|
||||
switch (msgs.Type) {
|
||||
case ECHOMAIL: show_int( 15,52, msgs.NetReply);
|
||||
break;
|
||||
case NEWS: show_int( 15,52, msgs.MaxArticles);
|
||||
break;
|
||||
}
|
||||
show_int( 16,52, msgs.RDSec.level);
|
||||
show_int( 17,52, msgs.WRSec.level);
|
||||
show_int( 18,52, msgs.SYSec.level);
|
||||
show_bool(19,52, msgs.UsrDelete);
|
||||
show_int( 13,52, msgs.DaysOld);
|
||||
show_int( 14,52, msgs.MaxMsgs);
|
||||
switch (msgs.Type) {
|
||||
case ECHOMAIL: show_int( 15,52, msgs.NetReply);
|
||||
break;
|
||||
case NEWS: show_int( 15,52, msgs.MaxArticles);
|
||||
break;
|
||||
}
|
||||
show_int( 16,52, msgs.RDSec.level);
|
||||
show_int( 17,52, msgs.WRSec.level);
|
||||
show_int( 18,52, msgs.SYSec.level);
|
||||
show_bool(19,52, msgs.UsrDelete);
|
||||
|
||||
show_bool(13,76, msgs.Aliases);
|
||||
show_bool(14,76, msgs.Quotes);
|
||||
show_bool(15,76, msgs.Mandatory);
|
||||
show_bool(16,76, msgs.UnSecure);
|
||||
show_bool(17,76, msgs.OLR_Default);
|
||||
show_bool(18,76, msgs.OLR_Forced);
|
||||
connections = 0;
|
||||
switch (msgs.Type) {
|
||||
case ECHOMAIL:
|
||||
case NEWS:
|
||||
case LIST: fseek(tfil, 0, SEEK_SET);
|
||||
while (fread(&System, sizeof(System), 1, tfil) == 1)
|
||||
if (System.aka.zone)
|
||||
connections++;
|
||||
show_int(19,76, connections);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (select_menu(28)) {
|
||||
case 0:
|
||||
crc1 = 0xffffffff;
|
||||
crc1 = upd_crc32((char *)&msgs, crc1, msgshdr.recsize);
|
||||
fseek(tfil, 0, 0);
|
||||
for (i = 0; i < (msgshdr.syssize / sizeof(sysconnect)); i++) {
|
||||
fread(&System, sizeof(sysconnect), 1, tfil);
|
||||
crc1 = upd_crc32((char *)&System, crc1, sizeof(sysconnect));
|
||||
}
|
||||
if (msgs.Active)
|
||||
test_jam(msgs.Base);
|
||||
if ((MsgCrc != crc1) || (changed)) {
|
||||
if (msgs.Active && !strlen(msgs.Base)) {
|
||||
errmsg((char *)"JAM message base is not set");
|
||||
break;
|
||||
} else if (msgs.Active && !strlen(msgs.Group) &&
|
||||
(msgs.Type == ECHOMAIL || msgs.Type == NEWS || msgs.Type == LIST)) {
|
||||
errmsg((char *)"Message area has no group assigned");
|
||||
break;
|
||||
} else if (Forced || yes_no((char *)"Record is changed, save") == 1) {
|
||||
if (SaveMsgRec(Area, TRUE) == -1)
|
||||
return -1;
|
||||
MsgUpdated = 1;
|
||||
Syslog('+', "Saved message area record %d", Area);
|
||||
}
|
||||
}
|
||||
IsDoing("Browsing Menu");
|
||||
return 0;
|
||||
case 1: E_STR( 6,16,40,msgs.Name, "The ^Name^ of this area")
|
||||
case 2: strcpy(msgs.Tag, edit_ups(7,16,50, msgs.Tag, (char *)"The ^Area Tag^ for Echomail"));
|
||||
if (!strlen(msgs.QWKname)) {
|
||||
memset(&msgs.QWKname, '\0', strlen(msgs.QWKname));
|
||||
strncpy(msgs.QWKname, msgs.Tag, 13);
|
||||
}
|
||||
show_bool(13,76, msgs.Aliases);
|
||||
show_bool(14,76, msgs.Quotes);
|
||||
show_bool(15,76, msgs.Mandatory);
|
||||
show_bool(16,76, msgs.UnSecure);
|
||||
show_bool(17,76, msgs.OLR_Default);
|
||||
show_bool(18,76, msgs.OLR_Forced);
|
||||
connections = 0;
|
||||
switch (msgs.Type) {
|
||||
case ECHOMAIL:
|
||||
case NEWS:
|
||||
case LIST: fseek(tfil, 0, SEEK_SET);
|
||||
while (fread(&System, sizeof(System), 1, tfil) == 1)
|
||||
if (System.aka.zone)
|
||||
connections++;
|
||||
show_int(19,76, connections);
|
||||
break;
|
||||
case 3: tmp = strlen(msgs.Group);
|
||||
strcpy(msgs.Group, PickMGroup((char *)"9.2.3"));
|
||||
if (strlen(msgs.Group) && !tmp) {
|
||||
/*
|
||||
* If set for the first time, set some defaults
|
||||
*/
|
||||
msgs.Aka = mgroup.UseAka;
|
||||
msgs.Active = TRUE;
|
||||
msgs.MsgKinds = PUBLIC;
|
||||
msgs.Type = ECHOMAIL;
|
||||
msgs.DaysOld = CFG.defdays;
|
||||
msgs.MaxMsgs = CFG.defmsgs;
|
||||
msgs.UsrDelete = mgroup.UsrDelete;
|
||||
msgs.RDSec = mgroup.RDSec;
|
||||
msgs.WRSec = mgroup.WRSec;
|
||||
msgs.SYSec = mgroup.SYSec;
|
||||
msgs.Aliases = mgroup.Aliases;
|
||||
msgs.NetReply = mgroup.NetReply;
|
||||
msgs.Quotes = mgroup.Quotes;
|
||||
msgs.MaxArticles = CFG.maxarticles;
|
||||
msgs.Rfccode = CHRS_DEFAULT_RFC;
|
||||
msgs.Ftncode = CHRS_DEFAULT_FTN;
|
||||
strncpy(msgs.Origin, CFG.origin, 50);
|
||||
}
|
||||
|
||||
/*
|
||||
* If there is an uplink defined in the group,
|
||||
* and the first connected system is empty,
|
||||
* copy the uplink as default connection.
|
||||
*/
|
||||
if (mgroup.UpLink.zone) {
|
||||
switch (select_menu(28)) {
|
||||
case 0: crc1 = 0xffffffff;
|
||||
crc1 = upd_crc32((char *)&msgs, crc1, msgshdr.recsize);
|
||||
fseek(tfil, 0, 0);
|
||||
for (i = 0; i < (msgshdr.syssize / sizeof(sysconnect)); i++) {
|
||||
fread(&System, sizeof(sysconnect), 1, tfil);
|
||||
crc1 = upd_crc32((char *)&System, crc1, sizeof(sysconnect));
|
||||
}
|
||||
if (msgs.Active)
|
||||
test_jam(msgs.Base);
|
||||
if ((MsgCrc != crc1) || (changed)) {
|
||||
if (msgs.Active && !strlen(msgs.Base)) {
|
||||
errmsg((char *)"JAM message base is not set");
|
||||
break;
|
||||
} else if (msgs.Active && !strlen(msgs.Group) &&
|
||||
(msgs.Type == ECHOMAIL || msgs.Type == NEWS || msgs.Type == LIST)) {
|
||||
errmsg((char *)"Message area has no group assigned");
|
||||
break;
|
||||
} else if (Forced || yes_no((char *)"Record is changed, save") == 1) {
|
||||
if (SaveMsgRec(Area, TRUE) == -1)
|
||||
return -1;
|
||||
MsgUpdated = 1;
|
||||
Syslog('+', "Saved message area record %d", Area);
|
||||
}
|
||||
}
|
||||
IsDoing("Browsing Menu");
|
||||
return 0;
|
||||
case 1: E_STR( 6,16,40,msgs.Name, "The ^Name^ of this area")
|
||||
case 2: strcpy(msgs.Tag, edit_ups(7,16,50, msgs.Tag, (char *)"The ^Area Tag^ for Echomail"));
|
||||
if (!strlen(msgs.QWKname)) {
|
||||
memset(&msgs.QWKname, '\0', strlen(msgs.QWKname));
|
||||
strncpy(msgs.QWKname, msgs.Tag, 13);
|
||||
}
|
||||
break;
|
||||
case 3: tmp = strlen(msgs.Group);
|
||||
strcpy(msgs.Group, PickMGroup((char *)"9.2.3"));
|
||||
if (strlen(msgs.Group) && !tmp) {
|
||||
/*
|
||||
* If set for the first time, set some defaults
|
||||
*/
|
||||
msgs.Aka = mgroup.UseAka;
|
||||
msgs.Active = TRUE;
|
||||
msgs.MsgKinds = PUBLIC;
|
||||
msgs.Type = ECHOMAIL;
|
||||
msgs.DaysOld = CFG.defdays;
|
||||
msgs.MaxMsgs = CFG.defmsgs;
|
||||
msgs.UsrDelete = mgroup.UsrDelete;
|
||||
msgs.RDSec = mgroup.RDSec;
|
||||
msgs.WRSec = mgroup.WRSec;
|
||||
msgs.SYSec = mgroup.SYSec;
|
||||
msgs.Aliases = mgroup.Aliases;
|
||||
msgs.NetReply = mgroup.NetReply;
|
||||
msgs.Quotes = mgroup.Quotes;
|
||||
msgs.MaxArticles = CFG.maxarticles;
|
||||
msgs.Rfccode = CHRS_DEFAULT_RFC;
|
||||
msgs.Ftncode = CHRS_DEFAULT_FTN;
|
||||
strncpy(msgs.Origin, CFG.origin, 50);
|
||||
|
||||
/*
|
||||
* If there is an uplink defined in the group,
|
||||
* and the first connected system is empty,
|
||||
* copy the uplink as default connection.
|
||||
*/
|
||||
if (mgroup.UpLink.zone) {
|
||||
fseek(tfil, 0, SEEK_SET);
|
||||
fread(&System, sizeof(sysconnect), 1, tfil);
|
||||
if (!System.aka.zone) {
|
||||
memset(&System, 0, sizeof(sysconnect));
|
||||
System.aka = mgroup.UpLink;
|
||||
System.sendto = TRUE;
|
||||
System.receivefrom = TRUE;
|
||||
fseek(tfil, 0, SEEK_SET);
|
||||
fread(&System, sizeof(sysconnect), 1, tfil);
|
||||
if (!System.aka.zone) {
|
||||
memset(&System, 0, sizeof(sysconnect));
|
||||
System.aka = mgroup.UpLink;
|
||||
System.sendto = TRUE;
|
||||
System.receivefrom = TRUE;
|
||||
fseek(tfil, 0, SEEK_SET);
|
||||
fwrite(&System, sizeof(sysconnect), 1, tfil);
|
||||
}
|
||||
}
|
||||
if (!strlen(msgs.Base) && strlen(msgs.Tag)) {
|
||||
/*
|
||||
* Invent the place for the JAM message base.
|
||||
*/
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/%s", msgs.Group, msgs.Tag);
|
||||
for (i = 0; i < strlen(temp); i++) {
|
||||
if (isupper(temp[i]))
|
||||
temp[i] = tolower(temp[i]);
|
||||
/*
|
||||
* If dots in the group or area tag, replace them
|
||||
* with directory slashes to create a group tree.
|
||||
*/
|
||||
if (temp[i] == '.')
|
||||
temp[i] = '/';
|
||||
}
|
||||
sprintf(msgs.Base, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp);
|
||||
free(temp);
|
||||
fwrite(&System, sizeof(sysconnect), 1, tfil);
|
||||
}
|
||||
}
|
||||
SetScreen();
|
||||
break;
|
||||
case 4: E_STR( 9,16,64,msgs.Newsgroup, "The ^Newsgroup^ name of this area")
|
||||
case 5: strcpy(msgs.Base, edit_jam(10,16,64,msgs.Base ,(char *)"The path to the ^JAM Message Base^"));
|
||||
if (!strlen(msgs.Base) && strlen(msgs.Tag)) {
|
||||
/*
|
||||
* Invent the place for the JAM message base.
|
||||
*/
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/%s", msgs.Group, msgs.Tag);
|
||||
for (i = 0; i < strlen(temp); i++) {
|
||||
if (isupper(temp[i]))
|
||||
temp[i] = tolower(temp[i]);
|
||||
/*
|
||||
* If dots in the group or area tag, replace them
|
||||
* with directory slashes to create a group tree.
|
||||
*/
|
||||
if (temp[i] == '.')
|
||||
temp[i] = '/';
|
||||
}
|
||||
sprintf(msgs.Base, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp);
|
||||
free(temp);
|
||||
}
|
||||
}
|
||||
SetScreen();
|
||||
break;
|
||||
case 4: E_STR( 9,16,64,msgs.Newsgroup, "The ^Newsgroup^ name of this area")
|
||||
case 5: sprintf(oldpath, "%s", msgs.Base);
|
||||
strcpy(msgs.Base, edit_jam(10,16,64,msgs.Base ,(char *)"The path to the ^JAM Message Base^"));
|
||||
if (strcmp(oldpath, msgs.Base)) {
|
||||
Syslog('+', "JAM path changed");
|
||||
i = 0;
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/etc/scanmgr.data", getenv("MBSE_ROOT"));
|
||||
if ((fil = fopen(temp, "r+")) != NULL) {
|
||||
fread(&scanmgrhdr, sizeof(scanmgrhdr), 1, fil);
|
||||
while (fread(&scanmgr, scanmgrhdr.recsize, 1, fil) == 1) {
|
||||
if (strcmp(oldpath, scanmgr.ScanBoard) == 0) {
|
||||
i++;
|
||||
sprintf(scanmgr.ScanBoard, "%s", msgs.Base);
|
||||
fseek(fil, - scanmgrhdr.recsize, SEEK_CUR);
|
||||
fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil);
|
||||
}
|
||||
if (strcmp(oldpath, scanmgr.ReplBoard) == 0) {
|
||||
i++;
|
||||
sprintf(scanmgr.ReplBoard, "%s", msgs.Base);
|
||||
fseek(fil, - scanmgrhdr.recsize, SEEK_CUR);
|
||||
fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil);
|
||||
}
|
||||
}
|
||||
fclose(fil);
|
||||
Syslog('+', "Updated %d paths in %s", i, temp);
|
||||
}
|
||||
|
||||
i = 0;
|
||||
sprintf(temp, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
|
||||
if ((fil = fopen(temp, "r+")) != NULL) {
|
||||
fread(&newfileshdr, sizeof(newfileshdr), 1, fil);
|
||||
while (fread(&newfiles, newfileshdr.recsize, 1, fil) == 1) {
|
||||
if (strcmp(oldpath, newfiles.Area) == 0) {
|
||||
i++;
|
||||
sprintf(newfiles.Area, "%s", msgs.Base);
|
||||
fseek(fil, - newfileshdr.recsize, SEEK_CUR);
|
||||
fwrite(&newfiles, newfileshdr.recsize, 1, fil);
|
||||
}
|
||||
fseek(fil, newfileshdr.grpsize, SEEK_CUR);
|
||||
}
|
||||
fclose(fil);
|
||||
Syslog('+', "Updated %d paths in %s", i, temp);
|
||||
}
|
||||
free(temp);
|
||||
Forced = TRUE;
|
||||
MailForced = TRUE;
|
||||
break;
|
||||
case 6: E_STR( 11,16,64,msgs.Origin, "The ^Origin line^ to append to Echomail messages")
|
||||
case 7: tmp = PickAka((char *)"9.2.7", TRUE);
|
||||
if (tmp != -1)
|
||||
msgs.Aka = CFG.aka[tmp];
|
||||
SetScreen(); break;
|
||||
case 8: E_UPS( 13,16,13,msgs.QWKname, "The name for ^QWK or Bluewave^ message packets")
|
||||
case 9: E_STR( 14,16,16,msgs.Distribution, "The ^Distribution^ name if this is a newsgroup")
|
||||
case 10:msgs.Type = edit_msgtype(15,16, msgs.Type);
|
||||
SetScreen();
|
||||
break;
|
||||
case 11:msgs.MsgKinds = edit_msgkinds(16,16, msgs.MsgKinds); break;
|
||||
case 14:Active = edit_bool(19,16, msgs.Active, (char *)"Is this area ^Active^");
|
||||
if (msgs.Active && !Active) {
|
||||
/*
|
||||
* Attempt to deactivate area, do some checks.
|
||||
*/
|
||||
if (connections) {
|
||||
if (yes_no((char *)"There are nodes connected, disconnect them") == 0)
|
||||
}
|
||||
break;
|
||||
case 6: E_STR( 11,16,64,msgs.Origin, "The ^Origin line^ to append to Echomail messages")
|
||||
case 7: tmp = PickAka((char *)"9.2.7", TRUE);
|
||||
if (tmp != -1)
|
||||
msgs.Aka = CFG.aka[tmp];
|
||||
SetScreen();
|
||||
break;
|
||||
case 8: E_UPS( 13,16,13,msgs.QWKname, "The name for ^QWK or Bluewave^ message packets")
|
||||
case 9: E_STR( 14,16,16,msgs.Distribution, "The ^Distribution^ name if this is a newsgroup")
|
||||
case 10:msgs.Type = edit_msgtype(15,16, msgs.Type);
|
||||
SetScreen();
|
||||
break;
|
||||
case 11:msgs.MsgKinds = edit_msgkinds(16,16, msgs.MsgKinds); break;
|
||||
case 14:Active = edit_bool(19,16, msgs.Active, (char *)"Is this area ^Active^");
|
||||
if (msgs.Active && !Active) {
|
||||
/*
|
||||
* Attempt to deactivate area, do some checks.
|
||||
*/
|
||||
if (connections) {
|
||||
if (yes_no((char *)"There are nodes connected, disconnect them") == 0)
|
||||
Active = TRUE;
|
||||
}
|
||||
if (!Active) {
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s.jhr", msgs.Base);
|
||||
if (strlen(msgs.Base) && (file_size(temp) != 1024)) {
|
||||
if (yes_no((char *)"There are messages in this area, delete them") == 0)
|
||||
Active = TRUE;
|
||||
}
|
||||
if (!Active) {
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s.jhr", msgs.Base);
|
||||
if (strlen(msgs.Base) && (file_size(temp) != 1024)) {
|
||||
if (yes_no((char *)"There are messages in this area, delete them") == 0)
|
||||
Active = TRUE;
|
||||
}
|
||||
free(temp);
|
||||
}
|
||||
if (!Active) {
|
||||
/*
|
||||
* Make it so
|
||||
*/
|
||||
Msg_DeleteMsgBase(msgs.Base);
|
||||
memset(&System, 0, sizeof(System));
|
||||
fseek(tfil, 0, SEEK_SET);
|
||||
for (i = 0; i < (msgshdr.syssize / sizeof(sysconnect)); i++)
|
||||
fwrite(&System, sizeof(System), 1, tfil);
|
||||
InitMsgRec();
|
||||
Syslog('+', "Deleted message area %d", Area);
|
||||
changed = TRUE;
|
||||
}
|
||||
free(temp);
|
||||
}
|
||||
if (!msgs.Active && Active)
|
||||
msgs.Active = TRUE;
|
||||
SetScreen();
|
||||
break;
|
||||
case 15:E_INT( 13,52, msgs.DaysOld, "Maximum ^days^ to keep mail in this area")
|
||||
case 16:E_INT( 14,52, msgs.MaxMsgs, "The ^maximum^ amount of messages in this area")
|
||||
case 17:switch (msgs.Type) {
|
||||
case ECHOMAIL: msgs.NetReply = edit_int(15,52,msgs.NetReply,
|
||||
if (!Active) {
|
||||
/*
|
||||
* Make it so
|
||||
*/
|
||||
Msg_DeleteMsgBase(msgs.Base);
|
||||
memset(&System, 0, sizeof(System));
|
||||
fseek(tfil, 0, SEEK_SET);
|
||||
for (i = 0; i < (msgshdr.syssize / sizeof(sysconnect)); i++)
|
||||
fwrite(&System, sizeof(System), 1, tfil);
|
||||
InitMsgRec();
|
||||
Syslog('+', "Deleted message area %d", Area);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
if (!msgs.Active && Active)
|
||||
msgs.Active = TRUE;
|
||||
SetScreen();
|
||||
break;
|
||||
case 15:E_INT( 13,52, msgs.DaysOld, "Maximum ^days^ to keep mail in this area")
|
||||
case 16:E_INT( 14,52, msgs.MaxMsgs, "The ^maximum^ amount of messages in this area")
|
||||
case 17:switch (msgs.Type) {
|
||||
case ECHOMAIL: msgs.NetReply = edit_int(15,52,msgs.NetReply,
|
||||
(char *)"The ^Area Number^ for netmail replies");
|
||||
break;
|
||||
case NEWS: msgs.MaxArticles = edit_int(15,52,msgs.MaxArticles,
|
||||
(char *)"The ^maximum news articles^ to fetch");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 18:E_SEC( 16,52, msgs.RDSec, "9.2 EDIT READ SECURITY", SetScreen)
|
||||
case 19:E_SEC( 17,52, msgs.WRSec, "9.2 EDIT WRITE SECURITY", SetScreen)
|
||||
case 20:E_SEC( 18,52, msgs.SYSec, "9.2 EDIT SYSOP SECURITY", SetScreen)
|
||||
case 21:E_BOOL(19,52, msgs.UsrDelete, "Allow users to ^Delete^ their messages")
|
||||
|
||||
case 22:E_BOOL(13,76, msgs.Aliases, "Allow ^aliases^ or real names only")
|
||||
case 23:E_BOOL(14,76, msgs.Quotes, "Add random ^quotes^ to new messages")
|
||||
case 24:E_BOOL(15,76, msgs.Mandatory, "Is this area ^mandatory^ for nodes")
|
||||
case 25:E_BOOL(16,76, msgs.UnSecure, "Toss messages ^UnSecure^, ie: no originating check")
|
||||
case 26:E_BOOL(17,76, msgs.OLR_Default, "Area is ^default^ for ^offline^ users.")
|
||||
case 27:E_BOOL(18,76, msgs.OLR_Forced, "Area is ^always on^ for ^offline^ users.")
|
||||
case 28:switch (msgs.Type) {
|
||||
case ECHOMAIL:
|
||||
case NEWS:
|
||||
case LIST: if (EditConnections(tfil))
|
||||
changed = TRUE;
|
||||
SetScreen();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NEWS: msgs.MaxArticles = edit_int(15,52,msgs.MaxArticles,
|
||||
(char *)"The ^maximum news articles^ to fetch");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 18:E_SEC( 16,52, msgs.RDSec, "9.2 EDIT READ SECURITY", SetScreen)
|
||||
case 19:E_SEC( 17,52, msgs.WRSec, "9.2 EDIT WRITE SECURITY", SetScreen)
|
||||
case 20:E_SEC( 18,52, msgs.SYSec, "9.2 EDIT SYSOP SECURITY", SetScreen)
|
||||
case 21:E_BOOL(19,52, msgs.UsrDelete, "Allow users to ^Delete^ their messages")
|
||||
|
||||
case 22:E_BOOL(13,76, msgs.Aliases, "Allow ^aliases^ or real names only")
|
||||
case 23:E_BOOL(14,76, msgs.Quotes, "Add random ^quotes^ to new messages")
|
||||
case 24:E_BOOL(15,76, msgs.Mandatory, "Is this area ^mandatory^ for nodes")
|
||||
case 25:E_BOOL(16,76, msgs.UnSecure, "Toss messages ^UnSecure^, ie: no originating check")
|
||||
case 26:E_BOOL(17,76, msgs.OLR_Default, "Area is ^default^ for ^offline^ users.")
|
||||
case 27:E_BOOL(18,76, msgs.OLR_Forced, "Area is ^always on^ for ^offline^ users.")
|
||||
case 28:switch (msgs.Type) {
|
||||
case ECHOMAIL:
|
||||
case NEWS:
|
||||
case LIST: if (EditConnections(tfil))
|
||||
changed = TRUE;
|
||||
SetScreen();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user