-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.6 2001/10/14 22:00:32 jongfoster Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.7 2001/10/23 21:48:19 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
*
* Revisions :
* $Log: cgisimple.c,v $
+ * Revision 1.7 2001/10/23 21:48:19 jongfoster
+ * Cleaning up error handling in CGI functions - they now send back
+ * a HTML error page and should never cause a FATAL error. (Fixes one
+ * potential source of "denial of service" attacks).
+ *
+ * CGI actions file editor that works and is actually useful.
+ *
+ * Ability to toggle JunkBuster remotely using a CGI call.
+ *
+ * You can turn off both the above features in the main configuration
+ * file, e.g. if you are running a multi-user proxy.
+ *
* Revision 1.6 2001/10/14 22:00:32 jongfoster
* Adding support for a 404 error when an invalid CGI page is requested.
*
}
err = map(exports, "options", 1, csp->config->proxy_args, 1);
- err = err || show_defines(exports);
+ if (!err) err = show_defines(exports);
#ifdef FEATURE_STATISTICS
local_urls_read = urls_read;
if (local_urls_read == 0)
{
- err = err || map_block_killer(exports, "have-stats");
+ if (!err) err = map_block_killer(exports, "have-stats");
}
else
{
- err = err || map_block_killer(exports, "have-no-stats");
+ if (!err) err = map_block_killer(exports, "have-no-stats");
perc_rej = (float)local_urls_rejected * 100.0F /
(float)local_urls_read;
sprintf(buf, "%d", local_urls_read);
- err = err || map(exports, "requests-received", 1, buf, 1);
+ if (!err) err = map(exports, "requests-received", 1, buf, 1);
sprintf(buf, "%d", local_urls_rejected);
- err = err || map(exports, "requests-blocked", 1, buf, 1);
+ if (!err) err = map(exports, "requests-blocked", 1, buf, 1);
sprintf(buf, "%6.2f", perc_rej);
- err = err || map(exports, "percent-blocked", 1, buf, 1);
+ if (!err) err = map(exports, "percent-blocked", 1, buf, 1);
}
#else /* ndef FEATURE_STATISTICS */
if (csp->actions_list)
{
- err = err || map(exports, "actions-filename", 1, csp->actions_list->filename, 1);
+ if (!err) err = map(exports, "actions-filename", 1, csp->actions_list->filename, 1);
}
else
{
- err = err || map(exports, "actions-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "actions-filename", 1, "None specified", 1);
}
if (csp->rlist)
{
- err = err || map(exports, "re-filter-filename", 1, csp->rlist->filename, 1);
+ if (!err) err = map(exports, "re-filter-filename", 1, csp->rlist->filename, 1);
}
else
{
- err = err || map(exports, "re-filter-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1);
}
#ifdef FEATURE_TRUST
if (csp->tlist)
{
- err = err || map(exports, "trust-filename", 1, csp->tlist->filename, 1);
+ if (!err) err = map(exports, "trust-filename", 1, csp->tlist->filename, 1);
}
else
{
- err = err || map(exports, "trust-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "trust-filename", 1, "None specified", 1);
}
#else
- err = err || map_block_killer(exports, "trust-support");
+ if (!err) err = map_block_killer(exports, "trust-support");
#endif /* ndef FEATURE_TRUST */
if (err)
rsp->is_static = 1;
get_http_time(7 * 24 * 60 * 60, buf); /* 7 days into future */
- err = err || enlist_unique_header(rsp->headers, "Expires", buf);
+ if (!err) err = enlist_unique_header(rsp->headers, "Expires", buf);
return (err ? JB_ERR_MEMORY : JB_ERR_OK);
}
jb_err err = JB_ERR_OK;
#ifdef FEATURE_ACL
- err = err || map_conditional(exports, "FEATURE_ACL", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_ACL", 1);
#else /* ifndef FEATURE_ACL */
- err = err || map_conditional(exports, "FEATURE_ACL", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_ACL", 0);
#endif /* ndef FEATURE_ACL */
#ifdef FEATURE_COOKIE_JAR
- err = err || map_conditional(exports, "FEATURE_COOKIE_JAR", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_COOKIE_JAR", 1);
#else /* ifndef FEATURE_COOKIE_JAR */
- err = err || map_conditional(exports, "FEATURE_COOKIE_JAR", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_COOKIE_JAR", 0);
#endif /* ndef FEATURE_COOKIE_JAR */
#ifdef FEATURE_FAST_REDIRECTS
- err = err || map_conditional(exports, "FEATURE_FAST_REDIRECTS", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_FAST_REDIRECTS", 1);
#else /* ifndef FEATURE_FAST_REDIRECTS */
- err = err || map_conditional(exports, "FEATURE_FAST_REDIRECTS", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_FAST_REDIRECTS", 0);
#endif /* ndef FEATURE_FAST_REDIRECTS */
#ifdef FEATURE_FORCE_LOAD
- err = err || map_conditional(exports, "FEATURE_FORCE_LOAD", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_FORCE_LOAD", 1);
#else /* ifndef FEATURE_FORCE_LOAD */
- err = err || map_conditional(exports, "FEATURE_FORCE_LOAD", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_FORCE_LOAD", 0);
#endif /* ndef FEATURE_FORCE_LOAD */
#ifdef FEATURE_IMAGE_BLOCKING
- err = err || map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 1);
#else /* ifndef FEATURE_IMAGE_BLOCKING */
- err = err || map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 0);
#endif /* ndef FEATURE_IMAGE_BLOCKING */
#ifdef FEATURE_IMAGE_DETECT_MSIE
- err = err || map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 1);
#else /* ifndef FEATURE_IMAGE_DETECT_MSIE */
- err = err || map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_IMAGE_DETECT_MSIE", 0);
#endif /* ndef FEATURE_IMAGE_DETECT_MSIE */
#ifdef FEATURE_KILL_POPUPS
- err = err || map_conditional(exports, "FEATURE_KILL_POPUPS", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_KILL_POPUPS", 1);
#else /* ifndef FEATURE_KILL_POPUPS */
- err = err || map_conditional(exports, "FEATURE_KILL_POPUPS", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_KILL_POPUPS", 0);
#endif /* ndef FEATURE_KILL_POPUPS */
#ifdef FEATURE_PTHREAD
- err = err || map_conditional(exports, "FEATURE_PTHREAD", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_PTHREAD", 1);
#else /* ifndef FEATURE_PTHREAD */
- err = err || map_conditional(exports, "FEATURE_PTHREAD", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_PTHREAD", 0);
#endif /* ndef FEATURE_PTHREAD */
#ifdef FEATURE_STATISTICS
- err = err || map_conditional(exports, "FEATURE_STATISTICS", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_STATISTICS", 1);
#else /* ifndef FEATURE_STATISTICS */
- err = err || map_conditional(exports, "FEATURE_STATISTICS", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_STATISTICS", 0);
#endif /* ndef FEATURE_STATISTICS */
#ifdef FEATURE_TOGGLE
- err = err || map_conditional(exports, "FEATURE_TOGGLE", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_TOGGLE", 1);
#else /* ifndef FEATURE_TOGGLE */
- err = err || map_conditional(exports, "FEATURE_TOGGLE", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_TOGGLE", 0);
#endif /* ndef FEATURE_TOGGLE */
#ifdef FEATURE_TRUST
- err = err || map_conditional(exports, "FEATURE_TRUST", 1);
+ if (!err) err = map_conditional(exports, "FEATURE_TRUST", 1);
#else /* ifndef FEATURE_TRUST */
- err = err || map_conditional(exports, "FEATURE_TRUST", 0);
+ if (!err) err = map_conditional(exports, "FEATURE_TRUST", 0);
#endif /* ndef FEATURE_TRUST */
#ifdef REGEX_GNU
- err = err || map_conditional(exports, "REGEX_GNU", 1);
+ if (!err) err = map_conditional(exports, "REGEX_GNU", 1);
#else /* ifndef REGEX_GNU */
- err = err || map_conditional(exports, "REGEX_GNU", 0);
+ if (!err) err = map_conditional(exports, "REGEX_GNU", 0);
#endif /* def REGEX_GNU */
#ifdef REGEX_PCRE
- err = err || map_conditional(exports, "REGEX_PCRE", 1);
+ if (!err) err = map_conditional(exports, "REGEX_PCRE", 1);
#else /* ifndef REGEX_PCRE */
- err = err || map_conditional(exports, "REGEX_PCRE", 0);
+ if (!err) err = map_conditional(exports, "REGEX_PCRE", 0);
#endif /* def REGEX_PCRE */
#ifdef STATIC_PCRE
- err = err || map_conditional(exports, "STATIC_PCRE", 1);
+ if (!err) err = map_conditional(exports, "STATIC_PCRE", 1);
#else /* ifndef STATIC_PCRE */
- err = err || map_conditional(exports, "STATIC_PCRE", 0);
+ if (!err) err = map_conditional(exports, "STATIC_PCRE", 0);
#endif /* ndef STATIC_PCRE */
#ifdef STATIC_PCRS
- err = err || map_conditional(exports, "STATIC_PCRS", 1);
+ if (!err) err = map_conditional(exports, "STATIC_PCRS", 1);
#else /* ifndef STATIC_PCRS */
- err = err || map_conditional(exports, "STATIC_PCRS", 0);
+ if (!err) err = map_conditional(exports, "STATIC_PCRS", 0);
#endif /* ndef STATIC_PCRS */
- err = err || map(exports, "FORCE_PREFIX", 1, FORCE_PREFIX, 1);
+ if (!err) err = map(exports, "FORCE_PREFIX", 1, FORCE_PREFIX, 1);
return err;
}
-const char filters_rcs[] = "$Id: filters.c,v 1.40 2001/10/26 17:34:17 oes Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.40 2001/10/26 17:37:55 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
*
* Revisions :
* $Log: filters.c,v $
+ * Revision 1.40 2001/10/26 17:37:55 oes
+ * - Re-enabled Netscape 200/404 bug workaround in block_url():
+ * - Removed OS/2 special case
+ * - Made block_url() independant from sed() having been run
+ * - Made trust_url independant from sed() having been run
+ * - Made is_imageurl independant from sed() having been run.
+ * It now checks User-Agent: and Accept: by itself.
+ *
*
* Revision 1.39 2001/10/25 03:40:48 david__schmidt
* Change in porting tactics: OS/2's EMX porting layer doesn't allow multiple
err = map_block_killer(exports, "force-support");
#endif /* ndef FEATURE_FORCE_LOAD */
- err = err || map(exports, "hostport", 1, csp->http->hostport, 1);
- err = err || map(exports, "hostport-html", 1, html_encode(csp->http->hostport), 0);
- err = err || map(exports, "path", 1, csp->http->path, 1);
- err = err || map(exports, "path-html", 1, html_encode(csp->http->path), 0);
+ if (!err) err = map(exports, "hostport", 1, csp->http->hostport, 1);
+ if (!err) err = map(exports, "hostport-html", 1, html_encode(csp->http->hostport), 0);
+ if (!err) err = map(exports, "path", 1, csp->http->path, 1);
+ if (!err) err = map(exports, "path-html", 1, html_encode(csp->http->path), 0);
if (err)
{
/*
* Export the host, port, and referrer information
*/
- err = map(exports, "hostport", 1, csp->http->hostport, 1)
- || map(exports, "path", 1, csp->http->path, 1)
- || map(exports, "hostport-html", 1, html_encode(csp->http->hostport), 0)
- || map(exports, "path-html", 1, html_encode(csp->http->path), 0);
+ err = map(exports, "hostport", 1, csp->http->hostport, 1);
+ if (!err) err = map(exports, "path", 1, csp->http->path, 1);
+ if (!err) err = map(exports, "hostport-html", 1, html_encode(csp->http->hostport), 0);
+ if (!err) err = map(exports, "path-html", 1, html_encode(csp->http->path), 0);
if (NULL != (p = get_header_value(csp->headers, "Referer:")))
{
- err = err || map(exports, "referrer", 1, p, 1);
- err = err || map(exports, "referrer-html", 1, html_encode(p), 0);
+ if (!err) err = map(exports, "referrer", 1, p, 1);
+ if (!err) err = map(exports, "referrer-html", 1, html_encode(p), 0);
}
else
{
- err = err || map(exports, "referrer", 1, "unknown", 1);
- err = err || map(exports, "referrer-html", 1, "unknown", 1);
+ if (!err) err = map(exports, "referrer", 1, "unknown", 1);
+ if (!err) err = map(exports, "referrer-html", 1, "unknown", 1);
}
if (err)