/*
* SARG Squid Analysis Report Generator http://sarg.sourceforge.net
- * 1998, 2011
+ * 1998, 2015
*
* SARG donations:
* please look at http://sarg.sourceforge.net/donations.php
#include "include/conf.h"
#include "include/defs.h"
+static void show_ignored_dansguardian(FILE *fp_ou,int count)
+{
+ char ignored[80];
+
+ snprintf(ignored,sizeof(ignored),ngettext("%d more dansguardian entry not shown here…","%d more dansguardian entries not shown here…",count),count);
+ fprintf(fp_ou,"<tr><td class=\"data\"></td><td class=\"data\"></td><td class=\"data\"></td><td class=\"data2 more\">%s</td><td class=\"data\"></td></tr>\n",ignored);
+}
+
void dansguardian_report(void)
{
FILE *fp_in = NULL, *fp_ou = NULL;
ouser[0]='\0';
- snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.log",tmp);
+ snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.int_log",tmp);
if(!dansguardian_count) {
- unlink(dansguardian_in);
+ if (!KeepTempLog && unlink(dansguardian_in))
+ debuga(__FILE__,__LINE__,_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
+ if (debugz>=LogLevel_Process) debugaz(__FILE__,__LINE__,_("Dansguardian report not generated because it is empty\n"));
return;
}
sprintf(report,"%s/dansguardian.html",outdirname);
if((fp_in=MY_FOPEN(dansguardian_in,"r"))==NULL) {
- debuga(_("(dansguardian_report) Cannot open log file %s\n"),dansguardian_in);
+ debuga(__FILE__,__LINE__,_("Cannot open file \"%s\": %s\n"),dansguardian_in,strerror(errno));
exit(EXIT_FAILURE);
}
if((fp_ou=MY_FOPEN(report,"w"))==NULL) {
- debuga(_("(dansguardian_report) Cannot open log file %s\n"),report);
+ debuga(__FILE__,__LINE__,_("Cannot open file \"%s\": %s\n"),report,strerror(errno));
exit(EXIT_FAILURE);
}
getword_start(&gwarea,buf);
if (getword(user,sizeof(user),&gwarea,'\t')<0 || getword(date2,sizeof(date2),&gwarea,'\t')<0 ||
getword(hour,sizeof(hour),&gwarea,'\t')<0 || getword(ip,sizeof(ip),&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),dansguardian_in);
+ debuga(__FILE__,__LINE__,_("Invalid record in file \"%s\"\n"),dansguardian_in);
exit(EXIT_FAILURE);
}
if (getword_ptr(buf,&url,&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken url in your %s file\n"),dansguardian_in);
+ debuga(__FILE__,__LINE__,_("Invalid url in file \"%s\"\n"),dansguardian_in);
exit(EXIT_FAILURE);
}
if (getword(rule,sizeof(rule),&gwarea,'\n')<0) {
- debuga(_("Maybe you have a broken rule in your %s file\n"),dansguardian_in);
+ debuga(__FILE__,__LINE__,_("Invalid rule in file \"%s\"\n"),dansguardian_in);
exit(EXIT_FAILURE);
}
if(UserIp)
strcpy(user,ip);
- bzero(date, 15);
- if(strncmp(df,"u",1) != 0) {
+ memset(date,0,sizeof(date));
+ if (df!='u') {
strncpy(date,date2+6,2);
strcat(date,"/");
strncat(date,date2+4,2);
if(strcmp(ouser2,name) == 0) {
count++;
} else {
+ if(count>DansGuardianReportLimit && DansGuardianReportLimit>0)
+ show_ignored_dansguardian(fp_ou,count-DansGuardianReportLimit);
count=1;
strcpy(ouser2,name);
}
- if(count >= DansGuardianReportLimit)
+ if(count > DansGuardianReportLimit)
continue;
}
- fprintf(fp_ou,"<tr><td class=\"data2\">%s</td><td class=\"data2\">%s</td><td class=\"data2\">%s-%s</td><td class=\"data2\"><a href=\"http://",name,ip,date,hour);
- output_html_url(fp_ou,url);
- fputs("\">",fp_ou);
- output_html_string(fp_ou,url,100);
- fprintf(fp_ou,"</a></td><td class=\"data2\">%s</td></tr>\n",rule);
+ fprintf(fp_ou,"<tr><td class=\"data2\">%s</td><td class=\"data2\">%s</td><td class=\"data2\">%s-%s</td><td class=\"data2\">",name,ip,date,hour);
+ output_html_link(fp_ou,url,100);
+ fprintf(fp_ou,"</td><td class=\"data2\">%s</td></tr>\n",rule);
}
- fclose(fp_in);
+ if (fclose(fp_in)==EOF) {
+ debuga(__FILE__,__LINE__,_("Read error in \"%s\": %s\n"),dansguardian_in,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+
+ if(count>DansGuardianReportLimit && DansGuardianReportLimit>0)
+ show_ignored_dansguardian(fp_ou,count-DansGuardianReportLimit);
fputs("</table></div>\n",fp_ou);
- if (write_html_trailer(fp_ou)<0)
- debuga(_("Write error in file %s\n"),report);
- if (fclose(fp_ou)==EOF)
- debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
+ write_html_trailer(fp_ou);
+ if (fclose(fp_ou)==EOF) {
+ debuga(__FILE__,__LINE__,_("Write error in \"%s\": %s\n"),report,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
- if (unlink(dansguardian_in)) {
- debuga(_("Cannot delete %s - %s\n"),dansguardian_in,strerror(errno));
+ if (!KeepTempLog && unlink(dansguardian_in)) {
+ debuga(__FILE__,__LINE__,_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
exit(EXIT_FAILURE);
}