From d5c1b1c100d263310fa64b49fbba7d64d8870672 Mon Sep 17 00:00:00 2001 From: Guido Serassio Date: Wed, 15 Feb 2006 18:07:39 +0000 Subject: [PATCH] Imported Sarg 2.1.0 --- patches/oleg | 541 ------------------------------------ patches/oleg1 | 322 ---------------------- patches/oleg2 | 322 ---------------------- patches/oleg4 | 740 -------------------------------------------------- realtime.c | 169 ++++++++++++ 5 files changed, 169 insertions(+), 1925 deletions(-) delete mode 100644 patches/oleg delete mode 100644 patches/oleg1 delete mode 100644 patches/oleg2 delete mode 100644 patches/oleg4 create mode 100755 realtime.c diff --git a/patches/oleg b/patches/oleg deleted file mode 100644 index 1c798f3..0000000 --- a/patches/oleg +++ /dev/null @@ -1,541 +0,0 @@ -From xsov@mail.ru Sun Apr 24 16:42:06 2005 -Received: 194.67.23.121 / smx1.brturbo.com -Received: from [212.48.203.89] (port=1505 helo=[192.168.0.77]) by - mx1.mail.ru with asmtp id 1DPgEw-0006L9-00 for orso@brturbo.com; Sun, 24 - Apr 2005 16:29:35 +0400 -From: Oleg -To: Pedro Lineu Orso -Subject: sarg-2.0.6 new patches -Date: Sun, 24 Apr 2005 16:42:06 +0400 -User-Agent: KMail/1.7.2 -MIME-Version: 1.0 -Content-Type: Multipart/Mixed; boundary="Boundary-00=_eQ5aCJp/CximSea" -Message-Id: <200504241642.06841.xsov@mail.ru> -X-Evolution-Source: pop://orso@pop.brturbo.com - - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/plain; charset="koi8-r" -Content-Disposition: inline -Content-Transfer-Encoding: 8bit - - Good day, Pedro! - - Again me :-) I just make some new good patches for sarg and review my old -patches to sarg, so there is: - -1) CONTRIBUTORS.patch: -Look at the CONTRIBUTORS file, there is two equal lines about Evren Yurtesen -, I just remove first one, the second (equal to first) -is here, on place. - -2) grepday.patch: -I add internationalisation of SARG user graph by using iconv function, which -is presented only in Linux, so I add required #ifdef and other stuff to clean -compile code on other platforms. - -3) htmllogreport.patch: -Fixed two issues: -- '?' symbol problems for apache and other cgi-supporting web server which -doesn't support '?' symbol in links (all of them interprete this like -parameter to cgi script); -- some good optimization to all three similar cicles in these files by -reducing false checks in 'if ...' strings. - -4) index.patch: -Fixes segfault, produced by inproper use of strncpy functions, look - strncpy -doesn't copy leading '\0' symbol! - -5) repday.patch: -Just localisation support for this type of report, patch is simple, just look -at it. - -6) siteuser.patch: -Support usertab IP->USERNAME change in siteuser report, which was removed -prior to sarg-2.0.0 versions. -WARNING: I'm not sure about bugs in this patch, but must warn you, that we -don't heavily test this patch in other configurations! - -7) Russian_koi8.patch: -Just proper Russian koi8 localisation, believe me, it is good enought, because -I'm russian :-) - -Pedro, can you tell which my patches you will include in next sarg release? -None of all previous sended to you my patches was included in sarg -releases ... :-( - -And one bugreport: -SARG version: 2.0.6 (clean, downloaded from sf.net, without any additional -patches) -OS: Linux Slackware 10.1 -Reproduction of bug: -tar xvfz sarg-2.0.6.tar.gz -cd sarg-2.0.6 -autoconf -./configure -make -gcc -c -I. -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" --DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_DIRENT_H=1 --DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 --DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 --DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 --DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 --DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_NETDB_H=1 --DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_NETINET_IN_H=1 --DHAVE_SYS_STAT_H=1 -DHAVE_CTYPE_H=1 -DHAVE_GD_H=1 -DHAVE_GDFONTL_H=1 --DHAVE_GDFONTT_H=1 -DHAVE_GDFONTS_H=1 -DHAVE_GDFONTMB_H=1 -DHAVE_GDFONTG_H=1 --DHAVE_ERRNO_H=1 -DHAVE_FOPEN64=1 -g -O2 -w -DBINDIR=\"/usr/bin\" --DSYSCONFDIR=\"/usr/local/sarg\" -DHTMLDIR=\"/var/www/html\" log.c -log.c: In function `main': -log.c:127: error: storage size of 'rl' isn't known -log.c:668: error: `RLIMIT_OFILE' undeclared (first use in this function) -log.c:668: error: (Each undeclared identifier is reported only once -log.c:668: error: for each function it appears in.) -make: *** [log.o] Error 1 - -Best regards, -Sapon Oleg, -RusBusinessSecurity Co. Ltd. - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="CONTRIBUTORS.patch" -Content-Disposition: attachment; filename="CONTRIBUTORS.patch" -Content-Transfer-Encoding: 8bit - -diff -ru sarg-2.0.6/CONTRIBUTORS sarg-2.0.6rbs/CONTRIBUTORS ---- sarg-2.0.6/CONTRIBUTORS 2004-11-22 16:37:02.000000000 +0300 -+++ sarg-2.0.6rbs/CONTRIBUTORS 2004-11-25 03:05:24.000000000 +0300 -@@ -10,7 +10,6 @@ - Dima I. Allaverdov - Eugeny Kuzakov - Evren Yurtesen --Evren Yurtesen - Hanni Daniel - Ilya V. Komarov - Jose Luiz - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="grepday.patch" -Content-Disposition: attachment; filename="grepday.patch" -Content-Transfer-Encoding: 8bit - -diff -ur sarg-2.0.6/configure.in sarg-2.0.6rbs/configure.in ---- sarg-2.0.6/configure.in 2005-02-21 21:13:21.000000000 +0300 -+++ sarg-2.0.6rbs/configure.in 2005-04-24 15:31:31.000000000 +0400 -@@ -40,7 +40,7 @@ - - AC_CHECK_HEADERS(stdio.h stdlib.h string.h strings.h sys/time.h time.h unistd.h sys/dirent.h \ - dirent.h sys/socket.h netdb.h arpa/inet.h sys/types.h netinet/in.h sys/stat.h \ -- ctype.h gd.h gdfontl.h gdfontt.h gdfonts.h gdfontmb.h gdfontg.h errno.h) -+ ctype.h gd.h gdfontl.h gdfontt.h gdfonts.h gdfontmb.h gdfontg.h iconv.h errno.h) - - AC_CHECK_LIB(gd, gdImagePng,LIBS="-lgd ${LIBS}"; HAVE_GD="yes", HAVE_GD="") - -diff -ur sarg-2.0.6/grepday.c sarg-2.0.6rbs/grepday.c ---- sarg-2.0.6/grepday.c 2005-04-23 02:27:48.000000000 +0400 -+++ sarg-2.0.6rbs/grepday.c 2005-04-24 15:34:19.000000000 +0400 -@@ -36,6 +36,38 @@ - char *font1 = SYSCONFDIR"/fonts/Verdana.TTF"; - char s[15]; - -+#ifdef HAVE_ICONV_H -+#include -+#define SARGgdImageStringFT I18NgdImageStringFT -+ -+BGD_DECLARE(char *) I18NgdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist, -+ double ptsize, double angle, int x, int y, -+ char *string) -+{ -+ iconv_t localtoutf; -+ char *sstring, *str, *sstr, *retval; -+ size_t slen, sslen; -+ -+ slen = strlen(string) + 1; // We must include string termination character -+ sslen = slen * 2; // We assume that UTF8 maximum 2 times large than local -+ sstring = (char *)malloc(sslen); -+ -+ str = (char *) string; -+ sstr = (char *) sstring; -+ -+ localtoutf = iconv_open ("UTF-8", CharSet); -+ iconv (localtoutf, &str, &slen, &sstr, &sslen); -+ iconv_close (localtoutf); -+ -+ retval = gdImageStringFTEx (im, brect, fg, fontlist, ptsize, angle, x, y, sstring, gdFTEX_Unicode); -+ free(sstring); -+ -+ return retval; -+} -+#else -+#define SARGgdImageStringFT gdImageStringFT -+#endif -+ - void *bar(long long int *n) - { - #ifdef HAVE_GD -@@ -173,7 +205,7 @@ - - snprintf(v,6,"%s",fixnum(num,0)); - -- gdImageStringFT(im,&brect[0],black,font1,5,0.0,x1-1,val-12,v); -+ SARGgdImageStringFT(im,&brect[0],black,font1,5,0.0,x1-1,val-12,v); - - points[0].x = x1+17; - points[0].y = val-5; -@@ -270,7 +302,7 @@ - y=65; - for(x=1; x<=31; x++) { - sprintf(s,"%02d",x); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,y,437,s); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,y,437,s); - y=y+20; - } - -@@ -281,51 +313,51 @@ - if(strcmp(DateFormat,"e") == 0) - strftime(ftime, 127, "%d/%b/%Y-%H:%M", local); - -- gdImageStringFT(im,&brect[0],darkblue,font1,6,0.0,620,470,ftime); -- gdImageStringFT(im,&brect[0],darkblue,font1,9,0.0,257,15,"SARG, "); -- gdImageStringFT(im,&brect[0],darkblue,font1,9,0.0,300,15,Title); -+ SARGgdImageStringFT(im,&brect[0],darkblue,font1,6,0.0,620,470,ftime); -+ if(strcmp(ShowSargInfo,"yes") == 0) SARGgdImageStringFT(im,&brect[0],darkblue,font1,9,0.0,257,15,"SARG, "); -+ SARGgdImageStringFT(im,&brect[0],darkblue,font1,9,0.0,300,15,Title); - sprintf(warea,"%s: %s",text[89],periodo); -- gdImageStringFT(im,&brect[0],darkblue,font1,7,0.0,300,27,warea); -+ SARGgdImageStringFT(im,&brect[0],darkblue,font1,7,0.0,300,27,warea); - sprintf(warea,"%s: %s",text[90],name); -- gdImageStringFT(im,&brect[0],darkblue,font1,7,0.0,300,38,warea); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,418," 50K"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,408,"250K"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,398,"500K"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,388," 1M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,378," 2M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,368," 3M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,358," 4M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,348," 5M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,338," 6M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,328," 7M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,318," 8M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,308," 9M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,298," 10M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,288," 15M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,278," 20M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,268," 30M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,258," 40M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,248," 50M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,238," 60M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,228," 70M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,218," 80M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,208," 90M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,198,"100M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,188,"200M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,178,"300M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,168,"400M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,158,"500M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,148,"600M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,138,"700M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,128,"800M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,118,"900M"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,108," 1G"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 98," 2G"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 88," 3G"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 78," 4G"); -- gdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 68," 5G"); -- gdImageStringFT(im,&brect[0],black,font1,10,3.14/2,20,248,text[93]); -- gdImageStringFT(im,&brect[0],black,font1,10,0.0,330,460,text[127]); -+ SARGgdImageStringFT(im,&brect[0],darkblue,font1,7,0.0,300,38,warea); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,418," 50K"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,408,"250K"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,398,"500K"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,388," 1M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,378," 2M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,368," 3M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,358," 4M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,348," 5M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,338," 6M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,328," 7M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,318," 8M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,308," 9M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,298," 10M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,288," 15M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,278," 20M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,268," 30M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,258," 40M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,248," 50M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,238," 60M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,228," 70M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,218," 80M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,208," 90M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,198,"100M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,188,"200M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,178,"300M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,168,"400M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,158,"500M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,148,"600M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,138,"700M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,128,"800M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,118,"900M"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23,108," 1G"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 98," 2G"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 88," 3G"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 78," 4G"); -+ SARGgdImageStringFT(im,&brect[0],dimgray,font1,7,0.0,23, 68," 5G"); -+ SARGgdImageStringFT(im,&brect[0],black,font1,10,3.14/2,20,248,text[93]); -+ SARGgdImageStringFT(im,&brect[0],black,font1,10,0.0,330,460,text[127]); - - sprintf(graph,"%s/%s/graph_day.png",dirname,user); - sprintf(wdirname,"%s/%s.day",tmp,user); - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="htmllogreport.patch" -Content-Disposition: attachment; filename="htmllogreport.patch" -Content-Transfer-Encoding: 8bit - -diff -ur sarg-2.0.6/html.c sarg-2.0.6rbs/html.c ---- sarg-2.0.6/html.c 2005-04-23 02:27:48.000000000 +0400 -+++ sarg-2.0.6rbs/html.c 2005-04-24 15:58:36.000000000 +0400 -@@ -349,23 +349,11 @@ - for(s=ltext110; *s; ++s) - *s=tolower(*s); - } -- z1=0; -- z2=0; -- strcpy(siteind,url); -+ strcpy(siteind,urly); - str=siteind; -- for(z1=0; z1<=strlen(str); z1++) { -- if(str[z1]=='-') -+ for(z1=0; z1",usuario,siteind,ltext110,text[55]); - } else { -diff -ur sarg-2.0.6/log.c sarg-2.0.6rbs/log.c ---- sarg-2.0.6/log.c 2005-04-23 01:03:19.000000000 +0400 -+++ sarg-2.0.6rbs/log.c 2005-04-24 16:00:53.000000000 +0400 -@@ -974,21 +974,11 @@ - sprintf(user,"%s.%s",w,wuser); - } - -- z1=0; -- z2=0; - str=user; -- for(z1=0; z1<=strlen(str); z1++) { -+ for(z1=0; z1\n", fp_ou ); - - if(strcmp(datetimeby,"bytes") == 0) -- strcpy( html, "BYTES" ); -+ strcpy( html, text[93] ); - else - strcpy( html, "H:M:S" ); - - for( i = 0; i < hours.len; i++ ) - fprintf( fp_ou, -- "%02dH
%s\n", hours.list[ i ], html ); -+ "%d%s
%s\n", hours.list[ i ], text[129], html ); - fprintf( fp_ou, - "%s
%s\n", text[107], html ); - - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="Russian_koi8.patch" -Content-Disposition: attachment; filename="Russian_koi8.patch" -Content-Transfer-Encoding: 8bit - -diff -ru sarg-2.0.6/languages/Russian_koi8 sarg-2.0.6rbs/languages/Russian_koi8 ---- sarg-2.0.6/languages/Russian_koi8 2004-11-22 16:37:02.000000000 +0300 -+++ sarg-2.0.6rbs/languages/Russian_koi8 2004-11-25 03:02:36.000000000 +0300 -@@ -1,4 +1,4 @@ --# by Andrew Okhmat -+# by Andrew Okhmat and Sapon Oleg - "äÁ" - "îÅÔ" - "Russian" -@@ -27,7 +27,7 @@ - "å×ÒÏÐÁ" - "áÍÅÒÉËÁ" - "IP ÏÔÞÅÔ" --"éÓÐÏÌØÚÏ×ÁÔØ Ip-ÁÄÒÅÓ ×ÍÅÓÔÏ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ" -+"éÓÐÏÌØÚÏ×ÁÔØ IP-ÁÄÒÅÓ ×ÍÅÓÔÏ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ" - "áÄÒÅÓÁ" - "÷ÒÅÍÑ" - "éÍÑ" -@@ -81,7 +81,7 @@ - "× ÏÂÙÞÎÏÍ ÐÏÒÑÄËÅ" - "õÄÁÌÑÀ ÓÔÁÒÙÊ ÆÁÊÌ ÏÔÞÅÔÁ" - "õÄÁÌÑÀ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ" --"ôÏÐ" -+"ôÏÐ ÓÁÊÔÙ" - "óÁÊÔÙ" - "óÁÊÔÙ É ðÏÌØÚÏ×ÁÔÅÌÉ" - "úÁÇÒÕÖÁÀ ÔÁÂÌÉÃÕ ÐÏÌØÚÏ×ÁÔÅÌÑ" -@@ -113,13 +113,18 @@ - "OUT" - "IN" - "CACHE" --"SitesUsers" --"óÍÁÒÔæÉÌØÔÒ" --"ïÛÉÂËÁ ÁÕÔÅÎÔÉÆÉËÁÃÉÉ" -+"óÁÊÔÙ É ðÏÌØÚÏ×ÁÔÅÌÉ" -+"SmartFilter" -+"ïÛÉÂËÉ ÁÕÔÅÎÔÉÆÉËÁÃÉÉ" -+"úáðòåô" -+"ôÏÐ ÓÁÊÔÙ" - "SQUIDGUARD" --"RULE" -+"ðÒÁ×ÉÌÏ" - "squidGuard" --"Sarg parsed log saved as" --"Sarg log format" --"Graphic" --"DAYS" -+"öÕÒÎÁÌ, ÏÂÒÁÂÏÔÁÎÎÙÊ Sarg ÓÏÈÒÁÎÅÎ ×" -+"æÏÒÍÁÔ ÆÁÊÌÁ ÖÕÒÎÁÌÁ Sarg" -+"úÁËÁÞËÉ" -+"äÉÁÇÒÁÍÍÁ" -+"äÎÉ" -+"äÎÉ" -+"þ" - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="siteuser.patch" -Content-Disposition: attachment; filename="siteuser.patch" -Content-Transfer-Encoding: 8bit - -diff -ru sarg-2.0.6/siteuser.c sarg-2.0.6rbs/siteuser.c ---- sarg-2.0.6/siteuser.c 2005-04-20 20:52:20.000000000 +0400 -+++ sarg-2.0.6rbs/siteuser.c 2005-02-21 21:13:23.000000000 +0300 -@@ -131,6 +131,24 @@ - continue; - if(userip) - fixip(user); -+ -+ if(UserTabFile[0] != '\0') { -+ sprintf(warea,":%s:",user); -+ if((str=(char *) strstr(userfile,warea)) != (char *) NULL ) { -+ z1=0; -+ str2=(char *) strstr(str+1,":"); -+ str2++; -+ bzero(name, MAXLEN); -+ while(str2[z1] != ':') { -+ name[z1]=str2[z1]; -+ z1++; -+ } -+ } else strcpy(name,user); -+ } else strcpy(name,user); -+ -+ if(strcmp(Ip2Name,"yes") == 0) -+ ip2name(user); -+ - if(strcmp(Ip2Name,"yes") == 0) - ip2name(user); - -@@ -143,9 +161,9 @@ - regs++; - } - -- sprintf(wuser," %s ",user); -+ sprintf(wuser," %s ",name); - if(strstr(users,wuser) == 0 && strcmp(url,ourl) == 0) { -- strcat(users,user); -+ strcat(users,name); - strcat(users," "); - ucount++; - if(ucount>4) { -@@ -168,7 +186,7 @@ - fputs(html,fp_ou); - regs++; - ucount=0; -- strcpy(users,user); -+ strcpy(users,name); - strcat(users," "); - strcpy(ourl,url); - } - ---Boundary-00=_eQ5aCJp/CximSea -Content-Type: text/x-diff; charset="koi8-r"; name="index.patch" -Content-Disposition: attachment; filename="index.patch" -Content-Transfer-Encoding: 8bit - -diff -ur sarg-2.0.6/index.c sarg-2.0.6rbs/index.c ---- sarg-2.0.6/index.c 2005-02-21 21:13:23.000000000 +0300 -+++ sarg-2.0.6rbs/index.c 2005-04-24 07:40:41.000000000 +0400 -@@ -78,6 +78,7 @@ - bzero(newname, 512); - strncat(newname,direntp->d_name,4); - strncpy(month,direntp->d_name+4,3); -+ month[3]='\0'; - conv_month(month); - strcat(newname,month); - strncat(newname,direntp->d_name+7,2); - ---Boundary-00=_eQ5aCJp/CximSea-- - diff --git a/patches/oleg1 b/patches/oleg1 deleted file mode 100644 index 33a8712..0000000 --- a/patches/oleg1 +++ /dev/null @@ -1,322 +0,0 @@ -From xsov@mail.ru Fri May 6 04:30:56 2005 -Received: 194.67.23.149 / smx2.brturbo.com -Received: from [212.48.201.194] (port=40725 helo=[192.168.0.77]) by - mx3.mail.ru with asmtp id 1DTqX4-0008GO-00 for orso@brturbo.com.br; Fri, - 06 May 2005 04:17:31 +0400 -From: Oleg -To: Pedro Lineu Orso -Subject: Re: sarg-2.0.6 new patches -Date: Fri, 6 May 2005 04:30:56 +0400 -User-Agent: KMail/1.7.2 -References: <200504241642.06841.xsov@mail.ru> - <1115290770.4499.7.camel@lcaklds49> -In-Reply-To: <1115290770.4499.7.camel@lcaklds49> -MIME-Version: 1.0 -Content-Type: Multipart/Mixed; boundary="Boundary-00=_BrreCrvUGWRZVaY" -Message-Id: <200505060430.57213.xsov@mail.ru> -X-Evolution-Source: pop://orso@pop.brturbo.com.br - - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/plain; charset="koi8-r" -Content-Disposition: inline -Content-Transfer-Encoding: 8bit - -Hello Pedro! - -PL > I have implemented your patches on sarg-2.0.7 and there are some sarg -PL > users asking me -PL > about this one: -PL > -PL > . Fixes segfault, produced by inproper use of strncpy functions, look - -PL > strncpy -PL > -PL > Can you please explain when segfault happens? -PL > -PL > I've seen that the forth characted of month[] in index.c is set to null -PL > to avoid strcat to segfault, but I cannot understand when this is -PL > needed. - -I have big-big squid.log file, and this error is produced only when I use -"LongUrl=yes" option in configuration file, I deeply debug code and see, that -error was at that place of code. I also can assume that overrun of '\0' -symbol was produced by error in other part of code. If you want I can get -part of my squid.log file, which produce this error and send it to you with -my squid.conf file (but I can do this not so fast, because file is very -large, and I can't send sensitive information from it to anybody). - -I include here another my patches for new sarg 2.0.7 version: -1) topuser.diff: -URL size is too small for URL with coded symbols, like %2f for slash ('/') -symbol, I see URLs in my squid.log file with length about 1400 characters. So -because there was number 1024 (I don't know where you get it, may be from -some RFC?), and one symbol can be 3-times longer, I enlarge buffer to 3072 -characters (3 x 1024). - -2) util.diff -There I replace all '<=12' condition to '<12' because array of months has 12 -elements, which are numbered from 0, so: -0 - 1st (January) -1 - 2nd (February) -... -11 - 12th (December) -and condition <=12 will loop for 13 elements, that is wrong. - -I also remove unneeded 'return;' at the ends of some functions (I don't think -it is required for other operating systems). - -Regards, Oleg. - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/x-diff; charset="koi8-r"; name="topuser.diff" -Content-Disposition: attachment; filename="topuser.diff" -Content-Transfer-Encoding: 8bit - ---- sarg-2.0.7/topuser.c 2005-05-02 17:55:04.000000000 +0400 -+++ sarg-2.0.7rbs/topuser.c 2005-05-04 03:53:48.000000000 +0400 -@@ -38,7 +38,7 @@ - int posicao=0; - char olduser[MAXLEN], csort[MAXLEN], periodo[MAXLEN], arqper[MAXLEN]; - char wger[MAXLEN], top1[MAXLEN], top2[MAXLEN], top3[MAXLEN]; -- char user[MAXLEN], nacc[20], nbytes[20], url[1024], preg[8000], tusr[MAXLEN]; -+ char user[MAXLEN], nacc[20], nbytes[20], url[3072], preg[8000], tusr[MAXLEN]; - char ip[MAXLEN], hora[9], data[11], elap[15], incac[15], oucac[15], html[MAXLEN]; - char ipantes[MAXLEN], nameantes[MAXLEN]; - char sfield[10]="2,2"; - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/x-diff; charset="koi8-r"; name="util.diff" -Content-Disposition: attachment; filename="util.diff" -Content-Transfer-Encoding: 8bit - ---- sarg-2.0.7/util.c 2005-05-02 17:55:04.000000000 +0400 -+++ sarg-2.0.7rbs/util.c 2005-05-04 04:04:01.000000000 +0400 -@@ -246,7 +246,7 @@ - ndia[0]='\0'; - nmes[0]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],mes) == 0) { - strncpy(nmes,mtab2[x],sizeof(nmes)-1); - nmes[sizeof(nmes)-1]=0; -@@ -262,9 +262,6 @@ - - strncpy(dia,ndia,sizeof(dia)-1); - dia[sizeof(dia)-1]=0; -- -- return; -- - } - - -@@ -275,15 +272,12 @@ - - nmes[0]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],mes) == 0) - strcpy(nmes,mtab2[x]); - } - - sprintf(wdata,"%s%s%s",ano,nmes,dia); -- -- return; -- - } - - -@@ -291,13 +285,10 @@ - { - int x; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],month) == 0) - strcpy(month,mtab2[x]); - } -- -- return; -- - } - - -@@ -305,7 +296,7 @@ - { - int x; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab2[x],month) == 0) - strcpy(month,mtab1[x]); - } -@@ -328,7 +319,7 @@ - strncpy(ano,duntil,4); - ano[4]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab2[x],mes) == 0) - strcpy(mes,mtab1[x]); - } -@@ -339,23 +330,18 @@ - sprintf(warea,"%s%s%s",ano,mes,dia); - - strcat(periodo,warea); -- return; - } - - - void debuga(char *msg) - { - fprintf(stderr, "SARG: %s\n",msg); -- -- return; - } - - - void debugaz(char *head, char *msg) - { - fprintf(stderr, "SARG: (util) %s=%s\n",head, msg); -- -- return; - } - - -@@ -384,8 +370,6 @@ - } - ip[0]='\0'; - sprintf(ip,"%s%s%s%s%s%s%s",n1,sep,n2,sep,n3,sep,wip); -- -- return; - } - - -@@ -499,9 +483,6 @@ - strcpy(href," -To: Pedro Lineu Orso -Subject: Re: sarg-2.0.6 new patches -Date: Fri, 6 May 2005 04:30:56 +0400 -User-Agent: KMail/1.7.2 -References: <200504241642.06841.xsov@mail.ru> - <1115290770.4499.7.camel@lcaklds49> -In-Reply-To: <1115290770.4499.7.camel@lcaklds49> -MIME-Version: 1.0 -Content-Type: Multipart/Mixed; boundary="Boundary-00=_BrreCrvUGWRZVaY" -Message-Id: <200505060430.57213.xsov@mail.ru> -X-Evolution-Source: pop://orso@pop.brturbo.com.br - - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/plain; charset="koi8-r" -Content-Disposition: inline -Content-Transfer-Encoding: 8bit - -Hello Pedro! - -PL > I have implemented your patches on sarg-2.0.7 and there are some sarg -PL > users asking me -PL > about this one: -PL > -PL > . Fixes segfault, produced by inproper use of strncpy functions, look - -PL > strncpy -PL > -PL > Can you please explain when segfault happens? -PL > -PL > I've seen that the forth characted of month[] in index.c is set to null -PL > to avoid strcat to segfault, but I cannot understand when this is -PL > needed. - -I have big-big squid.log file, and this error is produced only when I use -"LongUrl=yes" option in configuration file, I deeply debug code and see, that -error was at that place of code. I also can assume that overrun of '\0' -symbol was produced by error in other part of code. If you want I can get -part of my squid.log file, which produce this error and send it to you with -my squid.conf file (but I can do this not so fast, because file is very -large, and I can't send sensitive information from it to anybody). - -I include here another my patches for new sarg 2.0.7 version: -1) topuser.diff: -URL size is too small for URL with coded symbols, like %2f for slash ('/') -symbol, I see URLs in my squid.log file with length about 1400 characters. So -because there was number 1024 (I don't know where you get it, may be from -some RFC?), and one symbol can be 3-times longer, I enlarge buffer to 3072 -characters (3 x 1024). - -2) util.diff -There I replace all '<=12' condition to '<12' because array of months has 12 -elements, which are numbered from 0, so: -0 - 1st (January) -1 - 2nd (February) -... -11 - 12th (December) -and condition <=12 will loop for 13 elements, that is wrong. - -I also remove unneeded 'return;' at the ends of some functions (I don't think -it is required for other operating systems). - -Regards, Oleg. - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/x-diff; charset="koi8-r"; name="topuser.diff" -Content-Disposition: attachment; filename="topuser.diff" -Content-Transfer-Encoding: 8bit - ---- sarg-2.0.7/topuser.c 2005-05-02 17:55:04.000000000 +0400 -+++ sarg-2.0.7rbs/topuser.c 2005-05-04 03:53:48.000000000 +0400 -@@ -38,7 +38,7 @@ - int posicao=0; - char olduser[MAXLEN], csort[MAXLEN], periodo[MAXLEN], arqper[MAXLEN]; - char wger[MAXLEN], top1[MAXLEN], top2[MAXLEN], top3[MAXLEN]; -- char user[MAXLEN], nacc[20], nbytes[20], url[1024], preg[8000], tusr[MAXLEN]; -+ char user[MAXLEN], nacc[20], nbytes[20], url[3072], preg[8000], tusr[MAXLEN]; - char ip[MAXLEN], hora[9], data[11], elap[15], incac[15], oucac[15], html[MAXLEN]; - char ipantes[MAXLEN], nameantes[MAXLEN]; - char sfield[10]="2,2"; - ---Boundary-00=_BrreCrvUGWRZVaY -Content-Type: text/x-diff; charset="koi8-r"; name="util.diff" -Content-Disposition: attachment; filename="util.diff" -Content-Transfer-Encoding: 8bit - ---- sarg-2.0.7/util.c 2005-05-02 17:55:04.000000000 +0400 -+++ sarg-2.0.7rbs/util.c 2005-05-04 04:04:01.000000000 +0400 -@@ -246,7 +246,7 @@ - ndia[0]='\0'; - nmes[0]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],mes) == 0) { - strncpy(nmes,mtab2[x],sizeof(nmes)-1); - nmes[sizeof(nmes)-1]=0; -@@ -262,9 +262,6 @@ - - strncpy(dia,ndia,sizeof(dia)-1); - dia[sizeof(dia)-1]=0; -- -- return; -- - } - - -@@ -275,15 +272,12 @@ - - nmes[0]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],mes) == 0) - strcpy(nmes,mtab2[x]); - } - - sprintf(wdata,"%s%s%s",ano,nmes,dia); -- -- return; -- - } - - -@@ -291,13 +285,10 @@ - { - int x; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab1[x],month) == 0) - strcpy(month,mtab2[x]); - } -- -- return; -- - } - - -@@ -305,7 +296,7 @@ - { - int x; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab2[x],month) == 0) - strcpy(month,mtab1[x]); - } -@@ -328,7 +319,7 @@ - strncpy(ano,duntil,4); - ano[4]='\0'; - -- for(x=0; x<=12; x++) { -+ for(x=0; x<12; x++) { - if(strcmp(mtab2[x],mes) == 0) - strcpy(mes,mtab1[x]); - } -@@ -339,23 +330,18 @@ - sprintf(warea,"%s%s%s",ano,mes,dia); - - strcat(periodo,warea); -- return; - } - - - void debuga(char *msg) - { - fprintf(stderr, "SARG: %s\n",msg); -- -- return; - } - - - void debugaz(char *head, char *msg) - { - fprintf(stderr, "SARG: (util) %s=%s\n",head, msg); -- -- return; - } - - -@@ -384,8 +370,6 @@ - } - ip[0]='\0'; - sprintf(ip,"%s%s%s%s%s%s%s",n1,sep,n2,sep,n3,sep,wip); -- -- return; - } - - -@@ -499,9 +483,6 @@ - strcpy(href," -To: Pedro Lineu Orso -Subject: Re: sarg-2.0.6 new patches -Date: Wed, 11 May 2005 23:30:30 +0400 -User-Agent: KMail/1.7.2 -References: <200504241642.06841.xsov@mail.ru> - <200505060430.57213.xsov@mail.ru> <1115814131.8900.1.camel@lcaklds49> -In-Reply-To: <1115814131.8900.1.camel@lcaklds49> -MIME-Version: 1.0 -Content-Type: Multipart/Mixed; boundary="Boundary-00=_W1lgCFYB9s7BJUS" -Message-Id: <200505112330.30670.xsov@mail.ru> -X-Evolution-Source: pop://orso@pop.brturbo.com.br/ - - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/plain; charset="koi8-r" -Content-Disposition: inline -Content-Transfer-Encoding: 8bit - -Hello Pedro! - -I found the bugplace, it is already fixed by me in previous topuser.diff patch -for 2.0.7 (not by those 6 patches for 2.0.6), howeverer I include my log file -example here with configuration files: -- sarg.conf; -- exclude_codes; -- access.log. - -It looks like in this access.log example the one symbol is replaced by 6 (for -example: %u049F), so in previous topuser.diff patch there must be 1024*6 = -6144 size for array url (I include new, modified topuser.diff patch for -2.0.7, which will fix this bug). So, for now, the part of old my patch for -2.0.6, which adds '\0' at the end of line is not necessary. - -I also include here my recommendations for "download_suffix" option default -value (look at extensions-was.txt for old values and extensions-be.txt for -new). I mark with star "(*)" symbol most important changes. - -Regards, Oleg. - -÷ ÓÏÏÂÝÅÎÉÉ ÏÔ óÒÅÄÁ 11 íÁÊ 2005 16:22 ×Ù ÎÁÐÉÓÁÌÉ: -PL > Hello Oleg, -PL > -PL > May I have some of that log file to try to hack sarg, and you sarg.conf -PL > file too, please? -PL > -PL > Thanks - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/plain; charset="koi8-r"; name="extensions-be.txt" -Content-Disposition: attachment; filename="extensions-be.txt" -Content-Transfer-Encoding: 8bit - -tgz - archive -tar - archive(*) -cpio - archive -zip - archive -arj - archive -bzip - archive -bz2 - archive -gz - archive -rar - archive -ace - archive -lha - archive -lzh - archive -cab - archive -7z - archive -tar - archive -cpio - archive - -doc - office suite document -mdb - office suite document -ppt - office suite document -rtf - office suite document -mso - office suite document(?) -dot - office suite document(?) - -bin - conatain binary executable -com - conatain binary executable -sys - conatain binary executable -exe - conatain binary executable -dll - conatain binary executable -bin - conatain binary executable -scr - conatain binary executable(*) -bat - conatain binary executable - -iso - cd/dvd image -nrg - cd/dvd image -vcd - cd/dvd image(*) -vob - cd/dvd image(*) - -mp3 - multimedia -avi - multimedia -mpg - multimedia -mpeg - multimedia -wma - multimedia -wmv - multimedia(*) -ogg - multimedia -mov - multimedia - -=================================== -adt - don't know -drv$ - don't know -src - don't know -shs - don't know - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/x-diff; charset="koi8-r"; name="topuser.diff" -Content-Disposition: attachment; filename="topuser.diff" -Content-Transfer-Encoding: 8bit - ---- sarg-2.0.7/topuser.c 2005-05-02 17:55:04.000000000 +0400 -+++ sarg-2.0.7rbs/topuser.c 2005-05-04 03:53:48.000000000 +0400 -@@ -38,7 +38,7 @@ - int posicao=0; - char olduser[MAXLEN], csort[MAXLEN], periodo[MAXLEN], arqper[MAXLEN]; - char wger[MAXLEN], top1[MAXLEN], top2[MAXLEN], top3[MAXLEN]; -- char user[MAXLEN], nacc[20], nbytes[20], url[1024], preg[8000], tusr[MAXLEN]; -+ char user[MAXLEN], nacc[20], nbytes[20], url[6144], preg[8000], tusr[MAXLEN]; - char ip[MAXLEN], hora[9], data[11], elap[15], incac[15], oucac[15], html[MAXLEN]; - char ipantes[MAXLEN], nameantes[MAXLEN]; - char sfield[10]="2,2"; - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/plain; charset="koi8-r"; name="extensions-was.txt" -Content-Disposition: attachment; filename="extensions-was.txt" -Content-Transfer-Encoding: 8bit - -tgz - archive -zip - archive -arj - archive -bzip - archive -bz2 - archive -gz - archive -rar - archive -ace - archive -lha - archive -lzh - archive -cab - archive - -doc - office suite document -mdb - office suite document -ppt - office suite document -rtf - office suite document -mso - office suite document(?) -dot - office suite document(?) - -bin - conatain binary executable -com - conatain binary executable -sys - conatain binary executable -exe - conatain binary executable -dll - conatain binary executable -bin - conatain binary executable - -iso - cd/dvd image - -mp3 - multimedia -avi - multimedia -mpg - multimedia -mpeg - multimedia - -=================================== -adt - don't know -drv$ - don't know -src - don't know -shs - don't know - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/plain; charset="koi8-r"; name="sarg.conf" -Content-Disposition: attachment; filename="sarg.conf" -Content-Transfer-Encoding: 8bit - -# sarg.conf -# -# TAG: language -# Available languages: -# Bulgarian_windows1251 -# Catalan -# Czech -# Dutch -# English -# French -# German -# Hungarian -# Indonesian -# Italian -# Japanese -# Latvian -# Polish -# Portuguese -# Romanian -# Russian_koi8 -# Russian_windows1251 -# Serbian -# Spanish -# Turkish -# -language Russian_koi8 - -# TAG: access_log file -# Where is the access.log file -# sarg -l file -# -access_log /mnt/access.log - -# TAG: graphs yes|no -# Use graphics where is possible. -# graph_days_bytes_bar_color blue|green|yellow|orange|brown|red -# -graphs yes -graph_days_bytes_bar_color orange - -# TAG: title -# Especify the title for html page. -# - -# TAG: font_face -# Especify the font for html page. -# -font_face Tahoma,Verdana,Arial - -# TAG: header_color -# Especify the header color -# -header_color darkblue - -# TAG: header_bgcolor -# Especify the header bgcolor -# -header_bgcolor blanchedalmond - -# TAG: font_size -# Especify the text font size -# -font_size 10px - -# TAG: header_font_size -# Especify the header font size -# -header_font_size 10px - -# TAG: title_font_size -# Especify the title font size -# -title_font_size 20px - -# TAG: background_color -# TAG: background_color -# Html page background color -# -background_color white - -# TAG: text_color -# Html page text color -# -text_color #000000 - -# TAG: text_bgcolor -# Html page text background color -# -text_bgcolor lavender - -# TAG: title_color -# Html page title color -# -title_color green - -# TAG: logo_image -# Html page logo. -# - -# TAG: logo_text -# Html page logo text. -# -#logo_text "" - -# TAG: logo_text_color -# Html page logo texti color. -# -#logo_text_color #000000 - -# TAG: logo_image_size -# Html page logo image size. -# width height -# -image_size 253 35 - -# TAG: background_image -# Html page background image -# -#background_image none - -# TAG: password -# User password file used by authentication -# If used here, reports will be generated only for that users. -# -password none - -# TAG: temporary_dir -# Temporary directory name for work files -# sarg -w dir -# -temporary_dir /tmp - -# TAG: output_dir -# The reports will be saved in that directory -# sarg -o dir -# -output_dir /xxx - -# TAG: output_email -# Email address to send the reports. If you use this tag, no html reports will be generated. -# sarg -e email -# -output_email none - -# TAG: resolve_ip yes/no -# Convert ip address to dns name -# sarg -n -resolve_ip no - -# TAG: user_ip yes/no -# Use Ip Address instead userid in reports. -# sarg -p -user_ip no - -# TAG: topuser_sort_field field normal/reverse -# Sort field for the Topuser Report. -# Allowed fields: USER CONNECT BYTES TIME -# -topuser_sort_field BYTES reverse - -# TAG: user_sort_field field normal/reverse -# Sort field for the User Report. -# Allowed fields: SITE CONNECT BYTES TIME -# -user_sort_field BYTES reverse - -# TAG: exclude_users file -# users within the file will be excluded from reports. -# you can use indexonly to have only index.html file. -# -exclude_users none - -# TAG: exclude_hosts file -# Hosts, domains or subnets will be excluded from reports. -# -# Eg.: 192.168.10.10 - exclude ip address only -# 192.168.10.0 - exclude full C class -# s1.acme.foo - exclude hostname only -# acme.foo - exclude full domain name -# -exclude_hosts none - -# TAG: useragent_log file -# Put here where is useragent.log to nable useragent report. -# -#useragent_log none - -# TAG: date_format -# Date format in reports: e (European=dd/mm/yy), u (American=mm/dd/yy), w (Weekly=yy.ww) -# -date_format e - -# TAG: per_user_limit file MB -# Saves userid on file if download exceed n MB. -# This option allow you to disable user access if user exceed a download limit. -# -per_user_limit none - -# TAG: lastlog n -# How many reports files must be keept in reports directory. -# The oldest report file will be automatically removed. -# 0 - no limit. -# -lastlog 0 - -# TAG: remove_temp_files yes -# Remove temporary files: geral, usuarios, top, periodo from root report directory. -# -remove_temp_files yes - -# TAG: index yes|no|only -# Generate the main index.html. -# only - generate only the main index.html -# -index yes - -# TAG: overwrite_report yes|no -# yes - if report date already exist then will be overwrited. -# no - if report date already exist then will be renamed to filename.n, filename.n+1 -# -overwrite_report yes - -# TAG: records_without_userid ignore|ip|everybody -# What can I do with records without user id (no authentication) in access.log file ? -# -# ignore - This record will be ignored. -# ip - Use ip address instead. (default) -# everybody - Use "everybody" instead. -# -records_without_userid ip - -# TAG: use_comma no|yes -# Use comma instead point in reports. -# Eg.: use_comma yes => 23,450,110 -# use_comma no => 23.450.110 -# -use_comma no - -# TAG: mail_utility mail|mailx -# Mail command to use to send reports via SMTP -# -#mail_utility mailx - -# TAG: topsites_num n -# How many sites in topsites report. -# -topsites_num 100 - -# TAG: topsites_sort_order CONNECT|BYTES A|D -# Sort for topsites report, where A=Ascendent, D=Descendent -# -topsites_sort_order BYTES D - -# TAG: index_sort_order A/D -# Sort for index.html, where A=Ascendent, D=Descendent -# -index_sort_order D - -# TAG: exclude_codes file -# Ignore records with these codes. Eg.: NONE/400 -# -exclude_codes /xxx/exclude_codes - -# TAG: replace_index string -# Replace "index.html" in the main index file with this string -# If null "index.html" is used -# -#replace_index - -# TAG: max_elapsed milliseconds -# If elapsed time is recorded in log is greater than max_elapsed use 0 for elapsed time. -# Use 0 for no checking -# -max_elapsed 0 -# 8 Hours -#max_elapsed 28800000 - -# TAG: report_type type -# What kind of reports to generate. -# topsites - shows the site, connect and bytes -# sites_users - shows which users were accessing a site -# users_sites - shows sites accessed by the user -# date_time - shows the amount of bytes used by day and hour -# denied - shows all denied sites with full URL -# auth_failures - shows autentication failures -# site_user_time_date - shows sites, dates, times and bytes -# -# Eg.: report_type topsites denied -# -#report_type topsites sites_users users_sites date_time denied auth_failures site_user_time_date -report_type topsites sites_users users_sites date_time denied auth_failures site_user_time_date - -# TAG: usertab filename -# You can change the "userid" or the "ip address" to be a real user name on the rpeorts. -# Table syntax: -# userid name or ip address name -# Eg: -# SirIsaac Isaac Newton -# vinci Leonardo da Vinci -# 192.168.10.1 Karol Wojtyla -# -# Each line must be terminated with '\n' -# - -# TAG: long_url yes|no -# If yes, the full url is showed in report. -# If no, only the site will be showed -# -# YES option generate very big sort files and reports. -# -long_url yes - -# TAG: date_time_by bytes|elap -# Date/Time reports will use bytes or elapsed time? -# -date_time_by bytes - -# TAG: charset name -# ISO 8859 is a full series of 10 standardized multilingual single-byte coded (8bit) -# graphic character sets for writing in alphabetic languages -# You can use the following charsets: -# Latin1 - West European -# Latin2 - East European -# Latin3 - South European -# Latin4 - North European -# Cyrillic -# Arabic -# Greek -# Hebrew -# Latin5 - Turkish -# Latin6 -# Windows-1251 -# Koi8-r -# -charset KOI8-R - -# TAG: user_invalid_char "&/" -# Records that contain invalid characters in userid will be ignored by Sarg. -# -#user_invalid_char "&/" - -# TAG: privacy yes|no -# privacy_string "***.***.***.***" -# privacy_string_color blue -# In some countries the sysadm cannot see the visited sites by a restrictive law. -# Using privacy yes the visited url will be changes by privacy_string and the link -# will be removed from reports. -# -privacy no -#privacy_string "***.***.***.***" -#privacy_string_color blue - -# TAG: include_users "user1:user2:...:usern" -# Reports will be generated only for listed users. -# -#include_users none - -# TAG: exclude_string "string1:string2:...:stringn" -# Records from access.log file that contain one of listed strings will be ignored. -# -#exclude_string none - -# TAG: show_successful_message yes|no -# Shows "Successful report generated on dir" at end of process. -# -show_successful_message no - -# TAG: show_read_statistics yes|no -# Shows some reading statistics. -# -show_read_statistics no - -# TAG: topuser_fields -# Which fields must be in Topuser report. -# -topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES TOTAL AVERAGE - -# TAG: user_report_fields -# Which fields must be in User report. -# -user_report_fields CONNECT BYTES %BYTES TOTAL AVERAGE - -# TAG: topuser_num n -# How many users in topsites report. 0 = no limit -# -topuser_num 0 - -# TAG: site_user_time_date_type list|table -# generate reports for site_user_time_date in list or table format -# -site_user_time_date_type table - -# TAG: datafile file -# Save the report results in a file to populate some database -# -#datafile none -#datafile /tmp/p8 - -# TAG: datafile_delimiter ";" -# ascii character to use as a field separator in datafile -# -#datafile_delimiter ";" - -# TAG: datafile_fields all -# Which data fields must be in datafile -# user;date;time;url;connect;bytes;in_cache;out_cache;elapsed -# -#datafile_fields user;date;time;url;connect;bytes;in_cache;out_cache;elapsed - -# TAG: weekdays -# The weekdays to take account ( Sunday->0, Saturday->6 ) -# Example: -#weekdays 1-3,5 -# Default: -weekdays 0-6 - -# TAG: hours -# The hours to take account -# Example: -#hours 7-12,14,16,18-20 -# Default: -hours 0-23 - -# TAG: squidguard_conf file -# path to squidGuard.conf file -# Generate reports from SquidGuard logs. -# Use 'none' to disable. -# squidguard_conf /usr/local/squidGuard/squidGuard.conf -# -#squidguard_conf none - -# TAG: squidguard_log_format -# Format string SquidGuard logs. -# REJIK #year#-#mon#-#day# #hour# #list#:#tmp# #ip# #user# #tmp#/#tmp#/#url#/#end# -# SQUIDGUARD #year#-#mon#-#day# #hour# #tmp#/#list#/#tmp#/#tmp#/#url#/#tmp# #ip#/#tmp# #user# #end# -#squidguard_log_format #year#-#mon#-#day# #hour# #tmp#/#list#/#tmp#/#tmp#/#url#/#tmp# #ip#/#tmp# #user# #end# - -# TAG: show_sarg_info yes|no -# shows sarg information and site path on each report bottom -# -show_sarg_info no - -# TAG: show_sarg_logo yes|no -# shows sarg logo -# -show_sarg_logo no - -# TAG: parsed_output_log directory -# Saves the processed log in a sarg format after parsing the squid log file. -# This is a way to dump all of the data structures out, after parsing from -# the logs (presumably this data will be much smaller than the log files themselves), -# and pull them back in for later processing and merging with data from previous logs. -# -#parsed_output_log none - -# TAG parsed_output_log_compress /bin/gzip|/usr/bin/bzip2|nocompress -# sarg logs compress util -# -#parsed_output_log_compress /bin/gzip - -# TAG displayed_values bytes|abbreviation -# how the values will be displayed in reports. -# eg. bytes - 209.526 -# abbreviation - 210K -# -displayed_values bytes - -# Report limits -# TAG authfail_report_limit n -# TAG denied_report_limit n -# TAG siteusers_report_limit n -# TAG squidguard_report_limit n -# TAG user_report_limit n -# report limits (lines). -# '0' no limit -# -authfail_report_limit 0 -denied_report_limit 0 -siteusers_report_limit 0 -squidguard_report_limit 0 -user_report_limit 0 - -# TAG www_document_root dir -# Where is your Web DocumentRoot -# Sarg will create sarg-php directory with some PHP modules: -# - sarg-squidguard-block.php - add urls from user reports to squidGuard DB -# -www_document_root /xxx - -# TAG block_it module_url -# This tag allow you to pass urls from user reports to a cgi or php module, -# to be blocked by some Squid acl -# -# Eg.: block_it /sarg-php/sarg-block-it.php -# sarg-block-it is a php that will append a url to a flat file. -# You must change /var/www/html/sarg-php/sarg-block-it to point to your file -# in $filename variable, and chown to a httpd owner. -# -# sarg will pass http://module_url?url=url -# -block_it none - -# TAG external_css_file path -# This tag allow internal sarg css override. -# Sarg use theses style classes: -# .body body class -# .info sarg information class, align=center -# .title title class, align=center -# .header header class, align:left -# .header2 header class, align:right -# .header3 header class, align:right -# .text text class, align:left -# .data table text class, align:right -# .data2 table text class, align:right, border colors -# .link link class -# -# There is a sample in /usr/local/sarg/etc/css.tpl -# -#external_css_file none - -# TAG user_authentication yes|no -# Allow user authentication in User Reports using .htaccess -# Parameters: -# AuthUserFile - where the user password file is -# AuthName - authentication realm. Eg "Members Only" -# AuthType - authenticaion type - basic -# Require - authorized users to see the report. -# %u - user report -# -# user_authentication no -# AuthUserFile /usr/local/sarg/passwd -# AuthName "SARG, Restricted Access" -# AuthType Basic -# Require user admin %u - -# TAG download_suffix "suffix,suffix,...,suffix" -# file suffix to be considered as "download" in Download report. -# Use 'none' to disable. -# -download_suffix "tgz,zip,arj,bzip,bz2,gz,rar,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg" - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/x-log; charset="koi8-r"; name="access.log" -Content-Disposition: attachment; filename="access.log" -Content-Transfer-Encoding: 8bit - -1112196006.509 265 192.168.77.15 TCP_MISS/200 296 GET http://kmindex.ru/c/?id=313791&id2=48&v=30&l=http%3A//www.alkonvvs.ru/&r=http%3A//www.yandex.ru/yandsearch%3Ftext%3D%25D2%25EE%25F0%25E3%25EE%25E2%25FB%25E5+%25E2%25E8%25F2%25F0%25E8%25ED%25FB%26holdreq%3D%25D2%25EE%25F0%25E3%25EE%25E2%25EE%25E5+%25EE%25E1%25EE%25F0%25F3%25E4%25EE%25E2%25E0%25ED%25E8%25E5%26stype%3Dwww&t=%u0422%u043E%u0440%u0433%u043E%u0432%u043E%u0435%20%u043E%u0431%u043E%u0440%u0443%u0434%u043E%u0432%u0430%u043D%u0438%u0435%2C%20%u043F%u0440%u043E%u0434%u0430%u0436%u0430%20%u0442%u043E%u0440%u0433%u043E%u0432%u043E%u0433%u043E%20%u043E%u0431%u043E%u0440%u0443%u0434%u043E%u0432%u0430%u043D%u0438%u044F%3A%20%u0432%u0438%u0442%u0440%u0438%u043D%u0430%20%u0438%20%u0432%u0438%u0442%u0440%u0438%u043D%u044B%20%u0438%u0437%20%u0430%u043B%u044E%u043C%u0438%u043D%u0438%u0435%u0432%u043E%u0433%u043E%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%2C%20%u043F%u0440%u043E%u0441%u0442%u043E%20%u0430%u043B%u044E%u043C%u0438%u043D%u0438%u0435%u0432%u044B%u0439%20%u043F%u0440%u043E%u0444%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0432%u044B%u0441%u0442%u0430%u0432%u043E%u0447%u043D%u043E%u0433%u043E%20%u043E%u0431%u043E%u0440%u0443%u0434%u043E%u0432%u0430%u043D%u0438%u044F%20-%20%u043E%u0442%20%u043A%u043E%u043C%u043F%u0430%u043D%u0438%u0438%20ALCON-BBC&f=0&d=0.95783290883686160.014756022435909899 - DIRECT/217.174.98.3 image/gif - ---Boundary-00=_W1lgCFYB9s7BJUS -Content-Type: text/plain; charset="koi8-r"; name="exclude_codes" -Content-Disposition: attachment; filename="exclude_codes" -Content-Transfer-Encoding: 8bit - -NONE/400 -TCP_MEM_HIT/200 -TCP_REFRESH_HIT/304 -TCP_REFRESH_HIT/200 -TCP_IMS_HIT/304 -TCP_HIT/200 -TCP_NEGATIVE_HIT/404 - ---Boundary-00=_W1lgCFYB9s7BJUS-- - diff --git a/realtime.c b/realtime.c new file mode 100755 index 0000000..e33c831 --- /dev/null +++ b/realtime.c @@ -0,0 +1,169 @@ +/* + * AUTHOR: Pedro Lineu Orso orso@penguintech.com.br + * 1998, 2005 + * SARG Squid Analysis Report Generator http://sarg.sourceforge.net + * + * SARG donations: + * please look at http://sarg.sourceforge.net/donations.php + * --------------------------------------------------------------------- + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + */ + +#include "include/conf.h" + +void getdata(char *, FILE *); +void datashow(char *); + +char dat[128]; +char tim[128]; +char typ[128]; +char ouser[MAXLEN]=""; +char ourl[MAXLEN]=""; + +void +realtime(int argc, char *argv[]) +{ + + getlog(); + +} + +void getlog() +{ + FILE *tmp, *fp; + char template1[255]="/var/tmp/sargtpl1.XXXXXX"; + char template2[255]="/var/tmp/sargtpl2.XXXXXX"; + char cmd[512]; + char buf[512]; + int fd1,fd2; + + fd1 = mkstemp(template1); + fd2 = mkstemp(template2); + + if((fd1 == -1 ) || ((tmp = fdopen (fd1, "w+" )) == NULL) ) { /* failure, bail out */ + fprintf(stderr, "SARG: (realtime) mkstemp error - %s\n",strerror(errno)); + exit(1); + } + + sprintf(cmd,"tail -%d %s",realtime_access_log_lines,AccessLog); + fp = popen(cmd, "r"); + while(fgets(buf,sizeof(buf),fp) != NULL ) + getdata(buf,tmp); + pclose(fp); + fclose(tmp); + + sprintf(cmd,"sort -k 4,4 -k 5,5 -o %s %s",template2,template1); + system(cmd); + unlink(template1); + datashow(template2); +} + +void getdata(char *rec, FILE *ftmp) +{ + time_t tt; + struct tm *t; + + getword3(dat,rec,' '); + getword3(warea,rec,' '); + while(strcmp(warea,"") == 0 && strlen(rec) > 0) + getword3(warea,rec,' '); + getword3(ip,rec,' '); + getword3(warea,rec,' '); + getword3(warea,rec,' '); + getword3(typ,rec,' '); + if(strncmp(typ,"CONNECT",7) == 0) { + getword3(url,rec,' '); + getword3(user,rec,' '); + }else { + getword3(url,rec,'/'); + getword3(url,rec,'/'); + getword3(url,rec,'/'); + getword3(user,rec,' '); + getword3(user,rec,' '); + } + + if(strncmp(user,"-",1) == 0 && strcmp(RealtimeUnauthRec,"ignore") == 0) + return; + + tt=atoi(dat); + t=localtime(&tt); + if(strncmp(DateFormat,"u",1) == 0) + strftime(tbuf, 127, "%Y-%m-%d %H:%M", t); + else if(strncmp(DateFormat,"e",1) == 0) + strftime(tbuf, 127, "%d-%m-%Y %H:%M", t); + + sprintf(warea,"%s %s %s %s %s\n",tbuf,ip,user,url,typ); + fputs(warea,ftmp); +} + +void datashow(char *tmp) +{ + FILE *fin; + char buf[MAXLEN]; + + if((fin=fopen(tmp,"r"))==NULL) { + fprintf(stderr, "SARG: (realtime) open error %s - %s\n",tmp,strerror(errno)); + exit(1); + } + + header(); + + while(fgets(buf, MAXLEN, fin)) { + buf[strlen(buf)-1]='\0'; + getword3(dat,buf,' '); + getword3(tim,buf,' '); + getword3(ip,buf,' '); + getword3(user,buf,' '); + if(strlen(dat) < 3 || strlen(user) < 1) continue; + getword3(url,buf,' '); + getword3(typ,buf,' '); + if(strstr(RealtimeTypes,typ) == 0) + continue; + + if(strcmp(ouser,user) == 0 && strcmp(ourl,url) == 0) + continue; + + printf("%s %s%s%s%s%s\n",dat,tim,ip,user,typ,url,url); + strcpy(ouser,user); + strcpy(ourl,url); + } + + puts("\n\n"); + fclose(fin); + unlink(tmp); + fflush(NULL); + +} + +void header() +{ + puts("\n"); + puts("\n"); + puts("\n"); + if(realtime_refresh) + printf(" \n",realtime_refresh,CharSet); + else + printf(" \n",CharSet); + css(stdout); + puts("\n"); + printf(buf,"\n",FontFace,TitleFontSize,BgColor,BgImage); + puts("
\n"); + printf("\n",text[134]); + printf("\n",text[136],realtime_refresh); + printf("\n",text[110],text[111],text[98],text[135],text[91]); +} -- 2.47.2
SARG %s
%s: %d s
%s%s%s%s%s