home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / siteuser.c < prev    next >
C/C++ Source or Header  |  2002-10-11  |  5KB  |  161 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 siteuser(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, *fp_ou;
  12.       
  13.    char user[MAXLEN];
  14.    char url[MAXLEN];
  15.    char wuser[MAXLEN];
  16.    char ourl[MAXLEN];
  17.    char nacc[20];
  18.    char nbytes[20];
  19.    char csort[255];
  20.    char geral[MAXLEN];
  21.    char geral2[MAXLEN];
  22.    char per[MAXLEN];
  23.    char html[MAXLEN];
  24.    char sites[MAXLEN];
  25.    char report[MAXLEN];
  26.    char periodo[100];
  27.    char ftime[128];
  28.    int regs=0;
  29.    int ucount=0;
  30.    char *users;
  31.  
  32. //   bzero(users, MAXLEN);
  33.    sprintf(geral,"%s/geral",dirname);
  34.    sprintf(sites,"%s/sites",dirname);
  35.    sprintf(geral2,"%s/geral2",dirname);
  36.    sprintf(per,"%s/periodo",dirname);
  37.    sprintf(report,"%s/siteuser.html",dirname);
  38.  
  39.    if ((fp_in = fopen(per, "r")) == 0) {
  40.       fprintf(stderr, "SARG: (topuser) %s: %s\n",text[45],per);
  41.       exit(1);
  42.    }
  43.  
  44.    fgets(periodo,sizeof(periodo),fp_in);
  45.    fclose(fp_in);
  46.  
  47.    sprintf(csort, SORT" -k 4,4 -k 1,1 -o %s %s",geral2,geral);
  48.    system(csort);
  49.  
  50.    if((fp_in=fopen(geral2,"r"))==NULL) {
  51.      fprintf(stderr, "SARG: (topsite) %s: %s\n",text[8],geral2);
  52.      exit(1);
  53.    }
  54.  
  55.    if((fp_ou=fopen(report,"w"))==NULL) {
  56.      fprintf(stderr, "SARG: (topsite) %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.  
  70.    fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
  71.  
  72.    if(strlen(LogoImage) > 0) {
  73.       sprintf(url,"<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);
  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>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],periodo);
  81.    fputs(url,fp_ou);
  82.    sprintf(url,"<tr><td align=center bgcolor=%s><font size=%s>%s</font></td></tr>\n",HeaderBgColor,FontSize,text[85]);
  83.    fputs(url,fp_ou);
  84.    fputs("</table></center>\n",fp_ou);
  85.  
  86.    fputs("<center><table cellpadding=0 cellspacing=1>\n",fp_ou);
  87.    fputs("<tr><td></td></tr>\n",fp_ou);
  88.    fputs("<tr><td></td></tr>\n",fp_ou);
  89.    fputs("<tr><td></td></tr>\n",fp_ou);
  90.    sprintf(url,"<tr><th> </th><th> </th><th bgcolor=%s><font size=%s>%s</font></th><th> </th><th bgcolor=%s><font size=%s>%s</font></th></tr>\n",HeaderBgColor,FontSize,text[91],HeaderBgColor,FontSize,text[103]);
  91.    fputs(url,fp_ou);
  92.   
  93.    user[0]='\0';
  94.    ourl[0]='\0';
  95.  
  96.    if((users=(char *) malloc(204800))==NULL){
  97.       fprintf(stderr, "SARG: ERROR: %s",text[87]);
  98.       exit(1);
  99.    }
  100.    strcat(users," ");
  101.  
  102.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  103.       getword(user,buf,' ');
  104.       if(strcmp(user,"TOTAL") == 0)
  105.          continue;
  106.       if(userip)
  107.          fixip(user);
  108.       if(strcmp(Ip2Name,"yes") == 0)
  109.          ip2name(user);
  110.  
  111.       getword(nacc,buf,' ');
  112.       getword(nbytes,buf,' ');
  113.       getword(url,buf,' ');
  114.  
  115.       if(!regs) {
  116.          strcpy(ourl,url);
  117.          regs++;
  118.       }
  119.       
  120.       sprintf(wuser," %s ",user);
  121.       if(strstr(users,wuser) == 0 && strcmp(url,ourl) == 0) {
  122.          strcat(users,user);
  123.          strcat(users," ");
  124.          ucount++;
  125.          if(ucount>4) {
  126.             strcat(users,"<br>");
  127.             ucount=0;
  128.          }
  129.       }
  130.  
  131.       if(strcmp(url,ourl) != 0) {
  132.          sprintf(html,"<tr><td bgcolor=%s align=right><font size=%s>%d</font></td><td> </td><td align=left border=0 bgcolor=%s><font size=%s><a href=\"http://%s\">%s</a></font></td><td> </td><td bgcolor=%s align=left><font size=%s>%s</font></td></tr>\n",TxBgColor,FontSize,regs,TxBgColor,FontSize,ourl,ourl,TxBgColor,FontSize,users);
  133.          fputs(html,fp_ou);
  134.          regs++;
  135.          ucount=0;
  136.      strcpy(users,user);
  137.          strcat(users," ");
  138.          strcpy(ourl,url);
  139.       }
  140.    }
  141.  
  142.    sprintf(html,"<tr><td bgcolor=%s align=right><font size=%s>%d</font></td><td> </td><td align=left border=0 bgcolor=%s><font size=%s><a href=\"http://%s\">%s</font></td><td> </td><td bgcolor=%s align=left><font size=%s>%s</font></td></tr>\n",TxBgColor,FontSize,regs,TxBgColor,FontSize,ourl,ourl,TxBgColor,FontSize,users);
  143.    fputs(html,fp_ou);
  144.  
  145.    unlink(geral2);
  146.  
  147.    fputs("</table></center>\n",fp_ou);
  148.  
  149.    zdate(ftime, DateFormat);
  150.    sprintf(ourl,"<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);
  151.    fputs(ourl,fp_ou);
  152.  
  153.    fputs("</html>\n",fp_ou);
  154.    
  155.    fclose(fp_in);
  156.    fclose(fp_ou);
  157.  
  158.    return;
  159.  
  160. }
  161.