Fixes for news
This commit is contained in:
parent
884cb156ad
commit
007b7b1d41
@ -25,6 +25,8 @@ v0.51.4 11-Apr-2004
|
|||||||
You may need to edit or remove /opt/mbse/tmp/newsout to remove
|
You may need to edit or remove /opt/mbse/tmp/newsout to remove
|
||||||
postings for the remote newsserver with echomail messages.
|
postings for the remote newsserver with echomail messages.
|
||||||
Fixed a bug that no news was fetched at all.
|
Fixed a bug that no news was fetched at all.
|
||||||
|
Fixed a bug that tossed echomail was attempted to post to the
|
||||||
|
ISP newsserver (that didn't accept it).
|
||||||
|
|
||||||
mbnntp:
|
mbnntp:
|
||||||
New program, news server to read echomail with a news client.
|
New program, news server to read echomail with a news client.
|
||||||
|
@ -488,9 +488,9 @@ int postecho(faddr *p_from, faddr *f, faddr *t, char *orig, char *subj, time_t m
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gate to newsserver
|
* Gate to newsserver if this is a real newsgroup
|
||||||
*/
|
*/
|
||||||
if (strlen(msgs.Newsgroup) && tonews) {
|
if (strlen(msgs.Newsgroup) && (msgs.Type == NEWS) && tonews) {
|
||||||
rewind(nfp);
|
rewind(nfp);
|
||||||
qp = tmpfile();
|
qp = tmpfile();
|
||||||
while ((fgets(buf, MAX_LINE_LENGTH, nfp)) != NULL) {
|
while ((fgets(buf, MAX_LINE_LENGTH, nfp)) != NULL) {
|
||||||
|
@ -408,7 +408,6 @@ int get_xover(char *grpname, long startnr, long endnr, List **art)
|
|||||||
if ((strlen(resp) == 1) && (strcmp(resp, ".") == 0)) {
|
if ((strlen(resp) == 1) && (strcmp(resp, ".") == 0)) {
|
||||||
done = TRUE;
|
done = TRUE;
|
||||||
} else {
|
} else {
|
||||||
Syslogp('n', printable(resp, 0));
|
|
||||||
Marker();
|
Marker();
|
||||||
Nopper();
|
Nopper();
|
||||||
pov = xoverview;
|
pov = xoverview;
|
||||||
|
@ -261,7 +261,10 @@ void command_group(char *cmd)
|
|||||||
if ((fp = fopen(temp, "r"))) {
|
if ((fp = fopen(temp, "r"))) {
|
||||||
fread(&msgshdr, sizeof(msgshdr), 1, fp);
|
fread(&msgshdr, sizeof(msgshdr), 1, fp);
|
||||||
while (fread(&msgs, msgshdr.recsize, 1, fp) == 1) {
|
while (fread(&msgs, msgshdr.recsize, 1, fp) == 1) {
|
||||||
if (msgs.Active && ((msgs.Type == ECHOMAIL) || (msgs.Type == NEWS)) && strlen(msgs.Newsgroup) &&
|
/*
|
||||||
|
* Only echomail areas with a valid newsgroup name to which the user has access.
|
||||||
|
*/
|
||||||
|
if (msgs.Active && (msgs.Type == ECHOMAIL) && strlen(msgs.Newsgroup) &&
|
||||||
(strcasecmp(opt, msgs.Newsgroup) == 0) && Access(usrconfig.Security, msgs.RDSec)) {
|
(strcasecmp(opt, msgs.Newsgroup) == 0) && Access(usrconfig.Security, msgs.RDSec)) {
|
||||||
if (Msg_Open(msgs.Base)) {
|
if (Msg_Open(msgs.Base)) {
|
||||||
Msg_Number();
|
Msg_Number();
|
||||||
@ -313,8 +316,11 @@ void command_list(char *cmd)
|
|||||||
if ((fp = fopen(temp, "r"))) {
|
if ((fp = fopen(temp, "r"))) {
|
||||||
fread(&msgshdr, sizeof(msgshdr), 1, fp);
|
fread(&msgshdr, sizeof(msgshdr), 1, fp);
|
||||||
while (fread(&msgs, msgshdr.recsize, 1, fp) == 1) {
|
while (fread(&msgs, msgshdr.recsize, 1, fp) == 1) {
|
||||||
if (msgs.Active && ((msgs.Type == ECHOMAIL) || (msgs.Type == NEWS)) && strlen(msgs.Newsgroup) &&
|
/*
|
||||||
Access(usrconfig.Security, msgs.RDSec)) {
|
* Only list echomail areas. If a user wants news, he should get that from
|
||||||
|
* a real newsserver to prevent problems.
|
||||||
|
*/
|
||||||
|
if (msgs.Active && (msgs.Type == ECHOMAIL) && strlen(msgs.Newsgroup) && Access(usrconfig.Security, msgs.RDSec)) {
|
||||||
if (Access(usrconfig.Security, msgs.WRSec))
|
if (Access(usrconfig.Security, msgs.WRSec))
|
||||||
rw = 'y';
|
rw = 'y';
|
||||||
else
|
else
|
||||||
@ -340,6 +346,9 @@ void command_list(char *cmd)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Standard list, most clients don't need it, but it's adviced to have.
|
||||||
|
*/
|
||||||
if (opt && (strcasecmp(opt, "OVERVIEW.FMT") == 0)) {
|
if (opt && (strcasecmp(opt, "OVERVIEW.FMT") == 0)) {
|
||||||
send_nntp("215 Order of fields in overview database");
|
send_nntp("215 Order of fields in overview database");
|
||||||
send_nntp("Subject:");
|
send_nntp("Subject:");
|
||||||
@ -349,7 +358,6 @@ void command_list(char *cmd)
|
|||||||
send_nntp("References:");
|
send_nntp("References:");
|
||||||
send_nntp("Bytes:");
|
send_nntp("Bytes:");
|
||||||
send_nntp("Lines:");
|
send_nntp("Lines:");
|
||||||
// send_nntp("Xref:full");
|
|
||||||
send_nntp(".");
|
send_nntp(".");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -372,7 +380,7 @@ void command_xover(char *cmd)
|
|||||||
{
|
{
|
||||||
char *opt, *p, msgid[100], reply[100];
|
char *opt, *p, msgid[100], reply[100];
|
||||||
unsigned long i, start, end;
|
unsigned long i, start, end;
|
||||||
int refs, bytecount, linecount;
|
int bytecount, linecount;
|
||||||
|
|
||||||
IsDoing("Xover");
|
IsDoing("Xover");
|
||||||
opt = strtok(cmd, " \0");
|
opt = strtok(cmd, " \0");
|
||||||
@ -416,15 +424,14 @@ void command_xover(char *cmd)
|
|||||||
send_nntp("224 Overview information follows");
|
send_nntp("224 Overview information follows");
|
||||||
for (i = start; i <= end; i++) {
|
for (i = start; i <= end; i++) {
|
||||||
if (Msg_ReadHeader(i)) {
|
if (Msg_ReadHeader(i)) {
|
||||||
bytecount = linecount = refs = 0;
|
bytecount = linecount = 0;
|
||||||
if (Msg.Original)
|
|
||||||
refs++;
|
|
||||||
if (Msg.Reply)
|
|
||||||
refs++;
|
|
||||||
if (Msg_Read(i, 80)) {
|
if (Msg_Read(i, 80)) {
|
||||||
if ((p = (char *)MsgText_First()) != NULL) {
|
if ((p = (char *)MsgText_First()) != NULL) {
|
||||||
do {
|
do {
|
||||||
if (p[0] != '\001') {
|
if ((p[0] != '\001') && (strncmp(p, "SEEN-BY:", 8)) && (strncmp(p, "AREA:", 5))) {
|
||||||
|
/*
|
||||||
|
* Only count lines and bytes we should send
|
||||||
|
*/
|
||||||
linecount++;
|
linecount++;
|
||||||
bytecount += strlen(p);
|
bytecount += strlen(p);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user