#ifndef PROJECT_H_INCLUDED
#define PROJECT_H_INCLUDED
-#define PROJECT_H_VERSION "$Id: project.h,v 1.32 2001/09/16 23:02:51 jongfoster Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.33 2001/09/20 13:30:08 steudten Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/project.h,v $
*
* Revisions :
* $Log: project.h,v $
+ * Revision 1.33 2001/09/20 13:30:08 steudten
+ *
+ * Make freez() more secure in case of: if (exp) { free(z) ; a=*z }
+ * Last case will set z to NULL in free(z) and thats bad..
+ *
* Revision 1.32 2001/09/16 23:02:51 jongfoster
* Fixing warning
*
struct http_request
{
- char *cmd;
- char *gpc;
- char *host;
- char *host_ip_addr_str; /* NULL before connect_to() */
- int port;
- char *path;
- char *ver;
- char *hostport; /* "host[:port]" */
- int ssl;
- char *user_agent; /* Client's User-Agent: header value */
+ char *cmd; /* Whole command line: method, URL, Version */
+ char *gpc; /* HTTP method: GET, POST, .. */
+ char *url; /* The URL */
+ char *ver; /* Protocol version */
+
+ char *host; /* Host part of URL */
+ int port; /* Port of URL or 80 (default) */
+ char *path; /* Path of URL */
+ char *hostport; /* host[:port] */
+ int ssl; /* Flag if protocol is https */
+
+ char *host_ip_addr_str; /* String with dotted decimal representation
+ * of host's IP. NULL before connect_to() */
+ char *user_agent; /* Client's User-Agent: header value */
};
/* Response generated by CGI, blocker, or error handler */
#define IOB_RESET(CSP) if(CSP->iob->buf) free(CSP->iob->buf); memset(CSP->iob, '\0', sizeof(CSP->iob));
/* Keys for csp->content_type */
-#define CT_TEXT 0x01U
-#define CT_GIF 0x02U
+#define CT_TEXT 1 /* Suitable for pcrs filtering */
+#define CT_GIF 2 /* Suitable for GIF filtering */
+#define CT_TABOO 3 /* DONT filter */
#define ACTION_MASK_ALL (~0U)
#define ACTION_MOST_COMPATIBLE 0x0000U
#define ACTION_BLOCK 0x0001U
-#define ACTION_DEANIMATE 0x2000U
-#define ACTION_FAST_REDIRECTS 0x0002U
-#define ACTION_FILTER 0x0004U
-#define ACTION_HIDE_FORWARDED 0x0008U
-#define ACTION_HIDE_FROM 0x0010U
-#define ACTION_HIDE_REFERER 0x0020U /* sic - follow HTTP, not English */
-#define ACTION_HIDE_USER_AGENT 0x0040U
-#define ACTION_IMAGE 0x0080U
-#define ACTION_IMAGE_BLOCKER 0x0100U
-#define ACTION_NO_COOKIE_READ 0x0200U
-#define ACTION_NO_COOKIE_SET 0x0400U
-#define ACTION_NO_POPUPS 0x0800U
-#define ACTION_VANILLA_WAFER 0x1000U
+#define ACTION_DEANIMATE 0x0002U
+#define ACTION_DOWNGRADE 0x0004U
+#define ACTION_FAST_REDIRECTS 0x0008U
+#define ACTION_FILTER 0x0010U
+#define ACTION_HIDE_FORWARDED 0x0020U
+#define ACTION_HIDE_FROM 0x0040U
+#define ACTION_HIDE_REFERER 0x0080U /* sic - follow HTTP, not English */
+#define ACTION_HIDE_USER_AGENT 0x0100U
+#define ACTION_IMAGE 0x0200U
+#define ACTION_IMAGE_BLOCKER 0x0400U
+#define ACTION_NO_COMPRESSION 0x0800U
+#define ACTION_NO_COOKIE_READ 0x1000U
+#define ACTION_NO_COOKIE_SET 0x2000U
+#define ACTION_NO_POPUPS 0x4000U
+#define ACTION_VANILLA_WAFER 0x8000U
+
#define ACTION_STRING_DEANIMATE 0
#define ACTION_STRING_FROM 1
#endif /* def FEATURE_IMAGE_DETECT_MSIE */
+/*
+ * Flags for use in csp->flags
+ */
+#define CSP_FLAG_ACTIVE 0x01 /* Set if this client is processing data.
+ * Cleared when the thread associated with
+ * this structure dies. */
+#define CSP_FLAG_CHUNKED 0x02 /* Set if the server's reply is in "chunked"
+ * transfer encoding */
+#define CSP_FLAG_FORCED 0x04 /* Set if this request was enforced, although
+ * it would normally have been blocked. */
+#define CSP_FLAG_MODIFIED 0x08 /* Set if any modification to the body was done */
+#define CSP_FLAG_REJECTED 0x10 /* Set if request was blocked. */
+#define CSP_FLAG_TOGGLED_ON 0x20 /* Set if we are toggled on (FEATURE_TOGGLE) */
struct client_state
{
/* socket to talk to server (web server or proxy) */
int sfd;
-
-#ifdef FEATURE_STATISTICS
- /* 1 if this URL was rejected, 0 otherwise. Allows actual stats inc to
- * occur in main thread only for thread-safety.
- */
- int rejected;
-#endif /* def FEATURE_STATISTICS */
-
-#ifdef FEATURE_FORCE_LOAD
- int force;
-#endif /* def FEATURE_FORCE_LOAD */
-
-#ifdef FEATURE_TOGGLE
- int toggled_on;
-#endif /* def FEATURE_TOGGLE */
+ /* Multi-purpose flag container, see CSP_FLAG_* above */
+ unsigned short int flags;
/*
* Client PC's IP address, as reported by the accept()_ function.
/* List of all cookies for this request */
struct list cookie_list[1];
- /* MIME-Type bitmap, see CT_* above */
- unsigned char content_type;
+ /* MIME-Type key, see CT_* above */
+ unsigned short int content_type;
/* The "X-Forwarded-For:" header sent by the client */
char *x_forwarded;
- /*
- * Nonzero if this client is processing data.
- * Set to zero when the thread associated with this structure dies.
- */
- int active;
-
/* files associated with this client */
struct file_list *actions_list;
const char *haddr;
int hport;
+ /* Size limit for IOB */
+ size_t buffer_limit;
+
#ifdef FEATURE_TRUST
const char * trustfile;