home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / denied.c < prev    next >
C/C++ Source or Header  |  2002-10-11  |  5KB  |  174 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 gen_denied_report(const char *dirname, int debug, const char *outdir, 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 *DateFormat)
  9. {
  10.  
  11.    FILE *fp_in = NULL, *fp_ou = NULL;
  12.       
  13.    char url[MAXLEN];
  14.    char html[MAXLEN];
  15.    char html2[MAXLEN];
  16.    char denied_in[MAXLEN];
  17.    char denied_ou[MAXLEN];
  18.    char per[MAXLEN];
  19.    char report[MAXLEN];
  20.    char periodo[100];
  21.    char ip[MAXLEN];
  22.    char oip[MAXLEN];
  23.    char user[MAXLEN];
  24.    char ouser[MAXLEN];
  25.    char data[15];
  26.    char hora[15];
  27.    char ftime[128];
  28.    char *str;
  29.    int  z=0;
  30.  
  31.    ouser[0]='\0';
  32.  
  33.    sprintf(denied_in,"%s/denied.log",TempDir);
  34.    if(!denied_count) {
  35.       unlink(denied_in);
  36.       return;
  37.    }
  38.  
  39.    sprintf(per,"%s/periodo",dirname);
  40.    sprintf(report,"%s/denied.html",dirname);
  41.  
  42.    if ((fp_in = fopen(per, "r")) == 0) {
  43.       fprintf(stderr, "SARG: (denied) %s: %s\n",text[45],per);
  44.       exit(1);
  45.    }
  46.  
  47.    fgets(periodo,sizeof(periodo),fp_in);
  48.    fclose(fp_in);
  49.  
  50.    if((fp_in=fopen(denied_in,"r"))==NULL) {
  51.      fprintf(stderr, "SARG: (denied) %s: %s\n",text[8],denied_in);
  52.      exit(1);
  53.    }
  54.  
  55.    if((fp_ou=fopen(report,"w"))==NULL) {
  56.      fprintf(stderr, "SARG: (denied) %s: %s\n",text[8],report);
  57.      exit(1);
  58.    }
  59.  
  60.    fputs("<html>\n",fp_ou);
  61.    fputs("<head>\n",fp_ou);
  62.    sprintf(html,"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
  63.    fputs(html,fp_ou);
  64.    fputs("</head>\n",fp_ou);
  65.  
  66.    // DAS: Using style=font-family more corresponds to standards. 
  67.    sprintf(url,"<body bgcolor=%s text=%s background='%s' style='font-family:%s;'>\n",BgColor,TxColor,BgImage,FontFace);
  68.    fputs(url,fp_ou);
  69.    fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
  70.  
  71.    if(strlen(LogoImage) > 0) {
  72.       sprintf(url,"<tr><th><img src='%s' border=0 align=absmiddle width=%s height=%s>        \
  73.            <font color=%s>%s</font>\n",LogoImage,Width,Height,LogoTextColor,LogoText);
  74.       fputs(url,fp_ou);
  75.    }
  76.  
  77.    sprintf(url,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
  78.    fputs(url,fp_ou);
  79.  
  80.    sprintf(url,"<tr><td align=center bgcolor=%s><font size=%s color=%s>%s: %s</font></td></tr>\n",    \
  81.         HeaderBgColor,FontSize,HeaderColor,text[89],periodo);
  82.    fputs(url,fp_ou);
  83.    sprintf(url,"<tr><th bgcolor=%s align=center><font size=%s color=red>%s</font>        \
  84.          <font size=%s>%s</font></th></tr>\n",    \
  85.         HeaderBgColor,FontSize,text[46],FontSize,text[55]);
  86.    fputs(url,fp_ou);
  87.    fputs("</table></center>\n",fp_ou);
  88.  
  89.    fputs("<center><table cellpadding=0 cellspacing=2>\n",fp_ou);
  90.    fputs("<tr><td></td></tr>\n",fp_ou);
  91.    fputs("<tr><td></td></tr>\n",fp_ou);
  92.    fputs("<tr><td></td></tr>\n",fp_ou);
  93.    sprintf(url,"<tr><th bgcolor=%s><font size=%s color=%s>%s</font></th>        \
  94.         <th bgcolor=%s><font size=%s color=%s>%s</font></th>            \
  95.         <th bgcolor=%s><font size=%s color=%s>%s</font></th>            \
  96.         <th bgcolor=%s><font size=%s color=%s>%s</font></th></tr>\n",        \
  97.         HeaderBgColor,FontSize,HeaderColor,text[98],                        \
  98.         HeaderBgColor,FontSize,HeaderColor,text[111],                        \
  99.         HeaderBgColor,FontSize,HeaderColor,text[110],                        \
  100.         HeaderBgColor,FontSize,HeaderColor,text[91]);
  101.    fputs(url,fp_ou);
  102.  
  103.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  104.       getword(data,buf,' ');
  105.       getword(hora,buf,' ');
  106.       getword(user,buf,' ');
  107.       getword(ip,buf,' ');
  108.       getword(url,buf,' ');
  109.  
  110.       if((str=(char *) strstr(user, "_")) != (char *) NULL ) {
  111.          if((str=(char *) strstr(str+1, "_")) != (char *) NULL )
  112.             fixip(user);
  113.       }
  114.  
  115.       if(strcmp(Ip2Name,"yes") == 0) 
  116.          ip2name(ip);
  117.  
  118.       if(!z) {
  119.          strcpy(ouser,user);
  120.          strcpy(oip,ip);
  121.          z++;
  122.       } else {
  123.          if(strcmp(ouser,user) == 0)
  124.             user[0]='\0';
  125.          if(user[0] != '\0')
  126.             strcpy(ouser,user);
  127.          if(strcmp(oip,ip) == 0) 
  128.             ip[0]='\0';
  129.          if(ip[0] != '\0')
  130.             strcpy(oip,ip);
  131.       }
  132.  
  133.       if(UserTabFile[0] != '\0') {
  134.          sprintf(warea,":%s:",user);
  135.          if((str=(char *) strstr(userfile,warea)) != (char *) NULL ) {
  136.             z1=0;
  137.             str2=(char *) strstr(str+1,":");
  138.             str2++;
  139.             bzero(name, MAXLEN);
  140.             while(str2[z1] != ':') {
  141.                name[z1]=str2[z1];
  142.                z1++;
  143.             }
  144.          } else strcpy(name,user);
  145.       } else strcpy(name,user);
  146.  
  147.       // DAS: The string must be terminated before end of line
  148.       sprintf(html2,"<tr><td bgcolor=%s><font size=%s>%s</font></td>"
  149.             "<td bgcolor=%s><font size=%s>%s</font></td>"
  150.             "<td bgcolor=%s><font size=%s>%s-%s</font></td>"
  151.             "<td bgcolor=%s><font size=%s><a href=\"%s\">%s</a></font></td></tr>\n",
  152.             TxBgColor,FontSize,name,
  153.             TxBgColor,FontSize,ip,
  154.             TxBgColor,FontSize,data,hora,
  155.             TxBgColor,FontSize,url,url);
  156.       fputs(html2,fp_ou);
  157.    }
  158.  
  159.    fputs("</table>\n",fp_ou);
  160.  
  161.    zdate(ftime, DateFormat);
  162.    sprintf(html,"<br><br><center><font size=-2>%s <a href='%s'>%s-%s</a> %s %s</font></center>\n",    \
  163.         text[108],URL,PGM,VERSION,text[109],ftime);
  164.    fputs(html,fp_ou);
  165.    fputs("</html>\n",fp_ou);
  166.  
  167.    fclose(fp_in);
  168.    fclose(fp_ou);
  169.  
  170.    unlink(denied_in);
  171.  
  172.    return;
  173. }
  174.