Removing duplicated code. load_forwardfile() now uses create_url_spec()
[privoxy.git] / filters.c
index 42f46af..cab956f 100644 (file)
--- a/filters.c
+++ b/filters.c
@@ -1,4 +1,4 @@
-const char filters_rcs[] = "$Id: filters.c,v 1.3 2001/05/20 16:44:47 jongfoster Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.5 2001/05/25 22:34:30 jongfoster Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/filters.c,v $
@@ -38,6 +38,53 @@ const char filters_rcs[] = "$Id: filters.c,v 1.3 2001/05/20 16:44:47 jongfoster
  *
  * Revisions   :
  *    $Log: filters.c,v $
+ *    Revision 1.5  2001/05/25 22:34:30  jongfoster
+ *    Hard tabs->Spaces
+ *
+ *    Revision 1.4  2001/05/22 18:46:04  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.3  2001/05/20 16:44:47  jongfoster
  *    Removing last hardcoded JunkBusters.com URLs.
  *
@@ -673,7 +720,7 @@ char *trust_url(struct http_request *http, struct client_state *csp)
    /* if splitting the domain fails, punt */
    if (url->dbuf == NULL) goto trust_url_not_trusted;
 
-   for (tl = trust_list; (t = *tl) ; tl++)
+   for (tl = csp->config->trust_list; (t = *tl) ; tl++)
    {
       if ((t->port == 0) || (t->port == rhttp->port))
       {
@@ -697,7 +744,7 @@ char *trust_url(struct http_request *http, struct client_state *csp)
                freez(url->dbuf);
                freez(url->dvec);
 
-               if ((fp = fopen(trustfile, "a")))
+               if ((fp = fopen(csp->config->trustfile, "a")))
                {
                   h = NULL;
 
@@ -828,27 +875,27 @@ char *redirect_url(struct http_request *http, struct client_state *csp)
    char *p, *q;
 
    p = q = csp->http->path;
-       log_error(LOG_LEVEL_REDIRECTS, "checking path: %s", p);
+   log_error(LOG_LEVEL_REDIRECTS, "checking path: %s", p);
 
    /* find the last URL encoded in the request */
    while (p = strstr(p, "http://"))
-               {
-                 q = p++;
-               }
+   {
+      q = p++;
+   }
 
    /* if there was any, generate and return a HTTP redirect */
-       if (q != csp->http->path)
-       {
-         log_error(LOG_LEVEL_REDIRECTS, "redirecting to: %s", q);
+   if (q != csp->http->path)
+   {
+      log_error(LOG_LEVEL_REDIRECTS, "redirecting to: %s", q);
 
-         p = (char *)malloc(strlen(HTTP_REDIRECT_TEMPLATE) + strlen(q));
-         sprintf(p, HTTP_REDIRECT_TEMPLATE, q);
-         return(p);
+      p = (char *)malloc(strlen(HTTP_REDIRECT_TEMPLATE) + strlen(q));
+      sprintf(p, HTTP_REDIRECT_TEMPLATE, q);
+      return(p);
    }
-       else
+   else
    {
       return(NULL);
-       }
+   }
 
 }
 #endif /* def FAST_REDIRECTS */
@@ -875,7 +922,7 @@ int url_permissions(struct http_request *http, struct client_state *csp)
 
    if (((fl = csp->permissions_list) == NULL) || ((b = fl->f) == NULL))
    {
-      return(default_permissions);
+      return(csp->config->default_permissions);
    }
 
    *url = dsplit(http->host);
@@ -883,7 +930,7 @@ int url_permissions(struct http_request *http, struct client_state *csp)
    /* if splitting the domain fails, punt */
    if (url->dbuf == NULL)
    {
-      return(default_permissions);
+      return(csp->config->default_permissions);
    }
 
    for (b = b->next; NULL != b; b = b->next)
@@ -910,7 +957,7 @@ int url_permissions(struct http_request *http, struct client_state *csp)
 
    freez(url->dbuf);
    freez(url->dvec);
-   return(default_permissions);
+   return(csp->config->default_permissions);
 
 }
 
@@ -1254,12 +1301,12 @@ char *show_proxy_args(struct http_request *http, struct client_state *csp)
    }
 #endif /* def SPLIT_PROXY_ARGS */
    
-   s = strsav(s, proxy_args->header);
-   s = strsav(s, proxy_args->invocation);
+   s = strsav(s, csp->config->proxy_args->header);
+   s = strsav(s, csp->config->proxy_args->invocation);
 #ifdef STATISTICS
    s = add_stats(s);
 #endif /* def STATISTICS */
-   s = strsav(s, proxy_args->gateways);
+   s = strsav(s, csp->config->proxy_args->gateways);
 
 #ifdef SPLIT_PROXY_ARGS
    s = strsav(s, 
@@ -1372,7 +1419,7 @@ char *show_proxy_args(struct http_request *http, struct client_state *csp)
 
 #endif /* ndef SPLIT_PROXY_ARGS */
 
-   s = strsav(s, proxy_args->trailer);
+   s = strsav(s, csp->config->proxy_args->trailer);
 
    return(s);
 
@@ -1477,13 +1524,13 @@ char *ij_untrusted_url(struct http_request *http, struct client_state *csp)
 
    p = strsav(p, "<h3>The following referrers are trusted</h3>\n");
 
-   for (tl = trust_list; (t = *tl) ; tl++)
+   for (tl = csp->config->trust_list; (t = *tl) ; tl++)
    {
       sprintf(buf, "%s<br>\n", t->spec);
       p = strsav(p, buf);
    }
 
-   if (trust_info->next)
+   if (csp->config->trust_info->next)
    {
       struct list *l;
 
@@ -1497,7 +1544,7 @@ char *ij_untrusted_url(struct http_request *http, struct client_state *csp)
 
       p = strsav(p, buf);
 
-      for (l = trust_info->next; l ; l = l->next)
+      for (l = csp->config->trust_info->next; l ; l = l->next)
       {
          sprintf(buf,
             "<li> <a href=%s>%s</a><br>\n",
@@ -1546,11 +1593,11 @@ char *add_stats(char *s)
     * Need to alter the stats not to include the fetch of this
     * page.
     *
-        * Can't do following thread safely! doh!
-        *
+    * Can't do following thread safely! doh!
+    *
     * urls_read--;
     * urls_rejected--; * This will be incremented subsequently *
-        */
+    */
 
    s = strsav(s,"<h2>Statistics for this " BANNER ":</h2>\n");