123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /*
- * $Id$
- */
-
-
- #ifndef CFG_FILE_H
- #define CFG_FILE_H
-
- #include "config.h"
- #include <sys/types.h>
- #ifndef HAVE_OWN_QUEUE_H
- #include <sys/queue.h>
- #else
- #include "queue.h"
- #endif
- #include <netinet/in.h>
- #include <sys/un.h>
- #include <event.h>
- #include <glib.h>
- #include "mem_pool.h"
- #include "upstream.h"
- #include "memcached.h"
- #include "filter.h"
-
- #define DEFAULT_BIND_PORT 768
- #define DEFAULT_CONTROL_PORT 7608
- #define MAX_MEMCACHED_SERVERS 48
- #define DEFAULT_MEMCACHED_PORT 11211
- /* Memcached timeouts */
- #define DEFAULT_MEMCACHED_CONNECT_TIMEOUT 1000
- /* Upstream timeouts */
- #define DEFAULT_UPSTREAM_ERROR_TIME 10
- #define DEFAULT_UPSTREAM_ERROR_TIME 10
- #define DEFAULT_UPSTREAM_DEAD_TIME 300
- #define DEFAULT_UPSTREAM_MAXERRORS 10
- /* Statfile pool size, 50Mb */
- #define DEFAULT_STATFILE_SIZE 52428800L
-
- /* 1 worker by default */
- #define DEFAULT_WORKERS_NUM 1
-
- #define yyerror(fmt, ...) \
- fprintf (stderr, "Config file parse error!\non line: %d\n", yylineno); \
- fprintf (stderr, "while reading text: %s\nreason: ", yytext); \
- fprintf (stderr, fmt, ##__VA_ARGS__); \
- fprintf (stderr, "\n")
- #define yywarn(fmt, ...) \
- fprintf (stderr, "Config file parse warning!\non line %d\n", yylineno); \
- fprintf (stderr, "while reading text: %s\nreason: ", yytext); \
- fprintf (stderr, fmt, ##__VA_ARGS__); \
- fprintf (stderr, "\n")
-
- struct expression;
-
- enum { VAL_UNDEF=0, VAL_TRUE, VAL_FALSE };
-
- enum rspamd_regexp_type {
- REGEXP_NONE = 0,
- REGEXP_HEADER,
- REGEXP_MIME,
- REGEXP_MESSAGE,
- REGEXP_URL,
- };
-
- enum rspamd_log_type {
- RSPAMD_LOG_CONSOLE,
- RSPAMD_LOG_SYSLOG,
- RSPAMD_LOG_FILE,
- };
-
- struct rspamd_regexp {
- enum rspamd_regexp_type type;
- char *regexp_text;
- GRegex *regexp;
- char *header;
- };
-
- struct memcached_server {
- struct upstream up;
- struct in_addr addr;
- uint16_t port;
- short alive;
- short int num;
- };
-
- struct perl_module {
- char *path;
- LIST_ENTRY (perl_module) next;
- };
-
- struct module_opt {
- char *param;
- char *value;
- LIST_ENTRY (module_opt) next;
- };
-
- struct statfile {
- char *alias;
- char *pattern;
- double weight;
- size_t size;
- };
-
- struct config_file {
- memory_pool_t *cfg_pool;
- char *cfg_name;
- char *pid_file;
- char *temp_dir;
-
- char *bind_host;
- struct in_addr bind_addr;
- uint16_t bind_port;
- uint16_t bind_family;
-
- char *control_host;
- struct in_addr control_addr;
- uint16_t control_port;
- uint16_t control_family;
- int controller_enabled;
- char *control_password;
-
- int no_fork;
- unsigned int workers_number;
-
- enum rspamd_log_type log_type;
- int log_facility;
- int log_level;
- char *log_file;
- int log_fd;
- size_t max_statfile_size;
-
- struct memcached_server memcached_servers[MAX_MEMCACHED_SERVERS];
- size_t memcached_servers_num;
- memc_proto_t memcached_protocol;
- unsigned int memcached_error_time;
- unsigned int memcached_dead_time;
- unsigned int memcached_maxerrors;
- unsigned int memcached_connect_timeout;
-
- LIST_HEAD (modulesq, perl_module) perl_modules;
- LIST_HEAD (headersq, filter) header_filters;
- LIST_HEAD (mimesq, filter) mime_filters;
- LIST_HEAD (messagesq, filter) message_filters;
- LIST_HEAD (urlsq, filter) url_filters;
- char *header_filters_str;
- char *mime_filters_str;
- char *message_filters_str;
- char *url_filters_str;
- GHashTable* modules_opts;
- GHashTable* variables;
- GHashTable* metrics;
- GHashTable* factors;
- GHashTable* c_modules;
- GHashTable* composite_symbols;
- GHashTable* statfiles;
- };
-
- int add_memcached_server (struct config_file *cf, char *str);
- int parse_bind_line (struct config_file *cf, char *str, char is_control);
- void init_defaults (struct config_file *cfg);
- void free_config (struct config_file *cfg);
- char* get_module_opt (struct config_file *cfg, char *module_name, char *opt_name);
- size_t parse_limit (const char *limit);
- unsigned int parse_seconds (const char *t);
- char parse_flag (const char *str);
- char* substitute_variable (struct config_file *cfg, char *str, u_char recursive);
- void post_load_config (struct config_file *cfg);
- struct rspamd_regexp* parse_regexp (memory_pool_t *pool, char *line);
- struct expression* parse_expression (memory_pool_t *pool, char *line);
-
- int yylex (void);
- int yyparse (void);
- void yyrestart (FILE *);
-
- #endif /* ifdef CFG_FILE_H */
- /*
- * vi:ts=4
- */
|