-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 2.2 2002/12/28 03:58:19 david__schmidt Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.35.2.7 2006/01/29 23:10:56 david__schmidt Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/src/cgisimple.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/Attic/cgisimple.c,v $
*
* Purpose : Simple CGIs to get information about Privoxy's
* status.
*
* Revisions :
* $Log: cgisimple.c,v $
- * Revision 2.2 2002/12/28 03:58:19 david__schmidt
- * Initial drop of dashboard instrumentation - enabled with
- * --enable-activity-console
+ * Revision 1.35.2.7 2006/01/29 23:10:56 david__schmidt
+ * Multiple filter file support
*
- * Revision 2.1 2002/07/04 14:35:05 oes
+ * Revision 1.35.2.6 2005/07/04 03:13:43 david__schmidt
+ * Undo some damaging memory leak patches
+ *
+ * Revision 1.35.2.5 2005/05/07 21:50:55 david__schmidt
+ * A few memory leaks plugged (mostly on error paths)
+ *
+ * Revision 1.35.2.4 2005/04/04 02:21:24 david__schmidt
+ * Another instance of:
+ * Don't show "Edit" buttons #ifndef FEATURE_CGI_EDIT_ACTIONS
+ * Thanks to Magnus Holmgren for the patch
+ *
+ * Revision 1.35.2.3 2003/12/17 16:34:15 oes
+ * - Prevent line wrap beween "View/Edit" link buttons on status page
+ * - Some (mostly irrelevant) fixes for Out-of-mem-case handling
+ *
+ * Revision 1.35.2.2 2003/04/03 13:48:28 oes
+ * Don't show "Edit" buttons #ifndef FEATURE_CGI_EDIT_ACTIONS
+ *
+ * Revision 1.35.2.1 2002/07/04 15:02:38 oes
* Added ability to send redirects to send-banner CGI, so that it can completely mimic the image blocking action if called with type=auto
*
- * Revision 2.0 2002/06/04 14:34:21 jongfoster
- * Moving source files to src/
+ * Revision 1.35.2.1 2002/07/01 17:32:04 morcego
+ * Applying patch from Andreas as provided by Hal on the list.
+ * Message-ID: <20020701121218.V1606@feenix.burgiss.net>
*
* Revision 1.35 2002/05/12 21:44:44 jongfoster
* Adding amiga.[ch] revision information, if on an amiga.
const struct map *parameters)
{
char imagetype = lookup(parameters, "type")[0];
- char *image_mimetype = BUILTIN_IMAGE_MIMETYPE;
/*
* If type is auto, then determine the right thing
{
imagetype = 'p';
}
- else if (0 == strcmpic(p, "custom"))
- {
- imagetype = 'c';
- }
/*
* If the action is to call this CGI, determine
rsp->body = bindup(image_blank_data, image_blank_length);
rsp->content_length = image_blank_length;
}
- else if (imagetype == 'c')
- {
- rsp->body = bindup(csp->config->image_blocker_data, csp->config->image_blocker_length);
- rsp->content_length = csp->config->image_blocker_length;
- image_mimetype = csp->config->image_blocker_format;
- }
else
{
rsp->body = bindup(image_pattern_data, image_pattern_length);
{
return JB_ERR_MEMORY;
}
- if (enlist(rsp->headers, "Content-Type: "))
- {
- return JB_ERR_MEMORY;
- }
- if (enlist(rsp->headers, image_mimetype))
+ if (enlist(rsp->headers, "Content-Type: " BUILTIN_IMAGE_MIMETYPE))
{
return JB_ERR_MEMORY;
}
switch (*(lookup(parameters, "file")))
{
case 'a':
- if (!get_number_param(csp, parameters, "index", &i) && i < MAX_ACTION_FILES && csp->actions_list[i])
+ if (!get_number_param(csp, parameters, "index", &i) && i < MAX_AF_FILES && csp->actions_list[i])
{
filename = csp->actions_list[i]->filename;
file_description = "Actions File";
break;
case 'f':
- if (csp->rlist)
+ if (!get_number_param(csp, parameters, "index", &i) && i < MAX_AF_FILES && csp->rlist[i])
{
- filename = csp->rlist->filename;
+ filename = csp->rlist[i]->filename;
file_description = "Filter File";
}
break;
* FIXME: Shouldn't include hardwired HTML here, use line template instead!
*/
s = strdup("");
- for (i = 0; i < MAX_ACTION_FILES; i++)
+ for (i = 0; i < MAX_AF_FILES; i++)
{
if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL))
{
if (!err) err = string_append(&s, "<tr><td>");
if (!err) err = string_join(&s, html_encode(csp->actions_list[i]->filename));
- snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=actions&index=%d\">View</a> ", i);
+ snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=actions&index=%d\">View</a>", i);
if (!err) err = string_append(&s, buf);
#ifdef FEATURE_CGI_EDIT_ACTIONS
if (NULL == strstr(csp->actions_list[i]->filename, "standard.action") && NULL != csp->config->actions_file_short[i])
{
- snprintf(buf, 100, "<a href=\"/edit-actions-list?f=%s\">Edit</a>", csp->config->actions_file_short[i]);
+ snprintf(buf, 100, " <a href=\"/edit-actions-list?f=%s\">Edit</a>", csp->config->actions_file_short[i]);
if (!err) err = string_append(&s, buf);
}
#endif
if (!err) err = map(exports, "actions-filenames", 1, "<tr><td>None specified</td></tr>", 1);
}
- if (csp->rlist)
+ /*
+ * List all re_filterfiles in use, together with view options.
+ * FIXME: Shouldn't include hardwired HTML here, use line template instead!
+ */
+ s = strdup("");
+ for (i = 0; i < MAX_AF_FILES; i++)
{
- if (!err) err = map(exports, "re-filter-filename", 1, html_encode(csp->rlist->filename), 0);
+ if (((fl = csp->rlist[i]) != NULL) && ((b = fl->f) != NULL))
+ {
+ if (!err) err = string_append(&s, "<tr><td>");
+ if (!err) err = string_join(&s, html_encode(csp->rlist[i]->filename));
+ snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=filter&index=%d\">View</a>", i);
+ if (!err) err = string_append(&s, buf);
+ if (!err) err = string_append(&s, "</td></tr>\n");
+ }
+ }
+ if (*s != '\0')
+ {
+ if (!err) err = map(exports, "re-filter-filename", 1, s, 0);
}
else
{
- if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "re-filter-filename", 1, "<tr><td>None specified</td></tr>", 1);
if (!err) err = map_block_killer(exports, "have-filterfile");
}
if (err == JB_ERR_MEMORY)
{
+ free_http_request(url_to_query);
free_current_action(action);
free_map(exports);
return JB_ERR_MEMORY;
if (!err) err = map(exports, "final", 1, lookup(exports, "default"), 1);
free_current_action(action);
+ free_http_request(url_to_query);
if (err)
{
{
free_current_action(action);
free_map(exports);
+ free_http_request(url_to_query);
return JB_ERR_MEMORY;
}
}
matches = strdup("<table class=\"transparent\">");
- for (i = 0; i < MAX_ACTION_FILES; i++)
+ 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;
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);
string_append(&matches, buf);
- string_append(&matches, "View</a> <a class=\"cmd\" href=\"/edit-actions-list?f=");
+ 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></th></tr>\n");
+ string_append(&matches, "\">Edit</a>");
+#endif
+ string_append(&matches, "</th></tr>\n");
hits = 0;
b = b->next;
SHOW_RCS(filters_rcs)
SHOW_RCS(gateway_h_rcs)
SHOW_RCS(gateway_rcs)
-#ifdef FEATURE_ACTIVITY_CONSOLE
- SHOW_RCS(ipc_h_rcs)
-#endif /* def FEATURE_ACTIVITY_CONSOLE */
SHOW_RCS(jbsockets_h_rcs)
SHOW_RCS(jbsockets_rcs)
SHOW_RCS(jcc_h_rcs)
SHOW_RCS(project_h_rcs)
SHOW_RCS(ssplit_h_rcs)
SHOW_RCS(ssplit_rcs)
-#ifdef FEATURE_ACTIVITY_CONSOLE
- SHOW_RCS(stats_h_rcs)
- SHOW_RCS(stats_rcs)
-#endif /* def FEATURE_ACTIVITY_CONSOLE */
SHOW_RCS(urlmatch_h_rcs)
SHOW_RCS(urlmatch_rcs)
#ifdef _WIN32