00001
00002 #ifndef SPAMUTIL_H
00003 #define SPAMUTIL_H
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "MailFilter.h"
00030 #include "SpamParameters.h"
00031
00041 class SpamUtil
00042 {
00043 private:
00045 SpamUtil( const SpamUtil &rhs );
00046
00047 public:
00048
00049 typedef enum { BAD_CONT,
00050 UNKNOWN,
00051 BLANK,
00052 HTML,
00053 TEXT,
00054 MULTIPART,
00055 AUDIO,
00056 IMAGE,
00057 APPLICATION,
00058 WINDOZ,
00059 BASE64 } contentType;
00060
00061 public:
00062 SpamUtil() {}
00063 ~SpamUtil() {}
00064 static const int getFileSize( FILE *fp, const char *fileName, char *msgbuf );
00065 static const char *trimEnd(char *str );
00066 static void trim(const char * str );
00067 static const char *findColon( const char *buf );
00068 static const char *skipWhiteSpace( const char *pBuf );
00069 static bool isBlankLine(const char *buf);
00070 static void strncpy(char *pDest, const char *pSrc, size_t destSize );
00071 static void toLower(char *dest, const char *src);
00072 static void toLower(char *dest, const char *src, size_t size);
00073 static bool match(const char *bufStart,
00074 const size_t len,
00075 const char *word );
00076 static bool match(const char *bufStart,
00077 const char *bufEnd,
00078 const char *word );
00079 static contentType classifySection( const char *buf );
00080 const char *classificationToStr( MailFilter::classification klass );
00081 static const char *typeToStr( contentType type );
00082 static MailFilter::classification checkLine(const char *buf,
00083 SpamParameters ¶ms,
00084 char *foundStr,
00085 const size_t foundStrSize );
00086 };
00087
00088 #endif