home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / topsites.c < prev    next >
C/C++ Source or Header  |  2002-10-11  |  6KB  |  206 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 topsites(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 url[MAXLEN];
  14.    char ourl[MAXLEN];
  15.    char nacc[20];
  16.    char nbytes[20];
  17.    char ttnacc[20];
  18.    char ttnbytes[20];
  19.    char csort[255];
  20.    char geral[MAXLEN];
  21.    char geral2[MAXLEN];
  22.    char geral3[MAXLEN];
  23.    char per[MAXLEN];
  24.    char sites[MAXLEN];
  25.    char report[MAXLEN];
  26.    char periodo[100];
  27.    char ftime[128];
  28.    char sortf[10];
  29.    char sortt[10];
  30.    long long int tnacc=0;
  31.    long long int tnbytes=0;
  32.    long long int twork1=0, twork2=0;
  33.    int regs=0;
  34.  
  35.    sprintf(geral,"%s/geral",dirname);
  36.    sprintf(sites,"%s/sites",dirname);
  37.    sprintf(geral2,"%s/geral2",dirname);
  38.    sprintf(geral3,"%s/geral3",dirname);
  39.    sprintf(per,"%s/periodo",dirname);
  40.    sprintf(report,"%s/topsites.html",dirname);
  41.  
  42.    if ((fp_in = fopen(per, "r")) == 0) {
  43.       fprintf(stderr, "SARG: (topuser) %s: %s\n",text[45],per);
  44.       exit(1);
  45.    }
  46.  
  47.    fgets(periodo,sizeof(periodo),fp_in);
  48.    fclose(fp_in);
  49.  
  50.    sprintf(csort, SORT" -k 4,4 -o %s %s",geral2,geral);
  51.    system(csort);
  52.  
  53.    if((fp_in=fopen(geral2,"r"))==NULL) {
  54.      fprintf(stderr, "SARG: (topsite) %s: %s\n",text[8],geral2);
  55.      exit(1);
  56.    }
  57.  
  58.    if((fp_ou=fopen(geral3,"w"))==NULL) {
  59.      fprintf(stderr, "SARG: (topsite) %s: %s\n",text[8],geral3);
  60.      exit(1);
  61.    }
  62.  
  63.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  64.       getword(url,buf,' ');
  65.       if(strcmp(url,"TOTAL") == 0) {
  66.          getword(ttnacc,buf,' ');
  67.          getword(ttnbytes,buf,' ');
  68.          continue;
  69.       }
  70.       getword(nacc,buf,' ');
  71.       getword(nbytes,buf,' ');
  72.       getword(url,buf,' ');
  73.  
  74.       if(!regs) {
  75.          strcpy(ourl,url);
  76.          regs++;
  77.       }
  78.  
  79.       if(strcmp(url,ourl) != 0) {
  80.          my_lltoa(tnacc,val1,15);
  81.          my_lltoa(tnbytes,val2,15);
  82.          sprintf(buf,"%s %s %s\n",val1,val2,ourl);
  83.          fputs(buf, fp_ou);
  84.          strcpy(ourl,url);
  85.          tnacc=0;
  86.          tnbytes=0;
  87.       }
  88.  
  89.       tnacc+=my_atoll(nacc);
  90.       tnbytes+=my_atoll(nbytes);
  91.    }
  92.  
  93.    my_lltoa(tnacc,val1,15);
  94.    my_lltoa(tnbytes,val2,15);
  95.    sprintf(buf,"%s %s %s\n",val1,val2,ourl);
  96.    fputs(buf, fp_ou);
  97.  
  98.    fclose(fp_in);
  99.    fclose(fp_ou);
  100.    unlink(geral2);
  101.  
  102.    strlow(TopsitesSortField);
  103.    strlow(TopsitesSortType);
  104.  
  105.    if(strcmp(TopsitesSortField,"connect") == 0)
  106.       strcpy(sortf,"1,1");
  107.    if(strcmp(TopsitesSortField,"bytes") == 0)
  108.       strcpy(sortf,"2,2");
  109.    if(strcmp(TopsitesSortType,"a") == 0)
  110.       strcpy(sortt," ");
  111.    if(strcmp(TopsitesSortType,"d") == 0)
  112.       strcpy(sortt,"-r");
  113.  
  114.    sprintf(csort, SORT" %s -k %s -o %s %s",sortt,sortf,sites,geral3);
  115.    system(csort);
  116.  
  117.    unlink(geral2);
  118.    unlink(geral3);
  119.  
  120.    if((fp_in=fopen(sites,"r"))==NULL) {
  121.      fprintf(stderr, "SARG: (topsite) %s: %s\n",text[8],sites);
  122.      exit(1);
  123.    }
  124.  
  125.    if((fp_ou=fopen(report,"w"))==NULL) {
  126.      fprintf(stderr, "SARG: (topsite) %s: %s\n",text[8],report);
  127.      exit(1);
  128.    }
  129.  
  130.    regs=0;
  131.  
  132.    fputs("<html>\n",fp_ou);
  133.    fputs("<head>\n",fp_ou);
  134.    sprintf(html,"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
  135.    fputs(html,fp_ou);
  136.    fputs("</head>\n",fp_ou);
  137.  
  138.    // DAS: Using style=font-family more corresponds to standards. 
  139.    sprintf(url,"<body bgcolor=%s text=%s background='%s' style='font-family:%s;'>\n",BgColor,TxColor,BgImage,FontFace);
  140.    fputs(url,fp_ou);
  141.    fputs("<center><table cellpadding=0 cellspacing=0>\n",fp_ou);
  142.  
  143.    if(strlen(LogoImage) > 0) {
  144.       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);
  145.       fputs(url,fp_ou);
  146.    }
  147.  
  148.    sprintf(url,"<tr><th align=center><b><font color=%s size=+1>%s</font></b></th></tr>\n",TiColor,Title);
  149.    fputs(url,fp_ou);
  150.  
  151.    sprintf(url,"<tr><td align=center bgcolor=%s><font size=%s>%s: %s</font></td></tr>\n",HeaderBgColor,FontSize,text[89],periodo);
  152.    fputs(url,fp_ou);
  153.    sprintf(url,"<tr><td align=center bgcolor=%s><font size=%s>%s %s %s</font></td></tr>\n",HeaderBgColor,FontSize,text[83],TopSitesNum,text[84]);
  154.    fputs(url,fp_ou);
  155.    fputs("</table></center>\n",fp_ou);
  156.  
  157.    fputs("<center><table cellpadding=0 cellspacing=1>\n",fp_ou);
  158.    fputs("<tr><td></td></tr>\n",fp_ou);
  159.    fputs("<tr><td></td></tr>\n",fp_ou);
  160.    fputs("<tr><td></td></tr>\n",fp_ou);
  161.    sprintf(url,"<tr><th></th><td> </td>                                \
  162.         <th bgcolor=%s><font size=%s color=%s>%s</font></th>                    \
  163.         <td> </td>                                        \
  164.         <th bgcolor=%s><font size=%s color=%s>%s</font></th>                    \
  165.         <td> </td>                                        \
  166.         <th bgcolor=%s><font size=%s color=%s>%s</font></th></tr>\n",                \
  167.         HeaderBgColor,FontSize,HeaderColor,text[91],                        \
  168.         HeaderBgColor,FontSize,HeaderColor,text[92],                        \
  169.         HeaderBgColor,FontSize,HeaderColor,text[93]);
  170.    fputs(url,fp_ou);
  171.  
  172.    regs=1;
  173.  
  174.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  175.       if(regs>atoi(TopSitesNum))
  176.          break;
  177.       getword(nacc,buf,' ');
  178.       getword(nbytes,buf,' ');
  179.       getword(url,buf,' ');
  180.  
  181.       twork1=my_atoll(nacc);
  182.       twork2=my_atoll(nbytes);
  183.  
  184.       sprintf(wwork1,"%s",fixnum(twork1));
  185.       sprintf(wwork2,"%s",fixnum(twork2));
  186.  
  187.       sprintf(ourl,"<tr><td bgcolor=%s align=right><font size=%s>%d</font></td><td> </td><td align=right border=0 bgcolor=%s><font size=%s><a href=\"http://%s\">%s</a></font></td><td> </td><td bgcolor=%s align=right><font size=%s>%s</font></td><td> </td><td bgcolor=%s align=right><font size=%s>%s</font></td></tr>\n",TxBgColor,FontSize,regs,TxBgColor,FontSize,url,url,TxBgColor,FontSize,wwork1,TxBgColor,FontSize,wwork2);
  188.       fputs(ourl,fp_ou);
  189.       regs++;
  190.    }
  191.  
  192.    fputs("</table></center>\n",fp_ou);
  193.  
  194.    zdate(ftime, DateFormat);
  195.    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);
  196.    fputs(ourl,fp_ou);
  197.  
  198.    fputs("</html>\n",fp_ou);
  199.    
  200.    fclose(fp_in);
  201.    fclose(fp_ou);
  202.  
  203.    return;
  204.  
  205. }
  206.