-bin_PROGRAMS = gcm_input logrunner
+bin_PROGRAMS = gcm_input logrunner spamdetect
INCLUDES = -I../include
LDADD = ../lib/libgnucomo.a
message_filter.cpp log_filter.cpp rpm_filter.cpp df_filter.cpp
logrunner_SOURCES = logrunner.cpp string_utils.cpp
+
+spamdetect_SOURCES = spamdetect.cpp
@SET_MAKE@
-SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES)
+SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES) $(spamdetect_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-bin_PROGRAMS = gcm_input$(EXEEXT) logrunner$(EXEEXT)
+bin_PROGRAMS = gcm_input$(EXEEXT) logrunner$(EXEEXT) \
+ spamdetect$(EXEEXT)
subdir = src/gcm_input
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
logrunner_OBJECTS = $(am_logrunner_OBJECTS)
logrunner_LDADD = $(LDADD)
logrunner_DEPENDENCIES = ../lib/libgnucomo.a
+am_spamdetect_OBJECTS = spamdetect.$(OBJEXT)
+spamdetect_OBJECTS = $(am_spamdetect_OBJECTS)
+spamdetect_LDADD = $(LDADD)
+spamdetect_DEPENDENCIES = ../lib/libgnucomo.a
DEFAULT_INCLUDES = -I. -I$(srcdir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/message.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/message_filter.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/rpm_filter.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/spamdetect.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/string_utils.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/syslog_cooker.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/xml_cooker.Po
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
-SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES)
-DIST_SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES)
+SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES) \
+ $(spamdetect_SOURCES)
+DIST_SOURCES = $(gcm_input_SOURCES) $(logrunner_SOURCES) \
+ $(spamdetect_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
message_filter.cpp log_filter.cpp rpm_filter.cpp df_filter.cpp
logrunner_SOURCES = logrunner.cpp string_utils.cpp
+spamdetect_SOURCES = spamdetect.cpp
all: all-am
.SUFFIXES:
logrunner$(EXEEXT): $(logrunner_OBJECTS) $(logrunner_DEPENDENCIES)
@rm -f logrunner$(EXEEXT)
$(CXXLINK) $(logrunner_LDFLAGS) $(logrunner_OBJECTS) $(logrunner_LDADD) $(LIBS)
+spamdetect$(EXEEXT): $(spamdetect_OBJECTS) $(spamdetect_DEPENDENCIES)
+ @rm -f spamdetect$(EXEEXT)
+ $(CXXLINK) $(spamdetect_LDFLAGS) $(spamdetect_OBJECTS) $(spamdetect_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message_filter.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpm_filter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spamdetect.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string_utils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog_cooker.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_cooker.Po@am__quote@
--- /dev/null
+/**************************************************************************
+** (c) Copyright 2007, Andromeda Technology & Automation
+** This is free software; you can redistribute it and/or modify it under the
+** terms of the GNU General Public License, see the file COPYING.
+***************************************************************************
+** MODULE INFORMATION *
+***********************
+** FILE NAME : spamdetect.cpp
+** SYSTEM NAME : Gnucomo - Gnu Computer Monitoring
+** VERSION NUMBER : $Revision: 1.1 $
+**
+** DESCRIPTION :
+**
+** EXPORTED OBJECTS :
+** LOCAL OBJECTS :
+** MODULES USED :
+***************************************************************************
+** ADMINISTRATIVE INFORMATION *
+********************************
+** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
+** CREATION DATE : Nov 14, 2007
+** LAST UPDATE : Nov Nov 14, 2007
+** MODIFICATIONS :
+**************************************************************************/
+
+/*****************************
+ $Log: spamdetect.cpp,v $
+ Revision 1.1 2007-11-14 16:20:05 arjen
+ New program: spamdetect.
+ Expirimental utility to log manually reported spam and have
+ Gnucomo detect the spammer's IP address.
+
+*****************************/
+
+static const char *RCSID = "$Id: spamdetect.cpp,v 1.1 2007-11-14 16:20:05 arjen Exp $";
+
+#include <fstream>
+#include <AXE/String.h>
+
+#include <syslog.h>
+#include <getopt.h>
+
+int main(int argc, char *argv[])
+{
+ const char *usage = "Usage: spamdetect\n";
+
+ String line;
+ String header;
+ int state = 0;
+
+ regex fwd_header("---- Original Message -----");
+ regex received("^Received:");
+ regex from("^From:");
+ regex returnpath("^Return-Path:");
+
+ openlog("gnucomo", 0, LOG_MAIL);
+
+
+ while (std::cin >> line)
+ {
+ std::cout << line << "\n";
+ switch (state)
+ {
+ case 0:
+ if (line == fwd_header)
+ {
+ state = 1;
+ std::cout << "Forward header detected.\n";
+ }
+ break;
+
+ case 1:
+ // Inside the forwarded header
+ if (line == received || line == from || line == returnpath)
+ {
+ header = line;
+ state = 2;
+ std::cout << "(1)Header = " << header << "\n";
+ }
+ break;
+ case 2:
+ if (line == regex("^[^ ]+: "))
+ {
+ std::cout << "Logging " << header << "\n";
+ syslog(LOG_WARNING, "%s", (char *)header);
+ header = "";
+ state = 1;
+ std::cout << "Next header.\n";
+ if (line == received || line == from || line == returnpath)
+ {
+ header = line;
+ state = 2;
+ std::cout << "(1)Header = " << header << "\n";
+ }
+ }
+ else if (line == String(""))
+ {
+ std::cout << "End of headers detected.\n";
+ state = 3;
+ }
+ else
+ {
+ header += " ";
+ header += line;
+ std::cout << "(2)Header = " << header << "\n";
+ }
+ }
+ }
+
+ closelog();
+}
+