X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=filters.c;h=4fc07a2570cccab090dbed61db36d3a4a36f9e68;hp=256b0c9dedda4fed5a1ef8a514a51d233d4c773d;hb=c88fbf28546a609fb39415ccac6b97bfa1f5d185;hpb=52bd067225c1e12ecf7156e5707161ed7df8e8c4 diff --git a/filters.c b/filters.c index 256b0c9d..4fc07a25 100644 --- a/filters.c +++ b/filters.c @@ -1,4 +1,4 @@ -const char filters_rcs[] = "$Id: filters.c,v 1.45 2002/03/08 16:47:50 oes Exp $"; +const char filters_rcs[] = "$Id: filters.c,v 1.48 2002/03/13 20:25:34 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/filters.c,v $ @@ -38,6 +38,17 @@ const char filters_rcs[] = "$Id: filters.c,v 1.45 2002/03/08 16:47:50 oes Exp $" * * Revisions : * $Log: filters.c,v $ + * Revision 1.48 2002/03/13 20:25:34 oes + * Better logging for content filters + * + * Revision 1.47 2002/03/13 00:30:52 jongfoster + * Killing warnings + * Added option of always sending redirect for imageblock, + * currently disabled with #if 0. + * + * Revision 1.46 2002/03/12 01:42:49 oes + * Introduced modular filters + * * Revision 1.45 2002/03/08 16:47:50 oes * Added choice beween GIF and PNG built-in images * @@ -490,7 +501,7 @@ int acl_addr(char *aspec, struct access_control_addr *aca) masklength = 32; port = 0; - if ((p = strchr(aspec, '/'))) + if ((p = strchr(aspec, '/')) != NULL) { *p++ = '\0'; @@ -506,7 +517,7 @@ int acl_addr(char *aspec, struct access_control_addr *aca) return(-1); } - if ((p = strchr(aspec, ':'))) + if ((p = strchr(aspec, ':')) != NULL) { *p++ = '\0'; @@ -670,6 +681,8 @@ struct http_response *block_url(struct client_state *csp) /* determine HOW images should be blocked */ p = csp->action->string[ACTION_STRING_IMAGE_BLOCKER]; +#if 1 /* Two alternative strategies, use this one for now: */ + /* and handle accordingly: */ if ((p == NULL) || (0 == strcmpic(p, "logo"))) { @@ -737,6 +750,35 @@ struct http_response *block_url(struct client_state *csp) return cgi_error_memory(); } } + +#else /* Following code is disabled for now */ + + /* and handle accordingly: */ + if ((p == NULL) || (0 == strcmpic(p, "logo"))) + { + p = CGI_PREFIX "send-banner?type=logo"; + } + else if (0 == strcmpic(p, "blank")) + { + p = CGI_PREFIX "send-banner?type=blank"; + } + else if (0 == strcmpic(p, "pattern")) + { + p = CGI_PREFIX "send-banner?type=pattern"; + } + rsp->status = strdup("302 Local Redirect from Junkbuster"); + if (rsp->status == NULL) + { + free_http_response(rsp); + return cgi_error_memory(); + } + + if (enlist_unique_header(rsp->headers, "Location", p)) + { + free_http_response(rsp); + return cgi_error_memory(); + } +#endif /* Preceeding code is disabled for now */ } else #endif /* def FEATURE_IMAGE_BLOCKING */ @@ -882,7 +924,7 @@ struct http_response *trust_url(struct client_state *csp) * Export the trust list */ p = strdup(""); - for (tl = csp->config->trust_list; (t = *tl) ; tl++) + for (tl = csp->config->trust_list; (t = *tl) != NULL ; tl++) { sprintf(buf, "
  • %s
  • \n", t->spec); string_append(&p, buf); @@ -979,7 +1021,7 @@ struct http_response *redirect_url(struct client_state *csp) /* * find the last URL encoded in the request */ - while ((p = strstr(p, "http://"))) + while ((p = strstr(p, "http://")) != NULL) { q = p++; } @@ -1140,7 +1182,7 @@ int is_untrusted_url(struct client_state *csp) FILE *fp; - if ((fp = fopen(csp->config->trustfile, "a"))) + if (NULL != (fp = fopen(csp->config->trustfile, "a"))) { char * path; char * path_end; @@ -1256,26 +1298,29 @@ char *pcrs_filter_response(struct client_state *csp) for (filtername = csp->action->multi[ACTION_MULTI_FILTER]->first; filtername ; filtername = filtername->next) { - if (strcmp(b->filtername, filtername->str) == 0) + if (strcmp(b->name, filtername->str) == 0) { + int current_hits = 0; + if ( NULL == b->joblist ) { - log_error(LOG_LEVEL_RE_FILTER, "Filter %s has empty joblist. Nothing to do.", b->filtername); + log_error(LOG_LEVEL_RE_FILTER, "Filter %s has empty joblist. Nothing to do.", b->name); return(NULL); } log_error(LOG_LEVEL_RE_FILTER, "re_filtering %s%s (size %d) with filter %s...", - csp->http->hostport, csp->http->path, size, b->filtername); + csp->http->hostport, csp->http->path, size, b->name); /* Apply all jobs from the joblist */ for (job = b->joblist; NULL != job; job = job->next) { - hits += pcrs_execute(job, old, size, &new, &size); + current_hits += pcrs_execute(job, old, size, &new, &size); if (old != csp->iob->cur) free(old); old=new; } - log_error(LOG_LEVEL_RE_FILTER, " ...produced %d hits (new size %d).", hits, size); + log_error(LOG_LEVEL_RE_FILTER, " ...produced %d hits (new size %d).", current_hits, size); + hits += current_hits; } } } @@ -1354,7 +1399,14 @@ char *gif_deanimate_response(struct client_state *csp) } else { - log_error(LOG_LEVEL_DEANIMATE, "Success! GIF shrunk from %d bytes to %d.", size, out->offset); + if ((int)size == out->offset) + { + log_error(LOG_LEVEL_DEANIMATE, "GIF not changed."); + } + else + { + log_error(LOG_LEVEL_DEANIMATE, "Success! GIF shrunk from %d bytes to %d.", size, out->offset); + } csp->content_length = out->offset; csp->flags |= CSP_FLAG_MODIFIED; p = out->buffer;