-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.52 2007/02/13 15:10:26 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.57 2007/06/01 16:53:05 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
*
* Revisions :
* $Log: cgisimple.c,v $
+ * Revision 1.57 2007/06/01 16:53:05 fabiankeil
+ * Adjust cgi_show_url_info() to show what forward-override{}
+ * would do with the requested URL (instead of showing how the
+ * request for the CGI page would be forwarded if it wasn't a
+ * CGI request).
+ *
+ * Revision 1.56 2007/05/21 10:50:35 fabiankeil
+ * - Use strlcpy() instead of strcpy().
+ * - Stop treating actions files special. Expect a complete file name
+ * (with or without path) like it's done for the rest of the files.
+ * Closes FR#588084.
+ * - Don't rerun sed() in cgi_show_request().
+ *
+ * Revision 1.55 2007/04/13 13:36:46 fabiankeil
+ * Reference action files in CGI URLs by id instead
+ * of using the first part of the file name.
+ * Fixes BR 1694250 and BR 1590556.
+ *
+ * Revision 1.54 2007/04/09 18:11:35 fabiankeil
+ * Don't mistake VC++'s _snprintf() for a snprintf() replacement.
+ *
+ * Revision 1.53 2007/04/08 13:21:04 fabiankeil
+ * Reference action files in CGI URLs by id instead
+ * of using the first part of the file name.
+ * Fixes BR 1694250 and BR 1590556.
+ *
* Revision 1.52 2007/02/13 15:10:26 fabiankeil
* Apparently fopen()ing in "binary" mode doesn't require
* #ifdefs, it's already done without them in cgiedit.c.
#include <unistd.h>
#endif /* def HAVE_ACCESS */
-#ifdef _WIN32
-#define snprintf _snprintf
-#endif /* def _WIN32 */
-
#include "project.h"
#include "cgi.h"
#include "cgisimple.h"
return JB_ERR_MEMORY;
}
- if (map(exports, "processed-request", 1, html_encode_and_free_original(
- sed(client_patterns, add_client_headers, csp)), 0))
+ if (map(exports, "processed-request", 1, html_encode(list_to_text(csp->headers)), 0))
{
free_map(exports);
return JB_ERR_MEMORY;
/*
* Unknown prefix - assume http://
*/
- char * url_param_prefixed = malloc(7 + 1 + strlen(url_param));
+ const size_t url_param_prefixed_size = 7 + 1 + strlen(url_param);
+ char * url_param_prefixed = malloc(url_param_prefixed_size);
if (NULL == url_param_prefixed)
{
free(url_param);
free_map(exports);
return JB_ERR_MEMORY;
}
- strcpy(url_param_prefixed, "http://");
- strcpy(url_param_prefixed + 7, url_param);
+ strlcpy(url_param_prefixed, "http://", url_param_prefixed_size);
+ strlcat(url_param_prefixed, url_param, url_param_prefixed_size);
free(url_param);
url_param = url_param_prefixed;
}
err = map(exports, "matches", 1, "<b>[Invalid URL specified!]</b>" , 1);
if (!err) err = map(exports, "final", 1, lookup(exports, "default"), 1);
+ if (!err) err = map_block_killer(exports, "valid-url");
free_current_action(action);
free_http_request(url_to_query);
}
/*
- * We have a warning about SSL paths. Hide it for insecure sites.
+ * We have a warning about SSL paths. Hide it for unencrypted sites.
*/
if (!url_to_query->ssl)
{
for (i = 0; i < MAX_AF_FILES; i++)
{
if (NULL == csp->config->actions_file_short[i]
- || !strcmp(csp->config->actions_file_short[i], "standard")) continue;
+ || !strcmp(csp->config->actions_file_short[i], "standard.action")) continue;
b = NULL;
hits = 1;
/* FIXME: Hardcoded HTML! */
string_append(&matches, "<tr><th>In file: ");
string_join (&matches, html_encode(csp->config->actions_file_short[i]));
- snprintf(buf, 150, ".action <a class=\"cmd\" href=\"/show-status?file=actions&index=%d\">", i);
+ snprintf(buf, sizeof(buf), " <a class=\"cmd\" href=\"/show-status?file=actions&index=%d\">", i);
string_append(&matches, buf);
string_append(&matches, "View</a>");
#ifdef FEATURE_CGI_EDIT_ACTIONS
- string_append(&matches, " <a class=\"cmd\" href=\"/edit-actions-list?f=");
- string_join (&matches, html_encode(csp->config->actions_file_short[i]));
- string_append(&matches, "\">Edit</a>");
+ snprintf(buf, sizeof(buf), " <a class=\"cmd\" href=\"/edit-actions-list?f=%d\">", i);
+ string_append(&matches, buf);
+ string_append(&matches, "Edit</a>");
#endif
string_append(&matches, "</th></tr>\n");
}
string_append(&matches, "</table>\n");
+ /*
+ * XXX: Kludge to make sure the "Forward settings" section
+ * shows what forward-override{} would do with the requested URL.
+ * No one really cares how the CGI request would be forwarded
+ * if it wasn't intercepted as CGI request in the first place.
+ *
+ * From here on the action bitmask will no longer reflect
+ * the real url (http://config.privoxy.org/show-url-info?url=.*),
+ * but luckily it's no longer required later on anyway.
+ */
+ free_current_action(csp->action);
+ url_actions(url_to_query, csp);
+
/*
* Fill in forwarding settings.
*
*
* 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.
+ * display the proxy port and an eventual second forwarder.
*/
{
const struct forward_spec * fwd = forward_url(url_to_query, csp);