home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / datafile.c < prev    next >
C/C++ Source or Header  |  2002-10-11  |  6KB  |  187 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 saverecs(char *dirname, char *user, long long int nacc, char *url, long long int nbytes, char *ip, char *hora, char *dia, long long int nelap, long long int incache, long long int oucache);
  9. void grava_SmartFilter(char *dirname, char *user, char *ip, char *data, char *hora, char *url, char *smart);
  10.  
  11. void data_file(char *tmp, int debug, const char *periodo, int debugz, int iprel, char* outdir, char *addr, char *site, char *us, int userip, char *email, char *temp2, 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 *UserSortField, char *TopuserSortOrder, char *UserSortOrder, char *UserAgentLog, char *DateFormat, int indexonly, char *PerUserLimitFile, char *PerUserLimit)
  12. {
  13.  
  14.    FILE *fp_in;
  15.  
  16.    char accdia[11], acchora[9], accuser[MAXLEN], accip[MAXLEN], accurl[MAXLEN], accbytes[12], accelap[10];
  17.    char oldaccdia[11], oldacchora[9], oldaccip[MAXLEN], wdir[MAXLEN], per1[MAXLEN];
  18.    char dirname[MAXLEN], wdirname[MAXLEN], oldurl[MAXLEN], oldaccuser[MAXLEN];
  19.    char olduser[MAXLEN], oldmsg[50], acccode[50], oldaccelap[10], oldacccode[50];
  20.    char ipantes[MAXLEN], nameantes[MAXLEN]; 
  21.    char accsmart[MAXLEN];
  22.    char Msg[MAXLEN];
  23.    int  smartfilter=0;
  24.    char wcrc[50];
  25.    char crc2[50];
  26.    long long int nbytes=0; 
  27.    long long int nelap=0; 
  28.    long long int nacc=0;
  29.    long long int rtotal=0;
  30.    long long int incache=0;
  31.    long long int oucache=0;
  32.    char *s;
  33.  
  34.    ipantes[0]='\0';
  35.    nameantes[0]='\0';
  36.  
  37.    olduser[0]='\0';
  38.  
  39.    if((fp_in=fopen(tmp,"r"))==NULL){
  40.       fprintf(stderr, "SARG: (report) %s: %s\n",text[45],tmp);
  41.       exit(1);
  42.    }
  43.  
  44.    ttopen=0;
  45.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  46.       getword(accdia,buf,' ');
  47.       getword(acchora,buf,' ');
  48.       getword(accuser,buf,' ');
  49.       getword(accip,buf,' ');
  50.       getword(accurl,buf,' ');
  51.       getword(accbytes,buf,' ');
  52.       getword(acccode,buf,' ');
  53.       getword(accelap,buf,' ');
  54.       getword(accsmart,buf,' ');
  55.       getword(accsmart,buf,'"');
  56.  
  57.       if(strcmp(Ip2Name,"yes") == 0) {
  58.          if(strcmp(accip,ipantes) != 0) {
  59.             strcpy(ipantes,accip);
  60.             ip2name(accip);
  61.             strcpy(nameantes,accip);
  62.          } else strcpy(accip,nameantes);
  63.       }
  64.  
  65.       if(!rtotal){
  66.          strcpy(oldurl,accurl);
  67.          strcpy(oldacccode,acccode);
  68.          strcpy(oldaccelap,accelap);
  69.          strcpy(oldaccuser,accuser);
  70.          strcpy(oldaccip,accip);
  71.          strcpy(oldaccdia,accdia);
  72.          strcpy(oldacchora,acchora);
  73.          rtotal++;
  74.       }
  75.  
  76.       if(strcmp(oldurl,accurl) != 0 || strcmp(oldaccuser,accuser) != 0){
  77.          strcpy(oldmsg,"OK");
  78.          if(strstr(oldacccode,"DENIED") != 0)
  79.             sprintf(oldmsg,"%s",text[46]);
  80.          strcpy(wdirname,dirname);
  81.          gravatmp(oldaccuser,wdirname,oldurl,nacc,nbytes,oldmsg,nelap,indexonly,incache,oucache);
  82.          strcpy(wdirname,dirname);
  83.          saverecs(wdirname,oldaccuser,nacc,oldurl,nbytes,oldaccip,oldacchora,oldaccdia,nelap,incache,oucache);
  84.          nacc=0;
  85.          nbytes=0;
  86.          nelap=0;
  87.          incache=0;
  88.          oucache=0;
  89.          if(strcmp(oldaccuser,accuser) != 0)
  90.             ind2=0;
  91.       }
  92.  
  93.       nacc++;
  94.       nbytes+=my_atoll(accbytes);
  95.       nelap+=my_atoll(accelap);
  96.  
  97.       strcpy(wcrc,acccode);
  98.       getword(crc2,wcrc,'/');
  99.  
  100.       if(strstr(crc2,"MISS") != 0)
  101.          oucache+=my_atoll(accbytes);
  102.        else incache+=my_atoll(accbytes);
  103.  
  104.       strcpy(oldurl,accurl);
  105.       strcpy(oldaccuser,accuser);
  106.       strcpy(oldacccode,acccode);
  107.       strcpy(oldaccelap,accelap);
  108.       strcpy(oldaccip,accip);
  109.       strcpy(oldaccdia,accdia);
  110.       strcpy(oldacchora,acchora);
  111.    }
  112.  
  113.    fclose(fp_in);
  114.  
  115.    if(debug) {
  116.       sprintf(Msg,"Datafile %s successfully",DataFile);
  117.       debuga(Msg);
  118.    }
  119.  
  120.    return;
  121. }
  122.  
  123. void saverecs(char *dirname, char *user, long long int nacc, char *url, long long int nbytes, char *ip, char *hora, char *dia, long long int nelap, long long int incache, long long int oucache)
  124. {
  125.  
  126.    FILE *fp_ou;
  127.    char reg[MAXLEN];
  128.  
  129.    if((fp_ou=fopen(DataFile,"a"))==NULL){
  130.       fprintf(stderr, "SARG: (report) %s: %s\n",text[45],DataFile);
  131.       exit(1);
  132.    }
  133.  
  134.    my_lltoa(nacc,val1,0);
  135.    my_lltoa(nbytes,val2,0);
  136.    my_lltoa(nelap,val3,0);
  137.    my_lltoa(incache,val4,0);
  138.    my_lltoa(oucache,val5,0);
  139.  
  140.    if(strstr(DataFileFields,"user") != 0) {
  141.       strcpy(reg,user);
  142.       strncat(reg,DataFileDelimiter,1);
  143.    }
  144.    if(strstr(DataFileFields,"date") != 0) {
  145.       strncat(reg,dia,strlen(dia));
  146.       strncat(reg,DataFileDelimiter,1);
  147.    }
  148.    if(strstr(DataFileFields,"time") != 0) {
  149.       strncat(reg,hora,strlen(hora));
  150.       strncat(reg,DataFileDelimiter,1);
  151.    }
  152.    if(strstr(DataFileFields,"url") != 0) {
  153.       strcpy(name,url);
  154.       name2ip(name);
  155.       strncat(reg,name,strlen(name));
  156.       strncat(reg,DataFileDelimiter,1);
  157.    }
  158.    if(strstr(DataFileFields,"connect") != 0) {
  159.       strncat(reg,val1,strlen(val1));
  160.       strncat(reg,DataFileDelimiter,1);
  161.    }
  162.    if(strstr(DataFileFields,"bytes") != 0) {
  163.       strncat(reg,val2,strlen(val2));
  164.       strncat(reg,DataFileDelimiter,1);
  165.    }
  166.    if(strstr(DataFileFields,"in_cache") != 0) {
  167.       strncat(reg,val4,strlen(val4));
  168.       strncat(reg,DataFileDelimiter,1);
  169.    }
  170.    if(strstr(DataFileFields,"out_cache") != 0) {
  171.       strncat(reg,val5,strlen(val5));
  172.       strncat(reg,DataFileDelimiter,1);
  173.    }
  174.    if(strstr(DataFileFields,"elapsed") != 0) {
  175.       strncat(reg,val3,strlen(val3));
  176.       strncat(reg,DataFileDelimiter,1);
  177.    }
  178.  
  179.    reg[strlen(reg)-1]='\n';
  180.    fputs(reg,fp_ou);
  181.  
  182.    fclose(fp_ou);
  183.  
  184.    return;
  185.  
  186. }
  187.