You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-proxy/squidguard/files/squidguard-1.5_beta-protoco...

131 lines
4.4 KiB

Patch for compatibility with new(>=3.4) Squid helper protocol
Bugreport: http://bugs.squid-cache.org/show_bug.cgi?id=3978
diff -ur squidGuard-1.5-beta.orig/src/main.c squidGuard-1.5-beta/src/main.c
--- squidGuard-1.5-beta.orig/src/main.c 2013-12-12 11:47:31.000000000 +1300
+++ squidGuard-1.5-beta/src/main.c 2013-12-12 11:50:38.000000000 +1300
@@ -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 {
@@ -228,6 +228,10 @@
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 -ur squidGuard-1.5-beta.orig/src/main.c.in squidGuard-1.5-beta/src/main.c.in
--- squidGuard-1.5-beta.orig/src/main.c.in 2013-12-12 11:47:31.000000000 +1300
+++ squidGuard-1.5-beta/src/main.c.in 2013-12-12 11:53:18.000000000 +1300
@@ -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 -ur squidGuard-1.5-beta.orig/src/sgDiv.c squidGuard-1.5-beta/src/sgDiv.c
--- squidGuard-1.5-beta.orig/src/sgDiv.c 2013-12-12 11:47:31.000000000 +1300
+++ squidGuard-1.5-beta/src/sgDiv.c 2013-12-12 11:48:36.000000000 +1300
@@ -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 -ur squidGuard-1.5-beta.orig/src/sgDiv.c.in squidGuard-1.5-beta/src/sgDiv.c.in
--- squidGuard-1.5-beta.orig/src/sgDiv.c.in 2013-12-12 11:47:31.000000000 +1300
+++ squidGuard-1.5-beta/src/sgDiv.c.in 2013-12-12 11:48:36.000000000 +1300
@@ -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");