projects
/
privoxy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b1fbf0f
)
Added ability to send redirects to send-banner CGI, so that it can completely mimic...
author
oes
<oes@users.sourceforge.net>
Thu, 4 Jul 2002 14:35:05 +0000
(14:35 +0000)
committer
oes
<oes@users.sourceforge.net>
Thu, 4 Jul 2002 14:35:05 +0000
(14:35 +0000)
src/cgisimple.c
patch
|
blob
|
history
diff --git
a/src/cgisimple.c
b/src/cgisimple.c
index
cebe576
..
c1b50a8
100644
(file)
--- a/
src/cgisimple.c
+++ b/
src/cgisimple.c
@@
-1,7
+1,7
@@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v
1.35 2002/05/12 21:44:44
jongfoster Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v
2.0 2002/06/04 14:34:21
jongfoster Exp $";
/*********************************************************************
*
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/
src/
cgisimple.c,v $
*
* Purpose : Simple CGIs to get information about Privoxy's
* status.
*
* Purpose : Simple CGIs to get information about Privoxy's
* status.
@@
-36,6
+36,9
@@
const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.35 2002/05/12 21:44:44 jongfo
*
* Revisions :
* $Log: cgisimple.c,v $
*
* Revisions :
* $Log: cgisimple.c,v $
+ * Revision 2.0 2002/06/04 14:34:21 jongfoster
+ * Moving source files to src/
+ *
* Revision 1.35 2002/05/12 21:44:44 jongfoster
* Adding amiga.[ch] revision information, if on an amiga.
*
* Revision 1.35 2002/05/12 21:44:44 jongfoster
* Adding amiga.[ch] revision information, if on an amiga.
*
@@
-420,7
+423,8
@@
jb_err cgi_show_request(struct client_state *csp,
* 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.
* 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.
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory error.
@@
-432,20
+436,24
@@
jb_err cgi_send_banner(struct client_state *csp,
{
char imagetype = lookup(parameters, "type")[0];
{
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';
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=";
#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. */
if (p == NULL)
{
/* Use default - nothing to do here. */
@@
-458,6
+466,11
@@
jb_err cgi_send_banner(struct client_state *csp,
{
imagetype = 'p';
}
{
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];
else if (0 == strncmpic(p, prefix1, sizeof(prefix1) - 1))
{
imagetype = p[sizeof(prefix1) - 1];
@@
-466,34
+479,63
@@
jb_err cgi_send_banner(struct client_state *csp,
{
imagetype = p[sizeof(prefix2) - 1];
}
{
imagetype = p[sizeof(prefix2) - 1];
}
+
+ /*
+ * Everything else must (should) be a URL to
+ * redirect to.
+ */
+ else
+ {
+ imagetype = 'r';
+ }
}
#endif /* def FEATURE_IMAGE_BLOCKING */
}
}
#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;
}
return JB_ERR_OK;
}