From: Frédéric Marchal Date: Tue, 2 Feb 2010 13:10:32 +0000 (+0000) Subject: Fixed bug #2940124 (useragent report ignoring date range) X-Git-Tag: v2.3-pre2~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=012ba25478686b349645065dcedf6996eead8ed2;p=thirdparty%2Fsarg.git Fixed bug #2940124 (useragent report ignoring date range) --- diff --git a/ChangeLog b/ChangeLog index d5dcf03..40ef29c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,12 @@ SARG ChangeLog -Jan-27-2009 Version 2.3 +Feb-02-2009 Version 2.3 - LDAP usertab added. Now you can have your users in a LDAP Server. Use these tags in sarg.conf: LDAPHost, LDAPPort, LDAPBindDN, LDAPBindPW, LDAPBaseSearch, LDAPFilterSearch - Parse the string flags from sarg.conf once during the reading of sarg.conf instead of manipulating and duplicating the tests of the strings where they are used. + - Useragent report limited to requested date range. Jan-29-2010 Version 2.2.7 - Extra compile and run time protection (FORTIFY_SOURCE) fixed in configure. diff --git a/useragent.c b/useragent.c index e2cb052..2735a7c 100644 --- a/useragent.c +++ b/useragent.c @@ -39,11 +39,13 @@ void useragent(void) char hfile[MAXLEN]; char idate[MAXLEN], fdate[MAXLEN]; char tmp2[MAXLEN]; + char day[4],month[5],year[5], wdate[20]; int agentot=0, agentot2=0, agentdif=0, cont=0, nagent; unsigned long totregsl=0; int cstatus; - char ftime[128]; - struct getwordstruct gwarea; + int ndate; + double perc; + struct getwordstruct gwarea, gwarea1; ip[0]='\0'; data[0]='\0'; @@ -79,10 +81,20 @@ void useragent(void) printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",UserAgentLog); exit(1); } + getword_start(&gwarea1,data); + if (getword(day,sizeof(day),&gwarea1,'/')<0 || getword(month,sizeof(month),&gwarea1,'/')<0 || + getword(year,sizeof(year),&gwarea1,':')<0) { + printf("SARG: Maybe you have a broken date in your %s file.\n",UserAgentLog); + exit(1); + } + buildymd(day,month,year,wdate); + ndate=atoi(wdate); + if (ndateduntil) continue; if(totregsl == 1) strcpy(idate,data); + strcpy(fdate,data); if (getword_skip(MAXLEN,&gwarea,'"')<0 || getword(agent,sizeof(agent),&gwarea,'"')<0) { - printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",UserAgentLog); + printf("SARG: Maybe you have a broken useragent entry in your %s file.\n",UserAgentLog); exit(1); } strcpy(warea,agent); @@ -106,8 +118,6 @@ void useragent(void) user[0]='\0'; } - strcpy(fdate,data); - if(debug) { debuga(" %s: %ld",text[10],totregsl); } @@ -146,8 +156,7 @@ void useragent(void) fprintf(fp_ht, "\n\n\n \n",CharSet); css(fp_ht); fputs("\n",fp_ht); - //if(FontFace[0] != '\0') fprintf(fp_ht,"\n",FontFace); - fprintf(fp_ht,"\n",BgColor,TxColor,BgImage); + fputs("\n",fp_ht); write_logo_image(fp_ht); if(IndexTree == INDEX_TREE_DATE) @@ -155,20 +164,17 @@ void useragent(void) else show_sarg(fp_ht,".."); fputs("
\n",fp_ht); - fprintf(fp_ht,"\n",TiColor,text[105]); - - fputs("",fp_ht); + fprintf(fp_ht,"\n",text[105]); + fprintf(fp_ht,"\n",text[89],idate,fdate); fputs("
%s
%s
%s: %s - %s
\n",fp_ht); fputs("
\n",fp_ht); - fprintf(fp_ht,"\n",HeaderBgColor,text[89],TxBgColor,idate,fdate); - fputs("
%s:%s - %s
\n",fp_ht); fputs("
\n",fp_ht); - fputs("",fp_ht); + fputs("",fp_ht); - fprintf(fp_ou,"\n",HeaderBgColor,HeaderColor,text[98],HeaderBgColor,HeaderColor,text[106]); + fprintf(fp_ou,"\n",text[98],text[106]); while(fgets(buf,sizeof(buf),fp_in)!=NULL) { getword_start(&gwarea,buf); @@ -192,12 +198,12 @@ void useragent(void) } if(strcmp(user,user_old) != 0) { - fprintf(fp_ht,"\n",TxBgColor,user,TxBgColor,agent); + fprintf(fp_ht,"\n",user,agent); strcpy(user_old,user); strcpy(agent_old,agent); } else { if(strcmp(agent,agent_old) != 0) { - fprintf(fp_ht,"\n",TxBgColor,agent); + fprintf(fp_ht,"\n",agent); strcpy(agent_old,agent); } } @@ -281,10 +287,10 @@ void useragent(void) exit(1); } - fputs("

\n",fp_ht); + fputs("

\n",fp_ht); fputs("
  
%s%s
%s%s
%s%s
%s%s
%s
%s
\n",fp_ht); - fprintf(fp_ht,"\n",HeaderBgColor,HeaderColor,text[106],HeaderBgColor,HeaderColor,text[107],HeaderBgColor,HeaderColor); + fprintf(fp_ht,"\n",text[106],text[107]); perc=0.; while(fgets(buf,sizeof(buf),fp_in)!=NULL) { @@ -295,19 +301,13 @@ void useragent(void) exit(1); } nagent=atoi(tagent); - if(agentot2>0) { - perc=nagent * 100; - perc=perc / agentot2; - } + perc=(agentot2>0) ? nagent * 100. / agentot2 : 0.; - fprintf(fp_ht,"\n",TxBgColor,gwarea.current,TxBgColor,nagent,TxBgColor,perc); + fprintf(fp_ht,"\n",gwarea.current,nagent,perc); } fputs("
%s%s%%
%s%s%%
%s%d%3.2f
%s%d%3.2lf
\n",fp_ht); - if(ShowSargInfo) { - zdate(ftime, sizeof(ftime), DateFormat); - fprintf(fp_ht,"

%s %s-%s %s %s
\n",text[108],URL,PGM,VERSION,text[109],ftime); - } + show_info(fp_ht); fputs("\n\n\n",fp_ht); fclose(fp_in);