Now echomail also honors the pack mail switch

This commit is contained in:
Michiel Broek 2002-10-31 19:41:25 +00:00
parent 3528a2e67e
commit 7cb2fc2f54
7 changed files with 121 additions and 82 deletions

View File

@ -35,6 +35,8 @@ v0.35.05 19-Oct-2002
Added in screen 1.14 settings for Plus All, Notify, Passwd and Added in screen 1.14 settings for Plus All, Notify, Passwd and
Pause. Pause.
Removed the default Virnet record from the fidonet setup. Removed the default Virnet record from the fidonet setup.
In node setup the pack netmail switch is renamed and is now
for all mail.
mbfido: mbfido:
With ticfile processing, the KeepDate setup setting now works. With ticfile processing, the KeepDate setup setting now works.
@ -42,6 +44,9 @@ v0.35.05 19-Oct-2002
Plus All, Notify, Passwd, Message, Tic on/off and Pause. Plus All, Notify, Passwd, Message, Tic on/off and Pause.
The AreaMgr reuqests now honor the setting of the switches The AreaMgr reuqests now honor the setting of the switches
Plus All, Notify, Passwd and Pause. Plus All, Notify, Passwd and Pause.
Echomail is now also packed or not according to the packmail
switch in mbsetup.
Statistics count for exported echomail now works.
mbtask: mbtask:
Removed debug logging of "does" info. Removed debug logging of "does" info.

2
TODO
View File

@ -90,8 +90,6 @@ mbfido:
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. uppercase.
N: Echomail is packed when mail for a node is set to unpacked.
mbcico: mbcico:
L: Implement modem connect response translation for ISDN lines, i.e. L: Implement modem connect response translation for ISDN lines, i.e.
make the CAUSE responses human readable. see McMail for this make the CAUSE responses human readable. see McMail for this

View File

@ -12,7 +12,7 @@
</HEAD> </HEAD>
<BODY> <BODY>
<BLOCKQUOTE> <BLOCKQUOTE>
<div align=right><h5>Last update 28-Sep-2002</h5></div> <div align=right><h5>Last update 31-Oct-2002</h5></div>
<div align=center><H1>MBSE BBS Setup - Fidonet nodes.</H1></div> <div align=center><H1>MBSE BBS Setup - Fidonet nodes.</H1></div>
<P> <P>
@ -61,7 +61,7 @@ netmail to this node.</td></tr>
to this node.</td></tr> to this node.</td></tr>
<tr><th nowrap align=left valign=top>Netmail hold</th><td>Put mail on "hold" for this <tr><th nowrap align=left valign=top>Netmail hold</th><td>Put mail on "hold" for this
node.</td></tr> node.</td></tr>
<tr><th nowrap align=left valign=top>Pack netmail</th><td>Should netmail be packed in <tr><th nowrap align=left valign=top>Pack mail</th><td>Should net- and echomail be packed in
arcmail archives.</td></tr> arcmail archives.</td></tr>
<tr><th nowrap align=left valign=top>Send notify</th><td>Send automatic generated <tr><th nowrap align=left valign=top>Send notify</th><td>Send automatic generated
notify messages.</td></tr> notify messages.</td></tr>

View File

@ -179,7 +179,7 @@ maketags.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/
mbmsg.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/msg.h ../lib/dbcfg.h ../lib/mberrors.h post.h mbmsg.h mbmsg.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/msg.h ../lib/dbcfg.h ../lib/mberrors.h post.h mbmsg.h
newspost.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/mbinet.h newspost.h newspost.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/mbinet.h newspost.h
postemail.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/dbuser.h ../lib/common.h ../lib/clcomm.h ../lib/mbinet.h postemail.h postemail.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/dbuser.h ../lib/common.h ../lib/clcomm.h ../lib/mbinet.h postemail.h
scan.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/msg.h ../lib/clcomm.h ../lib/msgtext.h ../lib/dbnode.h ../lib/dbmsgs.h addpkt.h tracker.h ftn2rfc.h rfc2ftn.h postemail.h scan.h scan.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/msg.h ../lib/clcomm.h ../lib/msgtext.h ../lib/dbnode.h ../lib/dbmsgs.h addpkt.h tracker.h ftn2rfc.h rfc2ftn.h rollover.h postemail.h scan.h
toberep.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h tic.h toberep.h toberep.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h tic.h toberep.h
atoul.o: ../config.h ../lib/libs.h ../lib/memwatch.h atoul.h atoul.o: ../config.h ../lib/libs.h ../lib/memwatch.h atoul.h
filemgr.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/msg.h ../lib/msgtext.h ../lib/dbcfg.h ../lib/dbnode.h ../lib/dbtic.h ../lib/dbdupe.h ../lib/dbuser.h ../lib/dbftn.h ../lib/diesel.h sendmail.h mgrutil.h createf.h filemgr.h filemgr.o: ../config.h ../lib/libs.h ../lib/memwatch.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/msg.h ../lib/msgtext.h ../lib/dbcfg.h ../lib/dbnode.h ../lib/dbtic.h ../lib/dbdupe.h ../lib/dbuser.h ../lib/dbftn.h ../lib/diesel.h sendmail.h mgrutil.h createf.h filemgr.h

View File

@ -80,12 +80,25 @@ int EchoOut(fidoaddr, char *, char *, char *, FILE *, int, int, time_t);
*/ */
int EchoOut(fidoaddr aka, char *toname, char *fromname, char *subj, FILE *fp, int flags, int cost, time_t date) int EchoOut(fidoaddr aka, char *toname, char *fromname, char *subj, FILE *fp, int flags, int cost, time_t date)
{ {
char *buf; char *buf, ext[4];
FILE *qp; FILE *qp;
faddr *From, *To; faddr *From, *To;
int rc; int rc;
if ((qp = OpenPkt(msgs.Aka, aka, (char *)"qqq")) == NULL) { /*
* Pack flavor for echomail packets.
*/
memset(&ext, 0, sizeof(ext));
if (nodes.PackNetmail)
sprintf(ext, (char *)"qqq");
else if (nodes.Crash)
sprintf(ext, (char *)"ccc");
else if (nodes.Hold)
sprintf(ext, (char *)"hhh");
else
sprintf(ext, (char *)"nnn");
if ((qp = OpenPkt(msgs.Aka, aka, (char *)ext)) == NULL) {
WriteError("EchoOut(): OpenPkt failed"); WriteError("EchoOut(): OpenPkt failed");
return 1; return 1;
} }
@ -496,10 +509,12 @@ int postecho(faddr *p_from, faddr *f, faddr *t, char *orig, char *subj, time_t m
StatAdd(&nodes.MailSent, 1L); StatAdd(&nodes.MailSent, 1L);
UpdateNode(); UpdateNode();
SearchNode(tmpq->aka); SearchNode(tmpq->aka);
echo_out++;
if (EchoOut(tmpq->aka, t->name, f->name, subj, nfp, flags, cost, mdate))
WriteError("Forward echomail to %s failed", aka2str(tmpq->aka));
} else {
WriteError("Forward echomail to %s failed, noderecord not found", aka2str(tmpq->aka));
} }
echo_out++;
if (EchoOut(tmpq->aka, t->name, f->name, subj, nfp, flags, cost, mdate))
WriteError("Forward echomail to %s failed", aka2str(tmpq->aka));
} }
} }

View File

@ -44,6 +44,7 @@
#include "tracker.h" #include "tracker.h"
#include "ftn2rfc.h" #include "ftn2rfc.h"
#include "rfc2ftn.h" #include "rfc2ftn.h"
#include "rollover.h"
#include "postemail.h" #include "postemail.h"
#include "scan.h" #include "scan.h"
@ -573,86 +574,106 @@ int RescanOne(faddr *L, char *marea, unsigned long Num)
*/ */
void ExportEcho(sysconnect L, unsigned long MsgNum, fa_list **sbl) void ExportEcho(sysconnect L, unsigned long MsgNum, fa_list **sbl)
{ {
char *p; int seenlen, oldnet, flags = 0, is_pid = FALSE;
int seenlen, oldnet, flags = 0; char *p, sbe[16], ext[4];
char sbe[16]; fa_list *tmpl;
fa_list *tmpl; FILE *qp;
FILE *qp; faddr *from, *dest;
faddr *from, *dest;
int is_pid = FALSE;
if ((!L.sendto) || L.pause || L.cutoff) if ((!L.sendto) || L.pause || L.cutoff)
return; return;
Syslog('M', "Export to %s", aka2str(L.aka)); Syslog('M', "Export to %s", aka2str(L.aka));
if ((qp = OpenPkt(msgs.Aka, L.aka, (char *)"qqq")) == NULL) if (!SearchNode(L.aka)) {
return; WriteError("Can't send to %s, noderecord not found", aka2str(L.aka));
return;
}
flags |= (Msg.Private) ? M_PVT : 0; /*
from = fido2faddr(msgs.Aka); * Add statistics count
dest = fido2faddr(L.aka); */
AddMsgHdr(qp, from, dest, flags, 0, Msg.Written, Msg.To, Msg.From, Msg.Subject); StatAdd(&nodes.MailSent, 1L);
tidy_faddr(from); UpdateNode();
tidy_faddr(dest); SearchNode(L.aka);
fprintf(qp, "AREA:%s\r", msgs.Tag);
if (Msg_Read(MsgNum, 78)) { memset(&ext, 0, sizeof(ext));
if ((p = (char *)MsgText_First()) != NULL) { if (nodes.PackNetmail)
do { sprintf(ext, (char *)"qqq");
if ((strncmp(p, " * Origin:", 10) == 0) && !is_pid) { else if (nodes.Crash)
/* sprintf(ext, (char *)"ccc");
* If there was no PID kludge, insert the TID else if (nodes.Hold)
* kludge anyway. sprintf(ext, (char *)"hhh");
*/ else
fprintf(qp, "\001TID: MBSE-FIDO %s\r", VERSION); sprintf(ext, (char *)"nnn");
}
fprintf(qp, "%s", p);
if (strncmp(p, " * Origin:", 10) == 0)
break;
/* if ((qp = OpenPkt(msgs.Aka, L.aka, (char *)ext)) == NULL)
* Only append CR if not the last line return;
*/
fprintf(qp, "\r");
/* flags |= (Msg.Private) ? M_PVT : 0;
* Append ^aTID line behind the PID. from = fido2faddr(msgs.Aka);
*/ dest = fido2faddr(L.aka);
if (strncmp(p, "\001PID", 4) == 0) { AddMsgHdr(qp, from, dest, flags, 0, Msg.Written, Msg.To, Msg.From, Msg.Subject);
fprintf(qp, "\001TID: MBSE-FIDO %s\r", VERSION); tidy_faddr(from);
is_pid = TRUE; tidy_faddr(dest);
} fprintf(qp, "AREA:%s\r", msgs.Tag);
} while ((p = (char *)MsgText_Next()) != NULL); if (Msg_Read(MsgNum, 78)) {
if ((p = (char *)MsgText_First()) != NULL) {
do {
if ((strncmp(p, " * Origin:", 10) == 0) && !is_pid) {
/*
* If there was no PID kludge, insert the TID
* kludge anyway.
*/
fprintf(qp, "\001TID: MBSE-FIDO %s\r", VERSION);
} }
} fprintf(qp, "%s", p);
if (strncmp(p, " * Origin:", 10) == 0)
break;
seenlen = MAXSEEN + 1; /*
/* * Only append CR if not the last line
* Ensure that it will not match the first entry. */
*/ fprintf(qp, "\r");
oldnet = (*sbl)->addr->net - 1;
for (tmpl = *sbl; tmpl; tmpl = tmpl->next) { /*
if (tmpl->addr->net == oldnet) * Append ^aTID line behind the PID.
sprintf(sbe, " %u", tmpl->addr->node); */
else if (strncmp(p, "\001PID", 4) == 0) {
sprintf(sbe, " %u/%u", tmpl->addr->net, tmpl->addr->node); fprintf(qp, "\001TID: MBSE-FIDO %s\r", VERSION);
oldnet = tmpl->addr->net; is_pid = TRUE;
seenlen += strlen(sbe);
if (seenlen > MAXSEEN) {
seenlen = 0;
fprintf(qp, "\rSEEN-BY:");
sprintf(sbe, " %u/%u", tmpl->addr->net, tmpl->addr->node);
seenlen = strlen(sbe);
} }
fprintf(qp, "%s", sbe);
}
fprintf(qp, "\r\001PATH: %u/%u\r", msgs.Aka.net, msgs.Aka.node);
putc(0, qp);
fclose(qp);
echo_out++; } while ((p = (char *)MsgText_Next()) != NULL);
}
}
seenlen = MAXSEEN + 1;
/*
* Ensure that it will not match the first entry.
*/
oldnet = (*sbl)->addr->net - 1;
for (tmpl = *sbl; tmpl; tmpl = tmpl->next) {
if (tmpl->addr->net == oldnet)
sprintf(sbe, " %u", tmpl->addr->node);
else
sprintf(sbe, " %u/%u", tmpl->addr->net, tmpl->addr->node);
oldnet = tmpl->addr->net;
seenlen += strlen(sbe);
if (seenlen > MAXSEEN) {
seenlen = 0;
fprintf(qp, "\rSEEN-BY:");
sprintf(sbe, " %u/%u", tmpl->addr->net, tmpl->addr->node);
seenlen = strlen(sbe);
}
fprintf(qp, "%s", sbe);
}
fprintf(qp, "\r\001PATH: %u/%u\r", msgs.Aka.net, msgs.Aka.node);
putc(0, qp);
fclose(qp);
echo_out++;
} }

View File

@ -667,7 +667,7 @@ void GeneralScreen(void)
mvprintw(15, 2, "9. Netmail direct"); mvprintw(15, 2, "9. Netmail direct");
mvprintw(16, 2, "10. Netmail crash"); mvprintw(16, 2, "10. Netmail crash");
mvprintw(17, 2, "11. Netmail hold"); mvprintw(17, 2, "11. Netmail hold");
mvprintw(18, 2, "12. Pack netmail"); mvprintw(18, 2, "12. Pack mail");
mvprintw(16,42, "13. Send notify"); mvprintw(16,42, "13. Send notify");
mvprintw(17,42, "14. Language"); mvprintw(17,42, "14. Language");
@ -736,7 +736,7 @@ void GeneralEdit(void)
if (nodes.Hold) if (nodes.Hold)
nodes.Crash = FALSE; nodes.Crash = FALSE;
break; break;
case 12:E_BOOL(18,23, nodes.PackNetmail, "^Pack netmail^ for this node") case 12:E_BOOL(18,23, nodes.PackNetmail, "^Pack mail^ for this node")
case 13:E_BOOL(16,63, nodes.Notify, "Send ^notify^ messages to this node") case 13:E_BOOL(16,63, nodes.Notify, "Send ^notify^ messages to this node")
case 14:i = PickLanguage((char *)"7.1.14"); case 14:i = PickLanguage((char *)"7.1.14");
if (i != '\0') if (i != '\0')
@ -1464,7 +1464,7 @@ int node_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Mail direct %s", getboolean(nodes.Direct)); fprintf(fp, " Mail direct %s", getboolean(nodes.Direct));
fprintf(fp, " Mail crash %s", getboolean(nodes.Crash)); fprintf(fp, " Mail crash %s", getboolean(nodes.Crash));
fprintf(fp, " Mail hold %s\n", getboolean(nodes.Hold)); fprintf(fp, " Mail hold %s\n", getboolean(nodes.Hold));
fprintf(fp, " Pack Netmail %s", getboolean(nodes.PackNetmail)); fprintf(fp, " Pack mail %s", getboolean(nodes.PackNetmail));
fprintf(fp, " Send notify %s", getboolean(nodes.Notify)); fprintf(fp, " Send notify %s", getboolean(nodes.Notify));
fprintf(fp, " Language %c\n", nodes.Language); fprintf(fp, " Language %c\n", nodes.Language);
fprintf(fp, " No EMSI %s", getboolean(nodes.NoEMSI)); fprintf(fp, " No EMSI %s", getboolean(nodes.NoEMSI));