Prepare the transition to gettext.
SET(sarg_VERSION 2)
SET(sarg_REVISION "3rc1")
SET(sarg_BUILD "")
-SET(sarg_BUILDDATE "Feb-02-2010")
+SET(sarg_BUILDDATE "Feb-04-2010")
INCLUDE(AddFileDependencies)
INCLUDE(CheckIncludeFile)
datadir=@datadir@
exec_prefix=@exec_prefix@
PACKAGE_TARNAME=@PACKAGE_TARNAME@
-docdir=@docdir@
-CC = @CC@
-BINDIR = @bindir@
-IBINDIR = -DBINDIR=\"@bindir@\"
-MANDIR = @mandir@
-SYSCONFDIR = @sysconfdir@
-SARGPHPDIR = @SARGPHPDIR@
-LANGDIR = @LANGDIR@
-FONTDIR = @FONTDIR@
-IMAGEDIR = @IMAGEDIR@
-ISYSCONFDIR = -DSYSCONFDIR=\"@sysconfdir@\"
-ISARGPHPDIR = -DSARGPHPDIR=\"@SARGPHPDIR@\"
-ILANGDIR = -DLANGDIR=\"@LANGDIR@\"
-IFONTDIR = -DFONTDIR=\"@FONTDIR@\"
-IIMAGEDIR = -DIMAGEDIR=\"@IMAGEDIR@\"
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-DEFS = @DEFS@
-LIBS = @LIBS@
-SRCDIR = .
-VPATH = .
-INSTALL = cp
+docdir = @docdir@
+CC = @CC@
+BINDIR = @bindir@
+MANDIR = @mandir@
+SYSCONFDIR = @sysconfdir@
+SARGPHPDIR = @SARGPHPDIR@
+LANGDIR = @LANGDIR@
+FONTDIR = @FONTDIR@
+IMAGEDIR = @IMAGEDIR@
+LOCALEDIR = $(datadir)/locale
+IBINDIR = -DBINDIR=\"@bindir@\"
+ISYSCONFDIR = -DSYSCONFDIR=\"@sysconfdir@\"
+ISARGPHPDIR = -DSARGPHPDIR=\"@SARGPHPDIR@\"
+ILANGDIR = -DLANGDIR=\"@LANGDIR@\"
+IFONTDIR = -DFONTDIR=\"@FONTDIR@\"
+IIMAGEDIR = -DIMAGEDIR=\"@IMAGEDIR@\"
+ILOCALEDIR = -DLOCALEDIR=\"$(localedir)\"
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+DEFS = $(IBINDIR) $(ISYSCONFDIR) $(ILANGDIR) $(IFONTDIR) $(IIMAGEDIR) $(ISARGPHPDIR) $(ILOCALEDIR) @DEFS@
+LIBS = @LIBS@
+SRCDIR = .
+VPATH = .
+INSTALL = cp
INSTALL_PROGRAM = $(INSTALL)
all: sarg
.c.o:
- $(CC) -c -I. $(CPPFLAGS) $(DEFS) $(CFLAGS) $(IBINDIR) $(ISYSCONFDIR) $(ILANGDIR) $(IFONTDIR) $(IIMAGEDIR) $(ISARGPHPDIR) $<
+ $(CC) -c -I. $(CPPFLAGS) $(DEFS) $(CFLAGS) $<
sarg: $(OBJS)
$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) $(LIBCRYPT)
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- if(strlen(FontFace) > 0) fprintf(fp_ou,"<font face=%s>\n",FontFace);
- fprintf(fp_ou,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou,"..");
- fputs("<div align=\"center\"><table cellpadding=0 cellspacing=0>\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Authentication Failures"));
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[117]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><td class=\"data2\">%s</td><td class=\"data2\">%s</td><td class=\"data2\">%s-%s</td><td class=\"data2\">%s<a href=\"%s\">%s</a></td></th>\n",name,ip,data,hora,BlockImage,url,url);
}
-
- fputs("</table>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
unlink(authfail_in);
}
fprintf(fp_css,"<style type=\"text/css\">\n");
- fprintf(fp_css,".logo {font-family:Verdana,Tahoma,Arial;font-size:11px;color:%s;vertical-align:middle;border:none;padding:0px;}\n",LogoTextColor);
+
+ fprintf(fp_css,".logo {font-family:Verdana,Tahoma,Arial;font-size:11px;color:%s;text-align:center;vertical-align:middle;border:none;padding:0px;margin-bottom:5px;}\n",LogoTextColor);
fprintf(fp_css,".logo th {padding:0px;}\n");
fprintf(fp_css,".logo img {vertical-align:middle;padding:0px;border:0px none;}\n");
fprintf(fp_css,".body {font-family:%s;color:%s;background-color:%s;}\n",FontFace,TxColor,BgColor);
- fprintf(fp_css,".info {font-family:%s;font-size:10px;}\n", FontFace);
+ fprintf(fp_css,".info {font-family:%s;font-size:10px;text-align:center;margin-top:1em;margin-bottom:1em;}\n", FontFace);
fprintf(fp_css,".info a:link,a:visited {font-family:%s;color:#0000FF;font-size:10px;text-decoration:none;}\n", FontFace);
- fprintf(fp_css,".title {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:center;}\n",FontFace,TitleFontSize,TiColor,BgColor);
- fprintf(fp_css,".title2 {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:left;}\n",FontFace,TitleFontSize,TiColor,BgColor);
- fprintf(fp_css,".title3 {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:right;}\n",FontFace,TitleFontSize,TiColor,BgColor);
+ fprintf(fp_css,".title {width:100%%;text-align:center;}\n");
+ fprintf(fp_css,"div.title > table {margin:auto;}\n");
+ fprintf(fp_css,".title_c {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:center;}\n",FontFace,TitleFontSize,TiColor,BgColor);
+ fprintf(fp_css,".title_l {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:left;}\n",FontFace,TitleFontSize,TiColor,BgColor);
+ fprintf(fp_css,".title_r {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:right;}\n",FontFace,TitleFontSize,TiColor,BgColor);
+
+ fprintf(fp_css,".index {width:100%%;text-align:center;}\n");
+ fprintf(fp_css,"div.index > table {margin:auto;}\n");
+ fprintf(fp_css,".report {width:100%%;text-align:center;}\n");
+ fprintf(fp_css,"div.report > table {margin:auto;}\n");
fprintf(fp_css,".header_l {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:left;border-right:1px solid #666666;border-bottom:1px solid #666666;}\n",FontFace,HeaderFontSize,HeaderColor,HeaderBgColor);
fprintf(fp_css,".header_r {font-family:%s;font-size:%s;color:%s;background-color:%s;text-align:right;border-right:1px solid #666666;border-bottom:1px solid #666666;}\n",FontFace,HeaderFontSize,HeaderColor,HeaderBgColor);
fprintf(fp_css,".text {font-family:%s;color:%s;font-size:%s;background-color:%s;text-align:right;}\n", FontFace, TxColor, FontSize, TxBgColor);
fprintf(fp_css,".link {font-family:%s;font-size:%s;color:#0000FF;}\n", FontFace, FontSize);
- fprintf(fp_css,".link a:link,a:visited {font-family:%s;font-size:%s;color:#0000FF;text-decoration:none;}\n</style>\n", FontFace, FontSize);
+ fprintf(fp_css,".link a:link,a:visited {font-family:%s;font-size:%s;color:#0000FF;text-decoration:none;}\n", FontFace, FontSize);
+
+ fprintf(fp_css,"a > img {border:none;}\n");
+
+ fputs("</style>\n",fp_css);
}
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- if(strlen(FontFace) > 0) fprintf(fp_ou,"<font face=%s>\n",FontFace);
- fprintf(fp_ou,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou,"..");
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("DansGuardian"));
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[128]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[111],text[110],text[91],text[129]);
fprintf(fp_ou,"<tr><td class=\"data2\" nospaw>%s</td><td class=\"data2\" nospaw>%s</td><td class=\"data2\" nospaw>%s-%s</td><td class=\"data2\" nospaw><a href=\"http://%s\">%s</a></td><td class=\"data2\" nospaw>%s</td></tr>\n",name,ip,date,hour,url,url,rule);
}
-
- fputs("</table>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
unlink(dansguardian_in);
char ipantes[MAXLEN], nameantes[MAXLEN];
char accsmart[MAXLEN];
char crc2[50];
- char wdname[MAXLEN];
char *str;
DIR *dirp;
struct dirent *direntp;
long long int oucache=0;
long long int accbytes;
long long int accelap;
+ int dlen;
struct getwordstruct gwarea;
+ const char logext[]=".log";
ipantes[0]='\0';
nameantes[0]='\0';
dirp = opendir(tmp);
while ( (direntp = readdir( dirp )) != NULL ) {
- if(strstr(direntp->d_name,".log") == 0)
+ dlen=strlen(direntp->d_name)-(sizeof(logext)-1);
+ if (dlen<=0) continue;
+ if(strcmp(direntp->d_name+dlen,logext) != 0)
continue;
+
if (snprintf(tmp3,sizeof(tmp3),"%s/%s",tmp,direntp->d_name)>=sizeof(tmp3)) {
fprintf(stderr,"SARG: (datafile) directory path too long: %s/%s\n",tmp,direntp->d_name);
exit(1);
fprintf(stderr, "SARG: (datafile) %s: %s\n",text[45],tmp);
exit(1);
}
- strcpy(wdname,direntp->d_name);
- str=strchr(wdname,'.');
- if (str) *str='\0';
- strcat(user,wdname);
ttopen=0;
while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
}
fclose(fp_in);
-}
+ }
(void)closedir( dirp );
if(debug)
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou, "..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</b></th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("DENIED"));
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[46]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[111],text[110],text[91]);
}
if(BlockIt[0] != '\0')
- sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a> ",wwwDocumentRoot,BlockIt,url,ImageFile);
+ sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\"></a> ",wwwDocumentRoot,BlockIt,url,ImageFile);
else BlockImage[0]='\0';
- fprintf(fp_ou,"<tr><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s-%s</td><td class=\"data2\">%s<a href=\"%s\">%s</a></td></th>\n",name,ip,data,hora,BlockImage,url,url);
+ fprintf(fp_ou,"<tr><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s-%s</td><td class=\"data2\">%s<a href=\"http://%s\">%s</a></td></tr>\n",name,ip,data,hora,BlockImage,url,url);
}
-
- fputs("</table>\n",fp_ou);
-
- show_info(fp_ou);
- fputs("</body></html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
unlink(denied_in);
-/*! \fn void show_sarg(FILE *fp_ou, const char *ind)
+/*! \fn void show_sarg(FILE *fp_ou, int depth)
Write the header of the report to tell that it was generated by sarg.
\param fp_ou The handle of the HTML file.
-\param ind The path to use to have access to the images directory with the sarg logo. It is a succession of ..
-to move up until the root of the reports with the images directory.
+\param depth How deep is the page in the directory tree. It is used to prepend the images directory name
+with as many .. as necessary. If the page is at the same level as the image directory, the depth is zero.
*/
-/*! \fn void write_html_header(FILE *fp_ou, const char * ind)
+/*! \fn void write_html_header(FILE *fp_ou, int depth, const char *title)
Write the HTML header of a HTML report file. The DTD correspond to a
transitional HTML version 4.01. The title of the document is taken from
the global variable ::Title.
\param fp_ou The file to which the HTML header is written.
-\param ind The path to pass to show_arg() to find the root directory where the
-images directory is.
+\param depth How deep is the page in the directory tree. The depth is passed to show_sarg().
+\param title The title of the page.
+*/
+
+
+
+
+
+/*! \fn void close_html_header(FILE *fp_ou)
+Close the header opened by write_html_header().
+
+\param fp_ou The file to which the HTML header is written.
*/
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
-
- fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
-
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou, "..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Downloads"));
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[125]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[111],text[110],text[91]);
fprintf(fp_ou,"<tr><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s-%s</td><td class=\"data2\">",name,ip,data,hora);
if(BlockIt[0]!='\0')
- fprintf(fp_ou,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a> ",wwwDocumentRoot,BlockIt,url,ImageFile);
+ fprintf(fp_ou,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\"></a> ",wwwDocumentRoot,BlockIt,url,ImageFile);
fprintf(fp_ou,"<a href=\"%s\">",url);
output_html_string(fp_ou,url);
fputs("</a></td></tr>\n",fp_ou);
}
-
- fputs("</table>\n",fp_ou);
-
- show_info(fp_ou);
- fputs("</body>\n</html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
unlink(report_in);
if (getparam_string("mail_utility",buf,MailUtility,sizeof(MailUtility))>0) return;
- if (getparam_string("topsites_num",buf,TopSitesNum,sizeof(TopSitesNum))>0) return;
+ if (getparam_int("topsites_num",buf,&TopSitesNum)>0) return;
if (getparam_int("topuser_num",buf,&TopUsersNum)>0) return;
exit(1);
}
- fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n",fp_ou);
- fputs("<html>\n",fp_ou);
- fputs("<head>\n",fp_ou);
- fprintf(fp_ou," <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 4 : 2,_("User report"));
+ fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
+ fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[90],name2);
+ fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
+ fprintf(fp_ou,"<tr><td class=\"header_c\">%s %s</td></tr>\n",text[32],text[55]);
+ //fputs("<tr><td></td></tr>\n",fp_ou);
+ close_html_header(fp_ou);
- fprintf(fp_ou,"<body style=\"font-family:%s;font-size:%s;background-color:%s; \
- background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
-
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../../..");
- else
- show_sarg(fp_ou, "../..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\" colspan=\"2\">%s</th></tr>\n",Title);
-
- fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s</td></tr>\n",text[89],period);
- fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s</td></tr>\n",text[90],name2);
- fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
- fprintf(fp_ou,"<tr><td class=\"header_c\" colspan=\"2\">%s %s</td></tr>\n",text[32],text[55]);
- fputs("<tr><td></td></tr>\n",fp_ou);
-
- fputs("</table></div>\n",fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"2\" cellspacing=\"1\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"2\" cellspacing=\"1\">\n",fp_ou);
if(denied_report[0]!='\0') {
fprintf(fp_ou,"<tr><td class=\"header_l\" colspan=\"11\"><a href=\"denied_%s.html\">%s</a> %s</td></tr>\n",denied_report,text[116],text[55]);
else
strcpy(tmp6,"../../images");
- if((ReportType & REPORT_TYPE_SITE_USER_TIME_DATE) != 0) {
- strcpy(ltext110,text[110]);
- for(s=ltext110; *s; ++s)
- *s=tolower(*s);
- strcpy(siteind,urly);
- str=siteind;
- for(z1=0; str[z1]; z1++) {
- if(str[z1]=='?' || str[z1]=='-' || str[z1]=='.' || str[z1]==':' || str[z1]=='/' || str[z1]=='\\' || str[z1]=='*' ||
- str[z1]=='\'' || str[z1]=='\"' || str[z1]=='$')
- str[z1]='_';
- }
- fprintf(fp_ou,"<td class=\"data\"><a href=\"tt%s-%s.html\"><img src=\"%s/datetime.png\" border=\"0\" title=\"%s %s\" alt=\"T\"></a></td>",usuario,siteind,tmp6,ltext110,text[55]);
- } else {
- fprintf(fp_ou,"<td class=\"data\"></td>");
- }
-
if(!LongUrl) {
char *endofhost=strchr(url,'/');
if (endofhost) *endofhost='\0';
}
}
+ if((ReportType & REPORT_TYPE_SITE_USER_TIME_DATE) != 0) {
+ strcpy(ltext110,text[110]);
+ for(s=ltext110; *s; ++s)
+ *s=tolower(*s);
+ for(z1=0; urly[z1]; z1++) {
+ if(urly[z1]=='?' || urly[z1]=='-' || urly[z1]=='.' || urly[z1]==':' || urly[z1]=='/' || urly[z1]=='\\' ||
+ urly[z1]=='*' || urly[z1]=='\'' || urly[z1]=='\"' || urly[z1]=='$')
+ siteind[z1]='_';
+ else
+ siteind[z1]=urly[z1];
+ }
+ siteind[z1]='\0';
+ fprintf(fp_ou,"<td class=\"data\"><a href=\"tt%s-%s.html\"><img src=\"%s/datetime.png\" title=\"%s %s\" alt=\"T\"></a></td>",usuario,siteind,tmp6,ltext110,text[55]);
+ } else {
+ fprintf(fp_ou,"<td class=\"data\"></td>");
+ }
+
if(Privacy)
fprintf(fp_ou,"<td class=\"data2\"><span style=\"color:%s;\">%s</span></td>",PrivacyStringColor,PrivacyString);
else {
if(BlockIt[0]!='\0') {
- fprintf(fp_ou,"<td class=\"data2\"><a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a><a href=\"http://%s\"> %s</a></td>",wwwDocumentRoot,BlockIt,urly,tmp6,urly,urly);
+ fprintf(fp_ou,"<td class=\"data2\"><a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\"></a><a href=\"http://%s\"> %s</a></td>",wwwDocumentRoot,BlockIt,urly,tmp6,urly,urly);
} else
fprintf(fp_ou,"<td class=\"data2\"><a href=\"http://%s\" title=\"%s\">%s</a></td>",urly,urly,url);
}
}
fputs("</table></div>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
+ write_html_trailer(fp_ou);
fclose(fp_ou);
htaccess(wusuario);
#define mkstemp(template) mkstemps(template,0)
#endif
+#ifdef ENABLE_NLS
+#include <libintl.h>
+#define _(String) gettext(String)
+#ifdef gettext_noop
+#define N_(String) gettext_noop(String)
+#else
+#define N_(String) (String)
+#endif
+#else /* No NLS */
+#define _(String) (String)
+#define N_(String) (String)
+#define textdomain(String)
+#define bindtextdomain(Domain,Directory)
+#endif
+
#if defined(__MINGW32__)
#define mkdir(p,m) _mkdir(p)
char RecordsWithoutUser[20];
int UseComma;
char MailUtility[PATH_MAX];
-char TopSitesNum[20];
+int TopSitesNum;
int TopUsersNum;
char ExcludeCodes[256];
char TopsitesSortField[15];
int authfail_count;
int dansguardian_count;
int squidguard_count;
+int useragent_count;
int limit_flag;
int color1;
int color2;
char *fixtime(long int elap);
void fixendofline(char *str);
void show_info(FILE *fp_ou);
-void show_sarg(FILE *fp_ou, const char *ind);
+void show_sarg(FILE *fp_ou, int depth);
void write_logo_image(FILE *fp_ou);
-void write_html_header(FILE *fp_ou, const char * ind);
+void write_html_header(FILE *fp_ou, int depth, const char *title);
+void close_html_header(FILE *fp_ou);
void write_html_trailer(FILE *fp_ou);
void output_html_string(FILE *fp_ou,const char *str);
void subs(char *str, int size, char *from, char *to);
-#define VERSION PACKAGE_VERSION" Feb-02-2010"
+#define VERSION PACKAGE_VERSION" Feb-04-2010"
#define PGM PACKAGE_NAME
#define URL "http://sarg.sourceforge.net"
char monthnum[10];
char dayindex[MAXLEN];
char daynum[10];
+ char title[80];
int yearsort[150];
int nyears;
int year;
fprintf(stderr, "SARG: (index) %s: %s - %s\n",text[45],yearindex,strerror(errno));
exit(1);
}
- write_html_header(fp_ou, ".");
+ write_html_header(fp_ou,0,"SARG reports");
+ close_html_header(fp_ou);
+ fputs("<div class=\"index\"><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[130],text[132]);
for (y=0 ; y<nyears ; y++) {
if (order>0)
fprintf(stderr, "SARG: (index) %s: %s - %s\n",text[45],monthindex,strerror(errno));
exit(1);
}
- write_html_header(fp_ou2,"..");
+ snprintf(title,sizeof(title),"SARG: report for %04d",year);
+ write_html_header(fp_ou2,1,title);
+ close_html_header(fp_ou2);
+ fputs("<div class=\"index\"><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",fp_ou2);
fprintf(fp_ou2,"<tr><th class=\"header_l\">%s/%s</th></tr>\n",text[130],text[131]);
for (m=0 ; m<nmonths ; m++) {
if (order>0)
fprintf(stderr, "SARG: (index) %s: %s - %s\n",text[45],dayindex,strerror(errno));
exit(1);
}
- write_html_header(fp_ou3,"../..");
+ snprintf(title,sizeof(title),"SARG: report for %04d/%02d",year,month);
+ write_html_header(fp_ou3,2,title);
+ close_html_header(fp_ou3);
+ fputs("<div class=\"index\"><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",fp_ou3);
fprintf(fp_ou3,"<tr><th class=\"header_l\">%s/%s/%s</th></tr>\n",text[130],text[131],text[127]);
for (d=0 ; d<ndays ; d++) {
if (order>0)
}
fprintf(fp_ou3,"<tr><td class=\"data2\"><a href=\"%s/index.html\">%s %s %s</a></td></tr>\n",daynum,yearnum,nmonth,daynum);
}
+ fputs("</table></div>\n",fp_ou3);
write_html_trailer(fp_ou3);
fclose(fp_ou3);
}
+ fputs("</table></div>\n",fp_ou2);
write_html_trailer(fp_ou2);
fclose(fp_ou2);
}
+ fputs("</table></div>\n",fp_ou);
write_html_trailer(fp_ou);
fclose(fp_ou);
}
fprintf(stderr, "SARG: (index) %s: %s\n",text[45],wdir);
exit(1);
}
- write_html_header(fp_ou,".");
+ write_html_header(fp_ou,0,"SARG reports");
+ close_html_header(fp_ou);
+ fputs("<div class=\"index\"><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[101],text[102],text[103],text[93],text[96]);
for (i=0 ; i<nsort ; i++) {
if (order>0)
obttotal(outdir,item->dirname,tbytes,tuser,media);
fprintf(fp_ou,"<tr><td class=\"data2\"><a href='%s/%s'>%s</a></td><td class=\"data2\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",item->dirname,ReplaceIndex,item->dirname,item->date,tuser,tbytes,media);
}
+ fputs("</table></div>\n",fp_ou);
write_html_trailer(fp_ou);
fclose(fp_ou);
strcpy(RecordsWithoutUser,"ip");
UseComma=0;
strcpy(MailUtility,"mailx");
- strcpy(TopSitesNum,"100");
+ TopSitesNum=100;
UserIp=0;
strcpy(TopuserSortField,"BYTES");
strcpy(UserSortField,"BYTES");
authfail_count=0;
dansguardian_count=0;
squidguard_count=0;
+ useragent_count=0;
DeniedReportLimit=10;
AuthfailReportLimit=10;
DansGuardianReportLimit=10;
#ifdef HAVE_LOCALE_H
setlocale(LC_TIME,"");
+ setlocale (LC_MESSAGES, "");
#endif
+ bindtextdomain (PACKAGE_NAME, LOCALEDIR);
+ textdomain (PACKAGE_NAME);
NAccessLog=0;
for(x=0; x<=MAXLOGS; x++)
puts("</head>\n");
printf(buf,"<body style=\"font-family:%s;font-size:%s;background-color:%s;background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
puts("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"1\">\n");
- printf("<tr><th class=\"title2\" colspan=\"10\">SARG %s</th></tr>\n",text[134]);
+ printf("<tr><th class=\"title_l\" colspan=\"10\">SARG %s</th></tr>\n",text[134]);
printf("<tr><th class=\"text\" colspan=\"10\">%s: %d s</th></tr>\n",text[136],realtime_refresh);
printf("<tr><th class=\"header_c\">%s</th><th class=\"header_c\">%s</th><th class=\"header_c\">%s</th><th class=\"header_c\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[110],text[111],text[98],text[135],text[91]);
}
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- //if(strlen(FontFace) > 0) fprintf(fp_ou,"<font face=%s>\n",FontFace);
- fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../../..");
- else
- show_sarg(fp_ou, "../..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\" colspan=\"2\">%s</th></tr>\n",Title);
-
- fputs("</table></div>\n",fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 4 : 2,_("Day report"));
+ close_html_header(fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
fprintf(fp_ou,"<tr><td class=\"header_c\" colspan=\"2\">%s: %s</td></tr>\n",text[89],period);
fputs("<tr><td></td></tr><tr><td></td></tr>\n",fp_ou);
fputs("<tr><td></td></tr><tr><td></td></tr></table>\n",fp_ou);
- fputs("<table cellpadding=\"0\" cellspacing=\"2\">\n", fp_ou);
+ fputs("<table class=\"report\" cellpadding=\"0\" cellspacing=\"2\">\n", fp_ou);
fputs( "<tr><td></td>\n", fp_ou );
ttt+=elap;
}
+ fclose(fp_in);
for( i = 0; i < hours.len; i++ )
sprintf(c[ hours.list[ i ] ],"%s",fixtime(v[ hours.list[ i ] ]));
fprintf(fp_ou, "<td class=\"header_r\">%s</td>\n", c[ hours.list[ i ] ] );
fprintf(fp_ou, "<td class=\"header_r\">%s</td></tr>\n", fixtime(ttt) );
- fputs("</table></div>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
- fclose(fp_in);
+ fputs("</table>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
return;
}
for(str=ltext110; *str; ++str)
*str=tolower(*str);
- fprintf(fp_tt, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_tt);
- fputs("</head>\n",fp_tt);
- fprintf(fp_tt,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_tt);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_tt, "../../../..");
- else
- show_sarg(fp_tt, "../..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_tt);
- fprintf(fp_tt,"<tr><th class=\"title\" colspan=\"2\">%s</th></tr>\n",Title);
-
- fprintf(fp_tt,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s</td></tr>\n",text[89],period);
- fprintf(fp_tt,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s</td></tr>\n",text[90],name);
- fprintf(fp_tt,"<tr><td class=\"header_l\" colspan=\"2\">%s: %s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
- fprintf(fp_tt,"<tr><th class=\"header_c\" colspan=\"2\">%s</th></tr>\n",text[32]);
-
- fputs("</table></div>\n",fp_tt);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_tt);
+ write_html_header(fp_tt,(IndexTree == INDEX_TREE_DATE) ? 4 : 2,_("Site access report"));
+ fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
+ fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[90],name);
+ fprintf(fp_tt,"<tr><td class=\"header_l\">%s: %s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
+ fprintf(fp_tt,"<tr><th class=\"header_c\">%s</th></tr>\n",text[32]);
+ close_html_header(fp_tt);
+
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_tt);
fputs("<tr><td></td><td></td></tr>",fp_tt);
bzero(tmp4, MAXLEN);
strncpy(tmp4,text[110],4);
ttopen=0;
if(fp_tt) {
- fputs("</table>\n",fp_tt);
+ fputs("</table>\n</div>\n",fp_tt);
fputs("</body>\n</html>\n",fp_tt);
fclose(fp_tt);
}
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- //if(strlen(FontFace) > 0) fprintf(fp_ou,"<font face=\"%s\">\n",FontFace);
- fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou, "..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Sites & Users"));
fprintf(fp_ou,"<tr><td class=\"header_c\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[85]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
if(BytesInSitesUsersReport)
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[100],text[91],text[93],text[103]);
}
if(BlockIt[0]!='\0')
- sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"../images/sarg-squidguard-block.png\" border=\"0\"></a> ",wwwDocumentRoot,BlockIt,ourl);
+ sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"../images/sarg-squidguard-block.png\"></a> ",wwwDocumentRoot,BlockIt,ourl);
else BlockImage[0]='\0';
if(strcmp(url,ourl) != 0 && nsitesusers) {
obytes=nbytes;
}
}
+ fclose(fp_in);
if(nsitesusers) {
fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\"><a href=\"http://%s\">%s</a></td><td class=\"data2\">%s</td></tr>\n",regs,ourl,ourl,users);
unlink(general2);
- fputs("</table>\n</div>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
- fclose(fp_in);
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
if(users)
exit(1);
}
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- if(strlen(FontFace) > 0) fprintf(fp_ou,"<font face=%s>\n",FontFace);
- fprintf(fp_ou,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou, "../../..");
- else
- show_sarg(fp_ou,"..");
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("SQUIDGUARD"));
fprintf(fp_ou,"<tr><td class=\"header_l\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_ou,"<tr><th class=\"header_c\">%s</th></tr>\n",text[120]);
- fputs("</table></div>\n",fp_ou);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=1 cellspacing=2>\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=1 cellspacing=2>\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[111],text[110],text[91],text[121]);
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://%s\">%s</a></td><td class=\"data2\">%s</td></th>\n",name,ip,data,hora,url,url,rule);
}
-
- fputs("</table>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
unlink(squidguard_in);
exit(1);
}
- regs=0;
-
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ou);
- fputs("</head>\n",fp_ou);
- fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
- write_logo_image(fp_ou);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ou,"../../..");
- else
- show_sarg(fp_ou, "..");
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
- fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
-
+ write_html_header(fp_ou,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Top sites"));
fprintf(fp_ou,"<tr><td class=\"header_c\">%s: %s</td></tr>\n",text[89],period);
- fprintf(fp_ou,"<tr><th class=\"header_c\">%s %s %s</th></tr>\n",text[83],TopSitesNum,text[84]);
- fputs("</table></div>\n",fp_ou);
+ fprintf(fp_ou,"<tr><th class=\"header_c\">%s %d %s</th></tr>\n",text[83],TopSitesNum,text[84]);
+ close_html_header(fp_ou);
- fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
+ fputs("<div class=\"report\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
fputs("<tr><td></td></tr>\n",fp_ou);
fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th> \
<th class=\"header_l\">%s</th><th class=\"header_l\">%s</th> \
<th class=\"header_l\">%s</th></tr>\n", \
text[100],text[91],text[92],text[93],text[99]);
- regs=1;
+ regs=0;
ntopsites = 0;
- while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
- if(regs>atoi(TopSitesNum))
- break;
+ while(regs<TopSitesNum && fgets(buf,sizeof(buf),fp_in)!=NULL) {
getword_start(&gwarea,buf);
if (getword_atoll(&nacc,&gwarea,'\t')<0) {
printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",sites);
strcpy(wwork3,fixtime(twork3));
if(BlockIt[0] != '\0')
- sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"../images/sarg-squidguard-block.png\" border=\"0\"></a> ",wwwDocumentRoot,BlockIt,url);
+ sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"../images/sarg-squidguard-block.png\"></a> ",wwwDocumentRoot,BlockIt,url);
else BlockImage[0]='\0';
- fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\">%s<a href=\"http://%s\"><font class=\"link\">%s</font></a></td><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",regs,BlockImage,url,url,wwork1,wwork2,wwork3);
+ fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2 link\">%s<a href=\"http://%s\">%s</a></td><td class=\"data\">%s</td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",regs,BlockImage,url,url,wwork1,wwork2,wwork3);
regs++;
}
-
-
- fputs("</table>\n</div>\n",fp_ou);
-
- show_info(fp_ou);
-
- fputs("</body>\n</html>\n",fp_ou);
-
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ou);
+ write_html_trailer(fp_ou);
fclose(fp_ou);
return;
char ipantes[MAXLEN], nameantes[MAXLEN];
char sfield[10]="2,2";
char order[255]="-r";
+ char title[80];
int totuser=0;
int topcount=0;
char *s;
exit(1);
}
- fprintf(fp_top3, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_top3);
- fputs("</head>\n<body class=\"body\">",fp_top3);
- write_logo_image(fp_top3);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_top3, "../../..");
- else
- show_sarg(fp_top3, "..");
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_top3);
- fprintf(fp_top3,"<tr><th class=\"title\">%s</th></tr>\n",Title);
+ snprintf(title,sizeof(title),_("SARG report for %s"),period);
+ write_html_header(fp_top3,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,title);
fprintf(fp_top3,"<tr><td class=\"header_c\">%s: %s</td></tr>\n",text[89],period);
fprintf(fp_top3,"<tr><td class=\"header_c\">%s: %s, %s</td></tr>\n",text[104],TopuserSortField,TopuserSortOrder);
fprintf(fp_top3,"<tr><th class=\"header_c\">%s</th></tr>\n",text[137]);
- fputs("</table></div>\n",fp_top3);
+ close_html_header(fp_top3);
- fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_top3);
+ fputs("<div class=\"report\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_top3);
fputs("<tr><td> </td><td> </td></tr>\n",fp_top3);
- if((ReportType & REPORT_TYPE_TOPSITES) != 0 && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"topsites.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[119]);
- if((ReportType & REPORT_TYPE_SITES_USERS) != 0 && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"siteuser.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[85]);
- if(dansguardian_count) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"dansguardian.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[128]);
- if(squidguard_count) fprintf(fp_top3,"<tr><td class=\"link\" colspan=11><a href=\"squidguard.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[122]);
- if ((ReportType & REPORT_TYPE_DOWNLOADS) != 0 && download_count && !Privacy && ndownload) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"download.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[125]);
- if ((ReportType & REPORT_TYPE_DENIED) != 0 && denied_count && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"denied.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[118]);
- if ((ReportType & REPORT_TYPE_AUTH_FAILURES) != 0 && authfail_count && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"authfail.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[117]);
- if(smartfilter) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"11\"><a href=\"smartfilter.html\"><font class=\"link\">%s</font></a><font class=\"text\"></font></td></tr>\n",text[116]);
+ if((ReportType & REPORT_TYPE_TOPSITES) != 0 && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"topsites.html\">%s</a></td></tr>\n",text[119]);
+ if((ReportType & REPORT_TYPE_SITES_USERS) != 0 && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"siteuser.html\">%s</a></td></tr>\n",text[85]);
+ if(dansguardian_count) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"dansguardian.html\">%s</a></td></tr>\n",text[128]);
+ if(squidguard_count) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"squidguard.html\">%s</a></td></tr>\n",text[122]);
+ if ((ReportType & REPORT_TYPE_DOWNLOADS) != 0 && download_count && !Privacy && ndownload) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"download.html\">%s</a></td></tr>\n",text[125]);
+ if ((ReportType & REPORT_TYPE_DENIED) != 0 && denied_count && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"denied.html\">%s</a></td></tr>\n",text[118]);
+ if ((ReportType & REPORT_TYPE_AUTH_FAILURES) != 0 && authfail_count && !Privacy) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"authfail.html\">%s</a></td></tr>\n",text[117]);
+ if(smartfilter) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"smartfilter.html\">%s</a></td></tr>\n",text[116]);
+ if(UserAgentLog[0] != '\0' && useragent_count) fprintf(fp_top3,"<tr><td class=\"link\" colspan=\"0\"><a href=\"useragent.html\">%s</a></td></tr>\n",_("Useragent"));
fputs("<tr><td></td></tr>\n",fp_top3);
if ((ReportType & REPORT_TYPE_TOPUSERS) == 0) {
if(nacc < 1)
continue;
ntopuser = 1;
- if(TopUsersNum > 0 && topcount >= TopUsersNum) goto final;
+ if(TopUsersNum > 0 && topcount >= TopUsersNum) break;
tnbytes=nbytes;
tnelap=elap;
fputs("<td class=\"data2\">",fp_top3);
#ifdef HAVE_GD
if(Graphs) {
- fprintf(fp_top3,"<a href=\"%s/graph_day.png\"><img src=\"%s/graph.png\" border=\"0\" title=\"%s\" alt=\"G\"></a> ",user,ImageFile,text[126]);
+ fprintf(fp_top3,"<a href=\"%s/graph_day.png\"><img src=\"%s/graph.png\" title=\"%s\" alt=\"G\"></a> ",user,ImageFile,text[126]);
}
#endif
- fprintf(fp_top3,"<a href=\"%s/d%s.html\"><img src=\"%s/datetime.png\" border=\"0\" title=\"%s",user,user,ImageFile,ltext110);
+ fprintf(fp_top3,"<a href=\"%s/d%s.html\"><img src=\"%s/datetime.png\" title=\"%s",user,user,ImageFile,ltext110);
#ifdef HAVE_GD
fprintf(fp_top3," %s",text[55]);
#endif
topcount++;
}
+ fclose(fp_top1);
+ unlink(top1);
if((TopUserFields & TOPUSERFIELDS_TOTAL) != 0) {
-
fputs("<tr>",fp_top3);
if((TopUserFields & TOPUSERFIELDS_NUM) != 0)
fputs("<td></td>",fp_top3);
fputs("</tr>\n",fp_top3);
}
- if(UserAgentLog[0] != '\0') {
- fputs("<tr><td></td></tr>\n",fp_top3);
- fputs("<tr><td></td></tr>\n",fp_top3);
- fputs("<td align=\"left\" colspan=\"8\"><font size=-1><a href=\"useragent.html\">Useragent</a> Report</td>\n",fp_top3);
- }
-
- fputs("</table></div>",fp_top3);
-
- show_info(fp_top3);
-
-final:
- fclose(fp_top1);
- unlink(top1);
+ fputs("</table></div>\n",fp_top3);
+ write_html_trailer(fp_top3);
+ fclose(fp_top3);
if((fp_ou=fopen(tusr,"w"))==NULL) {
fprintf(stderr, "SARG: (topuser) %s: %s\n",text[45],tusr);
exit(1);
}
-
fprintf(fp_ou,"%d\n",totuser);
-
- fputs("</body>\n</html>\n",fp_top3);
- fclose(fp_top3);
fclose(fp_ou);
return;
}
buildymd(day,month,year,wdate);
ndate=atoi(wdate);
- if (ndate<dfrom || ndate>duntil) continue;
+ if (ndate<dfrom) continue;
+ if (ndate>duntil) break;
if(totregsl == 1)
strcpy(idate,data);
strcpy(fdate,data);
fprintf(fp_ou,"%s\t%s\t%s\n",ip,agent,user);
user[0]='\0';
+ useragent_count++;
}
if(debug) {
if(debug)
debuga("%s",text[72]);
- fprintf(fp_ht, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
- css(fp_ht);
- fputs("</head>\n",fp_ht);
- fputs("<body class=\"body\">\n",fp_ht);
- write_logo_image(fp_ht);
-
- if(IndexTree == INDEX_TREE_DATE)
- show_sarg(fp_ht, "../../..");
- else
- show_sarg(fp_ht,"..");
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
- fprintf(fp_ht,"<tr><th class=\"title\">%s</th></tr>\n",text[105]);
+ write_html_header(fp_ht,(IndexTree == INDEX_TREE_DATE) ? 3 : 1,_("Squid Useragent's Report"));
+ fprintf(fp_ht,"<tr><th class=\"header_c\">%s</th></tr>\n",text[105]);
fprintf(fp_ht,"<tr><td class=\"header_c\">%s: %s - %s</td></tr>\n",text[89],idate,fdate);
- fputs("</table></div>\n",fp_ht);
+ close_html_header(fp_ht);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
+ fputs("<br><br>\n",fp_ht);
- fputs("</table></div>\n",fp_ht);
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
+ fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
fputs("<tr><td> </td><td> </td></tr>",fp_ht);
- fprintf(fp_ou,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[106]);
+ fprintf(fp_ht,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",text[98],text[106]);
while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
getword_start(&gwarea,buf);
fputs("</table>\n",fp_ht);
fclose(fp_in);
- fclose(fp_ou);
sprintf(csort,"sort -t \"\t\" -k 2,2 -o \"%s\" \"%s\"",tmp3,tmp2);
cstatus=system(csort);
unlink(tmp2);
- if((fp_ht=fopen(hfile,"a"))==NULL) {
- fprintf(stderr, "SARG: (useragent) %s: %s\n",text[45],hfile);
- exit(1);
- }
+ fputs("<br><br>\n",fp_ht);
- fputs("<br/><br/>\n",fp_ht);
-
- fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
+ fputs("<table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
fprintf(fp_ht,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_c\">%%</th></tr>\n",text[106],text[107]);
perc=0.;
fprintf(fp_ht,"<tr><td class=\"data2\">%s</td><td class=\"data\">%d</td><td class=\"data\">%3.2lf</td></tr>\n",gwarea.current,nagent,perc);
}
-
- fputs("</table></html>\n",fp_ht);
- show_info(fp_ht);
-
- fputs("</table>\n</body>\n</html>\n",fp_ht);
fclose(fp_in);
+
+ fputs("</table></div>\n",fp_ht);
+ write_html_trailer(fp_ht);
fclose(fp_ht);
unlink(tmp3);
if(!ShowSargInfo) return;
zdate(ftime, sizeof(ftime), DateFormat);
- fprintf(fp_ou,"<div align=\"center\"><table><tr><td><br><br></td><td class=\"info\">%s <a href='%s'><font class=\"info\">%s-%s</font></a> %s %s</td></tr></table></div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
+ fprintf(fp_ou,"<div class=\"info\">%s <a href='%s'>%s-%s</a> %s %s</div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
}
-void show_sarg(FILE *fp_ou, const char *ind)
+void show_sarg(FILE *fp_ou, int depth)
{
- if(ShowSargLogo) fprintf(fp_ou,"<div align=\"center\"><table class=\"logo\">\n<tr><th><a href=\"http://sarg.sourceforge.net\"><img src=\"%s/images/sarg.png\" title=\"SARG, Squid Analysis Report Generator. Logo by Osamu Matsuzaki\" alt=\"Sarg\"></a> Squid Analysis Report Generator</th></tr>\n<tr><th class=\"title\"> </th></tr>\n</table></div>\n",ind);
+ int i;
+
+ if(!ShowSargLogo) return;
+ fputs("<div class=\"logo\"><a href=\"http://sarg.sourceforge.net\"><img src=\"",fp_ou);
+ for (i=0 ; i<depth ; i++)
+ fputs("../",fp_ou);
+ fputs("images/sarg.png\" title=\"SARG, Squid Analysis Report Generator. Logo by Osamu Matsuzaki\" alt=\"Sarg\"></a> Squid Analysis Report Generator</div>\n",fp_ou);
}
void write_logo_image(FILE *fp_ou)
{
if(LogoImage[0]!='\0')
- fprintf(fp_ou, "<div align=\"center\"><table class=\"logo\">\n<tr><th><img src=\"%s\" width=\"%s\" height=\"%s\" alt=\"Logo\"> %s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n</div>\n",LogoImage,Width,Height,LogoText);
+ fprintf(fp_ou, "<div class=\"logo\"><img src=\"%s\" width=\"%s\" height=\"%s\" alt=\"Logo\"> %s</div>\n",LogoImage,Width,Height,LogoText);
}
-void write_html_header(FILE *fp_ou, const char * ind)
+void write_html_header(FILE *fp_ou, int depth, const char *page_title)
{
- fprintf(fp_ou, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
+ //fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n",fp_ou);
+ fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n",fp_ou);
+ fprintf(fp_ou, "<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
+ if (page_title) fprintf(fp_ou,"<title>%s</title>\n",page_title);
css(fp_ou);
fprintf(fp_ou,"</head>\n<body style=\"font-family:%s;font-size:%s;background-color:%s;background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
write_logo_image(fp_ou);
- show_sarg(fp_ou, ind);
- fprintf(fp_ou,"<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"title\">%s</th></tr>\n</table></div>\n<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",Title);
+ show_sarg(fp_ou, depth);
+ fprintf(fp_ou,"<div class=\"title\"><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"title_c\">%s</th></tr>\n",Title);
+}
+
+void close_html_header(FILE *fp_ou)
+{
+ fputs("</table></div>\n",fp_ou);
+}
+
+void write_html_trailer(FILE *fp_ou)
+{
+ show_info(fp_ou);
+ fputs("</body>\n</html>\n",fp_ou);
}
void output_html_string(FILE *fp_ou,const char *str)
}
-void write_html_trailer(FILE *fp_ou)
-{
- char ftime[128];
-
- fputs("</table></div>\n",fp_ou);
- zdate(ftime, sizeof(ftime), DateFormat);
- show_info(fp_ou);
- fputs("</body>\n</html>\n",fp_ou);
-}
-
void version(void)
{
printf("SARG Version: %s\n",VERSION);