-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.34 2002/04/30 12:06:12 oes Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.35.2.2 2003/04/03 13:48:28 oes Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/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 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 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.
+ *
* Revision 1.34 2002/04/30 12:06:12 oes
* Deleted unused code from default_cgi
*
* type : Selects the type of banner between "trans", "logo",
* and "auto". Defaults to "logo" if absent or invalid.
* "auto" means to select as if we were image-blocking.
- * (Only the first character really counts).
+ * (Only the first character really counts; b and t are
+ * equivalent).
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory error.
{
char imagetype = lookup(parameters, "type")[0];
- if (imagetype == 'a') /* auto */
+ /*
+ * If type is auto, then determine the right thing
+ * to do from the set-image-blocker action
+ */
+ if (imagetype == 'a')
{
- /* Default to pattern */
+ /*
+ * Default to pattern
+ */
imagetype = 'p';
+
#ifdef FEATURE_IMAGE_BLOCKING
if ((csp->action->flags & ACTION_IMAGE_BLOCKER) != 0)
{
static const char prefix1[] = CGI_PREFIX "send-banner?type=";
static const char prefix2[] = "http://" CGI_SITE_1_HOST "/send-banner?type=";
+ const char *p = csp->action->string[ACTION_STRING_IMAGE_BLOCKER];
- /* determine HOW images should be blocked */
- const char * p = csp->action->string[ACTION_STRING_IMAGE_BLOCKER];
-
- /* and handle accordingly: */
if (p == NULL)
{
/* Use default - nothing to do here. */
{
imagetype = 'p';
}
+
+ /*
+ * If the action is to call this CGI, determine
+ * the argument:
+ */
else if (0 == strncmpic(p, prefix1, sizeof(prefix1) - 1))
{
imagetype = p[sizeof(prefix1) - 1];
{
imagetype = p[sizeof(prefix2) - 1];
}
+
+ /*
+ * Everything else must (should) be a URL to
+ * redirect to.
+ */
+ else
+ {
+ imagetype = 'r';
+ }
}
#endif /* def FEATURE_IMAGE_BLOCKING */
}
- if ((imagetype == 'b') || (imagetype == 't')) /* blank / transparent */
+ /*
+ * Now imagetype is either the non-auto type we were called with,
+ * or it was auto and has since been determined. In any case, we
+ * can proceed to actually answering the request by sending a redirect
+ * or an image as appropriate:
+ */
+ if (imagetype == 'r')
{
- rsp->body = bindup(image_blank_data, image_blank_length);
- rsp->content_length = image_blank_length;
-
+ rsp->status = strdup("302 Local Redirect from Privoxy");
+ if (rsp->status == NULL)
+ {
+ return JB_ERR_MEMORY;
+ }
+ if (enlist_unique_header(rsp->headers, "Location",
+ csp->action->string[ACTION_STRING_IMAGE_BLOCKER]))
+ {
+ return JB_ERR_MEMORY;
+ }
}
- else /* pattern */
+ else
{
- rsp->body = bindup(image_pattern_data, image_pattern_length);
- rsp->content_length = image_pattern_length;
- }
+ if ((imagetype == 'b') || (imagetype == 't'))
+ {
+ rsp->body = bindup(image_blank_data, image_blank_length);
+ rsp->content_length = image_blank_length;
+ }
+ else
+ {
+ rsp->body = bindup(image_pattern_data, image_pattern_length);
+ rsp->content_length = image_pattern_length;
+ }
- if (rsp->body == NULL)
- {
- return JB_ERR_MEMORY;
- }
+ if (rsp->body == NULL)
+ {
+ return JB_ERR_MEMORY;
+ }
+ if (enlist(rsp->headers, "Content-Type: " BUILTIN_IMAGE_MIMETYPE))
+ {
+ return JB_ERR_MEMORY;
+ }
- if (enlist(rsp->headers, "Content-Type: " BUILTIN_IMAGE_MIMETYPE))
- {
- return JB_ERR_MEMORY;
+ rsp->is_static = 1;
}
- rsp->is_static = 1;
-
return JB_ERR_OK;
}
{
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 = string_append(&s, "</td></tr>\n");
}
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;
}
}