X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=showargs.c;h=b80b199353492d1b87ed1383bd1f70e541800541;hp=d80353819ea7c522dfefbf1bfe925351942b736d;hb=622f8b00129cfb6abeb0d90f095b5ca5dd9d6c35;hpb=f31670ca5360e64312185b670be81939f7a1c0f5 diff --git a/showargs.c b/showargs.c index d8035381..b80b1993 100644 --- a/showargs.c +++ b/showargs.c @@ -1,10 +1,11 @@ -const char showargs_rcs[] = "$Id: showargs.c,v 1.3 2001/05/20 01:21:20 jongfoster Exp $"; +const char showargs_rcs[] = "$Id: showargs.c,v 1.23 2001/08/02 22:03:23 jongfoster Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/showargs.c,v $ * * Purpose : Contains various utility routines needed to * generate the show-proxy-args page. + * FIXME: Is this really stuff for a separate file? * * Copyright : Written by and Copyright (C) 2001 the SourceForge * IJBSWA team. http://ijbswa.sourceforge.net @@ -33,6 +34,145 @@ const char showargs_rcs[] = "$Id: showargs.c,v 1.3 2001/05/20 01:21:20 jongfoste * * Revisions : * $Log: showargs.c,v $ + * Revision 1.23 2001/08/02 22:03:23 jongfoster + * Fixing an unterminated character constant. + * + * Revision 1.22 2001/08/01 00:20:57 jongfoster + * Changing show_defines so that it doesn't contain any HTML. + * + * Revision 1.21 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 + * + * Revision 1.20 2001/07/18 17:27:22 oes + * Adapted to new #defines + * + * Revision 1.19 2001/07/13 14:11:36 oes + * - Included SHOW_RCS for deanimate.* + * - Removed all #ifdef PCRS + * + * + * Revision 1.18 2001/07/02 02:55:16 iwanttokeepanon + * Apended " on some sites" to the HTML generating function `show_defines' (@ line + * 392); since "DENY_GZIP" is not *really* necessary for all PCRS functionallity. + * + * Revision 1.17 2001/06/29 21:45:41 oes + * Indentation, CRLF->LF, Tab-> Space + * + * Revision 1.16 2001/06/29 13:35:07 oes + * - Adapted + * - Improved comments + * - Removed init_proxy_args + * - Renamed end_proxy_args(csp) to show_rcs(void) + * - Removed logentry from cancelled commit + * - Destroyed support for ndef SPLIT_PROXY_ARGS (Ooops) + * - Separated the #define list into show_defines() + * + * Revision 1.15 2001/06/09 10:55:28 jongfoster + * Changing BUFSIZ ==> BUFFER_SIZE + * + * Revision 1.14 2001/06/07 23:15:40 jongfoster + * Removing config->proxy_args_gateways + * Missing return statement added to end_proxy_args(). + * + * Revision 1.13 2001/06/06 09:37:59 sarantis + * Fix misplaced comment start. + * + * Revision 1.12 2001/06/04 10:41:52 swa + * show version string of cgi.h and cgi.c + * + * Revision 1.11 2001/06/03 11:03:48 oes + * moved stuff to cgi.c + * + * Revision 1.10 2001/05/31 21:36:07 jongfoster + * Added RCS for actions.[ch] and list.[ch] + * + * Revision 1.9 2001/05/29 23:11:38 oes + * + * - Moved strsav() from showargs to miscutil + * + * Revision 1.8 2001/05/29 09:50:24 jongfoster + * Unified blocklist/imagelist/permissionslist. + * File format is still under discussion, but the internal changes + * are (mostly) done. + * + * Also modified interceptor behaviour: + * - We now intercept all URLs beginning with one of the following + * prefixes (and *only* these prefixes): + * * http://i.j.b/ + * * http://ijbswa.sf.net/config/ + * * http://ijbswa.sourceforge.net/config/ + * - New interceptors "home page" - go to http://i.j.b/ to see it. + * - Internal changes so that intercepted and fast redirect pages + * are not replaced with an image. + * - Interceptors now have the option to send a binary page direct + * to the client. (i.e. ijb-send-banner uses this) + * - Implemented show-url-info interceptor. (Which is why I needed + * the above interceptors changes - a typical URL is + * "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif". + * The previous mechanism would not have intercepted that, and + * if it had been intercepted then it then it would have replaced + * it with an image.) + * + * Revision 1.7 2001/05/26 00:28:36 jongfoster + * Automatic reloading of config file. + * Removed obsolete SIGHUP support (Unix) and Reload menu option (Win32). + * Most of the global variables have been moved to a new + * struct configuration_spec, accessed through csp->config->globalname + * Most of the globals remaining are used by the Win32 GUI. + * + * Revision 1.6 2001/05/25 22:32:56 jongfoster + * CRLF->LF + * + * Revision 1.5 2001/05/22 18:54:49 oes + * + * - Enabled filtering banners by size rather than URL + * by adding patterns that replace all standard banner + * sizes with the "Junkbuster" gif to the re_filterfile + * + * - Enabled filtering WebBugs by providing a pattern + * which kills all 1x1 images + * + * - Added support for PCRE_UNGREEDY behaviour to pcrs, + * which is selected by the (nonstandard and therefore + * capital) letter 'U' in the option string. + * It causes the quantifiers to be ungreedy by default. + * Appending a ? turns back to greedy (!). + * + * - Added a new interceptor ijb-send-banner, which + * sends back the "Junkbuster" gif. Without imagelist or + * MSIE detection support, or if tinygif = 1, or the + * URL isn't recognized as an imageurl, a lame HTML + * explanation is sent instead. + * + * - Added new feature, which permits blocking remote + * script redirects and firing back a local redirect + * to the browser. + * The feature is conditionally compiled, i.e. it + * can be disabled with --disable-fast-redirects, + * plus it must be activated by a "fast-redirects" + * line in the config file, has its own log level + * and of course wants to be displayed by show-proxy-args + * Note: Boy, all the #ifdefs in 1001 locations and + * all the fumbling with configure.in and acconfig.h + * were *way* more work than the feature itself :-( + * + * - Because a generic redirect template was needed for + * this, tinygif = 3 now uses the same. + * + * - Moved GIFs, and other static HTTP response templates + * to project.h + * + * - Some minor fixes + * + * - Removed some >400 CRs again (Jon, you really worked + * a lot! ;-) + * + * Revision 1.4 2001/05/20 16:44:47 jongfoster + * Removing last hardcoded JunkBusters.com URLs. + * * Revision 1.3 2001/05/20 01:21:20 jongfoster * Version 2.9.4 checkin. * - Merged popupfile and cookiefile, and added control over PCRS @@ -64,6 +204,7 @@ const char showargs_rcs[] = "$Id: showargs.c,v 1.3 2001/05/20 01:21:20 jongfoste #include #include +#include "project.h" #include "showargs.h" #include "jcc.h" #include "encode.h" @@ -71,69 +212,11 @@ const char showargs_rcs[] = "$Id: showargs.c,v 1.3 2001/05/20 01:21:20 jongfoste #include "errlog.h" #include "miscutil.h" #include "gateway.h" +#include "cgi.h" +#include "list.h" const char showargs_h_rcs[] = SHOWARGS_H_VERSION; -/********************************************************************* - * - * Function : strsav - * - * Description : Reallocate "old" and append text to it. This makes - * it easier to append to malloc'd strings. - * - * Parameters : - * 1 : old = Old text that is to be extended. Will be - * free()d by this routine. - * 2 : text_to_append = Text to be appended to old. - * - * Returns : Pointer to newly malloc'ed appended string. - * If there is no text to append, return old. Caller - * must free(). - * - *********************************************************************/ -char *strsav(char *old, const char *text_to_append) -{ - int old_len, new_len; - char *p; - - if (( text_to_append == NULL) || (*text_to_append == '\0')) - { - return(old); - } - - if (NULL != old) - { - old_len = strlen(old); - } - else - { - old_len = 0; - } - - new_len = old_len + strlen(text_to_append) + 1; - - if (old) - { - if ((p = realloc(old, new_len)) == NULL) - { - log_error(LOG_LEVEL_FATAL, "realloc(%d) bytes for proxy_args failed!", new_len); - /* Never get here - LOG_LEVEL_FATAL causes program exit */ - } - } - else - { - if ((p = (char *)malloc(new_len)) == NULL) - { - log_error(LOG_LEVEL_FATAL, "malloc(%d) bytes for proxy_args failed!", new_len); - /* Never get here - LOG_LEVEL_FATAL causes program exit */ - } - } - - strcpy(p + old_len, text_to_append); - return(p); - -} - /********************************************************************* * @@ -150,9 +233,9 @@ char *strsav(char *old, const char *text_to_append) * Returns : N/A * *********************************************************************/ -void savearg(char *c, char *o) +void savearg(char *c, char *o, struct configuration_spec * config) { - char buf[BUFSIZ]; + char buf[BUFFER_SIZE]; *buf = '\0'; @@ -186,120 +269,32 @@ void savearg(char *c, char *o) strcat(buf, "
\n"); - proxy_args->invocation = strsav(proxy_args->invocation, buf); + config->proxy_args = strsav(config->proxy_args, buf); } /********************************************************************* * - * Function : init_proxy_args + * Function : show_rcs * - * Description : Create the "top" of the show-proxy-args page. - * - * Parameters : - * 1 : argc = argument count (same as in main) - * 2 : argv[] = program arguments (same as in main) - * - * Returns : N/A - * - *********************************************************************/ -void init_proxy_args(int argc, const char *argv[]) -{ - const struct gateway *g; - int i; - - freez(proxy_args->header); - freez(proxy_args->invocation); - freez(proxy_args->gateways); - freez(proxy_args->trailer); - - - proxy_args->header = strsav(proxy_args->header, - "HTTP/1.0 200 OK\n" - "Server: IJ/" VERSION "\n" - "Content-type: text/html\n\n" - - "" - "" - "Internet Junkbuster Proxy Status" - "\n" - "\n" - "
\n" - "

" BANNER "\n" - "Proxy Status\n" - "

\n" - "

You are using the " BANNER " TM

\n" - "Version: " VERSION "\n" - "
Home page: " HOME_PAGE_URL "\n" - "

\n" - ); - - proxy_args->header = strsav(proxy_args->header, - "

The program was invoked as follows

\n"); - - for (i=0; i < argc; i++) - { - proxy_args->header = strsav(proxy_args->header, argv[i]); - proxy_args->header = strsav(proxy_args->header, " "); - } - proxy_args->header = strsav(proxy_args->header, "
\n"); - - - proxy_args->invocation = strsav( - proxy_args->invocation, - "
\n" - "and the following options were set in the configuration file" - "

\n" - ); - - - proxy_args->gateways = strsav(proxy_args->gateways, - "

It supports the following gateway protocols:

\n"); - - for (g = gateways; g->name; g++) - { - proxy_args->gateways = strsav(proxy_args->gateways, g->name); - proxy_args->gateways = strsav(proxy_args->gateways, " "); - } - proxy_args->gateways = strsav(proxy_args->gateways, "
\n"); - -} - - -/********************************************************************* - * - * Function : end_proxy_args - * - * Description : Create the "bottom" of the show-proxy-args page. + * Description : Create a string with the rcs info for all sourcefiles * * Parameters : None * - * Returns : N/A + * Returns : string * *********************************************************************/ -void end_proxy_args(void) +char *show_rcs(void) { char *b = NULL; - char buf[BUFSIZ]; + char buf[BUFFER_SIZE]; /* Instead of including *all* dot h's in the project (thus creating a * tremendous amount of dependencies), I will concede to declaring them * as extern's. This forces the developer to add to this list, but oh well. */ -#ifndef SPLIT_PROXY_ARGS - if (suppress_blocklists && suppress_message!=NULL) - { - b = strsav(b, "

File contents

\n"); - b = strsav(b, suppress_message); - b = strsav(b, "\n"); - } -#endif /* ndef SPLIT_PROXY_ARGS */ - - b = strsav(b, "

Source versions:

\n"); - b = strsav(b, "
");
-
 #define SHOW_RCS(__x)            \
    {                             \
       extern const char __x[];   \
@@ -308,9 +303,15 @@ void end_proxy_args(void)
    }
 
    /* In alphabetical order */
+   SHOW_RCS(actions_h_rcs)
+   SHOW_RCS(actions_rcs)
+   SHOW_RCS(cgi_h_rcs)
+   SHOW_RCS(cgi_rcs)
 #ifdef __MINGW32__
    SHOW_RCS(cygwin_h_rcs)
 #endif
+   SHOW_RCS(deanimate_h_rcs)
+   SHOW_RCS(deanimate_rcs)
    SHOW_RCS(encode_h_rcs)
    SHOW_RCS(encode_rcs)
    SHOW_RCS(errlog_h_rcs)
@@ -327,10 +328,12 @@ void end_proxy_args(void)
    SHOW_RCS(jbsockets_rcs)
    SHOW_RCS(jcc_h_rcs)
    SHOW_RCS(jcc_rcs)
-#ifdef KILLPOPUPS
+#ifdef FEATURE_KILL_POPUPS
    SHOW_RCS(killpopup_h_rcs)
    SHOW_RCS(killpopup_rcs)
-#endif /* def KILLPOPUPS */
+#endif /* def FEATURE_KILL_POPUPS */
+   SHOW_RCS(list_h_rcs)
+   SHOW_RCS(list_rcs)
    SHOW_RCS(loadcfg_h_rcs)
    SHOW_RCS(loadcfg_rcs)
    SHOW_RCS(loaders_h_rcs)
@@ -339,141 +342,142 @@ void end_proxy_args(void)
    SHOW_RCS(miscutil_rcs)
    SHOW_RCS(parsers_h_rcs)
    SHOW_RCS(parsers_rcs)
-#ifdef PCRS
    SHOW_RCS(pcrs_rcs)
    SHOW_RCS(pcrs_h_rcs)
-#endif /* def PCRS */
    SHOW_RCS(project_h_rcs)
    SHOW_RCS(showargs_h_rcs)
    SHOW_RCS(showargs_rcs)
    SHOW_RCS(ssplit_h_rcs)
    SHOW_RCS(ssplit_rcs)
-#ifdef _WIN32
-#ifndef _WIN_CONSOLE
+#ifdef _WIN32
+#ifndef _WIN_CONSOLE
    SHOW_RCS(w32log_h_rcs)
    SHOW_RCS(w32log_rcs)
    SHOW_RCS(w32res_h_rcs)
-   SHOW_RCS(w32rulesdlg_h_rcs)
-   SHOW_RCS(w32rulesdlg_rcs)
    SHOW_RCS(w32taskbar_h_rcs)
    SHOW_RCS(w32taskbar_rcs)
-#endif /* ndef _WIN_CONSOLE */
+#endif /* ndef _WIN_CONSOLE */
    SHOW_RCS(win32_h_rcs)
    SHOW_RCS(win32_rcs)
 #endif /* def _WIN32 */
 
 #undef SHOW_RCS
 
-   b = strsav(b, "
\n"); - - b = strsav(b, "

Conditional defines:

\n\n
\n"); - - b = strsav(b, - "

\n" - "The " BANNER " Proxy - \n" - "" HOME_PAGE_URL "

\n" - "Copyright © 2001 the SourceForge IJBSWA team
\n" - "Copyright © 1997 \n" "Junkbusters Corporation
\n" - "Copying and distribution permitted under the " - "GNU General Public License.\n" - "
" - "\n" - ); - - proxy_args->trailer = b; + return(b); +} + +/********************************************************************* + * + * Function : show_defines + * + * Description : Create a string with all conditional #defines used + * when building + * + * Parameters : None + * + * Returns : string + * + *********************************************************************/ +void show_defines(struct map *exports) +{ +#ifdef FEATURE_ACL + map_conditional(exports, "FEATURE_ACL", 1); +#else /* ifndef FEATURE_ACL */ + map_conditional(exports, "FEATURE_ACL", 0); +#endif /* ndef FEATURE_ACL */ + +#ifdef FEATURE_COOKIE_JAR + map_conditional(exports, "FEATURE_COOKIE_JAR", 1); +#else /* ifndef FEATURE_COOKIE_JAR */ + map_conditional(exports, "FEATURE_COOKIE_JAR", 0); +#endif /* ndef FEATURE_COOKIE_JAR */ + +#ifdef FEATURE_DENY_GZIP + map_conditional(exports, "FEATURE_DENY_GZIP", 1); +#else /* ifndef FEATURE_DENY_GZIP */ + map_conditional(exports, "FEATURE_DENY_GZIP", 0); +#endif /* ndef FEATURE_DENY_GZIP */ + +#ifdef FEATURE_FAST_REDIRECTS + map_conditional(exports, "FEATURE_FAST_REDIRECTS", 1); +#else /* ifndef FEATURE_FAST_REDIRECTS */ + map_conditional(exports, "FEATURE_FAST_REDIRECTS", 0); +#endif /* ndef FEATURE_FAST_REDIRECTS */ + +#ifdef FEATURE_FORCE_LOAD + map_conditional(exports, "FEATURE_FORCE_LOAD", 1); +#else /* ifndef FEATURE_FORCE_LOAD */ + map_conditional(exports, "FEATURE_FORCE_LOAD", 0); +#endif /* ndef FEATURE_FORCE_LOAD */ + +#ifdef FEATURE_IMAGE_BLOCKING + map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 1); +#else /* ifndef FEATURE_IMAGE_BLOCKING */ + map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 0); +#endif /* ndef FEATURE_IMAGE_BLOCKING */ + +#ifdef FEATURE_IMAGE_DETECT_MSIE + map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 1); +#else /* ifndef FEATURE_IMAGE_DETECT_MSIE */ + map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 0); +#endif /* ndef FEATURE_IMAGE_DETECT_MSIE */ + +#ifdef FEATURE_KILL_POPUPS + map_conditional(exports, "FEATURE_KILL_POPUPS", 1); +#else /* ifndef FEATURE_KILL_POPUPS */ + map_conditional(exports, "FEATURE_KILL_POPUPS", 0); +#endif /* ndef FEATURE_KILL_POPUPS */ + +#ifdef FEATURE_PTHREAD + map_conditional(exports, "FEATURE_PTHREAD", 1); +#else /* ifndef FEATURE_PTHREAD */ + map_conditional(exports, "FEATURE_PTHREAD", 0); +#endif /* ndef FEATURE_PTHREAD */ + +#ifdef FEATURE_STATISTICS + map_conditional(exports, "FEATURE_STATISTICS", 1); +#else /* ifndef FEATURE_STATISTICS */ + map_conditional(exports, "FEATURE_STATISTICS", 0); +#endif /* ndef FEATURE_STATISTICS */ + +#ifdef FEATURE_TOGGLE + map_conditional(exports, "FEATURE_TOGGLE", 1); +#else /* ifndef FEATURE_TOGGLE */ + map_conditional(exports, "FEATURE_TOGGLE", 0); +#endif /* ndef FEATURE_TOGGLE */ + +#ifdef FEATURE_TRUST + map_conditional(exports, "FEATURE_TRUST", 1); +#else /* ifndef FEATURE_TRUST */ + map_conditional(exports, "FEATURE_TRUST", 0); +#endif /* ndef FEATURE_TRUST */ + +#ifdef REGEX_GNU + map_conditional(exports, "REGEX_GNU", 1); +#else /* ifndef REGEX_GNU */ + map_conditional(exports, "REGEX_GNU", 0); +#endif /* def REGEX_GNU */ + +#ifdef REGEX_PCRE + map_conditional(exports, "REGEX_PCRE", 1); +#else /* ifndef REGEX_PCRE */ + map_conditional(exports, "REGEX_PCRE", 0); +#endif /* def REGEX_PCRE */ + +#ifdef STATIC_PCRE + map_conditional(exports, "STATIC_PCRE", 1); +#else /* ifndef STATIC_PCRE */ + map_conditional(exports, "STATIC_PCRE", 0); +#endif /* ndef STATIC_PCRE */ + +#ifdef STATIC_PCRS + map_conditional(exports, "STATIC_PCRS", 1); +#else /* ifndef STATIC_PCRS */ + map_conditional(exports, "STATIC_PCRS", 0); +#endif /* ndef STATIC_PCRS */ + + map(exports, "FORCE_PREFIX", 1, FORCE_PREFIX, 1); }