Lines 61-66
Link Here
|
61 |
int passthrough = 0; |
61 |
int passthrough = 0; |
62 |
int showBar = 0; /* Do not display the progress bar. */ |
62 |
int showBar = 0; /* Do not display the progress bar. */ |
63 |
char *globalCreateDb = NULL; |
63 |
char *globalCreateDb = NULL; |
|
|
64 |
int globalSquid34 = 0; |
64 |
int failsafe_mode = 0; |
65 |
int failsafe_mode = 0; |
65 |
int sig_hup = 0; |
66 |
int sig_hup = 0; |
66 |
int sig_alrm = 0; |
67 |
int sig_alrm = 0; |
Lines 87-92
Link Here
|
87 |
char buf[MAX_BUF]; |
88 |
char buf[MAX_BUF]; |
88 |
char *redirect,tmp[MAX_BUF]; |
89 |
char *redirect,tmp[MAX_BUF]; |
89 |
char *configFile = NULL; |
90 |
char *configFile = NULL; |
|
|
91 |
char *status = NULL, *endptr; |
92 |
long statusl = 0; |
90 |
time_t t; |
93 |
time_t t; |
91 |
#if HAVE_SIGACTION |
94 |
#if HAVE_SIGACTION |
92 |
struct sigaction act; |
95 |
struct sigaction act; |
Lines 94-100
Link Here
|
94 |
gettimeofday(&start_time, NULL); |
97 |
gettimeofday(&start_time, NULL); |
95 |
progname = argv[0]; |
98 |
progname = argv[0]; |
96 |
globalPid = getpid(); |
99 |
globalPid = getpid(); |
97 |
while ((ch = getopt(argc, argv, "hbduPC:t:c:v")) != EOF) |
100 |
while ((ch = getopt(argc, argv, "hbdunPC:t:c:v")) != EOF) |
98 |
switch (ch) { |
101 |
switch (ch) { |
99 |
case 'd': |
102 |
case 'd': |
100 |
globalDebug = 1; |
103 |
globalDebug = 1; |
Lines 117-122
Link Here
|
117 |
fprintf(stderr, "SquidGuard: %s %s\n", VERSION,db_version(NULL,NULL,NULL)); |
120 |
fprintf(stderr, "SquidGuard: %s %s\n", VERSION,db_version(NULL,NULL,NULL)); |
118 |
exit(0); |
121 |
exit(0); |
119 |
break; |
122 |
break; |
|
|
123 |
case 'n': |
124 |
globalSquid34 = 1; |
125 |
break; |
120 |
case 't': |
126 |
case 't': |
121 |
if((t = iso2sec(optarg)) == -1){ |
127 |
if((t = iso2sec(optarg)) == -1){ |
122 |
fprintf(stderr,"-t dateformat error, should be yyyy-mm-ddTHH:MM:SS\n"); |
128 |
fprintf(stderr,"-t dateformat error, should be yyyy-mm-ddTHH:MM:SS\n"); |
Lines 196-224
Link Here
|
196 |
acl = sgAclCheckSource(src); |
202 |
acl = sgAclCheckSource(src); |
197 |
if((redirect = sgAclAccess(src,acl,&squidInfo)) == NULL){ |
203 |
if((redirect = sgAclAccess(src,acl,&squidInfo)) == NULL){ |
198 |
if(src == NULL || src->cont_search == 0){ |
204 |
if(src == NULL || src->cont_search == 0){ |
199 |
puts(""); |
205 |
if (globalSquid34) puts("ERR"); |
|
|
206 |
else puts(""); |
200 |
break; |
207 |
break; |
201 |
} else |
208 |
} else |
202 |
if(src->next != NULL){ |
209 |
if(src->next != NULL){ |
203 |
src = src->next; |
210 |
src = src->next; |
204 |
continue; |
211 |
continue; |
205 |
} else { |
212 |
} else { |
206 |
puts(""); |
213 |
if (globalSquid34) puts("ERR"); |
|
|
214 |
else puts(""); |
207 |
break; |
215 |
break; |
208 |
} |
216 |
} |
209 |
} else { |
217 |
} else { |
210 |
if(squidInfo.srcDomain[0] == '\0'){ |
218 |
if (globalSquid34) { |
211 |
squidInfo.srcDomain[0] = '-'; |
219 |
status = strsep(&redirect, ":"); |
212 |
squidInfo.srcDomain[1] = '\0'; |
220 |
if (status != NULL) { |
213 |
} |
221 |
// trying to check the 1st colon-separeted field to be a HTTP status |
214 |
if(squidInfo.ident[0] == '\0'){ |
222 |
statusl = strtol(status, &endptr, 10); |
215 |
squidInfo.ident[0] = '-'; |
223 |
// if the 1st field is not an acceptable HTTP status then restore the string |
216 |
squidInfo.ident[1] = '\0'; |
224 |
switch (statusl) { |
|
|
225 |
case 301: |
226 |
case 302: |
227 |
case 303: |
228 |
case 307: |
229 |
case 308: |
230 |
break; |
231 |
default: |
232 |
statusl = 0; |
233 |
redirect = status; |
234 |
redirect[strlen(redirect)] = ':'; |
235 |
} |
236 |
} |
237 |
if (statusl) fprintf(stdout, "OK status=%s url=\"%s\"\n", status, redirect); |
238 |
else fprintf(stdout, "OK rewrite-url=\"%s\"\n", redirect); |
217 |
} |
239 |
} |
218 |
fprintf(stdout,"%s %s/%s %s %s\n",redirect,squidInfo.src, |
240 |
else { |
219 |
squidInfo.srcDomain,squidInfo.ident, |
241 |
if(squidInfo.srcDomain[0] == '\0'){ |
220 |
squidInfo.method); |
242 |
squidInfo.srcDomain[0] = '-'; |
221 |
/* sgLogError("%s %s/%s %s %s\n",redirect,squidInfo.src,squidInfo.srcDomain,squidInfo.ident,squidInfo.method); */ |
243 |
squidInfo.srcDomain[1] = '\0'; |
|
|
244 |
} |
245 |
if(squidInfo.ident[0] == '\0'){ |
246 |
squidInfo.ident[0] = '-'; |
247 |
squidInfo.ident[1] = '\0'; |
248 |
} |
249 |
fprintf(stdout,"%s %s/%s %s %s\n",redirect,squidInfo.src, |
250 |
squidInfo.srcDomain,squidInfo.ident, |
251 |
squidInfo.method); |
252 |
/* sgLogError("%s %s/%s %s %s\n",redirect,squidInfo.src,squidInfo.srcDomain,squidInfo.ident,squidInfo.method); */ |
253 |
} |
222 |
break; |
254 |
break; |
223 |
} |
255 |
} |
224 |
} /*for(;;)*/ |
256 |
} /*for(;;)*/ |
Lines 255-260
Link Here
|
255 |
fprintf(stderr, |
287 |
fprintf(stderr, |
256 |
"Usage: squidGuard [-u] [-C block] [-t time] [-c file] [-v] [-d] [-P]\n"); |
288 |
"Usage: squidGuard [-u] [-C block] [-t time] [-c file] [-v] [-d] [-P]\n"); |
257 |
fprintf(stderr, "Options:\n"); |
289 |
fprintf(stderr, "Options:\n"); |
|
|
290 |
fprintf(stderr, " -n : Use Squid 3.4+ reply format"); |
258 |
fprintf(stderr, " -v : show version number\n"); |
291 |
fprintf(stderr, " -v : show version number\n"); |
259 |
fprintf(stderr, " -d : all errors to stderr\n"); |
292 |
fprintf(stderr, " -d : all errors to stderr\n"); |
260 |
fprintf(stderr, " -b : switch on the progress bar when updating the blacklists\n"); |
293 |
fprintf(stderr, " -b : switch on the progress bar when updating the blacklists\n"); |