- Show forwarding settings on the show-url-info page
authorFabian Keil <fk@fabiankeil.de>
Sat, 10 Feb 2007 16:55:22 +0000 (16:55 +0000)
committerFabian Keil <fk@fabiankeil.de>
Sat, 10 Feb 2007 16:55:22 +0000 (16:55 +0000)
- Fix some HTML syntax errors.

cgisimple.c
templates/show-url-info

index 22f5dd8..64fd90d 100644 (file)
@@ -1,4 +1,4 @@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.49 2007/01/20 16:29:38 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.50 2007/01/23 15:51:17 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
@@ -36,6 +36,9 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.49 2007/01/20 16:29:38 fabian
  *
  * Revisions   :
  *    $Log: cgisimple.c,v $
+ *    Revision 1.50  2007/01/23 15:51:17  fabiankeil
+ *    Add favicon delivery functions.
+ *
  *    Revision 1.49  2007/01/20 16:29:38  fabiankeil
  *    Suppress edit buttons for action files if Privoxy has
  *    no write access. Suggested by Roland in PR 1564026.
@@ -1487,7 +1490,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
          }
       }
 
-      matches = strdup("<table class=\"transparent\">");
+      matches = strdup("<table summary=\"\" class=\"transparent\">");
 
       for (i = 0; i < MAX_AF_FILES; i++)
       {
@@ -1524,7 +1527,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
             {
                string_append(&matches, "<tr><td>{");
                string_join  (&matches, actions_to_html(csp, b->action));
-               string_append(&matches, " }</b><br>\n<code>");
+               string_append(&matches, " }<br>\n<code>");
                string_join  (&matches, html_encode(b->url->spec));
                string_append(&matches, "</code></td></tr>\n");
 
@@ -1547,9 +1550,62 @@ jb_err cgi_show_url_info(struct client_state *csp,
       }
       string_append(&matches, "</table>\n");
 
+      /*
+       * Fill in forwarding settings.
+       *
+       * The possibilities are:
+       *  - no forwarding
+       *  - http forwarding only
+       *  - socks4(a) forwarding only
+       *  - socks4(a) and http forwarding.
+       *
+       * XXX: Parts of this code could be reused for the
+       * "forwarding-failed" template which currently doesn't
+       * display the proxy port and an eventuell second forwarder.
+       */
+      {
+         const struct forward_spec * fwd = forward_url(url_to_query, csp);
+
+         if ((fwd->gateway_host == NULL) && (fwd->forward_host == NULL))
+         {
+            if (!err) err = map_block_killer(exports, "socks-forwarder");
+            if (!err) err = map_block_killer(exports, "http-forwarder");
+         }
+         else
+         {
+            char port[10]; /* We save proxy ports as int but need a string here */
+
+            if (!err) err = map_block_killer(exports, "no-forwarder");
+
+            if (fwd->gateway_host != NULL)
+            {
+               if (!err) err = map(exports, "socks-type", 1, (fwd->type == SOCKS_4) ?
+                                  "socks4" : "socks4a", 1);
+               if (!err) err = map(exports, "gateway-host", 1, fwd->gateway_host, 1);
+               snprintf(port, sizeof(port), "%d", fwd->gateway_port);
+               if (!err) err = map(exports, "gateway-port", 1, port, 1);
+            }
+            else
+            {
+               if (!err) err = map_block_killer(exports, "socks-forwarder");
+            }
+
+            if (fwd->forward_host != NULL)
+            {
+               if (!err) err = map(exports, "forward-host", 1, fwd->forward_host, 1);
+               snprintf(port, sizeof(port), "%d", fwd->forward_port);
+               if (!err) err = map(exports, "forward-port", 1, port, 1);
+            }
+            else
+            {
+               if (!err) err = map_block_killer(exports, "http-forwarder");
+            }
+         }
+      }
+
       free_http_request(url_to_query);
 
-      if (matches == NULL)
+      if (err || matches == NULL)
       {
          free_current_action(action);
          free_map(exports);
index 1b4a69b..3fc9f6f 100644 (file)
@@ -1,8 +1,34 @@
-##########################################################
+########################################################################
 #
-# Show-Url-Info-CGI Output template for Privoxy.
+# File        :  $Source:$
 #
+# Purpose     :  Template for Privoxy's show-url-info CGI page.
 #
+# Copyright   :  Written by and Copyright (C) 2001-2007 the SourceForge
+#                Privoxy team. http://www.privoxy.org/
+#
+#                This program is free software; you can redistribute it 
+#                and/or modify it under the terms of the GNU General
+#                Public License as published by the Free Software
+#                Foundation; either version 2 of the License, or (at
+#                your option) any later version.
+#
+#                This program is distributed in the hope that it will
+#                be useful, but WITHOUT ANY WARRANTY; without even the
+#                implied warranty of MERCHANTABILITY or FITNESS FOR A
+#                PARTICULAR PURPOSE.  See the GNU General Public
+#                License for more details.
+#
+#                The GNU General Public License should be included with
+#                this file.  If not, you can view it at
+#                http://www.gnu.org/copyleft/gpl.html
+#                or write to the Free Software Foundation, Inc., 59
+#                Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# Revisions   :
+#    $Log: show-url-info,v $
+#
+#########################################################################
 # USING HTML TEMPLATES:
 # ---------------------
 #
 # --------------------------------
 #
 #  my-ip-addr:
-#    The IP-address that the client used to reach this proxy
+#    The IP-address that the client used to reach Privoxy
 #  my-hostname:
 #    The hostname associated with my-ip-addr
 #  admin-address:
-#    The email address of the pxoxy's administrator, as configured
+#    The email address of the Privoxy administrator, as configured
 #    in the config file
 #  default-cgi:
-#    The URL for the "main menu" builtin CGI of this proxy
+#    The URL for Privoxy's "main menu" builtin CGI page
 #  menu:
 #    List of <li> elements linking to the other available CGIs
 #  version:
-#    The version number of the proxy software
+#    Privoxy's version number
 #  code-status:
-#    The development status of the proxy software: "alpha", "beta",
-#    or "stable".
+#    Privoxy's development status: "alpha", "beta", or "stable".
 #  homepage:
-#    The URL of the SourceForge ijbswa project, who maintains this
-#    software.
+#    The Privoxy web site.
 #
 # CONDITIONAL SYMBOLS FOR THIS TEMPLATE AND THEIR DEPANDANT SYMBOLS:
 # ------------------------------------------------------------------
 #    final:
 #      The actions that are associated with the URL at the end of
 #      the matching process
+#  no-forwarder: Requests to url will be made directly.
+#  http-forwarder:
+#      Requests to url will be made through a HTTP proxy
+#      forward-host:
+#         The IP address or its hostname
+#      forward-port.
+#         The proxy port
+#  socks-forwarder:
+#      Requests to url will be made through a socks proxy
+#      socks-type:
+#         The socks type: socks4 or socks4a
+#      gateway-host:
+#         The IP address or its hostname
+#      gateway-port:
+#         The proxy port.
 #
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <!-- if-unstable-end@ -->
 
 <!-- @if-url-given-start -->
+    <tr>
+      <td class="box">
+        <h2>Forwarding settings:</h2>
+        <p>
+          Requests for <a href="@url@">@url@</a> will be <!--
+
+# "Interesting" formatting to prevent white space at the end of the sentence..
+
+          @if-no-forwarder-start -->
+
+             made <b>directly</b>, no forwarding settings apply<!--
+
+          if-no-forwarder-end@--><!--
+          @if-http-forwarder-start --><!-- @if-socks-forwarder-start -->
+
+             first <!--
+
+          if-socks-forwarder-end@ --><!-- if-http-forwarder-end@ --><!--
+          @if-socks-forwarder-start -->
+
+             forwarded through <b>@socks-type@-proxy @gateway-host@:@gateway-port@</b><!--
+
+          if-socks-forwarder-end@ --><!--
+          @if-http-forwarder-start --><!-- @if-socks-forwarder-start -->
+
+             and then <!--
+
+          if-socks-forwarder-end@ --><!-- if-http-forwarder-end@ --><!--
+          @if-http-forwarder-start -->
+
+             forwarded through <b>HTTP-proxy @forward-host@:@forward-port@</b><!--
+
+          if-http-forwarder-end@ -->.
+      </td>
+    </tr>
     <tr>
       <td class="box">
 <!-- @if-https-start -->
         <p>&nbsp;</p>
 <!-- if-https-end@ -->
         <h2>Matches for <a href="@url@">@url@</a>:</h2>
-        <p>@matches@</p>
+        @matches@
       </td>
     </tr>