Mercurial > dnsbl
diff src/dccifd.h @ 196:ff6d14d75b1e
add missing files to cvs
author | carl |
---|---|
date | Sat, 02 Feb 2008 10:08:08 -0800 |
parents | |
children | 82886d4dd71f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/dccifd.h Sat Feb 02 10:08:08 2008 -0800 @@ -0,0 +1,69 @@ +/* + +Copyright (c) 2007 Carl Byington - 510 Software Group, released under +the GPL version 3 or any later version at your choice available at +http://www.gnu.org/licenses/gpl-3.0.txt + +*/ + +#ifndef _DCCIFD_H +#define _DCCIFD_H + +extern "C" { + #include <libmilter/mfapi.h> +} + +#ifdef HAVE_CDEFS_H +#include <sys/cdefs.h> +#endif + +#include <list> + +using namespace std; + +class mlfiPriv; + +class DccInterface { +public: + DccInterface(char *port_, mlfiPriv *priv_, int ip, char *helo_, char *from); + ~DccInterface(); + + void mlfi_envrcpt(SMFICTX *ctx, char *envrcpt, bool grey); + void mlfi_header(SMFICTX *ctx, char* headerf, char* headerv); + void mlfi_eoh(); + void mlfi_body(u_char *bodyp, size_t bodylen); + void mlfi_eom(bool &grey, int &bulk); + +private: + void my_disconnect(); + void Connect(); + size_t my_write(const char *buf, size_t len); + size_t my_read(char *buf, size_t len); + void output(const char*buffer, size_t size); + void output(const char*buffer); + void output(string buffer); + void close_output(); + void input(); + char *getmacro(SMFICTX *ctx, char *macro, char *def); + +public: + bool err; // socket write error + bool first_recipient; // have we not seen any recipients? + bool first_header; // have we not seen any headers? + + // connection back to main dnsbl priv structure for logging + mlfiPriv *priv; + int ip4; // ip4 address of smtp client + + // strings owned by main dnsbl + char *helo; // client helo value + char *envfrom; // envelope from value for this message + + // Process handling variables + int dccifd_socket; + char *dccifd_port; + string dccifd_output; // to dccifd socket + string dccifd_input; // from dccifd socket +}; + +#endif