Adding support for LOG_LEVEL_CGI
[privoxy.git] / cgi.h
diff --git a/cgi.h b/cgi.h
index 8d7484a..ba334f7 100644 (file)
--- a/cgi.h
+++ b/cgi.h
@@ -1,6 +1,6 @@
-#ifndef _CGI_H
-#define _CGI_H
-#define CGI_H_VERSION "$Id: cgi.h,v 1.3 2001/06/03 19:12:16 oes Exp $"
+#ifndef CGI_H_INCLUDED
+#define CGI_H_INCLUDED
+#define CGI_H_VERSION "$Id: cgi.h,v 1.10 2001/08/01 21:19:22 jongfoster Exp $"
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgi.h,v $
  *
  * Revisions   :
  *    $Log: cgi.h,v $
- *    Revision 1.3  2001/06/03 19:12:16  oes
- *    introduced new cgi handling
- *
- *    Revision 1.1  2001/06/03 11:04:49  oes
- *    Makefile/in
- *
- *    introduced cgi.c
- *
- *    actions.c:
- *
- *    adapted to new enlist_unique arg format
- *
- *    conf loadcfg.c
- *
- *    introduced confdir option
- *
- *    filters.c filtrers.h
- *
- *     extracted-CGI relevant stuff
+ *    Revision 1.10  2001/08/01 21:19:22  jongfoster
+ *    Moving file version information to a separate CGI page.
  *
- *    jbsockets.c
+ *    Revision 1.9  2001/08/01 00:17:54  jongfoster
+ *    Adding prototype for map_conditional
  *
- *     filled comment
+ *    Revision 1.8  2001/07/30 22:08:36  jongfoster
+ *    Tidying up #defines:
+ *    - All feature #defines are now of the form FEATURE_xxx
+ *    - Permanently turned off WIN_GUI_EDIT
+ *    - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
  *
- *    jcc.c
+ *    Revision 1.7  2001/07/29 18:43:08  jongfoster
+ *    Changing #ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to
+ *    ANSI C rules.
  *
- *     support for new cgi mechansim
+ *    Revision 1.6  2001/06/29 21:45:41  oes
+ *    Indentation, CRLF->LF, Tab-> Space
  *
- *    list.c list.h
+ *    Revision 1.5  2001/06/29 13:22:44  oes
+ *    - Cleaned up
+ *    - Added new functions: default_exports(), make_menu(),
+ *      error_response() etc, ranamed others and changed
+ *      param and return types.
+ *    - Removed HTTP/HTML snipplets
+ *    - Removed logentry from cancelled commit
  *
- *    functions for new list type: "map"
- *    extended enlist_unique
- *
- *    miscutil.c .h
- *    introduced bindup()
- *
- *    parsers.c parsers.h
- *
- *    deleted const struct interceptors
- *
- *    pcrs.c
- *    added FIXME
- *
- *    project.h
- *
- *    added struct map
- *    added struct http_response
- *    changes struct interceptors to struct cgi_dispatcher
- *    moved HTML stuff to cgi.h
- *
- *    re_filterfile:
- *
- *    changed
- *
- *    showargs.c
- *    NO TIME LEFT
+ *    Revision 1.4  2001/06/09 10:50:58  jongfoster
+ *    Changing "show URL info" handler to new style.
+ *    Adding "extern" to some function prototypes.
  *
+ *    Revision 1.3  2001/06/03 19:12:16  oes
+ *    introduced new cgi handling
  *
+ *    No revisions before 1.3
  *
  **********************************************************************/
 \f
 extern "C" {
 #endif
 
-extern struct http_response *cgi_dispatch(struct client_state *csp);
-extern int make_http_response(struct http_response *rsp);
-extern void free_http_response(struct http_response *rsp);
-
-extern struct map *parse_cgi(char *argstring);
-extern char *dump_map(struct map *map);
+/*
+ * Dispatch & parameter parsing functions
+ */
+extern struct http_response *dispatch_cgi(struct client_state *csp);
+extern struct map *parse_cgi_parameters(char *argstring);
 
+/*
+ * CGI functions
+ */
+extern int cgi_show_version(struct client_state *csp, struct http_response *rsp,
+                            struct map *parameters);
 extern int cgi_default(struct client_state *csp, struct http_response *rsp,
-                      struct map *parameters);
+                       struct map *parameters);
 extern int cgi_show_status(struct client_state *csp, struct http_response *rsp,
-                    struct map *parameters);
+                           struct map *parameters);
+extern int cgi_show_url_info(struct client_state *csp, struct http_response *rsp,
+                             struct map *parameters);
+extern int cgi_send_banner(struct client_state *csp, struct http_response *rsp,
+                                 struct map *parameters);
 
-extern int cgi_show_url_info(struct client_state *csp, struct http_response *rsp,\r
-                    struct map *parameters);
+/* Not exactly a CGI */
+extern struct http_response *error_response(struct client_state *csp, const char *template, int err);
 
-extern char *redirect_url(struct http_request *http, struct client_state *csp);
-extern int cgi_send_banner(struct client_state *csp, struct http_response *rsp,
-                          struct map *parameters);
+/*
+ * CGI support functions
+ */
+extern struct http_response *finish_http_response(struct http_response *rsp);
+extern void free_http_response(struct http_response *rsp);
 
+extern struct map * default_exports(const struct client_state *csp, const char *caller);
+extern void map_block_killer(struct map *map, const char *name);
+extern void map_conditional(struct map *exports, const char *name, int choose_first);
+extern char *fill_template(struct client_state *csp, const char *templatename, struct map *exports);
 
 
-#ifdef TRUST_FILES
-extern char *ij_untrusted_url(struct http_request *http, struct client_state *csp);
-#endif /* def TRUST_FILES */
+/*
+ * Text generators
+ */
+extern char *make_menu(const char *self);
+extern char *dump_map(const struct map *map);
 
+#ifdef FEATURE_STATISTICS
+extern struct map *add_stats(struct map *exports);
+#endif /* def FEATURE_STATISTICS */
 
 
-#ifdef STATISTICS
-extern char *add_stats(char *s);
-#endif /* def STATISTICS */
+/*
+ * Hint: You can encode your own GIFs like that:
+ * perl -e 'while (read STDIN, $c, 1) { printf("\\%.3o,", unpack("C", $c)); }'
+ */
 
-static const char CJBGIF[] =
+static const char JBGIF[] =
    "GIF89aD\000\013\000\360\000\000\000\000\000\377\377\377!"
    "\371\004\001\000\000\001\000,\000\000\000\000D\000\013\000"
    "\000\002a\214\217\251\313\355\277\000\200G&K\025\316hC\037"
@@ -147,166 +144,11 @@ static const char CJBGIF[] =
    "\372\003S\275\274k2\354\254z\347?\335\274x\306^9\374\276"
    "\037Q\000\000;";
 
-static const char CBLANKGIF[] =
+static const char BLANKGIF[] =
    "GIF89a\001\000\001\000\200\000\000\377\377\377\000\000"
    "\000!\371\004\001\000\000\000\000,\000\000\000\000\001"
    "\000\001\000\000\002\002D\001\000;";
 
-static const char CBLOCK[] = 
-#ifdef AMIGA 
-       "HTTP/1.0 403 Request for blocked URL\n" 
-#else /* ifndef AMIGA */
-       "HTTP/1.0 202 Request for blocked URL\n"
-#endif /* ndef AMIGA */
-       "Pragma: no-cache\n"
-       "Last-Modified: Thu Jul 31, 1997 07:42:22 pm GMT\n"
-       "Expires:       Thu Jul 31, 1997 07:42:22 pm GMT\n"
-       "Content-Type: text/html\n\n"
-       "<html>\n"
-       "<head>\n"
-       "<title>Internet Junkbuster: Request for blocked URL</title>\n"
-       "</head>\n"
-       WHITEBG
-       "<center><h1>"
-       BANNER
-       "</h1></center>\n"
-      "<p align=center>Your request for <b>%s%s</b>\n"
-      "was blocked.<br><a href=\"http://i.j.b/show-url-info?url=%s%s\">See why</a>"
-#ifdef FORCE_LOAD
-       " or <a href=\"http://%s" FORCE_PREFIX "%s\">"
-       "go there anyway.</a>"
-#endif /* def FORCE_LOAD */
-      "</p>\n"
-      "</body>\n"
-      "</html>\n";
-
-#ifdef TRUST_FILES
-static const char CTRUST[] =
-#ifdef AMIGA 
-       "HTTP/1.0 403 Request for untrusted URL\n"
-#else /* ifndef AMIGA */
-       "HTTP/1.0 202 Request for untrusted URL\n"
-#endif /* ndef AMIGA */
-       "Pragma: no-cache\n"
-       "Last-Modified: Thu Jul 31, 1997 07:42:22 pm GMT\n"
-       "Expires:       Thu Jul 31, 1997 07:42:22 pm GMT\n"
-       "Content-Type: text/html\n\n"
-       "<html>\n"
-       "<head>\n"
-       "<title>Internet Junkbuster: Request for untrusted URL</title>\n"
-       "</head>\n"
-       WHITEBG
-       "<center>"
-       "<a href=http://i.j.b/ij-untrusted-url?%s+%s+%s>"
-       BANNER
-       "</a>"
-       "</center>"
-       "</body>\n"
-       "</html>\n";
-#endif /* def TRUST_FILES */
-
-
-static const char C_HOME_PAGE[] =
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: Information</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</h1></center>\n"
-   "<p><a href=\"" HOME_PAGE_URL "\">JunkBuster web site</a></p>\n"
-   "<p><a href=\"http://i.j.b/show-proxy-arg\">Proxy configuration</a></p>\n"
-   "<p><a href=\"http://i.j.b/show-url-info\">Look up a URL</a></p>\n"
-   "</body>\n"
-   "</html>\n";
-
-static const char C_URL_INFO_HEADER[] =
-   "HTTP/1.0 200 OK\n"
-   "Pragma: no-cache\n"
-   "Expires:       Thu Jul 31, 1997 07:42:22 pm GMT\n"
-   "Content-Type: text/html\n\n"
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: URL Info</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</h1></center>\n"
-   "<p>Information for: <a href=\"http://%s\">http://%s</a></p>\n";
-static const char C_URL_INFO_FOOTER[] =
-   "\n</p>\n"
-   "</body>\n"
-   "</html>\n";
-
-static const char C_URL_INFO_FORM[] =
-   "HTTP/1.0 200 OK\n"
-   "Pragma: no-cache\n"
-   "Expires:       Thu Jul 31, 1997 07:42:22 pm GMT\n"
-   "Content-Type: text/html\n\n"
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: URL Info</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</h1></center>\n"
-   "<form method=\"GET\" action=\"http://i.j.b/show-url-info\">\n"
-   "<p>Please enter a URL, without the leading &quot;http://&quot;:</p>"
-   "<p><input type=\"text\" name=\"url\" size=\"80\">"
-   "<input type=\"submit\" value=\"Info\"></p>\n"
-   "</form>\n"
-   "</body>\n"
-   "</html>\n";
-
-static const char CFAIL[] =
-   "HTTP/1.0 503 Connect failed\n"
-   "Content-Type: text/html\n\n"
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: Connect failed</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</center></h1>"
-   "TCP connection to '%s' failed: %s.\n<br>"
-   "</body>\n"
-   "</html>\n";
-
-static const char CNXDOM[] =
-   "HTTP/1.0 404 Non-existent domain\n"
-   "Content-Type: text/html\n\n"
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: Non-existent domain</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</center></h1>"
-   "No such domain: %s\n"
-   "</body>\n"
-   "</html>\n";
-
-static const char CNOBANNER[] =
-   "HTTP/1.0 200 No Banner\n"
-   "Content-Type: text/html\n\n"
-   "<html>\n"
-   "<head>\n"
-   "<title>Internet Junkbuster: No Banner</title>\n"
-   "</head>\n"
-   BODY
-   "<h1><center>"
-   BANNER
-   "</h1>"
-   "You asked for a banner that this proxy can't produce because either configuration does not permit.\n<br>"
-   "or the URL didn't end with .gif\n"
-   "</center></body>\n"
-   "</html>\n";
-
 
 /* Revision control strings from this header and associated .c file */
 extern const char cgi_rcs[];
@@ -316,7 +158,7 @@ extern const char cgi_h_rcs[];
 } /* extern "C" */
 #endif
 
-#endif /* ndef _CGI_H */
+#endif /* ndef CGI_H_INCLUDED */
 
 /*
   Local Variables: