Ditch the csp member cookie_list[] which isn't used anymore.
[privoxy.git] / project.h
index 8c637dd..d2d371b 100644 (file)
--- 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.90 2007/02/07 10:36:16 fabiankeil Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.95 2007/04/30 15:02:19 fabiankeil Exp $"
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/project.h,v $
  *
  * Revisions   :
  *    $Log: project.h,v $
+ *    Revision 1.95  2007/04/30 15:02:19  fabiankeil
+ *    Introduce dynamic pcrs jobs that can resolve variables.
+ *
+ *    Revision 1.94  2007/04/15 16:39:21  fabiankeil
+ *    Introduce tags as alternative way to specify which
+ *    actions apply to a request. At the moment tags can be
+ *    created based on client and server headers.
+ *
+ *    Revision 1.93  2007/03/20 15:16:34  fabiankeil
+ *    Use dedicated header filter actions instead of abusing "filter".
+ *    Replace "filter-client-headers" and "filter-client-headers"
+ *    with "server-header-filter" and "client-header-filter".
+ *
+ *    Revision 1.92  2007/03/17 15:20:05  fabiankeil
+ *    New config option: enforce-blocks.
+ *
+ *    Revision 1.91  2007/03/05 13:28:03  fabiankeil
+ *    Add some CSP_FLAGs for the header parsers.
+ *
  *    Revision 1.90  2007/02/07 10:36:16  fabiankeil
  *    Add new http_response member to save
  *    the reason why the response was generated.
@@ -851,7 +870,7 @@ struct http_response
 };
 
 /**
- * A URL pattern.
+ * A URL or a tag pattern.
  */
 struct url_spec
 {
@@ -869,12 +888,13 @@ struct url_spec
    char *path;         /**< The source for the regex.                         */
    size_t pathlen;     /**< ==strlen(path).  Needed for prefix matching.  FIXME: Now obsolete?     */
    regex_t *preg;      /**< Regex for matching path part                      */
+   regex_t *tag_regex; /**< Regex for matching tags                           */
 };
 
 /**
  * If you declare a static url_spec, this is the value to initialize it to zero.
  */
-#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, 0, 0, 0, NULL, 0, NULL }
+#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, 0, 0, 0, NULL, 0, NULL, NULL }
 
 /**
  * Constant for host part matching in URLs.  If set, indicates that the start of
@@ -1044,18 +1064,26 @@ struct iob
 #define ACTION_STRING_COUNT                15
 
 
-/*To make the ugly hack in sed easier to understand*/
+/* To make the ugly hack in sed easier to understand */
 #define CHECK_EVERY_HEADER_REMAINING 0
 
 
 /** Index into current_action_spec::multi[] for headers to add. */
-#define ACTION_MULTI_ADD_HEADER     0
+#define ACTION_MULTI_ADD_HEADER              0
 /** Index into current_action_spec::multi[] for headers to add. */
-#define ACTION_MULTI_WAFER          1
-/** Index into current_action_spec::multi[] for filters to apply. */
-#define ACTION_MULTI_FILTER         2
+#define ACTION_MULTI_WAFER                   1
+/** Index into current_action_spec::multi[] for content filters to apply. */
+#define ACTION_MULTI_FILTER                  2
+/** Index into current_action_spec::multi[] for server-header filters to apply. */
+#define ACTION_MULTI_SERVER_HEADER_FILTER    3
+/** Index into current_action_spec::multi[] for client-header filters to apply. */
+#define ACTION_MULTI_CLIENT_HEADER_FILTER    4
+/** Index into current_action_spec::multi[] for client-header tags to apply. */
+#define ACTION_MULTI_CLIENT_HEADER_TAGGER    5
+/** Index into current_action_spec::multi[] for server-header tags to apply. */
+#define ACTION_MULTI_SERVER_HEADER_TAGGER    6
 /** Number of multi-string actions. */
-#define ACTION_MULTI_COUNT          3
+#define ACTION_MULTI_COUNT                   7
 
 
 /**
@@ -1253,8 +1281,8 @@ struct client_state
    /** List of all headers for this request */
    struct list headers[1];
 
-   /** List of all cookies for this request */
-   struct list cookie_list[1];
+   /** List of all tags that apply to this request */
+   struct list tags[1];
 
    /** MIME-Type key, see CT_* above */
    unsigned int content_type;
@@ -1441,6 +1469,14 @@ struct forward_spec
  */
 #define FORWARD_SPEC_INITIALIZER { { URL_SPEC_INITIALIZER }, 0, NULL, 0, NULL, 0, NULL }
 
+/* Supported filter types */
+#define FT_CONTENT_FILTER       0
+#define FT_CLIENT_HEADER_FILTER 1
+#define FT_SERVER_HEADER_FILTER 2
+#define FT_CLIENT_HEADER_TAGGER 3
+#define FT_SERVER_HEADER_TAGGER 4
+
+#define MAX_FILTER_TYPES        5
 
 /**
  * This struct represents one filter (one block) from
@@ -1454,6 +1490,9 @@ struct re_filterfile_spec
    char *description;               /**< Description from FILTER: statement in re_filterfile. */
    struct list patterns[1];         /**< The patterns from the re_filterfile. */
    pcrs_job *joblist;               /**< The resulting compiled pcrs_jobs. */
+   int type;                        /**< Filter type (content, client-header, server-header). */
+   int dynamic;                     /**< Set to one if the pattern might contain variables
+                                         and has to be recompiled for every request. */
    struct re_filterfile_spec *next; /**< The pointer for chaining. */
 };
 
@@ -1509,6 +1548,9 @@ struct access_control_list
 /** configuration_spec::feature_flags: Check the host header for requests with host-less request lines. */
 #define RUNTIME_FEATURE_ACCEPT_INTERCEPTED_REQUESTS 16
 
+/** configuration_spec::feature_flags: Don't allow to circumvent blocks with the force prefix. */
+#define RUNTIME_FEATURE_ENFORCE_BLOCKS              32
+
 
 /**
  * Data loaded from the configuration file.