196
|
1 /*
|
|
2
|
|
3 Copyright (c) 2007 Carl Byington - 510 Software Group, released under
|
|
4 the GPL version 3 or any later version at your choice available at
|
|
5 http://www.gnu.org/licenses/gpl-3.0.txt
|
|
6
|
|
7 */
|
|
8
|
|
9 #ifndef _DCCIFD_H
|
|
10 #define _DCCIFD_H
|
|
11
|
|
12 extern "C" {
|
|
13 #include <libmilter/mfapi.h>
|
|
14 }
|
|
15
|
|
16 #ifdef HAVE_CDEFS_H
|
|
17 #include <sys/cdefs.h>
|
|
18 #endif
|
|
19
|
|
20 #include <list>
|
|
21
|
|
22 using namespace std;
|
|
23
|
|
24 class mlfiPriv;
|
|
25
|
|
26 class DccInterface {
|
|
27 public:
|
|
28 DccInterface(char *port_, mlfiPriv *priv_, int ip, char *helo_, char *from);
|
|
29 ~DccInterface();
|
|
30
|
|
31 void mlfi_envrcpt(SMFICTX *ctx, char *envrcpt, bool grey);
|
|
32 void mlfi_header(SMFICTX *ctx, char* headerf, char* headerv);
|
|
33 void mlfi_eoh();
|
|
34 void mlfi_body(u_char *bodyp, size_t bodylen);
|
|
35 void mlfi_eom(bool &grey, int &bulk);
|
|
36
|
|
37 private:
|
|
38 void my_disconnect();
|
|
39 void Connect();
|
|
40 size_t my_write(const char *buf, size_t len);
|
|
41 size_t my_read(char *buf, size_t len);
|
|
42 void output(const char*buffer, size_t size);
|
|
43 void output(const char*buffer);
|
|
44 void output(string buffer);
|
|
45 void close_output();
|
|
46 void input();
|
|
47 char *getmacro(SMFICTX *ctx, char *macro, char *def);
|
|
48
|
|
49 public:
|
|
50 bool err; // socket write error
|
|
51 bool first_recipient; // have we not seen any recipients?
|
|
52 bool first_header; // have we not seen any headers?
|
|
53
|
|
54 // connection back to main dnsbl priv structure for logging
|
|
55 mlfiPriv *priv;
|
|
56 int ip4; // ip4 address of smtp client
|
|
57
|
|
58 // strings owned by main dnsbl
|
|
59 char *helo; // client helo value
|
|
60 char *envfrom; // envelope from value for this message
|
|
61
|
|
62 // Process handling variables
|
|
63 int dccifd_socket;
|
|
64 char *dccifd_port;
|
|
65 string dccifd_output; // to dccifd socket
|
|
66 string dccifd_input; // from dccifd socket
|
|
67 };
|
|
68
|
|
69 #endif
|