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:
|
mbfido:
|
||||||
Rollover now only sets IsDoing when it really does a date
|
Rollover now only sets IsDoing when it really does a date
|
||||||
rollover.
|
rollover.
|
||||||
|
When a new tic area was created the first file received for
|
||||||
|
that area was refused.
|
||||||
|
|
||||||
newuser:
|
newuser:
|
||||||
Check for Unix accounts is now case sensitive.
|
Check for Unix accounts is now case sensitive.
|
||||||
@ -43,6 +45,9 @@ v0.35.03 06-Jul-2002
|
|||||||
mbsetup:
|
mbsetup:
|
||||||
Enabled setting of nodelist override settings in menu 7.x.3
|
Enabled setting of nodelist override settings in menu 7.x.3
|
||||||
After nodes setup edit the semafore scanout is set.
|
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:
|
script:
|
||||||
The bbsdoor.sh and rundoor.sh scripts are now only installed
|
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:
|
upgrade:
|
||||||
Delete ~/etc/lastcall.data
|
Delete ~/etc/lastcall.data
|
||||||
Delete ~/etc/archiver.data
|
Delete ~/etc/archiver.data
|
||||||
|
Delete ~/etc/virscan.data
|
||||||
Start mbsetup and enter the Edit Archiver Programs. The new
|
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:
|
general:
|
||||||
Added checks for GoldED in external program checks.
|
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.
|
tag, mbfido would crash.
|
||||||
Filefind netmail replies now set the private flag.
|
Filefind netmail replies now set the private flag.
|
||||||
Removed debugging messages displaying the incoming tic files.
|
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
|
destination to test. It doesn't use the internal fixed table
|
||||||
anymore.
|
anymore.
|
||||||
|
|
||||||
|
11
TODO
11
TODO
@ -1,6 +1,6 @@
|
|||||||
$Id$
|
$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
|
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: 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.
|
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 traffic to html.nodes
|
||||||
|
|
||||||
N: Add stats for posts made by external programs.
|
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
|
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.
|
||||||
|
|
||||||
U: When moving an JAM messagebase, check filefind records.
|
|
||||||
|
|
||||||
N: Put ZMH fields in the network setup for each zone.
|
N: Put ZMH fields in the network setup for each zone.
|
||||||
|
|
||||||
N: Add switch for file area to skip checking and indexing.
|
N: Add switch for file area to skip checking and indexing.
|
||||||
|
|
||||||
N: Add more nodelist override settings for nodes.
|
|
||||||
|
|
||||||
L: Generate crossreference document:
|
L: Generate crossreference document:
|
||||||
File Areas <=> BBS groups
|
File Areas <=> BBS groups
|
||||||
File Areas <=> Newfiles groups
|
File Areas <=> Newfiles groups
|
||||||
|
@ -169,6 +169,14 @@ int ProcessTic(fa_list *sbl)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
tidy_faddr(p_from);
|
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)) {
|
if ((tic.Secure) && (!TIC.TicIn.Hatch)) {
|
||||||
|
@ -993,250 +993,295 @@ void MsgGlobal(void)
|
|||||||
int EditMsgRec(int);
|
int EditMsgRec(int);
|
||||||
int EditMsgRec(int Area)
|
int EditMsgRec(int Area)
|
||||||
{
|
{
|
||||||
unsigned long crc1;
|
unsigned long crc1;
|
||||||
int tmp, i, connections = 0, changed = FALSE, Active, Forced = FALSE;
|
int tmp, i, connections = 0, changed = FALSE, Active, Forced = FALSE;
|
||||||
sysconnect System;
|
sysconnect System;
|
||||||
char *temp;
|
char *temp, oldpath[81];
|
||||||
|
FILE *fil;
|
||||||
|
|
||||||
clr_index();
|
clr_index();
|
||||||
IsDoing("Edit Msg Area");
|
IsDoing("Edit Msg Area");
|
||||||
|
|
||||||
if (LoadMsgRec(Area, TRUE) == -1)
|
if (LoadMsgRec(Area, TRUE) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
SetScreen();
|
SetScreen();
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
set_color(WHITE, BLACK);
|
set_color(WHITE, BLACK);
|
||||||
show_str( 6,16,40, msgs.Name);
|
show_str( 6,16,40, msgs.Name);
|
||||||
show_str( 7,16,50, msgs.Tag);
|
show_str( 7,16,50, msgs.Tag);
|
||||||
show_str( 8,16,12, msgs.Group);
|
show_str( 8,16,12, msgs.Group);
|
||||||
show_str( 9,16,64, msgs.Newsgroup);
|
show_str( 9,16,64, msgs.Newsgroup);
|
||||||
show_str(10,16,64, msgs.Base);
|
show_str(10,16,64, msgs.Base);
|
||||||
show_str(11,16,64, msgs.Origin);
|
show_str(11,16,64, msgs.Origin);
|
||||||
show_aka(12,16, msgs.Aka);
|
show_aka(12,16, msgs.Aka);
|
||||||
show_str(13,16,13, msgs.QWKname);
|
show_str(13,16,13, msgs.QWKname);
|
||||||
show_str(14,16,16, msgs.Distribution);
|
show_str(14,16,16, msgs.Distribution);
|
||||||
show_msgtype(15,16, msgs.Type);
|
show_msgtype(15,16, msgs.Type);
|
||||||
show_msgkinds(16,16, msgs.MsgKinds);
|
show_msgkinds(16,16, msgs.MsgKinds);
|
||||||
show_str(17,16,16, printable(getchrs(msgs.Ftncode), 0));
|
show_str(17,16,16, printable(getchrs(msgs.Ftncode), 0));
|
||||||
show_str(18,16,16, printable(getchrs(msgs.Rfccode), 0));
|
show_str(18,16,16, printable(getchrs(msgs.Rfccode), 0));
|
||||||
show_bool(19,16, msgs.Active);
|
show_bool(19,16, msgs.Active);
|
||||||
|
|
||||||
show_int( 13,52, msgs.DaysOld);
|
show_int( 13,52, msgs.DaysOld);
|
||||||
show_int( 14,52, msgs.MaxMsgs);
|
show_int( 14,52, msgs.MaxMsgs);
|
||||||
switch (msgs.Type) {
|
switch (msgs.Type) {
|
||||||
case ECHOMAIL: show_int( 15,52, msgs.NetReply);
|
case ECHOMAIL: show_int( 15,52, msgs.NetReply);
|
||||||
break;
|
break;
|
||||||
case NEWS: show_int( 15,52, msgs.MaxArticles);
|
case NEWS: show_int( 15,52, msgs.MaxArticles);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
show_int( 16,52, msgs.RDSec.level);
|
show_int( 16,52, msgs.RDSec.level);
|
||||||
show_int( 17,52, msgs.WRSec.level);
|
show_int( 17,52, msgs.WRSec.level);
|
||||||
show_int( 18,52, msgs.SYSec.level);
|
show_int( 18,52, msgs.SYSec.level);
|
||||||
show_bool(19,52, msgs.UsrDelete);
|
show_bool(19,52, msgs.UsrDelete);
|
||||||
|
|
||||||
show_bool(13,76, msgs.Aliases);
|
show_bool(13,76, msgs.Aliases);
|
||||||
show_bool(14,76, msgs.Quotes);
|
show_bool(14,76, msgs.Quotes);
|
||||||
show_bool(15,76, msgs.Mandatory);
|
show_bool(15,76, msgs.Mandatory);
|
||||||
show_bool(16,76, msgs.UnSecure);
|
show_bool(16,76, msgs.UnSecure);
|
||||||
show_bool(17,76, msgs.OLR_Default);
|
show_bool(17,76, msgs.OLR_Default);
|
||||||
show_bool(18,76, msgs.OLR_Forced);
|
show_bool(18,76, msgs.OLR_Forced);
|
||||||
connections = 0;
|
connections = 0;
|
||||||
switch (msgs.Type) {
|
switch (msgs.Type) {
|
||||||
case ECHOMAIL:
|
case ECHOMAIL:
|
||||||
case NEWS:
|
case NEWS:
|
||||||
case LIST: fseek(tfil, 0, SEEK_SET);
|
case LIST: fseek(tfil, 0, SEEK_SET);
|
||||||
while (fread(&System, sizeof(System), 1, tfil) == 1)
|
while (fread(&System, sizeof(System), 1, tfil) == 1)
|
||||||
if (System.aka.zone)
|
if (System.aka.zone)
|
||||||
connections++;
|
connections++;
|
||||||
show_int(19,76, 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);
|
|
||||||
}
|
|
||||||
break;
|
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);
|
|
||||||
|
|
||||||
/*
|
switch (select_menu(28)) {
|
||||||
* If there is an uplink defined in the group,
|
case 0: crc1 = 0xffffffff;
|
||||||
* and the first connected system is empty,
|
crc1 = upd_crc32((char *)&msgs, crc1, msgshdr.recsize);
|
||||||
* copy the uplink as default connection.
|
fseek(tfil, 0, 0);
|
||||||
*/
|
for (i = 0; i < (msgshdr.syssize / sizeof(sysconnect)); i++) {
|
||||||
if (mgroup.UpLink.zone) {
|
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);
|
fseek(tfil, 0, SEEK_SET);
|
||||||
fread(&System, sizeof(sysconnect), 1, tfil);
|
fwrite(&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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetScreen();
|
if (!strlen(msgs.Base) && strlen(msgs.Tag)) {
|
||||||
break;
|
/*
|
||||||
case 4: E_STR( 9,16,64,msgs.Newsgroup, "The ^Newsgroup^ name of this area")
|
* Invent the place for the JAM message base.
|
||||||
case 5: strcpy(msgs.Base, edit_jam(10,16,64,msgs.Base ,(char *)"The path to 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;
|
Forced = TRUE;
|
||||||
MailForced = TRUE;
|
MailForced = TRUE;
|
||||||
break;
|
}
|
||||||
case 6: E_STR( 11,16,64,msgs.Origin, "The ^Origin line^ to append to Echomail messages")
|
break;
|
||||||
case 7: tmp = PickAka((char *)"9.2.7", TRUE);
|
case 6: E_STR( 11,16,64,msgs.Origin, "The ^Origin line^ to append to Echomail messages")
|
||||||
if (tmp != -1)
|
case 7: tmp = PickAka((char *)"9.2.7", TRUE);
|
||||||
msgs.Aka = CFG.aka[tmp];
|
if (tmp != -1)
|
||||||
SetScreen(); break;
|
msgs.Aka = CFG.aka[tmp];
|
||||||
case 8: E_UPS( 13,16,13,msgs.QWKname, "The name for ^QWK or Bluewave^ message packets")
|
SetScreen();
|
||||||
case 9: E_STR( 14,16,16,msgs.Distribution, "The ^Distribution^ name if this is a newsgroup")
|
break;
|
||||||
case 10:msgs.Type = edit_msgtype(15,16, msgs.Type);
|
case 8: E_UPS( 13,16,13,msgs.QWKname, "The name for ^QWK or Bluewave^ message packets")
|
||||||
SetScreen();
|
case 9: E_STR( 14,16,16,msgs.Distribution, "The ^Distribution^ name if this is a newsgroup")
|
||||||
break;
|
case 10:msgs.Type = edit_msgtype(15,16, msgs.Type);
|
||||||
case 11:msgs.MsgKinds = edit_msgkinds(16,16, msgs.MsgKinds); break;
|
SetScreen();
|
||||||
case 14:Active = edit_bool(19,16, msgs.Active, (char *)"Is this area ^Active^");
|
break;
|
||||||
if (msgs.Active && !Active) {
|
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^");
|
||||||
* Attempt to deactivate area, do some checks.
|
if (msgs.Active && !Active) {
|
||||||
*/
|
/*
|
||||||
if (connections) {
|
* Attempt to deactivate area, do some checks.
|
||||||
if (yes_no((char *)"There are nodes connected, disconnect them") == 0)
|
*/
|
||||||
|
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;
|
Active = TRUE;
|
||||||
}
|
}
|
||||||
if (!Active) {
|
free(temp);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!msgs.Active && Active)
|
if (!Active) {
|
||||||
msgs.Active = TRUE;
|
/*
|
||||||
SetScreen();
|
* Make it so
|
||||||
break;
|
*/
|
||||||
case 15:E_INT( 13,52, msgs.DaysOld, "Maximum ^days^ to keep mail in this area")
|
Msg_DeleteMsgBase(msgs.Base);
|
||||||
case 16:E_INT( 14,52, msgs.MaxMsgs, "The ^maximum^ amount of messages in this area")
|
memset(&System, 0, sizeof(System));
|
||||||
case 17:switch (msgs.Type) {
|
fseek(tfil, 0, SEEK_SET);
|
||||||
case ECHOMAIL: msgs.NetReply = edit_int(15,52,msgs.NetReply,
|
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");
|
(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,
|
||||||
break;
|
(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