diff --git a/Makefile b/Makefile index 9f66f7b6..badedf22 100644 --- a/Makefile +++ b/Makefile @@ -133,6 +133,14 @@ install: ${CHOWN} ${OWNER}.${GROUP} ${PREFIX}/ftp/pub/local ; \ chmod 0755 ${PREFIX}/ftp/pub/local ; \ fi + @if [ ! -d ${PREFIX}/ftp/pub/css ] ; then \ + mkdir ${PREFIX}/ftp/pub/css ; \ + ${CHOWN} ${OWNER}.${GROUP} ${PREFIX}/ftp/pub/css ; \ + chmod 0755 ${PREFIX}/ftp/pub/css ; \ + fi + @if [ ! -f ${PREFIX}/ftp/pub/css/files.css ]; then \ + ${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0444 files.css ${PREFIX}/ftp/pub/css ; \ + fi @if [ ! -d ${PREFIX}/var/bso ] ; then \ mkdir ${PREFIX}/var/nodelist ; \ mkdir ${PREFIX}/var/bso ; \ diff --git a/mbfido/bounce.c b/mbfido/bounce.c new file mode 100644 index 00000000..64e95b50 --- /dev/null +++ b/mbfido/bounce.c @@ -0,0 +1,149 @@ +/***************************************************************************** + * + * $Id$ + * Purpose ...............: Bounce Netmail + * + ***************************************************************************** + * Copyright (C) 1997-2002 + * + * Michiel Broek FIDO: 2:280/2802 + * Beekmansbos 10 + * 1971 BV IJmuiden + * the Netherlands + * + * This file is part of MBSE BBS. + * + * This BBS is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * MBSE BBS is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MBSE BBS; see the file COPYING. If not, write to the Free + * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + *****************************************************************************/ + +#include "../lib/libs.h" +#include "../lib/structs.h" +#include "../lib/users.h" +#include "../lib/records.h" +#include "../lib/common.h" +#include "../lib/clcomm.h" +#include "../lib/msg.h" +#include "../lib/msgtext.h" +#include "../lib/dbcfg.h" +#include "../lib/dbnode.h" +#include "../lib/dbtic.h" +#include "../lib/dbdupe.h" +#include "../lib/dbuser.h" +#include "../lib/dbftn.h" +#include "sendmail.h" +#include "mgrutil.h" +#include "postnetmail.h" +#include "ping.h" + + + +/* + * External declarations + */ +extern int do_quiet; +extern char *tearline; + + + +/* + * Global variables + */ +extern int net_in; /* Netmails received */ +extern int net_out; /* Netmails forwarded */ +extern int net_bad; /* Bad netmails (tracking errors */ +extern char *msgid; /* Original message id */ + + + +int Bounce(faddr *f, faddr *t, FILE *fp, char *reason) +{ + int rc = 0, count = 0; + char *Buf; + FILE *np; + time_t Now; + faddr *from; + + Now = time(NULL); + if (SearchFidonet(f->zone)) + f->domain = xstrcpy(fidonet.domain); + + Syslog('+', "Bounce msg from %s", ascfnode(f, 0xff)); + Buf = calloc(2049, sizeof(char)); + rewind(fp); + + np = tmpfile(); + from = bestaka_s(f); + from->zone = t->zone; + from->net = t->net; + from->node = t->node; + from->point = t->point; + from->name = xstrcpy((char *)"Postmaster"); + + if (f->point) + fprintf(np, "\001TOPT %d\r", f->point); + if (from->point) + fprintf(np, "\001FMPT %d\r", from->point); + fprintf(np, "\001INTL %d:%d/%d %d:%d/%d\r", f->zone, f->net, f->node, from->zone, from->net, from->node); + + /* + * Add MSGID, REPLY and PID + */ + fprintf(np, "\001MSGID: %s %08lx\r", ascfnode(from, 0x1f), sequencer()); + while ((fgets(Buf, 2048, fp)) != NULL) { + Striplf(Buf); + if (strncmp(Buf, "\001MSGID:", 7) == 0) { + fprintf(np, "\001REPLY:%s\r", Buf+7); + } + } + fprintf(np, "\001PID: MBSE-FIDO %s\r", VERSION); + fprintf(np, "\001TZUTC: %s\r", gmtoffset(Now)); + + fprintf(np, " Dear %s\r\r", MBSE_SS(f->name)); + fprintf(np, "Your message could not be delevered, reason: %s\r\r", reason); + fprintf(np, "Here are the first lines of the original message from you:\r\r"); + fprintf(np, "======================================================================\r"); + + rewind(fp); + while ((fgets(Buf, 2048, fp)) != NULL) { + Striplf(Buf); + if (Buf[0] == '\001') { + fprintf(np, "^a"); + fwrite(Buf + 1, strlen(Buf) -1, 1, np); + } else { + fwrite(Buf, strlen(Buf), 1, np); + } + fputc('\r', np); + count++; + if (count == 50) + break; + } + fprintf(np, "======================================================================\r"); + if (count == 50) { + fprintf(np, "\rOnly the first 50 lines are displayed\r"); + } + + fprintf(np, "\rWith regards, %s\r\r", CFG.sysop_name); + fprintf(np, "%s\r", tearline); + Now = time(NULL) - (gmt_offset((time_t)0) * 60); + rc = postnetmail(np, from, f, NULL, (char *)"Bounced message", Now, 0x0000, FALSE); + tidy_faddr(from); + + fclose(np); + + free(Buf); + return rc; +} + + diff --git a/mbfido/bounce.h b/mbfido/bounce.h new file mode 100644 index 00000000..aae7bc24 --- /dev/null +++ b/mbfido/bounce.h @@ -0,0 +1,9 @@ +#ifndef _BOUNCEMGR_H +#define _BOUNCEMGR_H + + +int Bounce(faddr *, faddr *, FILE *, char *); + + +#endif + diff --git a/mbfido/makestat.c b/mbfido/makestat.c index f22ac81a..33f5d639 100644 --- a/mbfido/makestat.c +++ b/mbfido/makestat.c @@ -186,7 +186,7 @@ FILE *newpage(char *Name, char *Title) fprintf(fa, "\n", CFG.www_charset); fprintf(fa, "\n", CFG.www_author, outbuf); fprintf(fa, "
\n\n", Title); diff --git a/mbfido/mbfindex.c b/mbfido/mbfindex.c index 43bbbe9c..4e6ed877 100644 --- a/mbfido/mbfindex.c +++ b/mbfido/mbfindex.c @@ -330,7 +330,7 @@ FILE *newpage(char *Path, char *Name, time_t later, int inArea, int Current) fprintf(fa, "\n", CFG.www_charset); fprintf(fa, "\n", CFG.www_author, outbuf); fprintf(fa, "
\n", outbuf);