X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=9b548792b7e213a883a9ed587e5932ce9c113929;hp=efcb45687bd4709f3ca070fc0ee5903bdbc39398;hb=84a00639645a35636bfce0c43aa1a79792a2e91c;hpb=6ef17a2fe3300dc395522d35997f3e6d6490fa70 diff --git a/project.h b/project.h index efcb4568..9b548792 100644 --- a/project.h +++ b/project.h @@ -1,7 +1,7 @@ #ifndef PROJECT_H_INCLUDED #define PROJECT_H_INCLUDED /** Version string. */ -#define PROJECT_H_VERSION "$Id: project.h,v 1.198 2013/11/24 14:22:51 fabiankeil Exp $" +#define PROJECT_H_VERSION "$Id: project.h,v 1.211 2016/01/16 12:30:28 fabiankeil Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/project.h,v $ @@ -10,7 +10,7 @@ * project. Does not define any variables or functions * (though it does declare some macros). * - * Copyright : Written by and Copyright (C) 2001-2012 the + * Copyright : Written by and Copyright (C) 2001-2014 the * Privoxy team. http://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -137,16 +137,19 @@ typedef int jb_socket; * A standard error code. This should be JB_ERR_OK or one of the JB_ERR_xxx * series of errors. */ -typedef int jb_err; +enum privoxy_err +{ + JB_ERR_OK = 0, /**< Success, no error */ + JB_ERR_MEMORY = 1, /**< Out of memory */ + JB_ERR_CGI_PARAMS = 2, /**< Missing or corrupt CGI parameters */ + JB_ERR_FILE = 3, /**< Error opening, reading or writing a file */ + JB_ERR_PARSE = 4, /**< Error parsing file */ + JB_ERR_MODIFIED = 5, /**< File has been modified outside of the + CGI actions editor. */ + JB_ERR_COMPRESS = 6 /**< Error on decompression */ +}; -#define JB_ERR_OK 0 /**< Success, no error */ -#define JB_ERR_MEMORY 1 /**< Out of memory */ -#define JB_ERR_CGI_PARAMS 2 /**< Missing or corrupt CGI parameters */ -#define JB_ERR_FILE 3 /**< Error opening, reading or writing a file */ -#define JB_ERR_PARSE 4 /**< Error parsing file */ -#define JB_ERR_MODIFIED 5 /**< File has been modified outside of the - CGI actions editor. */ -#define JB_ERR_COMPRESS 6 /**< Error on decompression */ +typedef enum privoxy_err jb_err; /** * This macro is used to free a pointer that may be NULL. @@ -196,14 +199,6 @@ typedef int jb_err; */ #define HOSTENT_BUFFER_SIZE 2048 -/** - * Do not use. Originally this was so that you can - * say "while (FOREVER) { ...do something... }". - * However, this gives a warning with some compilers (e.g. VC++). - * Instead, use "for (;;) { ...do something... }". - */ -#define FOREVER 1 - /** * Default TCP/IP address to listen on, as a string. * Set to "127.0.0.1:8118". @@ -393,6 +388,17 @@ struct pattern_spec */ #define ANCHOR_RIGHT 2 +/** Pattern spec bitmap: It's an URL pattern. */ +#define PATTERN_SPEC_URL_PATTERN 0x00000001UL + +/** Pattern spec bitmap: It's a TAG pattern. */ +#define PATTERN_SPEC_TAG_PATTERN 0x00000002UL + +/** Pattern spec bitmap: It's a NO-REQUEST-TAG pattern. */ +#define PATTERN_SPEC_NO_REQUEST_TAG_PATTERN 0x00000004UL + +/** Pattern spec bitmap: It's a NO-RESPONSE-TAG pattern. */ +#define PATTERN_SPEC_NO_RESPONSE_TAG_PATTERN 0x00000008UL /** * An I/O buffer. Holds a string which can be appended to, and can have data @@ -560,7 +566,9 @@ struct iob /** Index into current_action_spec::multi[] for server-header tags to apply. */ #define ACTION_MULTI_SERVER_HEADER_TAGGER 5 /** Number of multi-string actions. */ -#define ACTION_MULTI_COUNT 6 +#define ACTION_MULTI_EXTERNAL_FILTER 6 +/** Number of multi-string actions. */ +#define ACTION_MULTI_COUNT 7 /** @@ -597,7 +605,7 @@ struct action_spec unsigned long add; /**< Actions to add. A bit set to "1" means add action. */ /** - * Paramaters for those actions that require them. + * Parameters for those actions that require them. * Each entry is valid if & only if the corresponding entry in "flags" is * set. */ @@ -634,7 +642,7 @@ struct url_actions }; enum forwarder_type { - /**< Don't use a SOCKS server */ + /**< Don't use a SOCKS server, forward to a HTTP proxy directly */ SOCKS_NONE = 0, /**< original SOCKS 4 protocol */ SOCKS_4 = 40, @@ -644,6 +652,12 @@ enum forwarder_type { SOCKS_5 = 50, /**< Like SOCKS5, but uses non-standard Tor extensions (currently only optimistic data) */ SOCKS_5T, + /**< + * Don't use a SOCKS server, forward to the specified webserver. + * The difference to SOCKS_NONE is that a request line without + * full URL is sent. + */ + FORWARD_WEBSERVER, }; /* @@ -718,11 +732,6 @@ struct reusable_connection */ #define CSP_FLAG_TOGGLED_ON 0x20U -/** - * Flag for csp->flags: Set if we answered the request ourselve. - */ -#define CSP_FLAG_CRUNCHED 0x40U - /** * Flag for csp->flags: Set if an acceptable Connection header * has already been set by the client. @@ -840,19 +849,29 @@ struct reusable_connection */ #define CSP_FLAG_CHUNKED_CLIENT_BODY 0x01000000U +/** + * Flag for csp->flags: Set if the client set the Expect header + */ +#define CSP_FLAG_UNSUPPORTED_CLIENT_EXPECTATION 0x02000000U + +/** + * Flag for csp->flags: Set if we answered the request ourselve. + */ +#define CSP_FLAG_CRUNCHED 0x04000000U + /* * Flags for use in return codes of child processes */ /** - * Flag for process return code: Set if exiting porcess has been toggled + * Flag for process return code: Set if exiting process has been toggled * during its lifetime. */ #define RC_FLAG_TOGGLED 0x10 /** - * Flag for process return code: Set if exiting porcess has blocked its + * Flag for process return code: Set if exiting process has blocked its * request. */ #define RC_FLAG_BLOCKED 0x20 @@ -1109,9 +1128,17 @@ enum filter_type FT_SERVER_HEADER_FILTER = 2, FT_CLIENT_HEADER_TAGGER = 3, FT_SERVER_HEADER_TAGGER = 4, +#ifdef FEATURE_EXTERNAL_FILTERS + FT_EXTERNAL_CONTENT_FILTER = 5, +#endif FT_INVALID_FILTER = 42, }; + +#ifdef FEATURE_EXTERNAL_FILTERS +#define MAX_FILTER_TYPES 6 +#else #define MAX_FILTER_TYPES 5 +#endif /** * This struct represents one filter (one block) from @@ -1228,21 +1255,7 @@ struct configuration_spec /** Nonzero to enable multithreading. */ int multi_threaded; - /** - * Bitmask of features that can be enabled/disabled through the config - * file. Currently defined bits: - * - * - RUNTIME_FEATURE_CGI_EDIT_ACTIONS - * - RUNTIME_FEATURE_CGI_TOGGLE - * - RUNTIME_FEATURE_HTTP_TOGGLE - * - RUNTIME_FEATURE_SPLIT_LARGE_FORMS - * - RUNTIME_FEATURE_ACCEPT_INTERCEPTED_REQUESTS - * - RUNTIME_FEATURE_ENFORCE_BLOCKS - * - RUNTIME_FEATURE_CGI_CRUNCHING - * - RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE - * - RUNTIME_FEATURE_CONNECTION_SHARING - * - RUNTIME_FEATURE_EMPTY_DOC_RETURNS_OK - */ + /** Bitmask of features that can be controlled through the config file. */ unsigned feature_flags; /** The log file name. */ @@ -1254,6 +1267,11 @@ struct configuration_spec /** The directory for customized CGI templates. */ const char *templdir; +#ifdef FEATURE_EXTERNAL_FILTERS + /** The template used to create temporary files. */ + const char *temporary_directory; +#endif + /** The log file directory. */ const char *logdir; @@ -1353,10 +1371,9 @@ struct configuration_spec /** Calculates the number of elements in an array, using sizeof. */ #define SZ(X) (sizeof(X) / sizeof(*X)) -#ifdef FEATURE_FORCE_LOAD -/** The force load URL prefix. */ +/** The force load URL prefix. Not behind an ifdef because + * it's always used for the show-status page. */ #define FORCE_PREFIX "/PRIVOXY-FORCE" -#endif /* def FEATURE_FORCE_LOAD */ #ifdef FEATURE_NO_GIFS /** The MIME type for images ("image/png" or "image/gif"). */