e3aaff8e |
/* |
2023340a |
* Copyright (C) 2007-2008 Sourcefire, Inc.
*
* Authors: Nigel Horne |
e3aaff8e |
*
* This program is free software; you can redistribute it and/or modify |
2023340a |
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. |
e3aaff8e |
*
* This program 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 this program; if not, write to the Free Software |
48b7b4a7 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA. |
e3aaff8e |
*/
#ifndef _MESSAGE_H
#define _MESSAGE_H
|
8affc406 |
/* The contents could change, ONLY access in message.c */ |
e3aaff8e |
typedef struct message { |
c7b69776 |
encoding_type *encodingTypes; |
b5231f5f |
mime_type mimeType; |
c7b69776 |
int numberOfEncTypes; /* size of encodingTypes */ |
e3aaff8e |
char *mimeSubtype; |
049a18b9 |
char **mimeArguments; |
e3aaff8e |
char *mimeDispositionType; /* probably attachment */
text *body_first, *body_last; |
7891ef0b |
cli_ctx *ctx; /* When set we can scan the message, otherwise NULL */ |
b5231f5f |
int numberOfArguments; /* count of mimeArguments */ |
0c0894b8 |
int base64chars; |
a603478f |
|
ae3bda56 |
/*
* Markers for the start of various non MIME messages that could
* be included within this message
*/ |
2673dc74 |
text *bounce; /* start of a bounced message */
text *binhex; /* start of a binhex message */
text *yenc; /* start of a yEnc message */
text *encoding; /* is the non MIME message encoded? */ |
1815e490 |
const text *dedupedThisFar; |
b5231f5f |
char base64_1, base64_2, base64_3;
unsigned int isInfected : 1; |
92012beb |
unsigned int isTruncated : 1; |
b5231f5f |
|
e3aaff8e |
} message;
message *messageCreate(void);
void messageDestroy(message *m);
void messageReset(message *m); |
53bfac08 |
int messageSetMimeType(message *m, const char *type); |
e3aaff8e |
mime_type messageGetMimeType(const message *m);
void messageSetMimeSubtype(message *m, const char *subtype);
const char *messageGetMimeSubtype(const message *m);
void messageSetDispositionType(message *m, const char *disptype);
const char *messageGetDispositionType(const message *m);
void messageAddArgument(message *m, const char *arg);
void messageAddArguments(message *m, const char *arg); |
d4884be0 |
char *messageFindArgument(const message *m, const char *variable); |
641dbe1f |
char *messageGetFilename(const message *m); |
be32043e |
int messageHasFilename(const message *m); |
e3aaff8e |
void messageSetEncoding(message *m, const char *enctype);
encoding_type messageGetEncoding(const message *m); |
b2223aad |
int messageAddLine(message *m, line_t *line); |
564b3e07 |
int messageAddStr(message *m, const char *data); |
b2223aad |
int messageAddStrAtTop(message *m, const char *data); |
94f051b0 |
int messageMoveText(message *m, text *t, message *old_message); |
2673dc74 |
text *messageGetBody(message *m); |
a9ecf619 |
unsigned char *base64Flush(message *m, unsigned char *buf); |
2673dc74 |
fileblob *messageToFileblob(message *m, const char *dir, int destroy);
blob *messageToBlob(message *m, int destroy); |
0c0894b8 |
text *messageToText(message *m); |
2673dc74 |
text *binhexBegin(message *m);
text *yEncBegin(message *m);
text *bounceBegin(message *m);
text *encodingLine(message *m); |
4945127a |
unsigned char *decodeLine(message *m, encoding_type enctype, const char *line, unsigned char *buf, size_t buflen); |
5198de85 |
int isuuencodebegin(const char *line); |
a603478f |
void messageSetCTX(message *m, cli_ctx *ctx);
int messageContainsVirus(const message *m); |
4270f93b |
int messageSavePartial(message *m, const char *dir, const char *id, unsigned part); |
e3aaff8e |
#endif /*_MESSAGE_H*/ |