changeset 49:afd7356e8f2e

mlmmj-bounce now checks if it's a subscribed address
author mmj
date Tue, 27 Apr 2004 22:37:58 +1000
parents 03395ba179a9
children f818073d0926
files src/Makefile.am src/Makefile.in src/mlmmj-bounce.c
diffstat 3 files changed, 39 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile.am	Tue Apr 27 20:12:40 2004 +1000
+++ b/src/Makefile.am	Tue Apr 27 22:37:58 2004 +1000
@@ -37,5 +37,5 @@
 			getlistaddr.c chomp.c subscriberfuncs.c random-int.c \
 			strgen.c print-version.c log_error.c mygetline.c
 
-mlmmj_bounce_SOURCES = mlmmj-bounce.c print-version.c log_error.c \
+mlmmj_bounce_SOURCES = mlmmj-bounce.c print-version.c log_error.c subscriberfuncs.c \
 			strgen.c random-int.c writen.c
--- a/src/Makefile.in	Tue Apr 27 20:12:40 2004 +1000
+++ b/src/Makefile.in	Tue Apr 27 22:37:58 2004 +1000
@@ -17,7 +17,7 @@
 #
 
 
-SOURCES = $(mlmmj_process_SOURCES) $(mlmmj_recieve_SOURCES) $(mlmmj_send_SOURCES) $(mlmmj_sub_SOURCES) $(mlmmj_unsub_SOURCES)
+SOURCES = $(mlmmj_bounce_SOURCES) $(mlmmj_process_SOURCES) $(mlmmj_recieve_SOURCES) $(mlmmj_send_SOURCES) $(mlmmj_sub_SOURCES) $(mlmmj_unsub_SOURCES)
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -40,7 +40,8 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 bin_PROGRAMS = mlmmj-send$(EXEEXT) mlmmj-recieve$(EXEEXT) \
-	mlmmj-process$(EXEEXT) mlmmj-sub$(EXEEXT) mlmmj-unsub$(EXEEXT)
+	mlmmj-process$(EXEEXT) mlmmj-sub$(EXEEXT) mlmmj-unsub$(EXEEXT) \
+	mlmmj-bounce$(EXEEXT)
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -53,6 +54,12 @@
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
+am_mlmmj_bounce_OBJECTS = mlmmj-bounce.$(OBJEXT) \
+	print-version.$(OBJEXT) log_error.$(OBJEXT) \
+	subscriberfuncs.$(OBJEXT) strgen.$(OBJEXT) \
+	random-int.$(OBJEXT) writen.$(OBJEXT)
+mlmmj_bounce_OBJECTS = $(am_mlmmj_bounce_OBJECTS)
+mlmmj_bounce_LDADD = $(LDADD)
 am_mlmmj_process_OBJECTS = mlmmj-process.$(OBJEXT) writen.$(OBJEXT) \
 	find_email_adr.$(OBJEXT) incindexfile.$(OBJEXT) itoa.$(OBJEXT) \
 	getlistaddr.$(OBJEXT) chomp.$(OBJEXT) mylocking.$(OBJEXT) \
@@ -108,6 +115,7 @@
 @AMDEP_TRUE@	./$(DEPDIR)/listcontrol.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/log_error.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mail-functions.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/mlmmj-bounce.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mlmmj-process.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mlmmj-recieve.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mlmmj-send.Po ./$(DEPDIR)/mlmmj-sub.Po \
@@ -122,12 +130,12 @@
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(mlmmj_process_SOURCES) $(mlmmj_recieve_SOURCES) \
-	$(mlmmj_send_SOURCES) $(mlmmj_sub_SOURCES) \
-	$(mlmmj_unsub_SOURCES)
-DIST_SOURCES = $(mlmmj_process_SOURCES) $(mlmmj_recieve_SOURCES) \
-	$(mlmmj_send_SOURCES) $(mlmmj_sub_SOURCES) \
-	$(mlmmj_unsub_SOURCES)
+SOURCES = $(mlmmj_bounce_SOURCES) $(mlmmj_process_SOURCES) \
+	$(mlmmj_recieve_SOURCES) $(mlmmj_send_SOURCES) \
+	$(mlmmj_sub_SOURCES) $(mlmmj_unsub_SOURCES)
+DIST_SOURCES = $(mlmmj_bounce_SOURCES) $(mlmmj_process_SOURCES) \
+	$(mlmmj_recieve_SOURCES) $(mlmmj_send_SOURCES) \
+	$(mlmmj_sub_SOURCES) $(mlmmj_unsub_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -229,6 +237,9 @@
 			getlistaddr.c chomp.c subscriberfuncs.c random-int.c \
 			strgen.c print-version.c log_error.c mygetline.c
 
+mlmmj_bounce_SOURCES = mlmmj-bounce.c print-version.c log_error.c subscriberfuncs.c \
+			strgen.c random-int.c writen.c
+
 all: all-am
 
 .SUFFIXES:
@@ -285,6 +296,9 @@
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+mlmmj-bounce$(EXEEXT): $(mlmmj_bounce_OBJECTS) $(mlmmj_bounce_DEPENDENCIES) 
+	@rm -f mlmmj-bounce$(EXEEXT)
+	$(LINK) $(mlmmj_bounce_LDFLAGS) $(mlmmj_bounce_OBJECTS) $(mlmmj_bounce_LDADD) $(LIBS)
 mlmmj-process$(EXEEXT): $(mlmmj_process_OBJECTS) $(mlmmj_process_DEPENDENCIES) 
 	@rm -f mlmmj-process$(EXEEXT)
 	$(LINK) $(mlmmj_process_LDFLAGS) $(mlmmj_process_OBJECTS) $(mlmmj_process_LDADD) $(LIBS)
@@ -339,6 +353,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listcontrol.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log_error.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail-functions.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlmmj-bounce.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlmmj-process.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlmmj-recieve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlmmj-send.Po@am__quote@
--- a/src/mlmmj-bounce.c	Tue Apr 27 20:12:40 2004 +1000
+++ b/src/mlmmj-bounce.c	Tue Apr 27 22:37:58 2004 +1000
@@ -20,6 +20,7 @@
 #include "strgen.h"
 #include "wrappers.h"
 #include "log_error.h"
+#include "subscriberfuncs.h"
 
 static void print_help(const char *prg)
 {
@@ -37,6 +38,7 @@
 	size_t len;
 	int fd;
 	time_t t;
+	off_t suboff;
 
 	log_set_name(argv[0]);
 
@@ -70,7 +72,20 @@
 
 	log_error(LOG_ARGS, "[%s] [%s] [%s]", listdir, address, number);
 
+	/* First make sure it's a subscribed address */
+	filename = concatstr(2, listdir, "/subscribers");
+	if ((fd = open(filename, O_RDONLY)) < 0) {
+		log_error(LOG_ARGS, "Could not open '%s'", filename);
+		exit(EXIT_FAILURE);
+	}
+	suboff = find_subscriber(fd, address);
+	if(suboff == -1)
+		exit(EXIT_SUCCESS); /* Not subbed, so exit silently */
+	free(filename);
+
 	filename = concatstr(3, listdir, "/bounce/", address);
+
+	/* TODO make sure the file we open below is not a symlink */
 	if ((fd = open(filename, O_WRONLY|O_APPEND|O_CREAT,
 			S_IRUSR|S_IWUSR)) < 0) {
 		log_error(LOG_ARGS, "Could not open '%s'", filename);
@@ -82,7 +97,6 @@
 	if (!a) exit(EXIT_FAILURE);
 	*a = '@';
 
-	/* TODO check that the address is subscribed */
 	/* TODO check that the message is not already bounced */
 
 	/* XXX How long can the string representation of an integer be?