]> git.ipfire.org Git - thirdparty/sarg.git/commitdiff
Report the IP address from which the user visited some site
authorFrédéric Marchal <fmarchal@users.sourceforge.net>
Fri, 31 Aug 2012 20:06:39 +0000 (22:06 +0200)
committerFrédéric Marchal <fmarchal@users.sourceforge.net>
Fri, 31 Aug 2012 20:06:39 +0000 (22:06 +0200)
The IP address makes sense in that report to detect users visiting sites
from another computer but still identified by their credential.

report.c

index 67bc5f903cb0e656fbe2d837bbf725e7585ca551..6798776a95fc70eaf0e63e88dea395f4fe3a3fb6 100644 (file)
--- a/report.c
+++ b/report.c
@@ -47,12 +47,13 @@ void gerarel(void)
        FILE *fp_tmp=NULL;
 
        char *buf;
-       char accdia[11], acchora[9], accip[MAXLEN], *accurl;
-       char oldaccdia[11], oldacchora[9], oldaccip[MAXLEN];
+       char accdia[11], acchora[9], accip[256], *accurl;
+       char oldaccdia[11], oldacchora[9], oldaccip[256];
+       char oldacciptt[256];
        char wdirname[MAXLEN];
        char *oldurl=NULL;
        char oldmsg[50], acccode[MAXLEN/2 - 1], oldacccode[MAXLEN/2 - 1];
-       char ipantes[MAXLEN], nameantes[MAXLEN];
+       char ipantes[256], nameantes[MAXLEN];
        char accsmart[MAXLEN];
        char crc2[MAXLEN/2 -1];
        char siteind[MAX_TRUNCATED_URL];
@@ -131,7 +132,7 @@ void gerarel(void)
 
                strcpy(u2,uinfo->id);
                if(Ip2Name && uinfo->id_is_ip) {
-                       strcpy(ipantes,u2);
+                       safe_strcpy(ipantes,u2,sizeof(ipantes));
                        ip2name(u2,sizeof(u2));
                        strcpy(nameantes,u2);
                }
@@ -147,6 +148,7 @@ void gerarel(void)
                ourltt_size=0;
                memset(oldaccdiatt,0,sizeof(oldaccdiatt));
                memset(oldacchoratt,0,sizeof(oldacchoratt));
+               memset(oldacciptt,0,sizeof(oldacciptt));
                new_user=true;
                nacc=0;
                nbytes=0;
@@ -188,7 +190,7 @@ void gerarel(void)
                                        strcpy(ipantes,accip);
                                        ip2name(accip,sizeof(accip));
                                        strcpy(nameantes,accip);
-                               } else strcpy(accip,nameantes);
+                               } else safe_strcpy(accip,nameantes,sizeof(accip));
                        }
 
                        if (!indexonly) {
@@ -235,7 +237,8 @@ void gerarel(void)
                        nelap+=accelap;
 
                        if ((ReportType & REPORT_TYPE_SITE_USER_TIME_DATE) != 0 && !indexonly &&
-                           (!oldurltt || strcmp(oldurltt,accurl) || strcmp(oldaccdiatt,accdia) || strcmp(oldacchoratt,acchora))) {
+                           (!oldurltt || strcmp(oldurltt,accurl) || strcmp(oldaccdiatt,accdia) || strcmp(oldacchoratt,acchora) ||
+                                               strcmp(oldacciptt,accip))) {
 
                                if(!ttopen) {
                                        snprintf(arqtt,sizeof(arqtt),"%s/%s",outdirname,uinfo->filename);
@@ -266,12 +269,16 @@ void gerarel(void)
                                        close_html_header(fp_tt);
 
                                        fputs("<div class=\"report\"><table cellpadding=\"0\" cellspacing=\"2\">\n",fp_tt);
-                                       fprintf(fp_tt,"<tr><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",_("ACCESSED SITE"),_("DATE"),_("TIME"));
+                                       fprintf(fp_tt,"<tr><th class=\"header_l\">%s</th>",_("ACCESSED SITE"));
+                                       fprintf(fp_tt,"<th class=\"header_l\">%s</th>",_("IP"));
+                                       fprintf(fp_tt,"<th class=\"header_l\">%s</th><th class=\"header_l\">%s</th></tr>\n",_("DATE"),_("TIME"));
                                }
 
                                fputs("<tr><td class=\"data\">",fp_tt);
                                output_html_string(fp_tt,accurl,100);
-                               fprintf(fp_tt,"</td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",accdia,acchora);
+                               fputs("</td>",fp_tt);
+                               fprintf(fp_tt,"<td class=\"data\">%s</td>",accip);
+                               fprintf(fp_tt,"<td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",accdia,acchora);
 
                                url_len=strlen(accurl);
                                if (!oldurltt || url_len>=ourltt_size) {
@@ -285,6 +292,7 @@ void gerarel(void)
                                strcpy(oldurltt,accurl);
                                strcpy(oldaccdiatt,accdia);
                                strcpy(oldacchoratt,acchora);
+                               strcpy(oldacciptt,accip);
                        }
 
                        strcpy(crc2,acccode);