Update OS/2 build section
[privoxy.git] / project.h
index 7daeb04..b2ffc00 100644 (file)
--- a/project.h
+++ b/project.h
@@ -1,6 +1,6 @@
 #ifndef PROJECT_H_INCLUDED
 #define PROJECT_H_INCLUDED
-#define PROJECT_H_VERSION "$Id: project.h,v 1.43 2001/11/22 21:57:51 jongfoster Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.46 2002/01/17 21:06:09 jongfoster Exp $"
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/project.h,v $
  *
  * Revisions   :
  *    $Log: project.h,v $
+ *    Revision 1.46  2002/01/17 21:06:09  jongfoster
+ *    Now #defining the URLs of the config interface
+ *
+ *    Minor changes to struct http_request and struct url_spec due to
+ *    standardizing that struct http_request is used to represent a URL, and
+ *    struct url_spec is used to represent a URL pattern.  (Before, URLs were
+ *    represented as seperate variables and a partially-filled-in url_spec).
+ *
+ *    Revision 1.45  2002/01/09 14:33:27  oes
+ *    Added HOSTENT_BUFFER_SIZE
+ *
+ *    Revision 1.44  2001/12/30 14:07:32  steudten
+ *    - Add signal handling (unix)
+ *    - Add SIGHUP handler (unix)
+ *    - Add creation of pidfile (unix)
+ *    - Add action 'top' in rc file (RH)
+ *    - Add entry 'SIGNALS' to manpage
+ *    - Add exit message to logfile (unix)
+ *
  *    Revision 1.43  2001/11/22 21:57:51  jongfoster
  *    Making action_spec->flags into an unsigned long rather than just an
  *    unsigned int.
@@ -415,6 +434,16 @@ typedef int jb_err;
  */
 #define BUFFER_SIZE 5000
 
+/*
+ * Buffer size for capturing struct hostent data in the
+ * gethostby(name|addr)_r library calls. Since we don't
+ * loop over gethostbyname_r, the buffer must be sufficient
+ * to accomodate multiple IN A RRs, as used in DNS round robin
+ * load balancing. W3C's wwwlib uses 1K, so that should be
+ * good enough for us, too.
+ */
+#define HOSTENT_BUFFER_SIZE 1024
+
 /*
  * So you can say "while (FOREVER) { ...do something... }"
  */
@@ -482,6 +511,10 @@ struct http_request
 
    char *host_ip_addr_str; /* String with dotted decimal representation
                             * of host's IP. NULL before connect_to() */
+
+   char  *dbuffer;     /* Buffer with '\0'-delimited domain name.           */
+   char **dvec;        /* List of pointers to the strings in dbuffer.       */
+   int    dcount;      /* How many parts to this domain? (length of dvec)   */
 };
 
 /* Response generated by CGI, blocker, or error handler */
@@ -503,13 +536,11 @@ struct url_spec
    char  *spec;        /* The string which was parsed to produce this       */
                        /* url_spec.  Used for debugging or display only.    */
 
-   /* Hostname matching: */
-   char  *domain;      /* Fully qalified domain name (FQDN) pattern.        */
-                       /* May contain "*".                                  */
-   char  *dbuf;        /* Buffer with '\0'-delimited fqdn                   */
-   char **dvec;        /* Domain ptr vector into dbuf                       */
-   int    dcnt;        /* How many domains in fqdn?                         */
-   int    unanchored;  /* Bitmap - flags are ANCHOR_LEFT and ANCHOR_RIGHT   */
+   /* Hostname matching, or dbuffer == NULL to match all hosts */
+   char  *dbuffer;     /* Buffer with '\0'-delimited domain name.           */
+   char **dvec;        /* List of pointers to the strings in dbuffer.       */
+   int    dcount;      /* How many parts to this domain? (length of dvec)   */
+   int    unanchored;  /* Bitmap - flags are ANCHOR_LEFT and ANCHOR_RIGHT.  */
 
    /* Port matching: */
    int   port;         /* The port number, or 0 to match all ports.         */
@@ -523,9 +554,9 @@ struct url_spec
 #endif
 };
 #ifdef REGEX
-#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0, NULL }
+#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, 0, 0, 0, NULL, 0, NULL }
 #else /* ifndef REGEX */
-#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0 }
+#define URL_SPEC_INITIALIZER { NULL, NULL, NULL, 0, 0, 0, NULL, 0 }
 #endif /* ndef REGEX */
 
 /* Constants for host part matching in URLs */
@@ -727,6 +758,16 @@ struct client_state
 };
 
 
+/*
+ * A function to add a header
+ */
+typedef jb_err (*add_header_func_ptr)(struct client_state *);
+
+/*
+ * A function to process a header
+ */
+typedef jb_err (*parser_func_ptr    )(struct client_state *, char **);
+
 /*
  * List of functions to run on a list of headers
  */
@@ -734,7 +775,7 @@ struct parsers
 {
    char *str;
    char  len;
-   char *(*parser)(const struct parsers *, const char *, struct client_state *);
+   parser_func_ptr parser;
 };
 
 
@@ -936,9 +977,28 @@ struct configuration_spec
 #endif /* def FEATURE_FORCE_LOAD */
 
 /* Hardwired URLs */
-#define HOME_PAGE_URL  "http://ijbswa.sourceforge.net"
-#define REDIRECT_URL HOME_PAGE_URL "/redirect.php?v=" VERSION "&to="
-#define CGI_PREFIX_HOST "i.j.b"
+#define HOME_PAGE_URL       "http://ijbswa.sourceforge.net"
+#define REDIRECT_URL        HOME_PAGE_URL "/redirect.php?v=" VERSION "&to="
+
+/*
+ * The "hosts" to intercept and display CGI pages.
+ * First one is a hostname only, second one can specify host and path.
+ *
+ * Notes:
+ * 1) Do not specify the http: prefix
+ * 2) CGI_SITE_2_PATH must not end with /, one will be added automatically.
+ * 3) CGI_SITE_2_PATH must start with /, unless it is the empty string.
+ */
+#define CGI_SITE_1_HOST "i.j.b"
+#define CGI_SITE_2_HOST "ijbswa.sourceforge.net"
+#define CGI_SITE_2_PATH "/config"
+
+/*
+ * The prefix for CGI pages.  Written out in generated HTML.
+ * INCLUDES the trailing slash.
+ */
+#define CGI_PREFIX  "http://" CGI_SITE_2_HOST CGI_SITE_2_PATH "/"
+
 
 /* HTTP snipplets */
 static const char CSUCCEED[] =