home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / smartfilter.c < prev    next >
C/C++ Source or Header  |  2002-10-11  |  8KB  |  190 lines

  1. /*
  2.  * sarg - Squid user management log
  3.  * Mar/98 - Pedro L Orso - orso@onda.com.br
  4.  */
  5.  
  6. #include "include/conf.h"
  7.  
  8. void smartfilter_report(const char *dirname, int debug, const char *outdir, int userip, char *BgColor, char *TxColor, char *TxBgColor, char *TiColor, char *LogoImage, char *LogoText, char *LogoTextColor, char *Width, char *Height, char *Title, char *BgImage, char *FontFace, char *HeaderColor, char *HeaderBgColor, char *FontSize, char *TempDir, char *Ip2Name, char *TopuserSortField, char *TopuserSortOrder, char *UserAgentLog, char *DateFormat)
  9. {
  10.  
  11.    FILE *fp_in = NULL, *fp_ou = NULL, *fp_user = NULL;
  12.       
  13.    char url[MAXLEN];
  14.    char html[MAXLEN];
  15.    char html2[MAXLEN];
  16.    char csort[255];
  17.    char smart_in[MAXLEN];
  18.    char smart_ou[MAXLEN];
  19.    char per[MAXLEN];
  20.    char sites[MAXLEN];
  21.    char report[MAXLEN];
  22.    char periodo[100];
  23.    char ip[MAXLEN];
  24.    char user[MAXLEN];
  25.    char ouser[MAXLEN];
  26.    char data[15];
  27.    char hora[15];
  28.    char smartcat[256];
  29.    char smartheader[15];
  30.    char ftime[128];
  31.    char smartuser[MAXLEN];
  32.    char *str;
  33.    int  fuser=0;
  34.  
  35.    ouser[0]='\0';
  36.  
  37.    sprintf(smartheader,"%s",text[116]);
  38.    strup(smartheader);
  39.  
  40.    sprintf(smart_in,"%s/smartfilter.unsort",dirname);
  41.    sprintf(sites,"%s/sites",dirname);
  42.    sprintf(smart_ou,"%s/smartfilter.log",dirname);
  43.    sprintf(per,"%s/periodo",dirname);
  44.    sprintf(report,"%s/smartfilter.html",dirname);
  45.  
  46.    if ((fp_in = fopen(per, "r")) == 0) {
  47.       fprintf(stderr, "SARG: (smartfilter) %s: %s\n",text[45],per);
  48.       exit(1);
  49.    }
  50.  
  51.    fgets(periodo,sizeof(periodo),fp_in);
  52.    fclose(fp_in);
  53.  
  54.    sprintf(csort, SORT" -n -k 1,1 -k 2,2 -k 3,3 -o %s %s",smart_ou,smart_in);
  55.    system(csort);
  56.    unlink(smart_in);
  57.  
  58.    if((fp_in=fopen(smart_ou,"r"))==NULL) {
  59.      fprintf(stderr, "SARG: (smartfilter) %s: %s\n",text[8],smart_ou);
  60.      exit(1);
  61.    }
  62.  
  63.    if((fp_ou=fopen(report,"w"))==NULL) {
  64.      fprintf(stderr, "SARG: (smartfilter) %s: %s\n",text[8],report);
  65.      exit(1);
  66.    }
  67.  
  68.    fputs("<html>\n",fp_ou);
  69.    fputs("<head>\n",fp_ou);
  70.    sprintf(html,"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
  71.    fputs(html,fp_ou);
  72.    fputs("</head>\n",fp_ou);
  73.  
  74.    // DAS: Using style=font-family more corresponds to standards. 
  75.    sprintf(url,"<body bgcolor=%s text=%s background='%s' style='font-family:%s;'>\n",BgColor,TxColor,BgImage,FontFace);
  76.    fputs(url,fp_ou);
  77.    fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
  78.  
  79.    if(strlen(LogoImage) > 0) {
  80.       sprintf(url,"<tr><th><img src='%s' border=0 align=absmiddle width=%s height=%s><font color=%s>%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
  81.       fputs(url,fp_ou);
  82.    }
  83.  
  84.    sprintf(url,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
  85.    fputs(url,fp_ou);
  86.  
  87.    sprintf(url,"<tr><td align=center bgcolor=%s><font size=%s>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],periodo);
  88.    fputs(url,fp_ou);
  89.    sprintf(url,"<tr><th bgcolor=%s align=center><font size=%s>%s %s</font></th></tr>\n",HeaderBgColor,FontSize,text[116],text[55]);
  90.    fputs(url,fp_ou);
  91.    fputs("</table></center>\n",fp_ou);
  92.  
  93.    fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
  94.    fputs("<tr><td></td></tr>\n",fp_ou);
  95.    fputs("<tr><td></td></tr>\n",fp_ou);
  96.    fputs("<tr><td></td></tr>\n",fp_ou);
  97.    sprintf(url,"<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);
  98.    fputs(url,fp_ou);
  99.  
  100.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  101.       getword(user,buf,' ');
  102.       getword(data,buf,' ');
  103.       getword(hora,buf,' ');
  104.       getword(ip,buf,' ');
  105.       getword(url,buf,' ');
  106.       getword(smartcat,buf,'\n');
  107.  
  108.       if((str=(char *) strstr(user, "_")) != (char *) NULL ) {
  109.          if((str=(char *) strstr(str+1, "_")) != (char *) NULL )
  110.             fixip(user);
  111.       }
  112.  
  113.       if(strcmp(ouser,user) != 0) {
  114.          strcpy(ouser,user);
  115.          sprintf(smartuser,"%s/denied_%s.html",dirname,user);
  116.          if(fuser) {
  117.             fuser=0;
  118.             fputs("</table>\n",fp_user);
  119.             zdate(ftime, DateFormat);
  120.             sprintf(html2,"<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);
  121.             fputs(html2,fp_user);
  122.             fputs("</html>\n",fp_user);
  123.             fclose(fp_user);
  124.          }
  125.          if ((fp_user = fopen(smartuser, "a")) == 0) {
  126.             fprintf(stderr, "SARG: (smartfilter) %s: %s\n",text[45],smartuser);
  127.             exit(1);
  128.          }
  129.          fuser=1;
  130.  
  131.          fputs("<html>\n",fp_user);
  132.          fputs("<head>\n",fp_user);
  133.          sprintf(html,"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
  134.          fputs(html,fp_user);
  135.          fputs("</head>\n",fp_user);
  136.  
  137.          if(strlen(FontFace) > 0) {
  138.             sprintf(html2,"<font face=%s>\n",FontFace);
  139.             fputs(url,fp_user);
  140.          }
  141.          sprintf(html2,"<body bgcolor=%s text=%s background='%s'>\n",BgColor,TxColor,BgImage);
  142.          fputs(html2,fp_user);
  143.          fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_user);
  144.          if(strlen(LogoImage) > 0) {
  145.             sprintf(html2,"<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);
  146.             fputs(html2,fp_user);
  147.          }
  148.          sprintf(html2,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
  149.          fputs(html2,fp_user);
  150.          sprintf(html2,"<tr><td align=center bgcolor=%s><font size=%s>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],periodo);
  151.          fputs(html2,fp_user);
  152.          sprintf(html2,"<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);
  153.          fputs(html2,fp_user);
  154.          fputs("</table></center>\n",fp_user);
  155.          fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_user);
  156.          fputs("<tr><td></td></tr>\n",fp_user);
  157.          fputs("<tr><td></td></tr>\n",fp_user);
  158.          fputs("<tr><td></td></tr>\n",fp_user);
  159.          sprintf(html2,"<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);
  160.          fputs(html2,fp_user);
  161.       }
  162.       sprintf(html2,"<tr><td bgcolor=%s align=center><font size=%s>%s</font></td><td bgcolor=%s align=center><font size=%s>%s</font></td><td bgcolor=%s align=center><font size=%s>%s-%s</font></td><td bgcolor=%s><font size=%s>%s</font></td><td bgcolor=%s><font size=%s>%s</font></td></th>\n",TxBgColor,FontSize,user,TxBgColor,FontSize,ip,TxBgColor,FontSize,data,hora,TxBgColor,FontSize,url,TxBgColor,FontSize,smartcat);
  163.       fputs(html2,fp_user);
  164.  
  165.       sprintf(html,"<tr><td bgcolor=%s align=center><font size=%s>%s</font></td><td bgcolor=%s align=center><font size=%s>%s</font></td><td bgcolor=%s align=center><font size=%s>%s-%s</font></td><td bgcolor=%s><font size=%s>%s</font></td><td bgcolor=%s><font size=%s>%s</font></td></th>\n",TxBgColor,FontSize,user,TxBgColor,FontSize,ip,TxBgColor,FontSize,data,hora,TxBgColor,FontSize,url,TxBgColor,FontSize,smartcat);
  166.       fputs(html,fp_ou);
  167.    }
  168.  
  169.    fputs("</table>\n",fp_ou);
  170.  
  171.    zdate(ftime, DateFormat);
  172.    sprintf(html,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",text[108],URL,PGM
  173. ,VERSION,text[109],ftime);
  174.    fputs(html,fp_ou);
  175.  
  176.    fputs("</html>\n",fp_ou);
  177.  
  178.    fclose(fp_ou);
  179.    if(fp_user) {
  180.       fputs("</table>\n",fp_user);
  181.       zdate(ftime, DateFormat);
  182.       sprintf(html2,"<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);
  183.       fputs(html2,fp_user);
  184.       fputs("</html>\n",fp_user);
  185.       fclose(fp_user);
  186.    }
  187.  
  188.    return;
  189. }
  190.