]> git.ipfire.org Git - thirdparty/sarg.git/commitdiff
Sanitized a little bit the generated HTML.
authorFrédéric Marchal <fmarchal@users.sourceforge.net>
Mon, 20 Jul 2009 15:01:20 +0000 (15:01 +0000)
committerFrédéric Marchal <fmarchal@users.sourceforge.net>
Mon, 20 Jul 2009 15:01:20 +0000 (15:01 +0000)
19 files changed:
authfail.c
css.c
dansguardian_report.c
denied.c
documentation/conf.txt
documentation/util.txt
download.c
html.c
include/defs.h
realtime.c
repday.c
report.c
siteuser.c
smartfilter.c
squidguard_report.c
topsites.c
topuser.c
useragent.c
util.c

index ec000ebdbc84b6c0b406c05891b5af1353ee8df1..8d5a573c9b0342a167a7c64e634685650b7578f6 100644 (file)
@@ -94,20 +94,20 @@ void authfail_report(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   write_logo_image(fp_ou);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou,"..");
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[117]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><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);
diff --git a/css.c b/css.c
index ed9489362ff8ee16945128a729a2452dd8fa8324..f22408d6c8e935b8dd3d419310b66d93b61a8b2e 100644 (file)
--- a/css.c
+++ b/css.c
@@ -43,7 +43,10 @@ void css(FILE *fp_css)
       return;
    }
 
-   fprintf(fp_css,"<style>\n.logo {font-family:Verdana,Tahoma,Arial;font-size:11px;color:%s;}\n",LogoTextColor);
+   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 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 a:link,a:visited {font-family:%s;color:#0000FF;font-size:10px;text-decoration:none;}\n", FontFace);
index 4e993926555ae9dc1f2d97e14693de1836f33f2b..a3fb1ffa563e74b003dbeda2ec8eaec68e728008 100644 (file)
@@ -82,20 +82,20 @@ void dansguardian_report(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
-   
+   write_logo_image(fp_ou);
+
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou,"..");
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[128]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=1 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[98],text[111],text[110],text[91],text[129]);
 
index 23ff237f27664f8b8a3747b4430ad28176ea964c..99fe072adec277fc8b5f8d3c41474121be3f518c 100644 (file)
--- a/denied.c
+++ b/denied.c
@@ -79,22 +79,22 @@ void gen_denied_report(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
+   write_logo_image(fp_ou);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou, "..");
 
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[46]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[98],text[111],text[110],text[91]);
 
index 8658022475653e428e07add8f4bf4fd956bc02f8..31db89edda374258afb8dcff7327f933da8dad18 100644 (file)
@@ -10,3 +10,22 @@ A comma separated list of extensions to report as files downloaded by the user.
 The total number of files seen as downloaded.
 */
 
+/*! \var LogoImage
+The image to link in the HTML files as the logo of the organisation generating the reports.
+*/
+
+/*! \var Width
+The width in pixel of the logo ::LogoImage to display in the HTML reports.
+*/
+
+/*! \var Height
+The height in pixel of the logo ::LogoImage to display in the HTML reports.
+*/
+
+/*! \var LogoText
+The text to display next to the logo of the organisation producing the reports.
+*/
+
+/*! \var LogoTextColor
+The color to write the text of the logo in ::LogoText.
+*/
index 62adb631b868538d6c350718e42e89389a3a2e26..bff67578475f75ded55b2b1683481f72a166bc79 100644 (file)
@@ -743,3 +743,23 @@ that ends with the file name can be detected.
 \note A URL embedding another web site's address ending by .com at the end of the URL will match the download
 extension com if it is defined in the ::DownloadSuffix.
 */
+
+
+
+
+/*! \fn void write_logo_image(FILE *fp_ou)
+Write a link of the logo of the organisation that generate the report in the HTML file. The logo
+is written in a centered table.
+
+\param fp_ou The handle of the HTML file being written.
+*/
+
+
+
+
+/*! \fn void output_html_string(FILE *fp_ou,const char *str)
+Write a string in a file and replace the problematic ASCII characters by their equivalent HTML entities.
+
+\param fp_ou The handle of the output file.
+\param str The string to output.
+*/
index 984a25bdde19fdcecbc62413f5a2fbfe36f467f8..d8b86b684077f70e5ba08b1437534384a6de6627 100644 (file)
@@ -46,6 +46,7 @@ void download_report(void)
    char *str;
    int  z=0;
    int  count=0;
+   int i;
 
    ouser[0]='\0';
 
@@ -76,29 +77,27 @@ void download_report(void)
      exit(1);
    }
 
-   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);
+   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);
+   fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
 
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   write_logo_image(fp_ou);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou, "..");
-      
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
-   fprintf(fp_ou,"<tr><th class=\"title\">%s</b></th></tr>\n",Title);
+
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
+   fprintf(fp_ou,"<tr><th class=\"title\">%s</th></tr>\n",Title);
 
    fprintf(fp_ou,"<tr><td class=\"header\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[125]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[98],text[111],text[110],text[91]);
 
@@ -109,7 +108,7 @@ void download_report(void)
          printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",report_in);
          exit(1);
       }
-  
+
       if((str=(char *) strstr(user, "_")) != (char *) NULL ) {
          if((str=(char *) strstr(str+1, "_")) != (char *) NULL )
             fixip(user);
@@ -150,17 +149,20 @@ void download_report(void)
             continue;
       }
 
-      if(strlen(BlockIt) > 0)
-         sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a>&nbsp;",wwwDocumentRoot,BlockIt,url,ImageFile);
-      else BlockImage[0]='\0';
+      for (i=strlen(url)-1 ; i>=0 && (unsigned char)url[i]<' ' ; i--) url[i]=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\">",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>&nbsp;",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("</html>\n",fp_ou);
+   fputs("</body>\n</html>\n",fp_ou);
 
    fclose(fp_in);
    fclose(fp_ou);
diff --git a/html.c b/html.c
index 80a96996b4259c1c307847cb4c491842425d27ea..fd9b8932ae70b8bb91ac8c8b54d9198324eba271 100644 (file)
--- a/html.c
+++ b/html.c
@@ -52,6 +52,7 @@ void htmlrel(void)
    int cstatus;
    const char txtext[]=".txt";
    int dlen;
+   char href2[MAXLEN];
 
    if(strstr(ReportType,"users_sites") == 0) return;
 
@@ -211,8 +212,7 @@ void htmlrel(void)
          exit(1);
       }
 
-      fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"",fp_ou);
-      fputs(" \"http://www.w3.org/TR/html4/loose.dtd\">\n",fp_ou);
+      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);
@@ -222,32 +222,27 @@ void htmlrel(void)
       fprintf(fp_ou,"<body style=\"font-family:%s;font-size:%s;background-color:%s; \
            background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
 
-      if(strlen(LogoImage) > 0) {
-         fputs("<center><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
-         fprintf(fp_ou,"<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n",LogoImage,Width,Height,LogoText);
-         fputs("<tr><td height=\"5\"></td></tr>\n",fp_ou);
-         fputs("</table>\n",fp_ou);
-      }
+      write_logo_image(fp_ou);
 
       if(strcmp(IndexTree,"date") == 0)
          show_sarg(fp_ou, "../../../..");
       else
          show_sarg(fp_ou, "../..");
 
-      fputs("<center><table cellpadding=\"0\" cellspacing=\"0\">\n",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\" colspan=\"2\">%s:&nbsp;%s</td></tr>\n",text[89],period);
       fprintf(fp_ou,"<tr><td class=\"header\" colspan=\"2\">%s:&nbsp;%s</td></tr>\n",text[90],name2);
       fprintf(fp_ou,"<tr><td class=\"header\" colspan=\"2\">%s:&nbsp;%s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
-      fprintf(fp_ou,"<tr><td class=\"header3\" colspan=2>%s %s</td></tr>\n",text[32],text[55]);
+      fprintf(fp_ou,"<tr><td class=\"header3\" colspan=\"2\">%s %s</td></tr>\n",text[32],text[55]);
       fputs("<tr><td></td></tr>\n",fp_ou);
 
-      fputs("</table></center>\n",fp_ou);
-      fputs("<center><table cellpadding=\"2\" cellspacing=\"1\">\n",fp_ou);
+      fputs("</table></div>\n",fp_ou);
+      fputs("<div align=\"center\"><table cellpadding=\"2\" cellspacing=\"1\">\n",fp_ou);
 
       if(strlen(denied_report) > 0) {
-         fprintf(fp_ou,"<tr><td class=\"header\" colspan=11><a href=\"denied_%s.html\">%s</a> %s</td></tr>\n",denied_report,text[116],text[55]);
+         fprintf(fp_ou,"<tr><td class=\"header\" colspan=\"11\"><a href=\"denied_%s.html\">%s</a> %s</td></tr>\n",denied_report,text[116],text[55]);
       }
 
       strcpy(val3,text[92]);
@@ -257,7 +252,7 @@ void htmlrel(void)
       strcpy(val6,text[94]);
       strcpy(val7,text[95]);
       sprintf(val8,"%%%s",text[99]);
-      strcpy(val9,"colspan=2");
+      strcpy(val9,"colspan=\"2\"");
       bzero(val10, 255);
 
       if(strstr(UserReportFields,"CONNECT") == 0)
@@ -353,16 +348,16 @@ void htmlrel(void)
          }
 
          if(strcmp(Privacy,"yes") == 0)
-            sprintf(httplink,"<font color=%s><href=http://%s>%s",       \
-                    PrivacyStringColor,PrivacyString,PrivacyString);
+            sprintf(httplink,"<span style=\"color:%s;\">%s</span>",PrivacyStringColor,PrivacyString);
          else {
-             strcpy(tmp6,"../../images");
-             if(strcmp(IndexTree,"date") == 0)
-                sprintf(tmp6,"../%s",ImageFile);
-             if(strlen(BlockIt) > 0)
-                sprintf(httplink,"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a><a href=http://%s>&nbsp;%s</a>",wwwDocumentRoot,BlockIt,urly,tmp6,urly,urly);
-             else
-                sprintf(httplink,"<a href=http://%s title=\"%s\">%s</a>",urly,urly,url);
+            if(strcmp(IndexTree,"date") == 0)
+               sprintf(tmp6,"../%s",ImageFile);
+            else
+               strcpy(tmp6,"../../images");
+            if(BlockIt[0]!='\0')
+               snprintf(httplink,sizeof(httplink),"<a href=\"%s%s?url=%s\"><img src=\"%s/sarg-squidguard-block.png\" border=\"0\"></a><a href=http://%s>&nbsp;%s</a>",wwwDocumentRoot,BlockIt,urly,tmp6,urly,urly);
+            else
+               snprintf(httplink,sizeof(httplink),"<a href=\"http://%s\" title=\"%s\">%s</a>",urly,urly,url);
          }
 
          if(strstr(ReportType,"site_user_time_date") != 0) {
@@ -376,7 +371,7 @@ void htmlrel(void)
                   str[z1]=='\'' || str[z1]=='\"' || str[z1]=='$')
                   str[z1]='_';
             }
-            sprintf(href2,"<a href=\"tt%s-%s.html\"><img src=\"%s/datetime.png\" border=\"0\" title=\"%s %s\"></a>",usuario,siteind,tmp6,ltext110,text[55]);
+            sprintf(href2,"<a href=\"tt%s-%s.html\"><img src=\"%s/datetime.png\" border=\"0\" title=\"%s %s\" alt=\"T\"></a>",usuario,siteind,tmp6,ltext110,text[55]);
          } else {
             bzero(href2, MAXLEN);
             bzero(ltext110, 50);
@@ -388,7 +383,7 @@ void htmlrel(void)
          sprintf(val5,"%3.2f%%",ouperc);
          sprintf(val6,"%s",buildtime(nnelap));
          sprintf(val7,"%3.2f%%",perc2);
-      
+
          if(strstr(UserReportFields,"CONNECT") == 0) {
             bzero(wwork1, 255);
             bzero(hbc1, 30);
@@ -471,31 +466,31 @@ void htmlrel(void)
             fscanf(fp_ip,"%s",userhora);
             fscanf(fp_ip,"%s",userbytes);
             fscanf(fp_ip,"%s",userelap);
-   
+
             strcpy(olduserip,user_ip);
-   
+
             while(!feof(fp_ip)) {
                if(strcmp(user_ip,olduserip) != 0) {
                   my_lltoa(unelap,val2,0);
                   sprintf(wwork1,"%s",fixnum(unbytes,1));
                   fprintf(fp_ou,"<tr><td></td><td class=\"data\">%s</td><td></td><td class=\"data\">%s</td><td></td><td></td><td></td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",olduserip,wwork1,buildtime(unelap),val2);
-  
+
                   strcpy(olduserip,user_ip);
                   unacc=0;
                   unbytes=0;
                   unelap=0;
                }
-   
+
                unbytes=unbytes+my_atoll(userbytes);
                unelap=unelap+my_atoll(userelap);
-   
+
                fscanf(fp_ip,"%s",user_ip);
                fscanf(fp_ip,"%s",userurl);
                fscanf(fp_ip,"%s",userdia);
                fscanf(fp_ip,"%s",userhora);
                fscanf(fp_ip,"%s",userbytes);
                fscanf(fp_ip,"%s",userelap);
-   
+
             }
 
             fclose(fp_ip);
@@ -505,7 +500,7 @@ void htmlrel(void)
 
             my_lltoa(unelap,val3,0);
             sprintf(wwork1,"%s",fixnum(unbytes,1));
-            fprintf(fp_ou,"<tr><td></td><td class=\"data\">%s</td><td></td><td class=\"data\">%s</td><td></td><td></td><td></td><td class=\"data\">%s</td><td class=\"data\">%s</font></td></tr>\n",olduserip,wwork1,buildtime(unelap),val3);
+            fprintf(fp_ou,"<tr><td></td><td class=\"data\">%s</td><td></td><td class=\"data\">%s</td><td></td><td></td><td></td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",olduserip,wwork1,buildtime(unelap),val3);
          }
 
          unacc=0;
@@ -531,22 +526,22 @@ void htmlrel(void)
          perc=totbytes / 100;
          perc=tnbytes / perc;
       } else perc=0;
-   
+
       if(tnelap) {
          perc2=totelap / 100;
          perc2=tnelap / perc2;
       } else perc2=0;
-   
+
       if(tnoucache) {
          ouperc=tnoucache * 100;
          ouperc=ouperc / tnbytes;
       } else ouperc=0;
-   
+
       if(tnincache) {
          inperc=tnincache * 100;
          inperc=inperc / tnbytes;
       } else inperc=0;
-   
+
       sprintf(wwork1,"%s",fixnum(tnacc,1));
       sprintf(wwork2,"%s",fixnum(tnbytes,1));
       sprintf(wwork3,"%s",fixnum2(tnelap,1));
@@ -602,7 +597,7 @@ void htmlrel(void)
       }
 
       if(strstr(UserReportFields,"TOTAL") != 0) {
-         fprintf(fp_ou,"<tr><th></th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</font></th><th %s>%s</font></th></tr>\n",hbc9,text[107],hbc1,wwork1,hbc2,wwork2,hbc4,val3,hbc5,val4,hbc6,val5,hbc7,val6,hbc3,wwork3,hbc8,val7);
+         fprintf(fp_ou,"<tr><th></th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th %s>%s</th></tr>\n",hbc9,text[107],hbc1,wwork1,hbc2,wwork2,hbc4,val3,hbc5,val4,hbc6,val5,hbc7,val6,hbc3,wwork3,hbc8,val7);
       }
 
       fclose(fp_in);
@@ -648,7 +643,7 @@ void htmlrel(void)
       if (strstr(ReportType,"topuser") != 0) {
          strcpy(arqper,dirname);
          strcat(arqper,"/sarg-users");
-   
+
          if ((fp_in = fopen(arqper, "r")) == 0){
             fprintf(stderr, "SARG: (html11) %s: %s\n",text[45],arqper);
             exit(1);
@@ -656,30 +651,30 @@ void htmlrel(void)
 
          fgets(totuser,8,fp_in);
          fclose(fp_in);
-   
+
          totbytes2=totbytes/my_atoll(totuser);
          totelap2=totelap/my_atoll(totuser);
-   
+
          if(totbytes2) {
             perc = totbytes / 100;
             perc = totbytes2 / perc;
          } else perc=0;
-      
+
          if(totelap2) {
             perc2 = totelap / 100;
             perc2 = totelap2 / perc2;
          } else perc2=0;
-      
+
          twork2=my_atoll(totuser);
          twork=ttnacc/twork2;
-   
+
          strcpy(wwork1,fixnum(twork,1));
          strcpy(wwork2,fixnum(totbytes2,1));
          strcpy(wwork3,fixnum2(totelap2,1));
 
          sprintf(val6,"%s",buildtime(totelap2));
          sprintf(val7,"%3.2f%%",perc2); 
-      
+
          strcpy(hbc1,"class=\"header2\"");
          strcpy(hbc2,"class=\"header2\"");
          strcpy(hbc3,"class=\"header2\"");
@@ -709,7 +704,7 @@ void htmlrel(void)
          }
       
          if(strstr(UserReportFields,"AVERAGE") != 0) {
-            fprintf(fp_ou,"<tr><th></th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th></th><th></th><th></th><th %s>%s</th><th %s>%s</font></th><th %s>%s</th></tr>\n",hbc6,text[96],hbc1,wwork1,hbc2,wwork2,hbc4,val6,hbc3,wwork3,hbc5,val7);
+            fprintf(fp_ou,"<tr><th></th><th %s>%s</th><th %s>%s</th><th %s>%s</th><th></th><th></th><th></th><th %s>%s</th><th %s>%s</th><th %s>%s</th></tr>\n",hbc6,text[96],hbc1,wwork1,hbc2,wwork2,hbc4,val6,hbc3,wwork3,hbc5,val7);
          }
       } /* added */
       tnacc=0;
@@ -718,7 +713,7 @@ void htmlrel(void)
       tnincache=0;
       tnoucache=0;
 
-      fputs("</center></table>\n",fp_ou);
+      fputs("</table></div>\n",fp_ou);
 
       show_info(fp_ou);
 
index e1b46caac5838e06f329ca2459fb52efcf7ffdae..923dc74275c93ee242ffec9ebe120c292b4a5597 100755 (executable)
@@ -128,8 +128,10 @@ void fixper(char *tbuf, char *period, const char *duntil);
 char *fixtime(long int elap);
 void show_info(FILE *fp_ou);
 void show_sarg(FILE *fp_ou, const char *ind);
+void write_logo_image(FILE *fp_ou);
 void write_html_header(FILE *fp_ou, const char * ind);
 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);
 void conv_month(char *month);
 void debuga(const char *msg,...);
index ed4e41c839c3051957e62a0c95a5f5e29eeba0b4..158e78402f2506ac5fe7a1e99c9fec8e5a49fec1 100755 (executable)
@@ -221,11 +221,11 @@ void datashow(char *tmp)
       strcpy(ourl,url);
    }
 
-   puts("</table>\n</html>\n");
+   puts("</table>\n</div>\n</body>\n</html>\n");
    fclose(fin);
    unlink(tmp);
    fflush(NULL);
-   
+
 }
 
 static void header(void)
@@ -241,7 +241,7 @@ static void header(void)
    css(stdout);
    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("<center><table cellpadding=\"1\" cellspacing=\"1\">\n");
+   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=\"text\" colspan=\"10\">%s: %d s</th></tr>\n",text[136],realtime_refresh);
    printf("<tr><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header\">%s</th></tr>\n",text[110],text[111],text[98],text[135],text[91]);
index 6568938cf20a51487f4206958f5b1c71ebaab2e3..e44d631bf64033b37ae2e9e5e35f905e2fe01107 100644 (file)
--- a/repday.c
+++ b/repday.c
@@ -71,20 +71,20 @@ void report_day(const char *user)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   //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(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../../..");
    else
       show_sarg(fp_ou, "../..");
 
-   fputs("<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></center>\n",fp_ou);
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header3\" colspan=\"2\">%s:&nbsp;%s</td></tr>\n",text[89],period);
 
@@ -109,9 +109,9 @@ void report_day(const char *user)
    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 cellpadding=\"0\" cellspacing=\"2\">\n", fp_ou);
 
-   fputs( "<tr><td border=0></td>\n", fp_ou );
+   fputs( "<tr><td></td>\n", fp_ou );
 
    if(strcmp(datetimeby,"bytes") == 0)
      strcpy( html, text[93] );
@@ -119,8 +119,7 @@ void report_day(const char *user)
      strcpy( html, "H:M:S" );
 
    for( i = 0; i < hours.len; i++ )
-     fprintf( fp_ou,
-       "<td class=\"header3\">%02dH<br>%s</td>\n", hours.list[ i ], html );
+     fprintf( fp_ou, "<td class=\"header3\">%02dH<br>%s</td>\n", hours.list[ i ], html );
    fprintf( fp_ou,
      "<td class=\"header3\">%s<br>%s</td></tr>\n", text[107], html );
 
@@ -143,23 +142,20 @@ void report_day(const char *user)
       if(strcmp(data,odata) != 0) {
          strcpy(oelap,elap);
 
-        for( i = 0; i < hours.len; i++ )
-          sprintf(c[ hours.list[ i ] ],"%s",fixtime(v[ hours.list[ i ] ]));
-
-        for( i = 8; i <= 17; i++ )
-          if(strcmp(c[ hours.list[ i ] ],"00:00:00") == 0)
-               bzero(c[ hours.list[ i ] ],12);
-
-         fprintf( fp_ou,
-       "<tr><td class=\"data\">%s</td>\n", odata );
-        for( i = 0; i < hours.len; i++ )
-          fprintf( fp_ou,
-            "<td class=\"data\">%s</td>\n", c[ hours.list[ i ] ] );
-        fprintf( fp_ou,
-          "<td class=\"data\">%s</td>\n", fixtime(tt) );
-        
+         for( i = 0; i < hours.len; i++ )
+            sprintf(c[ hours.list[ i ] ],"%s",fixtime(v[ hours.list[ i ] ]));
+
+         for( i = 8; i <= 17; i++ )
+            if(strcmp(c[ hours.list[ i ] ],"00:00:00") == 0)
+               bzero(c[ hours.list[ i ] ],12);
+
+         fprintf(fp_ou, "<tr><td class=\"data\">%s</td>\n", odata );
+         for( i = 0; i < hours.len; i++ )
+            fprintf(fp_ou,"<td class=\"data\">%s</td>\n", c[ hours.list[ i ] ] );
+         fprintf( fp_ou, "<td class=\"data\">%s</td>\n", fixtime(tt) );
+
          tt=0;
-        for( i = 0; i < hours.len; i++ ) v[ hours.list[ i ] ]=0;
+         for( i = 0; i < hours.len; i++ ) v[ hours.list[ i ] ]=0;
          strcpy(odata,data);
          strcpy(elap,oelap);
       }
@@ -178,30 +174,25 @@ void report_day(const char *user)
 
    for( i = 0; i < hours.len; i++ )
      if(strcmp(c[ hours.list[ i ] ],"00:00:00") == 0) bzero(c[ hours.list[ i ] ],12);
-   fprintf( fp_ou,
-     "<tr><td class=\"data\">%s</td>\n", data );
+
+   fprintf(fp_ou, "<tr><td class=\"data\">%s</td>\n", data );
    for( i = 0; i < hours.len; i++ )
-     fprintf( fp_ou,
-       "<td class=\"data\">%s</td>\n", c[ hours.list[ i ] ] );
-   fprintf( fp_ou,
-     "<td class=\"data\">%s</td></tr>\n", fixtime(tt) );
+     fprintf(fp_ou, "<td class=\"data\">%s</td>\n", c[ hours.list[ i ] ] );
+   fprintf(fp_ou, "<td class=\"data\">%s</td></tr>\n", fixtime(tt) );
 
    for( i = 0; i < hours.len; i++ )
      sprintf(c[ hours.list[ i ] ],"%s",fixtime(t[ hours.list[ i ] ]));
 
-   fprintf( fp_ou,
-     "<tr><td class=\"header\">%s</td>\n", text[107] );
+   fprintf(fp_ou, "<tr><td class=\"header\">%s</td>\n", text[107] );
    for( i = 0; i < hours.len; i++ )
-     fprintf( fp_ou,
-       "<td class=\"header2\">%s</td>\n", c[ hours.list[ i ] ] );
-   fprintf( fp_ou,
-     "<td class=\"header2\">%s</td></tr>\n", fixtime(ttt) );
+     fprintf(fp_ou, "<td class=\"header2\">%s</td>\n", c[ hours.list[ i ] ] );
+   fprintf(fp_ou, "<td class=\"header2\">%s</td></tr>\n", fixtime(ttt) );
 
-   fputs("</body>\n</html>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
    show_info(fp_ou);
 
+   fputs("</body>\n</html>\n",fp_ou);
    fclose(fp_in);
    fclose(fp_ou);
    return;
index 00e708666b1bca2b5686506e9160cd93b3a2d2bc..83c1082a37ecfdabe3021d2530a2794754c292db 100644 (file)
--- a/report.c
+++ b/report.c
@@ -243,15 +243,15 @@ void gerarel(void)
                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);
-               if(strlen(LogoImage) > 0) fprintf(fp_tt, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+               fprintf(fp_tt,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
+               write_logo_image(fp_tt);
 
                if(strcmp(IndexTree,"date") == 0)
                   show_sarg(fp_tt, "../../../..");
                else
                   show_sarg(fp_tt, "../..");
 
-               fputs("<center><table cellpadding=0 cellspacing=0>\n",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\" colspan=\"2\">%s:&nbsp;%s</td></tr>\n",text[89],period);
@@ -259,8 +259,8 @@ void gerarel(void)
                fprintf(fp_tt,"<tr><td class=\"header\" colspan=\"2\">%s:&nbsp;%s, %s</td></tr>\n",text[104],UserSortField,UserSortOrder);
                fprintf(fp_tt,"<tr><th class=\"header3\" colspan=2>%s</th></tr>\n",text[32]);
 
-               fputs("</table></center>\n",fp_tt);
-               fputs("<center><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_tt);
+               fputs("</table></div>\n",fp_tt);
+               fputs("<div align=\"center\"><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);
index b486c9f8703817b488051bf369d863fce887cabe..79a229aa46174b82d2392dc971e69e89928ce358 100644 (file)
@@ -91,29 +91,29 @@ void siteuser(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   //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(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou, "..");
 
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header3\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[85]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    if(strncmp(strlow(BytesInSitesUsersReport),"yes",3) == 0)
       fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[100],text[91],text[93],text[103]);
    else
       fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[100],text[91],text[103]);
-  
+
    user[0]='\0';
    ourl[0]='\0';
    obytes[0]='\0';
@@ -174,7 +174,7 @@ void siteuser(void)
          strcpy(obytes,nbytes);
          regs++;
       }
-      
+
       sprintf(wuser," %s ",name);
       if(strstr(users,wuser) == 0 && strcmp(url,ourl) == 0) {
          strcat(users,name);
@@ -191,7 +191,7 @@ void siteuser(void)
             continue;
       }
 
-      if(strlen(BlockIt) > 0)
+      if(BlockIt[0]!='\0')
          sprintf(BlockImage,"<a href=\"%s%s?url=%s\"><img src=\"../images/sarg-squidguard-block.png\" border=\"0\"></a>&nbsp;",wwwDocumentRoot,BlockIt,ourl);
       else BlockImage[0]='\0';
 
@@ -199,9 +199,9 @@ void siteuser(void)
          if(strncmp(strlow(BytesInSitesUsersReport),"yes",3) == 0) {
             llbytes=my_atoll(obytes);
             sprintf(wwork2,"%s",fixnum(llbytes,1));
-            fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\">%s<a href=\"http://%s\">%s</td><td class=\"data\">%s</td><td class=\"data2\">%s</td></tr>\n",regs,BlockImage,ourl,ourl,wwork2,users);
+            fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\">%s<a href=\"http://%s\">%s</a></td><td class=\"data\">%s</td><td class=\"data2\">%s</td></tr>\n",regs,BlockImage,ourl,ourl,wwork2,users);
          } else
-            fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\">%s<a href=\"http://%s\">%s</td><td class=\"data2\">%s</td></tr>\n",regs,BlockImage,ourl,ourl,users);
+            fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\">%s<a href=\"http://%s\">%s</a></td><td class=\"data2\">%s</td></tr>\n",regs,BlockImage,ourl,ourl,users);
          regs++;
          ucount=0;
          strcpy(users,name);
@@ -212,17 +212,17 @@ void siteuser(void)
    }
 
    if(nsitesusers) {
-      fprintf(fp_ou,"<tr><td class=\"data\">%d</td><td class=\"data2\"><a href=\"http://%s\">%s</td><td class=\"data2\">%s</td></tr>\n",regs,ourl,ourl,users);
+      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></center>\n",fp_ou);
+   fputs("</table>\n</div>\n",fp_ou);
 
    show_info(fp_ou);
 
    fputs("</body>\n</html>\n",fp_ou);
-   
+
    fclose(fp_in);
    fclose(fp_ou);
 
index e9c738d20edc5365afad0978685e9391c53d6ffa..a7a91ec31d7bd6fb6136869f925b6c460b6d1f63 100644 (file)
@@ -93,20 +93,20 @@ void smartfilter_report(void)
    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("</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);
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ou);
+   write_logo_image(fp_ou);
 
-   fprintf(fp_ou,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
-   fprintf(fp_ou,"<tr><td align=center bgcolor=%s><font size=%s>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],period);
-   fprintf(fp_ou,"<tr><th bgcolor=%s align=center><font size=%s>%s</font></th></tr>\n",HeaderBgColor,FontSize,text[116]);
-   fputs("</table></center>\n",fp_ou);
+   fprintf(fp_ou,"<tr><th align=\"center\"><b><font color=\"%s\" size=\"+1\">%s</font></b></th></tr>\n",TiColor,Title);
+   fprintf(fp_ou,"<tr><td align=\"center\" bgcolor=\"%s\"><font size=\"%s\">%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],period);
+   fprintf(fp_ou,"<tr><th bgcolor=\"%s\" align=\"center\"><font size=\"%s\">%s</font></th></tr>\n",HeaderBgColor,FontSize,text[116]);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><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><th bgcolor=%s><font size=%s>%s</font></th><th bgcolor=%s><font size=%s>%s</font></th><th bgcolor=%s><font size=%s>%s</font></th><th bgcolor=%s><font size=%s>%s</font></th><th bgcolor=%s><font size=%s>%s</font></th></tr>\n",HeaderBgColor,FontSize,text[98],HeaderBgColor,FontSize,text[111],HeaderBgColor,FontSize,text[110],HeaderBgColor,FontSize,text[91],HeaderBgColor,FontSize,smartheader);
+   fprintf(fp_ou,"<tr><th bgcolor=%s><font size=\"%s\">%s</font></th><th bgcolor=\"%s\"><font size=\"%s\">%s</font></th><th bgcolor=\"%s\"><font size=\"%s\">%s</font></th><th bgcolor=\"%s\"><font size=\"%s\">%s</font></th><th bgcolor=\"%s\"><font size=\"%s\">%s</font></th></tr>\n",HeaderBgColor,FontSize,text[98],HeaderBgColor,FontSize,text[111],HeaderBgColor,FontSize,text[110],HeaderBgColor,FontSize,text[91],HeaderBgColor,FontSize,smartheader);
 
    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
       if (getword(user,sizeof(user),buf,' ')<0 || getword(data,sizeof(data),buf,' ')<0 ||
@@ -129,7 +129,7 @@ void smartfilter_report(void)
             fputs("</table>\n",fp_user);
             if(strcmp(ShowSargInfo,"yes") == 0) {
                zdate(ftime, DateFormat);
-               fprintf(fp_user,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
+               fprintf(fp_user,"<br><br><div align=\"center\"><font size=\"-2\">%s <a href=\"%s\">%s-%s</a> %s %s</font></div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
             }
             fputs("</body>\n</html>\n",fp_user);
             fclose(fp_user);
@@ -159,14 +159,14 @@ void smartfilter_report(void)
             */
             fprintf(fp_user,"<font face=%s>\n",FontFace);
          }
-         fprintf(fp_user,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
-         fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_user);
-         if(strlen(LogoImage) > 0) fprintf(fp_user,"<tr><th align=left><img src='%s' border=0 align=absmiddle width=%s height=%s><font color=%s>%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
-         fprintf(fp_user,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
+         fprintf(fp_user,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
+         fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_user);
+         if(LogoImage[0]!='\0') fprintf(fp_user,"<tr><th align=left><img src=\"%s\" border=\"0\" align=\"absmiddle\" width=\"%s\" height=\"%s\"><font color=\"%s\">%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
+         fprintf(fp_user,"<tr><th align=\"center\"><b><font color=\"%s\" size=\"+1\">%s</font></b></th></tr>\n",TiColor,Title);
          fprintf(fp_user,"<tr><td align=center bgcolor=%s><font size=%s>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],period);
          fprintf(fp_user,"<tr><td align=center bgcolor=%s><font size=%s>%s:</font><font size=%s> %s</font></td></tr>\n",HeaderBgColor,FontSize,text[90],FontSize,user);
-         fputs("</table></center>\n",fp_user);
-         fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_user);
+         fputs("</table></div>\n",fp_user);
+         fputs("<div align=\"center\"><table cellpadding=0 cellspacing=2>\n",fp_user);
          fputs("<tr><td></td></tr>\n",fp_user);
          fputs("<tr><td></td></tr>\n",fp_user);
          fputs("<tr><td></td></tr>\n",fp_user);
@@ -181,7 +181,7 @@ void smartfilter_report(void)
 
    if(strcmp(ShowSargInfo,"yes") == 0) {
       zdate(ftime, DateFormat);
-      fprintf(fp_ou,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
+      fprintf(fp_ou,"<br><br><div align=\"center\"><font size=\"-2\">%s <a href=\"%s\">%s-%s</a> %s %s</font></div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
    }
 
    fputs("</body>\n</html>\n",fp_user);
@@ -191,7 +191,7 @@ void smartfilter_report(void)
       fputs("</table>\n",fp_user);
       if(strcmp(ShowSargInfo,"yes") == 0) {
          zdate(ftime, DateFormat);
-         fprintf(fp_user,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
+         fprintf(fp_user,"<br><br><div align=\"center\"><font size=\"-2\">%s <a href=\"%s\">%s-%s</a> %s %s</font></div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
       }
       fputs("</body>\n</html>\n",fp_user);
       fclose(fp_user);
index 1132df8090c166535ef04d822f96c99fcbc840cd..fbf619c29c5486bd77ae5edd806f00abccc92c35 100644 (file)
@@ -82,20 +82,20 @@ void squidguard_report(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   write_logo_image(fp_ou);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou, "../../..");
    else
       show_sarg(fp_ou,"..");
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s</th></tr>\n",text[120]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=1 cellspacing=2>\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=1 cellspacing=2>\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th><th class=\"header\">%s</th></tr>\n",text[98],text[111],text[110],text[91],text[121]);
 
@@ -171,7 +171,7 @@ void squidguard_report(void)
    fputs("</table>\n",fp_ou);
 
    show_info(fp_ou);
-   
+
    fputs("</body>\n</html>\n",fp_ou);
 
    fclose(fp_in);
index 77d10547d7b40392ef48e4e4775dcd4229c9c8b8..0984de3f65398e49c1530deaf841c73fe4531437 100644 (file)
@@ -215,22 +215,22 @@ void topsites(void)
    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);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   fprintf(fp_ou,"<body bgcolor=\"%s\" text=\"%s\" background=\"%s\">\n",BgColor,TxColor,BgImage);
+   write_logo_image(fp_ou);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ou,"../../..");
    else
       show_sarg(fp_ou, "..");
 
-   fputs("<center><table cellpadding=\"0\" cellspacing=\"0\">\n",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);
 
    fprintf(fp_ou,"<tr><td class=\"header3\">%s: %s</td></tr>\n",text[89],period);
    fprintf(fp_ou,"<tr><th class=\"header3\">%s %s %s</th></tr>\n",text[83],TopSitesNum,text[84]);
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
 
-   fputs("<center><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
+   fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_ou);
    fputs("<tr><td></td></tr>\n",fp_ou);
    fprintf(fp_ou,"<tr><th class=\"header\">%s</th><th class=\"header\">%s</th> \
                <th class=\"header\">%s</th><th class=\"header\">%s</th> \
@@ -267,12 +267,12 @@ void topsites(void)
       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></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\">%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);
       regs++;
    }
 
 
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table>\n</div>\n",fp_ou);
 
    show_info(fp_ou);
 
index ad976f7d55c9f3abfc571c0fb781ce1adc5291a8..f5fd988a33988a3d0f602c5f0813987f720856d3 100644 (file)
--- a/topuser.c
+++ b/topuser.c
@@ -54,6 +54,12 @@ void topuser(void)
    char warea[1500];
    char user2[MAXLEN];
    char name[MAXLEN];
+   char href1[MAXLEN];
+   char href2[MAXLEN];
+   char href3[MAXLEN];
+   char href1end[5];
+   char href2end[5];
+   char href3end[5];
 
    ipantes[0]='\0';
    nameantes[0]='\0';
@@ -248,16 +254,15 @@ void topuser(void)
    fclose(fp_in);
 
    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);
-   fputs("</head>\n",fp_top3);
    css(fp_top3);
-   fprintf(fp_top3,"<body class=\"body\">");
-   if(strlen(LogoImage) > 0) fprintf(fp_top3, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   fprintf(fp_top3,"</head>\n<body class=\"body\">");
+   write_logo_image(fp_top3);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_top3, "../../..");
    else
       show_sarg(fp_top3, "..");
-   fputs("<center><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_top3);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_top3);
    fprintf(fp_top3,"<tr><th align=\"center\" class=\"title\">%s</th></tr>\n",Title);
 
    fprintf(fp_top3,"<tr><td class=\"header3\">%s: %s</td></tr>\n",text[89],period);
@@ -269,18 +274,18 @@ void topuser(void)
    fprintf(fp_top3,"<tr><td class=\"header3\">%s</td></tr>\n",wheader);
    fprintf(fp_top3,"<tr><th class=\"header3\">%s</th></tr>\n",text[137]);
 
-   fputs("</table></center>\n",fp_top3);
-   fputs("<center><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_top3);
+   fputs("</table></div>\n",fp_top3);
+   fputs("<div align=\"center\"><table cellpadding=\"1\" cellspacing=\"2\">\n",fp_top3);
    fputs("<tr><td><br></td><td></td></tr>\n",fp_top3);
 
-   if(strstr(ReportType,"topsites") != 0 && strcmp(Privacy,"yes") != 0) 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(strstr(ReportType,"sites_users") != 0 && strcmp(Privacy,"yes") != 0) 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(strstr(ReportType,"topsites") != 0 && strcmp(Privacy,"yes") != 0) 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(strstr(ReportType,"sites_users") != 0 && strcmp(Privacy,"yes") != 0) 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 (strstr(ReportType,"downloads") != 0 && download_count && strcmp(Privacy,"yes") != 0 && 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 (strstr(ReportType,"denied") != 0 && denied_count && strcmp(Privacy,"yes") != 0) 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 (strstr(ReportType,"auth_failures") != 0 && authfail_count && strcmp(Privacy,"yes") != 0) 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 (strstr(ReportType,"downloads") != 0 && download_count && strcmp(Privacy,"yes") != 0 && 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 (strstr(ReportType,"denied") != 0 && denied_count && strcmp(Privacy,"yes") != 0) 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 (strstr(ReportType,"auth_failures") != 0 && authfail_count && strcmp(Privacy,"yes") != 0) 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]);
    fputs("<tr><td></td></tr>\n",fp_top3);
 
    if (strstr(ReportType,"topuser") == 0) {
@@ -384,22 +389,30 @@ void topuser(void)
          ouperc=((ouperc * 100) / tnbytes);
       } else ouperc = 0;
 
-      strcpy(href," ");
-      strcpy(href2," ");
-      strcpy(href3," ");
-
       if(strcmp(user,"TOTAL") != 0){
-         sprintf(href,"<a href='%s/",user);
-         sprintf(href2,"<a href='%s/d",user);
-         sprintf(href3,"<a href='%s/graph_day.png'>",user);
-         strcat(href,user);
+         sprintf(href1,"<a href=\"%s/",user);
+         strcpy(href1end,"</a>");
+         sprintf(href2,"<a href=\"%s/d",user);
+         strcpy(href2end,"</a>");
+         sprintf(href3,"<a href=\"%s/graph_day.png\">",user);
+         strcpy(href3end,"</a>");
+         strcat(href1,user);
          strcat(href2,user);
-         strcat(href,".html'>");
-         strcat(href2,".html'>");
+         strcat(href1,".html\">");
+         strcat(href2,".html\">");
+      } else {
+         strcpy(href1," ");
+         strcpy(href1end,"");
+         strcpy(href2," ");
+         strcpy(href2end,"");
+         strcpy(href3," ");
+         strcpy(href3end,"");
       }
 
-      if(strcmp(Graphs,"yes") != 0)
+      if(strcmp(Graphs,"yes") != 0) {
          bzero(href3,MAXLEN);
+         strcpy(href3end,"");
+      }
 
       posicao++;
 
@@ -415,13 +428,14 @@ void topuser(void)
             } else strcpy(user2,nameantes);
          }
       }
-    
+
       if(strstr(ReportType,"date_time") != 0) {
          sprintf(ltext110,"%s",text[110]);
          for(s=ltext110; *s; ++s)
             *s=tolower(*s);
       } else {
          bzero(href2, MAXLEN);
+         href2end[0]='\0';
          bzero(ltext110, 50);
          sprintf(val1,"%s/d%s.html",dirname,user);
          unlink(val1);
@@ -444,9 +458,9 @@ void topuser(void)
 
       sprintf(val1,"%d",posicao);
 #ifdef HAVE_GD
-      sprintf(val2,"%s<img src=\"%s/graph.png\" border=\"0\" title=\"%s\"></a>&nbsp;%s<img src=\"%s/datetime.png\" border=\"0\" title=\"%s %s\">\n",href3,ImageFile,text[126],href2,ImageFile,ltext110,text[55]);
+      sprintf(val2,"%s<img src=\"%s/graph.png\" border=\"0\" title=\"%s\" alt=\"G\">%s&nbsp;%s<img src=\"%s/datetime.png\" border=\"0\" title=\"%s %s\" alt=\"T\">%s\n",href3,ImageFile,text[126],href3end,href2,ImageFile,ltext110,text[55],href2end);
 #else
-      sprintf(val2,"%s<img src=\"%s/datetime.png\" border=\"0\" title=\"%s\">\n",href2,ImageFile,ltext110);
+      sprintf(val2,"%s<img src=\"%s/datetime.png\" border=\"0\" title=\"%s\" alt=\"T\">%s\n",href2,ImageFile,ltext110,href2end);
 #endif
 
       sprintf(val3,"%3.2f%%",perc);
@@ -508,14 +522,16 @@ void topuser(void)
          bzero(hbc10, 30);
       }
 
-      if(strstr(ReportType,"users_sites") == 0)
-         href[0]='\0';
+      if(strstr(ReportType,"users_sites") == 0) {
+         href1[0]='\0';
+         href1end[0]='\0';
+      }
 
       if(dotinuser && strchr(name,'_')) {
          subs(name,sizeof(name),"_",".");
       }
 
-      sprintf(preg,"<tr><td %s>%s</td><td %s>%s</td><td %s>%s%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s<td %s>%s</td></tr>\n",hbc1,val1,hbc2,val2,hbc2,href,name,hbc3,wwork1,hbc4,wwork2,hbc5,val3,hbc6,val4,hbc7,val5,hbc8,val6,hbc9,wwork3,hbc10,val7);
+      sprintf(preg,"<tr><td %s>%s</td><td %s>%s</td><td %s>%s%s%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s</td><td %s>%s<td %s>%s</td></tr>\n",hbc1,val1,hbc2,val2,hbc2,href1,name,href1end,hbc3,wwork1,hbc4,wwork2,hbc5,val3,hbc6,val4,hbc7,val5,hbc8,val6,hbc9,wwork3,hbc10,val7);
 
       if(strstr(user,"TOTAL") != 0) {
 
@@ -626,10 +642,10 @@ void topuser(void)
    if(strlen(UserAgentLog) > 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("<td align=\"left\" colspan=\"8\"><font size=-1><a href='useragent.html'>Useragent</a> Report</td>\n",fp_top3);
    }
 
-   fputs("</table></center>",fp_top3);
+   fputs("</table></div>",fp_top3);
 
    show_info(fp_top3);
 
index 3518ac4d0db8a09a483488c1b7cf8b59bc73bd59..537b9f165918a5543da88d8521b8dd1d7cdca3d4 100644 (file)
@@ -147,24 +147,24 @@ void useragent(void)
    fputs("</head>\n",fp_ht);
    if(strlen(FontFace) > 0) fprintf(fp_ht,"<font face=%s>\n",FontFace);
    fprintf(fp_ht,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
-   if(strlen(LogoImage) > 0) fprintf(fp_ht, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   write_logo_image(fp_ht);
 
    if(strcmp(IndexTree,"date") == 0)
       show_sarg(fp_ht, "../../..");
    else
       show_sarg(fp_ht,"..");
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ht);
-   fprintf(fp_ht,"<tr><th align=center colspan=2><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,text[105]);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
+   fprintf(fp_ht,"<tr><th align=\"center\" colspan=\"2\"><b><font color=\"%s\" size=\"+1\">%s</font></b></th></tr>\n",TiColor,text[105]);
 
    fputs("<tr><td></td></tr><tr><td></td></tr>",fp_ht);
-   fputs("</table></center>\n",fp_ht);
+   fputs("</table></div>\n",fp_ht);
 
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ht);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
 
-   fprintf(fp_ht,"<tr><td align=right bgcolor=%s><font size=%s>%s:</font><td align=left bgcolor=%s><font size=%s>%s - %s</font></td></td></tr>\n",HeaderBgColor,FontSize,text[89],TxBgColor,FontSize,idate,fdate);
+   fprintf(fp_ht,"<tr><td align=\"right\" bgcolor=\"%s\"><font size=\"%s\">%s:</font><td align=\"left\" bgcolor=\"%s\"><font size=\"%s\">%s - %s</font></td></td></tr>\n",HeaderBgColor,FontSize,text[89],TxBgColor,FontSize,idate,fdate);
 
-   fputs("</table></center>\n",fp_ht);
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ht);
+   fputs("</table></div>\n",fp_ht);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
    fputs("<tr><td></td><td></td></tr>",fp_ht);
 
    fprintf(fp_ou,"<tr><th align=left bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s align=left><font size=%s color=%s>%s</font></th></tr>\n",HeaderBgColor,FontSize,HeaderColor,text[98],HeaderBgColor,FontSize,HeaderColor,text[106]);
@@ -280,8 +280,8 @@ void useragent(void)
 
    fputs("<br><br>\n",fp_ht);
 
-   fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ht);
-   fprintf(fp_ht,"<tr><th align=left bgcolor=%s><font size=%s color=%s>%s</font></th><th bgcolor=%s align=left><font size=%s color=%s>%s</font></th><th align=center bgcolor=%s><font size=%s color=%s>%%</font></th></tr>\n",HeaderBgColor,FontSize,HeaderColor,text[106],HeaderBgColor,FontSize,HeaderColor,text[107],HeaderBgColor,FontSize,HeaderColor);
+   fputs("<div align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\">\n",fp_ht);
+   fprintf(fp_ht,"<tr><th align=\"left\" bgcolor=\"%s\"><font size=\"%s\" color=\"%s\">%s</font></th><th bgcolor=\"%s\" align=\"left\"><font size=\"%s\" color=\"%s\">%s</font></th><th align=\"center\" bgcolor=\"%s\"><font size=\"%s\" color=\"%s\">%%</font></th></tr>\n",HeaderBgColor,FontSize,HeaderColor,text[106],HeaderBgColor,FontSize,HeaderColor,text[107],HeaderBgColor,FontSize,HeaderColor);
 
    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
       buf[strlen(buf)-1]='\0';
@@ -298,7 +298,7 @@ void useragent(void)
    fputs("</table></html>\n",fp_ht);
    if(strcmp(ShowSargInfo,"yes") == 0) {
       zdate(ftime, DateFormat);
-      fprintf(fp_ht,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
+      fprintf(fp_ht,"<br><br><div align=\"center\"><font size=\"-2\">%s <a href=\"%s\">%s-%s</a> %s %s</font></div>\n",text[108],URL,PGM,VERSION,text[109],ftime);
    }
 
    fputs("</table>\n</body>\n</html>\n",fp_ht);
diff --git a/util.c b/util.c
index a69968caba4d7786f32405753e1b18c868d6852e..89fea3d970517bb86d976243edd3959b8231455e 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1282,20 +1282,6 @@ int getnumlist( char *buf, numlist *list, const int len, const int maxvalue )
 }
 
 
-void show_info(FILE *fp_ou)
-{
-   char ftime[127];
-
-   if(strcmp(ShowSargInfo,"yes") != 0) return;
-   zdate(ftime, DateFormat);
-   fprintf(fp_ou,"<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></center>\n",text[108],URL,PGM,VERSION,text[109],ftime);
-}
-
-void show_sarg(FILE *fp_ou, const char *ind)
-{
-   if(strcmp(ShowSargLogo,"yes") == 0) fprintf(fp_ou,"<center><table cellpadding=0 cellspacing=0>\n<tr><th class=\"logo\"><a href=\"http://sarg.sourceforge.net\"><img src=\"%s/images/sarg.png\" border=\"0\" align=\"absmiddle\" title=\"SARG, Squid Analysis Report Generator. Logo by Osamu Matsuzaki\"></a>&nbsp;<font class=\"logo\">Squid Analysis Report Generator</font></th></tr>\n<tr><th class=\"title\">&nbsp</th></tr>\n<table>\n",ind);
-}
-
 char *get_size(const char *path, const char *file)
 {
    FILE *fp;
@@ -1317,15 +1303,61 @@ char *get_size(const char *path, const char *file)
    return (val5);
 }
 
+void show_info(FILE *fp_ou)
+{
+   char ftime[127];
+
+   if(strcmp(ShowSargInfo,"yes") != 0) return;
+   zdate(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);
+}
+
+void show_sarg(FILE *fp_ou, const char *ind)
+{
+   if(strcmp(ShowSargLogo,"yes") == 0) 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>&nbsp;Squid Analysis Report Generator</th></tr>\n<tr><th class=\"title\">&nbsp</th></tr>\n</table></div>\n",ind);
+}
+
+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\">&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n</div>\n",LogoImage,Width,Height,LogoText);
+}
 
 void write_html_header(FILE *fp_ou, const char * ind)
 {
-   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</head>\n",CharSet);
+   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);
-   fprintf(fp_ou,"<body style=\"font-family:%s;font-size:%s;background-color:%s;background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
-   if(strlen(LogoImage) > 0) fprintf(fp_ou, "<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"logo\"><img src='%s' border=0 align=absmiddle width=%s height=%s>&nbsp;%s</th></tr>\n<tr><td height=\"5\"></td></tr>\n</table>\n",LogoImage,Width,Height,LogoText);
+   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,"<center><table cellpadding=\"0\" cellspacing=\"0\">\n<tr><th class=\"title\">%s</th></tr>\n</table></center>\n<center><table cellpadding=\"1\" cellspacing=\"2\">\n<tr><td></td><td></td></tr>\n",Title);
+   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);
+}
+
+void output_html_string(FILE *fp_ou,const char *str)
+{
+
+   while (*str) {
+      switch (*str) {
+         case '&':
+            fputs("&amp;",fp_ou);
+            break;
+         case '<':
+            fputs("&lt;",fp_ou);
+            break;
+         case '>':
+            fputs("&gt;",fp_ou);
+            break;
+         case '"':
+            fputs("&quot;",fp_ou);
+            break;
+         case '\'':
+            fputs("&#39;",fp_ou);
+            break;
+         default:
+            fputc(*str,fp_ou);
+      }
+      str++;
+   }
 }
 
 void baddata(void)
@@ -1367,7 +1399,7 @@ void url_module(const char *url, char *w2)
 
 void write_html_trailer(FILE *fp_ou)
 {
-   fputs("</table></center>\n",fp_ou);
+   fputs("</table></div>\n",fp_ou);
    zdate(ftime, DateFormat);
    show_info(fp_ou);
    fputs("</body>\n</html>\n",fp_ou);