snprintf(tmp4,sizeof(tmp4),"%s/authfail.int_unsort",tmp);
if(authfail_count == 0) {
- unlink(tmp4);
+ if (!KeepTempLog && unlink(tmp4)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp4,strerror(errno));
+ }
if (debugz) debugaz(_("Authentication failures report not produced because it is empty\n"));
return;
}
debuga(_("sort command: %s\n"),csort);
exit(EXIT_FAILURE);
}
- if (unlink(tmp4)) {
- debuga(_("Cannot delete %s - %s\n"),tmp4,strerror(errno));
+ if (!KeepTempLog && unlink(tmp4)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp4,strerror(errno));
exit(EXIT_FAILURE);
}
if (fclose(fp_ou)==EOF)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (unlink(authfail_in)) {
- debuga(_("Cannot delete %s - %s\n"),authfail_in,strerror(errno));
+ if (!KeepTempLog && unlink(authfail_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),authfail_in,strerror(errno));
exit(EXIT_FAILURE);
}
debuga(_("sort command: %s\n"),tmp6);
exit(EXIT_FAILURE);
}
- if (unlink(guard_in)) {
- debuga(_("Cannot delete %s - %s\n"),guard_in,strerror(errno));
+ if (!KeepTempLog && unlink(guard_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),guard_in,strerror(errno));
exit(EXIT_FAILURE);
}
}
snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.int_log",tmp);
if(!dansguardian_count) {
- unlink(dansguardian_in);
+ if (!KeepTempLog && unlink(dansguardian_in))
+ debuga(_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
if (debugz) debugaz(_("Dansguardian report not generated because it is empty\n"));
return;
}
if (fclose(fp_ou)==EOF)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (unlink(dansguardian_in)) {
- debuga(_("Cannot delete %s - %s\n"),dansguardian_in,strerror(errno));
+ if (!KeepTempLog && unlink(dansguardian_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),dansguardian_in,strerror(errno));
exit(EXIT_FAILURE);
}
sprintf(denied_in,"%s/denied.int_log",tmp);
if (!denied_count) {
- unlink(denied_in);
+ if (!KeepTempLog && unlink(denied_in))
+ debuga(_("Cannot delete \"%s\": %s\n"),denied_in,strerror(errno));
if (debugz) debugaz(_("Denied report not produced because it is empty\n"));
return;
}
if (fclose(fp_ou)<0)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (unlink(denied_in)==-1)
- debuga(_("Failed to delete the file \"%s\" after processing it - %s\n"),denied_in,strerror(errno));
+ if (!KeepTempLog && unlink(denied_in)==-1)
+ debuga(_("Cannot delete \"%s\": %s\n"),denied_in,strerror(errno));
return;
}
debuga(_("Path too long for %s/download.int_unsort\n"),tmp);
exit(EXIT_FAILURE);
}
- if (unlink(csort)) {
- debuga(_("Cannot delete %s - %s\n"),csort,strerror(errno));
+ if (!KeepTempLog && unlink(csort)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),csort,strerror(errno));
exit(EXIT_FAILURE);
}
}
if (fclose(fp_ou)==EOF)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (unlink(report_in)) {
- debuga(_("Cannot delete %s - %s\n"),report_in,strerror(errno));
+ if (!KeepTempLog && unlink(report_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),report_in,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(top2)) {
- debuga(_("Cannot delete %s - %s\n"),top2,strerror(errno));
+ if (!KeepTempLog && unlink(top2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),top2,strerror(errno));
exit(EXIT_FAILURE);
}
#endif
fclose(fp_top1);
- if (unlink(top1)) {
- debuga(_("Cannot delete %s - %s\n"),top1,strerror(errno));
+ if (!KeepTempLog && unlink(top1)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),top1,strerror(errno));
exit(EXIT_FAILURE);
}
if (getparam_string("sorttable",buf,SortTableJs,sizeof(SortTableJs))>0) return;
if (getparam_string("hostalias",buf,HostAliasFile,sizeof(HostAliasFile))>0) return;
+
+ if (getparam_bool("keep_temp_log",buf,&KeepTempLog)>0) return;
if(strstr(buf,"squid24") != 0) {
squid24=true;
return;
}
if(!Graphs || GraphFont[0]=='\0') {
- unlink(wdirname);
+ if (!KeepTempLog && unlink(wdirname))
+ debuga(_("Cannot delete \"%s\": %s\n"),wdirname,strerror(errno));
return;
}
}
}
fclose(fp_in);
- if (unlink(wdirname)) {
- debuga(_("Cannot delete %s - %s\n"),wdirname,strerror(errno));
+ if (!KeepTempLog && unlink(wdirname)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),wdirname,strerror(errno));
exit(EXIT_FAILURE);
}
longline_destroy(&line);
if (iprel && arqip[0]) {
- if (unlink(arqip)) {
- debuga(_("Cannot delete %s - %s\n"),arqip,strerror(errno));
+ if (!KeepTempLog && unlink(arqip)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),arqip,strerror(errno));
exit(EXIT_FAILURE);
}
}
- if (unlink(arqin)) {
- debuga(_("Cannot delete %s - %s\n"),arqin,strerror(errno));
+ if (!KeepTempLog && unlink(arqin)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),arqin,strerror(errno));
exit(EXIT_FAILURE);
}
int ndownload;
int ntopuser;
bool squid24;
+//! \c True to keep the temporary files for inspection.
+bool KeepTempLog;
long long int nocost;
float cost;
squid24=false;
dfrom=0;
duntil=0;
+ KeepTempLog=false;
bzero(IncludeUsers, sizeof(IncludeUsers));
bzero(ExcludeString, sizeof(ExcludeString));
strcpy(Title,_("Squid User Access Report"));
- while((ch = getopt_long_only(argc, argv, "a:b:c:d:e:f:g:u:l:L:o:s:t:w:P:hijmnprvxyz",long_options,&option_index)) != -1){
+ while((ch = getopt_long_only(argc, argv, "a:b:c:d:e:f:g:hikl:L:mno:P:prs:t:u:vw:xyz",long_options,&option_index)) != -1){
switch(ch)
{
case 0:
case 'i':
iprel=true;
break;
+ case 'k':
+ KeepTempLog=true;
+ break;
case 'l':
if (NAccessLog>=MAXLOGS) {
debuga(_("Too many log files passed on command line with option -l.\n"));
if(strcmp(df,"w") == 0)
debuga(_(" Date format (-g) = Sites & Users (yyyy/ww)\n"));
debuga(_(" IP report (-i) = %s\n"),(iprel) ? _("Yes") : _("No"));
+ debuga(_(" Keep temporary files (-k) = %s\n"),(KeepTempLog) ? _("Yes") : _("No"));
for (iarq=0 ; iarq<NAccessLog ; iarq++)
debuga(_(" Input log (-l) = %s\n"),AccessLog[iarq]);
for (iarq=0 ; iarq<NRedirectorLogs ; iarq++)
if(strcmp(df,"w") == 0)
printf(_(" Date format (-g) = Sites & Users (yyyy/ww)\n"));
printf(_(" IP report (-i) = %s\n"),(iprel) ? _("Yes") : _("No"));
+ printf(_(" Keep temporary files (-k) = %s\n"),(KeepTempLog) ? _("Yes") : _("No"));
for (iarq=0 ; iarq<NAccessLog ; iarq++)
printf(_(" Input log (-l) = %s\n"),AccessLog[iarq]);
for (iarq=0 ; iarq<NRedirectorLogs ; iarq++)
debuga(_("sort command: %s\n"),csort);
exit(EXIT_FAILURE);
}
- if (unlink(denied_unsort)) {
- debuga(_("Cannot delete %s - %s\n"),denied_unsort,strerror(errno));
+ if (!KeepTempLog && unlink(denied_unsort)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),denied_unsort,strerror(errno));
exit(EXIT_FAILURE);
}
}
gerarel();
if((ReportType & REPORT_TYPE_DENIED) != 0) {
- unlink(denied_sort);
+ if (!KeepTempLog && unlink(denied_sort))
+ debuga(_("Cannot delete \"%s\": %s\n"),denied_sort,strerror(errno));
}
- if(strcmp(tmp,"/tmp") != 0) {
+ if(!KeepTempLog && strcmp(tmp,"/tmp") != 0) {
unlinkdir(tmp,0);
}
debuga(_("sort command: %s\n"),cmd);
exit(EXIT_FAILURE);
}
- if (unlink(template1)) {
- debuga(_("Cannot delete %s - %s\n"),template1,strerror(errno));
+ if (!KeepTempLog && unlink(template1)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),template1,strerror(errno));
exit(EXIT_FAILURE);
}
datashow(template2);
puts("</table>\n</div>\n</body>\n</html>\n");
fclose(fin);
- if (unlink(tmp)) {
- debuga(_("Cannot delete %s - %s\n"),tmp,strerror(errno));
+ if (!KeepTempLog && unlink(tmp)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp,strerror(errno));
exit(EXIT_FAILURE);
}
fflush(NULL);
exit(EXIT_FAILURE);
}
- if (unlink(guard_in)) {
- debuga(_("Cannot delete %s - %s\n"),guard_in,strerror(errno));
+ if (!KeepTempLog && unlink(guard_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),guard_in,strerror(errno));
exit(EXIT_FAILURE);
}
return;
snprintf(squidguard_in,sizeof(squidguard_in),"%s/redirector.int_log",tmp);
if(!redirector_count) {
- unlink(squidguard_in);
+ 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"));
return;
}
if (fclose(fp_ou)==EOF)
debuga(_("Failed to close file %s - %s\n"),report,strerror(errno));
- if (unlink(squidguard_in)) {
- debuga(_("Cannot delete %s - %s\n"),squidguard_in,strerror(errno));
+ if (!KeepTempLog && unlink(squidguard_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),squidguard_in,strerror(errno));
exit(EXIT_FAILURE);
}
debuga(_("Failed to close temporary file for user %s - %s\n"),uinfo->filename,strerror(errno));
fp_tmp=NULL;
}
- if (unlink(tmp3)) {
- debuga(_("Cannot delete %s - %s\n"),tmp3,strerror(errno));
+ if (!KeepTempLog && unlink(tmp3)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp3,strerror(errno));
exit(EXIT_FAILURE);
}
}
# re:/\.dropbox\.com(:443)?/ dropbox
# re:/([\w-]+)\.(\w*[a-zA-Z]\w*)(?::\d+)?$/\1.\2
#hostalias /usr/local/sarg/hostalias
+
+# TAG: keep_temp_log yes|no
+# Keep temporary files created by sarg to produce its reports. The normal
+# operation mode is to delete those files when they are not necessary any more.
+#
+# Never leave that option to "yes" for normal operation as temporary files
+# left over by previous run can be included in subsequent reports.
+#
+# Use this option only to diagnose a problem with your reports. A better
+# alternative is to run sarg from the command line with optino -k.
+#keep_temp_log no
}
if (ourl) free(ourl);
- if (unlink(general2)) {
- debuga(_("Cannot delete %s - %s\n"),general2,strerror(errno));
+ if (!KeepTempLog && unlink(general2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),general2,strerror(errno));
exit(EXIT_FAILURE);
}
debuga(_("sort command: %s\n"),csort);
exit(EXIT_FAILURE);
}
- if (unlink(smart_in)) {
- debuga(_("Cannot delete %s - %s\n"),smart_in,strerror(errno));
+ if (!KeepTempLog && unlink(smart_in)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),smart_in,strerror(errno));
exit(EXIT_FAILURE);
}
debuga(_("sort command: %s\n"),csort);
exit(EXIT_FAILURE);
}
- if (unlink(arqin)) {
- debuga(_("Cannot delete %s - %s\n"),arqin,strerror(errno));
+ if (!KeepTempLog && unlink(arqin)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),arqin,strerror(errno));
exit(EXIT_FAILURE);
}
debuga(_("user name too long for %s/%s.unsort\n"),tmp,user);
exit(EXIT_FAILURE);
}
- if (unlink(csort)) {
- debuga(_("Cannot delete %s - %s\n"),csort,strerror(errno));
+ if (!KeepTempLog && unlink(csort)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),csort,strerror(errno));
exit(EXIT_FAILURE);
}
}
#endif
- if (unlink(general2)) {
- debuga(_("Cannot delete %s - %s\n"),general2,strerror(errno));
+ if (!KeepTempLog && unlink(general2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),general2,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(general3)) {
- debuga(_("Cannot delete %s - %s\n"),general3,strerror(errno));
+ if (!KeepTempLog && unlink(general3)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),general3,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(top2)) {
- debuga(_("Cannot delete %s - %s\n"),top2,strerror(errno));
+ if (!KeepTempLog && unlink(top2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),top2,strerror(errno));
exit(EXIT_FAILURE);
}
} else {
sprintf(val1,"%s/d%s.html",outdirname,uinfo->filename);
if (unlink(val1)) {
- debuga(_("Cannot delete %s - %s\n"),val1,strerror(errno));
+ debuga(_("Cannot delete \"%s\": %s\n"),val1,strerror(errno));
exit(EXIT_FAILURE);
}
}
topcount++;
}
fclose(fp_top1);
- if (unlink(top1)) {
- debuga(_("Cannot delete %s - %s\n"),top1,strerror(errno));
+ if (!KeepTempLog && unlink(top1)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),top1,strerror(errno));
exit(EXIT_FAILURE);
}
longline_destroy(&line);
exit(EXIT_FAILURE);
}
- if (unlink(tmp3)) {
- debuga(_("Cannot delete %s - %s\n"),tmp3,strerror(errno));
+ if (!KeepTempLog && unlink(tmp3)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp3,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(tmp2)) {
- debuga(_("Cannot delete %s - %s\n"),tmp2,strerror(errno));
+ if (!KeepTempLog && unlink(tmp2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp2,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(tmp3)) {
- debuga(_("Cannot delete %s - %s\n"),tmp3,strerror(errno));
+ if (!KeepTempLog && unlink(tmp3)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp3,strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
- if (unlink(tmp2)) {
- debuga(_("Cannot delete %s - %s\n"),tmp2,strerror(errno));
+ if (!KeepTempLog && unlink(tmp2)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp2,strerror(errno));
exit(EXIT_FAILURE);
}
if (fclose(fp_ht)==EOF)
debuga(_("Failed to close file %s - %s\n"),hfile,strerror(errno));
- if (unlink(tmp3)) {
- debuga(_("Cannot delete %s - %s\n"),tmp3,strerror(errno));
+ if (!KeepTempLog && unlink(tmp3)) {
+ debuga(_("Cannot delete \"%s\": %s\n"),tmp3,strerror(errno));
exit(EXIT_FAILURE);
}