Some fixes for removed charset translations
This commit is contained in:
parent
08542985ff
commit
21fc5daf37
@ -37,6 +37,12 @@ v0.37.01 14-Jan-2003.
|
|||||||
mbfido:
|
mbfido:
|
||||||
Removed all code for charset translation.
|
Removed all code for charset translation.
|
||||||
|
|
||||||
|
mbsetup:
|
||||||
|
Added protection against wrong database sizes depending on
|
||||||
|
global settings.
|
||||||
|
When moving a message area to area zero mbsetup doesn't crash
|
||||||
|
anymore.
|
||||||
|
|
||||||
|
|
||||||
v0.37.00 26-Dec-2002 - 14-Jan-2003
|
v0.37.00 26-Dec-2002 - 14-Jan-2003
|
||||||
|
|
||||||
|
2
TODO
2
TODO
@ -151,8 +151,6 @@ mbtask:
|
|||||||
and then hangs up (at least with telnet), mbtask aborts.
|
and then hangs up (at least with telnet), mbtask aborts.
|
||||||
|
|
||||||
mbsetup:
|
mbsetup:
|
||||||
U: In menu 9.2 moving a valid area to area 0 will crash mbsetup.
|
|
||||||
|
|
||||||
N: Add a check for double areatag names.
|
N: Add a check for double areatag names.
|
||||||
|
|
||||||
U: PickAka function lets mbsetup crash if domain is 12 characters
|
U: PickAka function lets mbsetup crash if domain is 12 characters
|
||||||
|
106
mbfido/rfc2ftn.c
106
mbfido/rfc2ftn.c
@ -64,8 +64,6 @@ static int removemime;
|
|||||||
static int removemsgid;
|
static int removemsgid;
|
||||||
static int removeref;
|
static int removeref;
|
||||||
static int removeinreply;
|
static int removeinreply;
|
||||||
static int removesupersedes;
|
|
||||||
static int removeapproved;
|
|
||||||
static int removereplyto;
|
static int removereplyto;
|
||||||
static int removereturnto;
|
static int removereturnto;
|
||||||
|
|
||||||
@ -85,7 +83,7 @@ extern char *replyaddr;
|
|||||||
/*
|
/*
|
||||||
* Internal functions
|
* Internal functions
|
||||||
*/
|
*/
|
||||||
int needputrfc(rfcmsg *);
|
int needputrfc(rfcmsg *, int);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -207,8 +205,6 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
removemsgid = FALSE;
|
removemsgid = FALSE;
|
||||||
removeref = FALSE;
|
removeref = FALSE;
|
||||||
removeinreply = FALSE;
|
removeinreply = FALSE;
|
||||||
removesupersedes = FALSE;
|
|
||||||
removeapproved = FALSE;
|
|
||||||
removereplyto = TRUE;
|
removereplyto = TRUE;
|
||||||
removereturnto = TRUE;
|
removereturnto = TRUE;
|
||||||
ftnorigin = fmsg->ftnorigin;
|
ftnorigin = fmsg->ftnorigin;
|
||||||
@ -227,11 +223,11 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
* Check for mime to remove.
|
* Check for mime to remove.
|
||||||
*/
|
*/
|
||||||
if ((strncasecmp(p, "text/plain", 10) == 0) && ((q == NULL) ||
|
if ((strncasecmp(p, "text/plain", 10) == 0) && ((q == NULL) ||
|
||||||
(strncasecmp(q,"7bit",4) == 0) || (strncasecmp(q,"8bit",4) == 0)))
|
(strncasecmp(q,"7bit",4) == 0) || (strncasecmp(q,"8bit",4) == 0))) {
|
||||||
removemime=1; /* no need in MIME headers */
|
removemime = TRUE; /* no need in MIME headers */
|
||||||
}
|
|
||||||
if (removemime)
|
|
||||||
Syslog('m', "removemime=%s", removemime ? "True":"False");
|
Syslog('m', "removemime=%s", removemime ? "True":"False");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((p = hdr((char *)"Message-ID",msg))) {
|
if ((p = hdr((char *)"Message-ID",msg))) {
|
||||||
if (!removemsgid)
|
if (!removemsgid)
|
||||||
@ -249,24 +245,6 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
if (removeref)
|
if (removeref)
|
||||||
Syslog('m', "removeref = %s", removeref ? "True":"False");
|
Syslog('m', "removeref = %s", removeref ? "True":"False");
|
||||||
|
|
||||||
if ((p = hdr((char *)"Supersedes",msg)))
|
|
||||||
removesupersedes = chkftnmsgid(p);
|
|
||||||
if (removesupersedes)
|
|
||||||
Syslog('m', "removesupersedes = %s", removesupersedes ? "True":"False");
|
|
||||||
|
|
||||||
if ((p = hdr((char *)"Approved",msg))) {
|
|
||||||
while (*p && isspace(*p))
|
|
||||||
p++;
|
|
||||||
if ((q = strchr(p,'\n')))
|
|
||||||
*q='\0';
|
|
||||||
// if (newsmode && strlen(msgs.Moderator) && (strcasestr(msgs.Moderator,p)))
|
|
||||||
// removeapproved = TRUE;
|
|
||||||
if (q)
|
|
||||||
*q='\n';
|
|
||||||
}
|
|
||||||
if (removeapproved)
|
|
||||||
Syslog('m', "removeapproved = %s", removeapproved ? "True":"False");
|
|
||||||
|
|
||||||
if ((p = hdr((char *)"Reply-To",msg))) {
|
if ((p = hdr((char *)"Reply-To",msg))) {
|
||||||
removereplyto = FALSE;
|
removereplyto = FALSE;
|
||||||
if ((q = hdr((char *)"From",msg))) {
|
if ((q = hdr((char *)"From",msg))) {
|
||||||
@ -325,7 +303,7 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
|
|
||||||
if ((fmsg->origin) && (strlen(fmsg->origin) > i))
|
if ((fmsg->origin) && (strlen(fmsg->origin) > i))
|
||||||
fmsg->origin[i]='\0';
|
fmsg->origin[i]='\0';
|
||||||
forbidsplit = (ftnorigin || (hdr((char *)"X-FTN-Split",msg)));
|
forbidsplit = (ftnorigin || ((p = hdr((char *)"X-FTN-Split",msg)) && (strcasecmp(p," already\n") == 0)));
|
||||||
needsplit = 0;
|
needsplit = 0;
|
||||||
splitpart = 0;
|
splitpart = 0;
|
||||||
hdrsize = 20;
|
hdrsize = 20;
|
||||||
@ -431,15 +409,6 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (getchrs(outcode) != NULL) {
|
|
||||||
// hdrsize += 8 + strlen(getchrs(outcode));
|
|
||||||
// fprintf(ofp, "\001CHRS: %s\n", getchrs(outcode));
|
|
||||||
// if (html_message) {
|
|
||||||
// hdrsize += 9;
|
|
||||||
// fprintf(ofp, "\1HTML: 5\n");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (CFG.allowcontrol && (!hdr((char *)"X-FTN-ACUPDATE",msg)) && (p=hdr((char *)"Control",msg))) {
|
if (CFG.allowcontrol && (!hdr((char *)"X-FTN-ACUPDATE",msg)) && (p=hdr((char *)"Control",msg))) {
|
||||||
if (strstr(p,"cancel")) {
|
if (strstr(p,"cancel")) {
|
||||||
ftnmsgid(p,&acup_a,&acup_n,fmsg->area);
|
ftnmsgid(p,&acup_a,&acup_n,fmsg->area);
|
||||||
@ -535,7 +504,7 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (tmp = msg; tmp; tmp = tmp->next) {
|
for (tmp = msg; tmp; tmp = tmp->next) {
|
||||||
if ((needputrfc(tmp) == 1)) {
|
if ((needputrfc(tmp, newsmode) == 1)) {
|
||||||
if (strcasestr((char *)"X-Origin-Newsgroups",tmp->key)) {
|
if (strcasestr((char *)"X-Origin-Newsgroups",tmp->key)) {
|
||||||
hdrsize += 10+strlen(tmp->val);
|
hdrsize += 10+strlen(tmp->val);
|
||||||
fprintf(ofp,"\1RFC-Newsgroups:");
|
fprintf(ofp,"\1RFC-Newsgroups:");
|
||||||
@ -543,14 +512,13 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
hdrsize += strlen(tmp->key)+strlen(tmp->val);
|
hdrsize += strlen(tmp->key)+strlen(tmp->val);
|
||||||
fprintf(ofp,"\1RFC-%s:",tmp->key);
|
fprintf(ofp,"\1RFC-%s:",tmp->key);
|
||||||
}
|
}
|
||||||
// kludgewrite(hdrconv(tmp->val, incode, outcode),ofp);
|
|
||||||
kludgewrite(tmp->val, ofp);
|
kludgewrite(tmp->val, ofp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rfcheaders=0;
|
rfcheaders=0;
|
||||||
for (tmp=msg;tmp;tmp=tmp->next) {
|
for (tmp=msg;tmp;tmp=tmp->next) {
|
||||||
if ((needputrfc(tmp) > 1)) {
|
if ((needputrfc(tmp, newsmode) > 1)) {
|
||||||
rfcheaders++;
|
rfcheaders++;
|
||||||
if (strcasestr((char *)"X-Origin-Newsgroups",tmp->key)) {
|
if (strcasestr((char *)"X-Origin-Newsgroups",tmp->key)) {
|
||||||
hdrsize += 10+strlen(tmp->val);
|
hdrsize += 10+strlen(tmp->val);
|
||||||
@ -560,7 +528,6 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
fprintf(ofp,"%s:",tmp->key);
|
fprintf(ofp,"%s:",tmp->key);
|
||||||
}
|
}
|
||||||
charwrite(tmp->val, ofp);
|
charwrite(tmp->val, ofp);
|
||||||
// charwrite(hdrconv(tmp->val, incode, outcode),ofp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,8 +535,6 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
charwrite((char *)"\n",ofp);
|
charwrite((char *)"\n",ofp);
|
||||||
if ((hdr((char *)"X-FTN-SOT",msg)) || (sot_kludge))
|
if ((hdr((char *)"X-FTN-SOT",msg)) || (sot_kludge))
|
||||||
fprintf(ofp,"\1SOT:\n");
|
fprintf(ofp,"\1SOT:\n");
|
||||||
// if ((splitpart == 0) && (hdr((char *)"X-PGP-Signed",msg)))
|
|
||||||
// fprintf(ofp,PGP_SIGNED_BEGIN"\n");
|
|
||||||
}
|
}
|
||||||
if (replyaddr) {
|
if (replyaddr) {
|
||||||
replyaddr = NULL;
|
replyaddr = NULL;
|
||||||
@ -581,56 +546,16 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
} else if ((p=hdr((char *)"X-Body-Start",msg))) {
|
} else if ((p=hdr((char *)"X-Body-Start",msg))) {
|
||||||
datasize += strlen(p);
|
datasize += strlen(p);
|
||||||
charwrite(p, ofp);
|
charwrite(p, ofp);
|
||||||
// if (qp_or_base64==1)
|
|
||||||
// charwrite(strkconv(qp_decode(p), incode, outcode), ofp);
|
|
||||||
// else if (qp_or_base64==2)
|
|
||||||
// charwrite(strkconv(b64_decode(p), incode, outcode), ofp);
|
|
||||||
// else
|
|
||||||
// charwrite(strkconv(p, incode, outcode), ofp);
|
|
||||||
}
|
}
|
||||||
//Syslog('-', "14");
|
|
||||||
while (!(needsplit=(!forbidsplit) && (((splitpart && (datasize > (CFG.new_split * 1024))) ||
|
while (!(needsplit=(!forbidsplit) && (((splitpart && (datasize > (CFG.new_split * 1024))) ||
|
||||||
(!splitpart && ((datasize+hdrsize) > (CFG.new_split * 1024)))))) && (bgets(temp,4096-1,fp))) {
|
(!splitpart && ((datasize+hdrsize) > (CFG.new_split * 1024)))))) && (bgets(temp,4096-1,fp))) {
|
||||||
// Striplf(temp);
|
|
||||||
Syslog('-', "%d", strlen(temp));
|
|
||||||
// if (*(temp + strlen(temp)) != '\0') {
|
|
||||||
Syslog('-', "%d", (*(temp + strlen(temp))));
|
|
||||||
// }
|
|
||||||
Syslog('-', "14a \"%s\"", temp);
|
|
||||||
datasize += strlen(temp);
|
datasize += strlen(temp);
|
||||||
charwrite(temp, ofp);
|
charwrite(temp, ofp);
|
||||||
// if (qp_or_base64==1)
|
|
||||||
// charwrite(strkconv(qp_decode(temp), incode, outcode), ofp);
|
|
||||||
// else if (qp_or_base64==2)
|
|
||||||
// charwrite(strkconv(b64_decode(temp), incode, outcode), ofp);
|
|
||||||
// else
|
|
||||||
// charwrite(strkconv(temp, incode, outcode), ofp);
|
|
||||||
}
|
}
|
||||||
//Syslog('-', "15");
|
|
||||||
if (needsplit) {
|
if (needsplit) {
|
||||||
fprintf(ofp,"\n * Message split, to be continued *\n");
|
fprintf(ofp,"\n * Message split, to be continued *\n");
|
||||||
splitpart++;
|
splitpart++;
|
||||||
// } else if ((p=hdr((char *)"X-PGP-Signed",msg))) {
|
|
||||||
// fprintf(ofp,PGP_SIG_BEGIN"\n");
|
|
||||||
// if ((q=hdr((char *)"X-PGP-Version",msg))) {
|
|
||||||
// fprintf(ofp,"Version:");
|
|
||||||
// charwrite(q,ofp);
|
|
||||||
// }
|
|
||||||
// if ((q=hdr((char *)"X-PGP-Charset",msg))) {
|
|
||||||
// fprintf(ofp,"Charset:");
|
|
||||||
// charwrite(q,ofp);
|
|
||||||
// }
|
|
||||||
// if ((q=hdr((char *)"X-PGP-Comment",msg))) {
|
|
||||||
// fprintf(ofp,"Comment:");
|
|
||||||
// charwrite(q,ofp);
|
|
||||||
// }
|
|
||||||
// fprintf(ofp,"\n");
|
|
||||||
// p=xstrcpy(p);
|
|
||||||
// q=strtok(p," \t\n");
|
|
||||||
// fprintf(ofp,"%s\n",q);
|
|
||||||
// while ((q=(strtok(NULL," \t\n"))))
|
|
||||||
// fprintf(ofp,"%s\n",q);
|
|
||||||
// fprintf(ofp,PGP_SIG_END"\n");
|
|
||||||
}
|
}
|
||||||
if ((p=hdr((char *)"X-FTN-EOT",msg)) || (eot_kludge))
|
if ((p=hdr((char *)"X-FTN-EOT",msg)) || (eot_kludge))
|
||||||
fprintf(ofp,"\1EOT:\n");
|
fprintf(ofp,"\1EOT:\n");
|
||||||
@ -790,7 +715,7 @@ int rfc2ftn(FILE *fp, faddr *recipient)
|
|||||||
* 1 make kludge
|
* 1 make kludge
|
||||||
* >1 pass
|
* >1 pass
|
||||||
*/
|
*/
|
||||||
int needputrfc(rfcmsg *msg)
|
int needputrfc(rfcmsg *msg, int newsmode)
|
||||||
{
|
{
|
||||||
faddr *ta;
|
faddr *ta;
|
||||||
|
|
||||||
@ -832,11 +757,11 @@ int needputrfc(rfcmsg *msg)
|
|||||||
}
|
}
|
||||||
if (!strcasecmp(msg->key,"Return-Path")) return 1;
|
if (!strcasecmp(msg->key,"Return-Path")) return 1;
|
||||||
if (!strcasecmp(msg->key,"Xref")) return 0;
|
if (!strcasecmp(msg->key,"Xref")) return 0;
|
||||||
if (!strcasecmp(msg->key,"Approved")) return removeapproved ? -1:1; // Was -1:2 18-04-2002 MB.
|
if (!strcasecmp(msg->key,"Approved")) return 1;
|
||||||
if (!strcasecmp(msg->key,"X-URL")) return 0;
|
if (!strcasecmp(msg->key,"X-URL")) return 0;
|
||||||
if (!strcasecmp(msg->key,"Return-Receipt-To")) return removereturnto? 0:1;
|
if (!strcasecmp(msg->key,"Return-Receipt-To")) return removereturnto? 0:1;
|
||||||
if (!strcasecmp(msg->key,"Notice-Requested-Upon-Delivery-To")) return 0;
|
if (!strcasecmp(msg->key,"Notice-Requested-Upon-Delivery-To")) return 0;
|
||||||
if (!strcasecmp(msg->key,"Received")) return ftnorigin ?0:1;
|
if (!strcasecmp(msg->key,"Received")) return newsmode?0:2;
|
||||||
if (!strcasecmp(msg->key,"From")) {
|
if (!strcasecmp(msg->key,"From")) {
|
||||||
if ((ta = parsefaddr(msg->val))) {
|
if ((ta = parsefaddr(msg->val))) {
|
||||||
tidy_faddr(ta);
|
tidy_faddr(ta);
|
||||||
@ -874,6 +799,11 @@ int needputrfc(rfcmsg *msg)
|
|||||||
if (!strcasecmp(msg->key,"Comment-To")) return 0;
|
if (!strcasecmp(msg->key,"Comment-To")) return 0;
|
||||||
if (!strcasecmp(msg->key,"X-Comment-To")) return 0;
|
if (!strcasecmp(msg->key,"X-Comment-To")) return 0;
|
||||||
if (!strcasecmp(msg->key,"X-Apparently-To")) return 0;
|
if (!strcasecmp(msg->key,"X-Apparently-To")) return 0;
|
||||||
|
if (!strcasecmp(msg->key,"X-Originating-IP")) return 0;
|
||||||
|
if (!strcasecmp(msg->key,"X-Virus-Scanned")) return 0;
|
||||||
|
if (!strcasecmp(msg->key,"X-AntiVirus")) return 0;
|
||||||
|
if (!strcasecmp(msg->key,"X-Delivery-Agent")) return 0;
|
||||||
|
if (!strcasecmp(msg->key,"X-Virtual-Domain")) return 0;
|
||||||
if (!strcasecmp(msg->key,"Apparently-To")) return 0;
|
if (!strcasecmp(msg->key,"Apparently-To")) return 0;
|
||||||
if (!strcasecmp(msg->key,"X-Fidonet-Comment-To")) return 0;
|
if (!strcasecmp(msg->key,"X-Fidonet-Comment-To")) return 0;
|
||||||
if (!strcasecmp(msg->key,"Keywords")) return 2;
|
if (!strcasecmp(msg->key,"Keywords")) return 2;
|
||||||
@ -886,7 +816,7 @@ int needputrfc(rfcmsg *msg)
|
|||||||
if (!strcasecmp(msg->key,"Content-Description")) return 2;
|
if (!strcasecmp(msg->key,"Content-Description")) return 2;
|
||||||
if (!strcasecmp(msg->key,"Message-ID")) return removemsgid ?0:1;
|
if (!strcasecmp(msg->key,"Message-ID")) return removemsgid ?0:1;
|
||||||
if (!strcasecmp(msg->key,"References")) return removeref ?0:1;
|
if (!strcasecmp(msg->key,"References")) return removeref ?0:1;
|
||||||
if (!strcasecmp(msg->key,"Supersedes")) return removesupersedes ?0:1;
|
if (!strcasecmp(msg->key,"Supersedes")) return 1;
|
||||||
if (!strcasecmp(msg->key,"Distribution")) return ftnorigin ?0:0;
|
if (!strcasecmp(msg->key,"Distribution")) return ftnorigin ?0:0;
|
||||||
if (!strcasecmp(msg->key,"X-Newsreader")) return 0;
|
if (!strcasecmp(msg->key,"X-Newsreader")) return 0;
|
||||||
if (!strcasecmp(msg->key,"X-Mailer")) return 0;
|
if (!strcasecmp(msg->key,"X-Mailer")) return 0;
|
||||||
|
Reference in New Issue
Block a user