//! The number of invalid lines found in the redirector report.
static int RedirectorErrors=0;
+//! The file containing the sorted entries.
+static char redirector_sorted[MAXLEN]="";
static void parse_log(FILE *fp_ou,char *buf)
{
FILE *fp_ou = NULL, *fp_guard = NULL;
char buf[MAXLEN];
char guard_in[MAXLEN];
- char guard_ou[MAXLEN];
char logdir[MAXLEN];
char user[MAXLEN];
char tmp6[MAXLEN];
}
snprintf(guard_in,sizeof(guard_in),"%s/redirector.int_unsort",tmp);
- snprintf(guard_ou,sizeof(guard_ou),"%s/redirector.int_log",tmp);
- if((fp_ou=fopen(guard_in,"a"))==NULL) {
+ if((fp_ou=fopen(guard_in,"w"))==NULL) {
debuga(_("(squidguard) Cannot open log file %s\n"),guard_in);
exit(EXIT_FAILURE);
}
free(files_done);
}
- if(debug) {
- debuga(_("Sorting file: %s\n"),guard_ou);
- }
+ if (redirector_count) {
+ snprintf(redirector_sorted,sizeof(redirector_sorted),"%s/redirector.int_log",tmp);
+ if(debug) {
+ debuga(_("Sorting file: %s\n"),redirector_sorted);
+ }
- if (snprintf(tmp6,sizeof(tmp6),"sort -t \"\t\" -k 1,1 -k 2,2 -k 4,4 \"%s\" -o \"%s\"",guard_in, guard_ou)>=sizeof(tmp6)) {
- debuga(_("Sort command too long when sorting file \"%s\" to \"%s\"\n"),guard_in,guard_ou);
- exit(EXIT_FAILURE);
- }
- cstatus=system(tmp6);
- if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) {
- debuga(_("sort command return status %d\n"),WEXITSTATUS(cstatus));
- debuga(_("sort command: %s\n"),tmp6);
- exit(EXIT_FAILURE);
+ if (snprintf(tmp6,sizeof(tmp6),"sort -t \"\t\" -k 1,1 -k 2,2 -k 4,4 \"%s\" -o \"%s\"",guard_in, redirector_sorted)>=sizeof(tmp6)) {
+ debuga(_("Sort command too long when sorting file \"%s\" to \"%s\"\n"),guard_in,redirector_sorted);
+ exit(EXIT_FAILURE);
+ }
+ cstatus=system(tmp6);
+ if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) {
+ debuga(_("sort command return status %d\n"),WEXITSTATUS(cstatus));
+ debuga(_("sort command: %s\n"),tmp6);
+ exit(EXIT_FAILURE);
+ }
}
if (!KeepTempLog && unlink(guard_in)) {
char *buf;
char *url;
- char squidguard_in[MAXLEN];
char report[MAXLEN];
char ip[45];
char rule[255];
ouser[0]='\0';
ouser2[0]='\0';
- snprintf(squidguard_in,sizeof(squidguard_in),"%s/redirector.int_log",tmp);
if(!redirector_count) {
- if (!KeepTempLog && unlink(squidguard_in))
- debuga(_("Cannot delete \"%s\": %s\n"),squidguard_in,strerror(errno));
- if (debugz) debugaz(_("Redirector report not generated because it is empty\n"));
+ if (debugz) {
+ if (redirector_sorted[0])
+ debugaz(_("Redirector report not generated because it is empty\n"));
+ }
return;
}
snprintf(report,sizeof(report),"%s/redirector.html",outdirname);
- if((fp_in=fopen(squidguard_in,"r"))==NULL) {
- debuga(_("(squidguard) Cannot open log file %s\n"),squidguard_in);
+ if((fp_in=fopen(redirector_sorted,"r"))==NULL) {
+ debuga(_("(squidguard) Cannot open log file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
while((buf=longline_read(fp_in,line))!=NULL) {
getword_start(&gwarea,buf);
if (getword(user,sizeof(user),&gwarea,'\t')<0) {
- debuga(_("Invalid user in file %s\n"),squidguard_in);
+ debuga(_("Invalid user in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
if (getword_atoll(&data2,&gwarea,'\t')<0) {
- debuga(_("Invalid date in file %s\n"),squidguard_in);
+ debuga(_("Invalid date in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
if (getword(hora,sizeof(hora),&gwarea,'\t')<0) {
- debuga(_("Invalid time in file %s\n"),squidguard_in);
+ debuga(_("Invalid time in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
if (getword(ip,sizeof(ip),&gwarea,'\t')<0) {
- debuga(_("Invalid IP address in file %s\n"),squidguard_in);
+ debuga(_("Invalid IP address in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
if (getword_ptr(buf,&url,&gwarea,'\t')<0) {
- debuga(_("Invalid URL in file %s\n"),squidguard_in);
+ debuga(_("Invalid URL in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
if (getword(rule,sizeof(rule),&gwarea,'\n')<0) {
- debuga(_("Invalid rule in file %s\n"),squidguard_in);
+ debuga(_("Invalid rule in file %s\n"),redirector_sorted);
exit(EXIT_FAILURE);
}
uinfo=userinfo_find_from_id(user);
if (!uinfo) {
- debuga(_("Unknown user ID %s in file %s\n"),user,squidguard_in);
+ debuga(_("Unknown user ID %s in file %s\n"),user,redirector_sorted);
exit(EXIT_FAILURE);
}
if (fclose(fp_ou)==EOF)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (!KeepTempLog && unlink(squidguard_in)) {
- debuga(_("Cannot delete \"%s\": %s\n"),squidguard_in,strerror(errno));
+ if (!KeepTempLog && unlink(redirector_sorted)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),redirector_sorted,strerror(errno));
exit(EXIT_FAILURE);
}