source: npl/mailserver/dspam/dspam-3.10.2/src/agent_shared.h @ c5c522c

gcc484ntopperl-5.22
Last change on this file since c5c522c was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100644
File size: 4.9 KB
Line 
1/* $Id: agent_shared.h,v 1.35 2011/07/11 21:27:15 sbajic Exp $ */
2
3/*
4 DSPAM
5 COPYRIGHT (C) 2002-2012 DSPAM PROJECT
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Affero General Public License as
9 published by the Free Software Foundation, either version 3 of the
10 License, or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU Affero General Public License for more details.
16
17 You should have received a copy of the GNU Affero General Public License
18 along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20*/
21
22#include <sys/types.h>
23#ifndef _WIN32
24#include <pwd.h>
25#endif
26#include "buffer.h"
27
28#ifdef HAVE_CONFIG_H
29#include <auto-config.h>
30#endif
31#include "libdspam.h"
32
33#ifndef _AGENT_SHARED_H
34#  define _AGENT_SHARED_H
35
36extern char *__pw_name;
37extern uid_t __pw_uid;
38
39#define STATUS( ... )   snprintf(ATX->status, sizeof(ATX->status), __VA_ARGS__);
40
41#define SYNTAX "Syntax: dspam [--help|--version|[--client|--daemon [--nofork]] [--debug] --mode=[toe|tum|teft|notrain|unlearn] --user [user1 user2 ... userN] [--feature=[no,wh,tb=N]] [--class=[spam|innocent]] [--source=[error|corpus|inoculation]] [--profile=[PROFILE]] [--deliver=[spam,[innocent|nonspam],summary,stdout]] [--process|--classify] [--stdout] [--mail-from=sender-address] [--rcpt-to recipient-address(es)] [--signature=DSPAM-Signature] [passthru-arguments]]"
42
43#define         SIGNATURE_BEGIN         "!DSPAM:"
44#define         SIGNATURE_END           "!"
45#define         LOOSE_SIGNATURE_BEGIN   "X-DSPAM-Signature:"
46#define         SIGNATURE_DELIMITER     ": "
47
48/* AGENT_CTX: Agent context. Defines the behavior of the agent */
49
50typedef struct {
51  int operating_mode;                   /* Processing Mode       IN DSM_ */
52  int fork;                             /* Fork daemon:          IN 1:0  */
53  int client_mode;                      /* Client Mode:          IN 1:0  */
54  int training_mode;                    /* Training Mode         IN DST_ */
55  int classification;                   /* Classification        IN DSR_ */
56  int source;                           /* Classification Source IN DSS_ */
57  int spam_action;                      /* Action on Spam        IN DSA_ */
58#ifdef TRUSTED_USER_SECURITY
59  int trusted;                          /* Trusted User?         IN      */
60#endif
61  int feature;                          /* Feature Overridden?   IN      */
62  int train_pristine;                   /* Train Pristine?       IN      */
63  int tokenizer;                        /* Tokenizer             IN      */
64  void *dbh;                            /* Database Handle       IN      */
65  u_int64_t flags;                      /* Flags DAF_            IN      */
66  int training_buffer;                  /* Sedation Level 0-10   IN      */
67  char *recipient;                      /* Current Recipient             */
68  char mailer_args[256];                /* Delivery Args         IN      */
69  char spam_args[256];                  /* Quarantine Args       IN      */
70  char managed_group[256];              /* Managed Groupname     IN      */
71  char profile[32];                     /* Storage Profile       IN      */
72  char signature[128];                  /* Signature Serial      IN/OUT  */
73  char mailfrom[256];                   /* For LMTP or SMTP              */
74  struct nt *users;                     /* Destination Users     IN      */
75  struct nt *inoc_users;                /* Inoculate list        OUT     */
76  struct nt *classify_users;            /* Classify list         OUT     */
77  struct nt *recipients;                /* Recipients            IN      */
78  struct nt *results;                   /* Process Results       OUT     */
79  struct _ds_spam_signature SIG;        /* Signature object      OUT     */
80  int learned;                          /* Message learned?      OUT     */
81  FILE *sockfd;                         /* Socket FD if not STDOUT       */
82  int sockfd_output;                    /* Output sent to sockfd?        */
83  char client_args[1024];               /* Args for client connection    */
84  double timestart;
85  agent_pref_t PTX;
86
87  char status[256];
88#ifdef DEBUG
89  char debug_args[1024];
90#endif
91#ifndef _WIN32
92#ifdef TRUSTED_USER_SECURITY
93  struct passwd *p;
94#if defined(_REENTRANT) && defined(HAVE_GETPWUID_R)
95  struct passwd pwbuf;
96#endif
97#endif
98#endif
99} AGENT_CTX;
100
101int process_features    (AGENT_CTX *ATX, const char *features);
102int process_mode        (AGENT_CTX *ATX, const char *mode);
103int check_configuration (AGENT_CTX *ATX);
104int apply_defaults      (AGENT_CTX *ATX);
105int process_arguments   (AGENT_CTX *ATX, int argc, char **argv);
106int initialize_atx      (AGENT_CTX *ATX);
107int process_parseto     (AGENT_CTX *ATX, const char *buf);
108buffer *read_stdin      (AGENT_CTX *ATX);
109
110int init_pwent_cache(void);
111
112#ifndef MIN
113#   define MAX(a,b)  ((a)>(b)?(a):(b))
114#   define MIN(a,b)  ((a)<(b)?(a):(b))
115#endif /* !MIN */
116
117/*
118 * Agent context flag (DAF)
119 * Do not confuse with libdspam's classification context flags (DSF)
120 *
121 */
122
123#define DAF_STDOUT              0x01
124#define DAF_DELIVER_SPAM        0x02
125#define DAF_DELIVER_INNOCENT    0x04
126#define DAF_WHITELIST           0x08
127#define DAF_GLOBAL              0x10
128#define DAF_INOCULATE           0x20
129#define DAF_NOISE               0x40
130#define DAF_MERGED              0x80
131#define DAF_SUMMARY             0x100
132#define DAF_UNLEARN             0x200
133#define DAF_FIXED_TR_MODE       0x400
134
135#define DAZ_WORD                0x01
136#define DAZ_CHAIN               0x02
137#define DAZ_SBPH                0x03
138#define DAZ_OSB                 0x04
139
140#endif /* _AGENT_SHARED_H */
Note: See TracBrowser for help on using the repository browser.