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);