X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=cgisimple.c;h=21a9872a542db94fbfa2d887d856adc4c4ff69fa;hp=60feef9b6ece361e5dae3508e4ead1cd6bf2f4f0;hb=9e7f4fd31d803a5d913205fa37e8de941c0f75ea;hpb=ac2d3945628af3f3a2a1af774c0c7978c1303289
diff --git a/cgisimple.c b/cgisimple.c
index 60feef9b..21a9872a 100644
--- a/cgisimple.c
+++ b/cgisimple.c
@@ -1,4 +1,4 @@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.27 2002/04/05 15:50:48 oes Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.29 2002/04/10 13:38:35 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
@@ -36,6 +36,13 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.27 2002/04/05 15:50:48 oes Ex
*
* Revisions :
* $Log: cgisimple.c,v $
+ * Revision 1.29 2002/04/10 13:38:35 oes
+ * load_template signature changed
+ *
+ * Revision 1.28 2002/04/07 15:42:12 jongfoster
+ * Fixing send-banner?type=auto when the image-blocker is
+ * a redirect to send-banner
+ *
* Revision 1.27 2002/04/05 15:50:48 oes
* added send-stylesheet CGI
*
@@ -556,7 +563,7 @@ jb_err cgi_send_stylesheet(struct client_state *csp,
assert(csp);
assert(rsp);
- err = template_load(csp, &rsp->body, "cgi-style.css");
+ err = template_load(csp, &rsp->body, "cgi-style.css", 0);
if (err == JB_ERR_FILE)
{
@@ -652,7 +659,7 @@ jb_err cgi_show_status(struct client_state *csp,
const struct map *parameters)
{
char *s = NULL;
- int i;
+ unsigned i;
FILE * fp;
char buf[BUFFER_SIZE];
@@ -663,6 +670,8 @@ jb_err cgi_show_status(struct client_state *csp,
int local_urls_read;
int local_urls_rejected;
#endif /* ndef FEATURE_STATISTICS */
+ struct file_list * fl;
+ struct url_actions * b;
jb_err err;
struct map *exports;
@@ -678,19 +687,19 @@ jb_err cgi_show_status(struct client_state *csp,
switch (*(lookup(parameters, "file")))
{
- case 'p':
- if (csp->actions_list)
+ case 'a':
+ if (!get_number_param(csp, parameters, "index", &i) && i < MAX_ACTION_FILES && csp->actions_list[i])
{
- filename = csp->actions_list->filename;
- file_description = "Actions List";
+ filename = csp->actions_list[i]->filename;
+ file_description = "Actions File";
}
break;
- case 'r':
+ case 'f':
if (csp->rlist)
{
filename = csp->rlist->filename;
- file_description = "Regex Filter List";
+ file_description = "Filter File";
}
break;
@@ -699,7 +708,7 @@ jb_err cgi_show_status(struct client_state *csp,
if (csp->tlist)
{
filename = csp->tlist->filename;
- file_description = "Trust List";
+ file_description = "Trust File";
}
break;
#endif /* def FEATURE_TRUST */
@@ -800,14 +809,39 @@ jb_err cgi_show_status(struct client_state *csp,
#else /* ndef FEATURE_STATISTICS */
err = err || map_block_killer(exports, "statistics");
#endif /* ndef FEATURE_STATISTICS */
+
+ /*
+ * List all action files in use, together with view and edit links,
+ * except for standard.action, which should only be viewable. (Not
+ * enforced in the editor itself)
+ * FIXME: Shouldn't include hardwired HTML here, use line template instead!
+ */
+ s = strdup("");
+ for (i = 0; i < MAX_ACTION_FILES; i++)
+ {
+ if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL))
+ {
+ if (!err) err = string_append(&s, "
");
+ if (!err) err = string_join(&s, html_encode(csp->actions_list[i]->filename));
+ snprintf(buf, 100, " | View ", i);
+ if (!err) err = string_append(&s, buf);
+
+ if (NULL == strstr(csp->actions_list[i]->filename, "standard.action") && NULL != csp->config->actions_file_short[i])
+ {
+ snprintf(buf, 100, "Edit", csp->config->actions_file_short[i]);
+ if (!err) err = string_append(&s, buf);
+ }
- if (csp->actions_list)
+ if (!err) err = string_append(&s, " |
\n");
+ }
+ }
+ if (*s != '\0')
{
- if (!err) err = map(exports, "actions-filename", 1, html_encode(csp->actions_list->filename), 0);
+ if (!err) err = map(exports, "actions-filenames", 1, s, 0);
}
else
{
- if (!err) err = map(exports, "actions-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "actions-filenames", 1, "None specified |
", 1);
}
if (csp->rlist)
@@ -817,6 +851,7 @@ jb_err cgi_show_status(struct client_state *csp,
else
{
if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1);
+ if (!err) err = map_block_killer(exports, "have-filterfile");
}
#ifdef FEATURE_TRUST
@@ -827,6 +862,7 @@ jb_err cgi_show_status(struct client_state *csp,
else
{
if (!err) err = map(exports, "trust-filename", 1, "None specified", 1);
+ if (!err) err = map_block_killer(exports, "have-trustfile");
}
#else
if (!err) err = map_block_killer(exports, "trust-support");
@@ -965,6 +1001,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
struct url_actions *b;
struct http_request url_to_query[1];
struct current_action_spec action[1];
+ int i;
if (map(exports, "url", 1, html_encode(url_param), 0))
{
@@ -984,22 +1021,6 @@ jb_err cgi_show_url_info(struct client_state *csp,
return JB_ERR_MEMORY;
}
- if (((fl = csp->actions_list) == NULL) || ((b = fl->f) == NULL))
- {
- err = map(exports, "matches", 1, "none" , 1);
- if (!err) err = map(exports, "final", 1, lookup(exports, "default"), 1);
-
- free_current_action(action);
- free(url_param);
-
- if (err)
- {
- free_map(exports);
- return JB_ERR_MEMORY;
- }
-
- return template_fill_for_cgi(csp, "show-url-info", exports, rsp);
- }
err = parse_http_url(url_param, url_to_query, csp);
@@ -1044,26 +1065,51 @@ jb_err cgi_show_url_info(struct client_state *csp,
matches = strdup("");
- for (b = b->next; (b != NULL) && (matches != NULL); b = b->next)
+ for (i = 0; i < MAX_ACTION_FILES; i++)
{
- if (url_match(b->url, url_to_query))
+ b = NULL;
+ hits = 1;
+ if ((fl = csp->actions_list[i]) != NULL)
+ {
+ if ((b = fl->f) != NULL)
+ {
+ string_append(&matches, "--- config->actions_file_short[i]));
+ string_append(&matches, "\">File ");
+ string_join (&matches, html_encode(csp->config->actions_file_short[i]));
+ string_append(&matches, " ---
\n
\n");
+
+ hits = 0;
+ b = b->next;
+ }
+ }
+
+ for (; (b != NULL) && (matches != NULL); b = b->next)
{
- string_append(&matches, "{");
- string_join (&matches, html_encode_and_free_original(
- actions_to_text(b->action)));
- string_append(&matches, " }
\n");
- string_join (&matches, html_encode(b->url->spec));
- string_append(&matches, "
\n
\n");
-
- if (merge_current_action(action, b->action))
+ if (url_match(b->url, url_to_query))
{
- freez(matches);
- free_http_request(url_to_query);
- free_current_action(action);
- free_map(exports);
- return JB_ERR_MEMORY;
+ string_append(&matches, "{");
+ string_join (&matches, html_encode_and_free_original(
+ actions_to_text(b->action)));
+ string_append(&matches, " }
\n");
+ string_join (&matches, html_encode(b->url->spec));
+ string_append(&matches, "
\n
\n");
+
+ if (merge_current_action(action, b->action))
+ {
+ freez(matches);
+ free_http_request(url_to_query);
+ free_current_action(action);
+ free_map(exports);
+ return JB_ERR_MEMORY;
+ }
+ hits++;
}
- hits++;
+ }
+
+ if (!hits)
+ {
+ string_append(&matches, "(no matches in this file)\n
\n");
}
}
@@ -1076,11 +1122,6 @@ jb_err cgi_show_url_info(struct client_state *csp,
return JB_ERR_MEMORY;
}
- if (!hits)
- {
- free(matches);
- matches = strdup("none");
- }
if (map(exports, "matches", 1, matches , 0))
{
free_current_action(action);