After some tests I created this updated patch. With it squidguard is running with squid3 version 3.4.8.
Ciao, Joo
Package: squidguard Subject: fix for working (only) with squid 3.4 and higher Author: Joachim Wiedorn <joodebian at joonet.de> Origin: other, http://bugs.squid-cache.org/show_bug.cgi?id=3978 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772831 Forwarded: yes Last-Update: 2014-12-22 Incorrectly use of Squid helper protocol (old squid-2.5 protocol). This bugfix let it work together with squid3 v3.4 and higher. Pay attention that with this patch squidguard don't work with squid 3.3 and lower anymore! --- diff -urN s13/src/main.c s14/src/main.c --- s13/src/main.c 2014-12-11 18:10:03.943372692 +0100 +++ s14/src/main.c 2014-12-23 23:07:49.583732080 +0100 @@ -185,7 +185,7 @@ sgReloadConfig(); } if(failsafe_mode) { - puts(""); + puts("ERR message=\"squidGuard failsafe mode\""); fflush(stdout); if(sig_hup){ sgReloadConfig(); @@ -194,7 +194,7 @@ } if(parseLine(buf,&squidInfo) != 1){ sgLogError("ERROR: Error parsing squid line: %s",buf); - puts(""); + puts("BH message=\"squidGuard error parsing squid line\""); } else { src = Source; @@ -206,14 +206,14 @@ acl = sgAclCheckSource(src); if((redirect = sgAclAccess(src,acl,&squidInfo)) == NULL){ if(src == NULL || src->cont_search == 0){ - puts(""); + puts("ERR"); break; } else if(src->next != NULL){ src = src->next; continue; } else { - puts(""); + puts("ERR"); break; } } else { @@ -225,9 +225,11 @@ squidInfo.ident[0] = '-'; squidInfo.ident[1] = '\0'; } - fprintf(stdout,"%s %s/%s %s %s\n",redirect,squidInfo.src, - squidInfo.srcDomain,squidInfo.ident, - squidInfo.method); + if (isdigit(redirect[0]) && isdigit(redirect[1]) && isdigit(redirect[2]) && redirect[3]==':') { + fprintf(stdout,"OK status=%c%c%c url=\"%s\"\n", redirect[0], redirect[1], redirect[2], &redirect[4]); + } else + fprintf(stdout,"OK rewrite-url=\"%s\"\n",redirect); + /* sgLogDebug("DEBUG: %s %s/%s %s %s\n",redirect,squidInfo.src,squidInfo.srcDomain,squidInfo.ident,squidInfo.method); */ break; } diff -urN s13/src/main.c.in s14/src/main.c.in --- s13/src/main.c.in 2011-10-01 20:49:00.000000000 +0200 +++ s14/src/main.c.in 2014-12-11 18:19:26.775347885 +0100 @@ -185,7 +185,7 @@ sgReloadConfig(); } if(failsafe_mode) { - puts(""); + puts("ERR message=\"squidGuard failsafe mode\""); fflush(stdout); if(sig_hup){ sgReloadConfig(); @@ -194,7 +194,7 @@ } if(parseLine(buf,&squidInfo) != 1){ sgLogError("ERROR: Error parsing squid line: %s",buf); - puts(""); + puts("BH message=\"squidGuard error parsing squid line\""); } else { src = Source; @@ -206,14 +206,14 @@ acl = sgAclCheckSource(src); if((redirect = sgAclAccess(src,acl,&squidInfo)) == NULL){ if(src == NULL || src->cont_search == 0){ - puts(""); + puts("ERR"); break; } else if(src->next != NULL){ src = src->next; continue; } else { - puts(""); + puts("ERR"); break; } } else { @@ -225,9 +225,11 @@ squidInfo.ident[0] = '-'; squidInfo.ident[1] = '\0'; } - fprintf(stdout,"%s %s/%s %s %s\n",redirect,squidInfo.src, - squidInfo.srcDomain,squidInfo.ident, - squidInfo.method); + if (isdigit(redirect[0]) && isdigit(redirect[1]) && isdigit(redirect[2]) && redirect[3]==':') { + fprintf(stdout,"OK status=%c%c%c url=\"%s\"\n", redirect[0], redirect[1], redirect[2], &redirect[4]); + } else + fprintf(stdout,"OK rewrite-url=\"%s\"\n",redirect); + /* sgLogDebug("DEBUG: %s %s/%s %s %s\n",redirect,squidInfo.src,squidInfo.srcDomain,squidInfo.ident,squidInfo.method); */ break; } diff -urN s13/src/sgDiv.c s14/src/sgDiv.c --- s13/src/sgDiv.c 2011-10-01 20:49:00.000000000 +0200 +++ s14/src/sgDiv.c 2014-12-11 18:19:26.775347885 +0100 @@ -782,7 +782,7 @@ } sgLogError("ERROR: Going into emergency mode"); while(fgets(buf, MAX_BUF, stdin) != NULL){ - puts(""); + puts("ERR"); fflush(stdout); } sgLogError("ERROR: Ending emergency mode, stdin empty"); diff -urN s13/src/sgDiv.c.in s14/src/sgDiv.c.in --- s13/src/sgDiv.c.in 2014-12-11 18:10:26.551870993 +0100 +++ s14/src/sgDiv.c.in 2014-12-11 18:19:26.775347885 +0100 @@ -784,7 +784,7 @@ } sgLogError("ERROR: Going into emergency mode"); while(fgets(buf, MAX_BUF, stdin) != NULL){ - puts(""); + puts("ERR"); fflush(stdout); } sgLogError("ERROR: Ending emergency mode, stdin empty");
signature.asc
Description: PGP signature