+++ /dev/null
-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 <xsov@mail.ru>
-To: Pedro Lineu Orso <orso@brturbo.com>
-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
-<yurtesen@ispro.net.tr>, 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 <allav@ur.rags.ru>
- Eugeny Kuzakov <CoreDumped@CoreDumped.null.ru>
- Evren Yurtesen <yurtesen@ispro.net.tr>
--Evren Yurtesen <yurtesen@ispro.net.tr>
- Hanni Daniel <daniel.haenni@softlab.ch>
- Ilya V. Komarov <mur@mur.lynx.ru>
- Jose Luiz <jluiz@projesom.com.br>
-
---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 <iconv.h>
-+#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<strlen(str); z1++) {
-+ if(str[z1]=='?' || str[z1]=='-' || str[z1]=='.' || str[z1]==':' || str[z1]=='/' || str[z1]=='\\')
- str[z1]='_';
-- if(str[z1]=='.')
-- str[z1]='_';
-- if(str[z1]==':')
-- str[z1]='_';
-- if(str[z1]=='/')
-- str[z1]='_';
-- if(str[z1]=='\\')
-- str[z1]='_';
-- siteind[z2]=str[z1];
-- z2++;
- }
- sprintf(href2,"<a href=\"tt%s-%s.html\"><img src=\"../../images/datetime.png\" border=\"0\" title=\"%s %s\"></a>",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<strlen(str); z1++) {
- if(isalnum(str[z1]) || ispunct(str[z1])) {
-- if(str[z1]=='/')
-- str[z1]='_';
-- if(str[z1]=='\\')
-- str[z1]='_';
-- if(str[z1]==';')
-- str[z1]='_';
-- if(str[z1]=='\'')
-- str[z1]='_';
-- user[z2]=str[z1];
-- z2++;
-+ if(str[z1]=='?' || str[z1]=='-' || str[z1]=='.' || str[z1]==':' || str[z1]=='/' || str[z1]=='\\')
-+ str[z1]='_';
- }
- }
-
-diff -ur sarg-2.0.6/report.c sarg-2.0.6rbs/report.c
---- sarg-2.0.6/report.c 2005-04-23 00:57:22.000000000 +0400
-+++ sarg-2.0.6rbs/report.c 2005-04-24 16:02:12.000000000 +0400
-@@ -186,22 +186,10 @@
- if(!ttopen) {
- ind2++;
- strcpy(siteind,accurl);
-- z1=0;
-- z2=0;
- str=siteind;
-- for(z1=0; z1<=strlen(str); z1++) {
-- if(str[z1]=='-')
-- str[z1]='_';
-- if(str[z1]=='.')
-- str[z1]='_';
-- if(str[z1]==':')
-- str[z1]='_';
-- if(str[z1]=='/')
-- str[z1]='_';
-- if(str[z1]=='?')
-- str[z1]='_';
-- siteind[z2]=str[z1];
-- z2++;
-+ for(z1=0; z1<strlen(str); z1++) {
-+ if(str[z1]=='?' || str[z1]=='-' || str[z1]=='.' || str[z1]==':' || str[z1]=='/' || str[z1]=='\\')
-+ str[z1]='_';
- }
- sprintf(arqtt,"%s/%s",dirname,accuser);
- if(access(arqtt, R_OK) != 0)
-
---Boundary-00=_eQ5aCJp/CximSea
-Content-Type: text/x-diff; charset="koi8-r"; name="repday.patch"
-Content-Disposition: attachment; filename="repday.patch"
-Content-Transfer-Encoding: 8bit
-
-diff -ur sarg-2.0.6/repday.c sarg-2.0.6rbs/repday.c
---- sarg-2.0.6/repday.c 2005-02-21 21:13:22.000000000 +0300
-+++ sarg-2.0.6rbs/repday.c 2005-04-21 01:37:06.000000000 +0400
-@@ -140,13 +140,13 @@
- fputs( "<tr><td border=0></td>\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,
-- "<td class=\"header3\">%02dH<br>%s</td>\n", hours.list[ i ], html );
-+ "<td class=\"header3\">%d%s<br>%s</td>\n", hours.list[ i ], text[129], html );
- fprintf( fp_ou,
- "<td class=\"header3\">%s<br>%s</td></tr>\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 <andy@crgu.com>
-+# by Andrew Okhmat <andy@crgu.com> and Sapon Oleg <xsov@mail.ru>
- "äÁ"
- "îÅÔ"
- "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--
-
+++ /dev/null
-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 <xsov@mail.ru>
-To: Pedro Lineu Orso <orso@brturbo.com.br>
-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,"<a href='");
- strcat(href,whref);
- strcat(href,"/");
--
-- return;
--
- }
-
-
-@@ -541,9 +522,6 @@
- fgets(data,80,fp_in);
- fclose(fp_in);
- data[strlen(data)-1]='\0';
--
-- return;
--
- }
-
-
-@@ -562,9 +540,6 @@
- fgets(tuser,20,fp_in);
- tuser[strlen(tuser)-1]='\0';
- fclose(fp_in);
--
-- return;
--
- }
-
-
-@@ -603,9 +578,6 @@
- wtuser=my_atoll(tuser);
- med=my_atoll(warea) / wtuser;
- sprintf(media,"%s",fixnum(med,1));
--
-- return;
--
- }
-
-
-@@ -631,9 +603,6 @@
-
- if(debug)
- debuga((char *)text[50]);
--
-- return;
--
- }
-
- void vrfydir(char *dir, char *per1, char *addr, char *site, char *us, char *form)
-@@ -733,10 +702,6 @@
- }
- (void) rewinddir(dirp);
- (void) closedir(dirp);
--
-- return;
--
--
- }
-
-
-@@ -752,9 +717,6 @@
- strcat(warea,line);
- strcpy(line,warea);
- }
--
-- return;
--
- }
-
- void zdate(char *ftime, char *DateFormat)
-@@ -771,8 +733,6 @@
- strftime(ftime, 127, "%d/%b/%Y-%H:%M", local);
- if(strcmp(DateFormat,"w") == 0)
- strftime(ftime, 127, "%V-%H-%M", local);
--
-- return;
- }
-
-
-@@ -839,7 +799,6 @@
-
- sprintf(dfrom,"%s%s%s",anof,mesf,diaf);
- sprintf(duntil,"%s%s%s",anou,mesu,diau);
-- return;
- }
-
-
-@@ -928,8 +887,6 @@
- sprintf(warea,"%s/periodo",outdir);
- unlink(warea);
- }
--
-- return;
- }
-
- void load_excludecodes()
-@@ -951,8 +908,6 @@
- }
-
- fclose(fp_in);
-- return;
--
- }
-
- int vercode(char *code)
-@@ -976,8 +931,6 @@
- str[strlen(str)-1]='\0';
- if(strcmp(str,"none") == 0)
- str[0]='\0';
--
-- return;
- }
-
- #ifdef LEGACY_TESTVALIDUSERCHAR
-@@ -1111,8 +1064,6 @@
- w2[y]=w[x];
- y++;
- }
--
-- return;
- }
-
- void version()
-
---Boundary-00=_BrreCrvUGWRZVaY--
-
+++ /dev/null
-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 <xsov@mail.ru>
-To: Pedro Lineu Orso <orso@brturbo.com.br>
-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,"<a href='");
- strcat(href,whref);
- strcat(href,"/");
--
-- return;
--
- }
-
-
-@@ -541,9 +522,6 @@
- fgets(data,80,fp_in);
- fclose(fp_in);
- data[strlen(data)-1]='\0';
--
-- return;
--
- }
-
-
-@@ -562,9 +540,6 @@
- fgets(tuser,20,fp_in);
- tuser[strlen(tuser)-1]='\0';
- fclose(fp_in);
--
-- return;
--
- }
-
-
-@@ -603,9 +578,6 @@
- wtuser=my_atoll(tuser);
- med=my_atoll(warea) / wtuser;
- sprintf(media,"%s",fixnum(med,1));
--
-- return;
--
- }
-
-
-@@ -631,9 +603,6 @@
-
- if(debug)
- debuga((char *)text[50]);
--
-- return;
--
- }
-
- void vrfydir(char *dir, char *per1, char *addr, char *site, char *us, char *form)
-@@ -733,10 +702,6 @@
- }
- (void) rewinddir(dirp);
- (void) closedir(dirp);
--
-- return;
--
--
- }
-
-
-@@ -752,9 +717,6 @@
- strcat(warea,line);
- strcpy(line,warea);
- }
--
-- return;
--
- }
-
- void zdate(char *ftime, char *DateFormat)
-@@ -771,8 +733,6 @@
- strftime(ftime, 127, "%d/%b/%Y-%H:%M", local);
- if(strcmp(DateFormat,"w") == 0)
- strftime(ftime, 127, "%V-%H-%M", local);
--
-- return;
- }
-
-
-@@ -839,7 +799,6 @@
-
- sprintf(dfrom,"%s%s%s",anof,mesf,diaf);
- sprintf(duntil,"%s%s%s",anou,mesu,diau);
-- return;
- }
-
-
-@@ -928,8 +887,6 @@
- sprintf(warea,"%s/periodo",outdir);
- unlink(warea);
- }
--
-- return;
- }
-
- void load_excludecodes()
-@@ -951,8 +908,6 @@
- }
-
- fclose(fp_in);
-- return;
--
- }
-
- int vercode(char *code)
-@@ -976,8 +931,6 @@
- str[strlen(str)-1]='\0';
- if(strcmp(str,"none") == 0)
- str[0]='\0';
--
-- return;
- }
-
- #ifdef LEGACY_TESTVALIDUSERCHAR
-@@ -1111,8 +1064,6 @@
- w2[y]=w[x];
- y++;
- }
--
-- return;
- }
-
- void version()
-
---Boundary-00=_BrreCrvUGWRZVaY--
-
+++ /dev/null
-From xsov@mail.ru Wed May 11 23:30:30 2005
-Received: 194.67.23.149 / smx1.brturbo.com
-Received: from [212.48.205.42] (port=32246 helo=[192.168.0.77]) by
- mx3.mail.ru with asmtp id 1DVwh2-0005nc-00 for orso@brturbo.com.br; Wed,
- 11 May 2005 23:16:29 +0400
-From: Oleg <xsov@mail.ru>
-To: Pedro Lineu Orso <orso@brturbo.com.br>
-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 <?php echo str_replace(".", "_", $REMOTE_ADDR); echo ".html"; ?>
-
-# 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--
-
--- /dev/null
+/*
+ * 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("<tr><td class=\"data\">%s %s</td><td class=\"data3\">%s</td><td class=\"data3\">%s</td><td class=\"data3\">%s</td><td class=\"data2\"><a href=\"http://%s\">%s</td></tr>\n",dat,tim,ip,user,typ,url,url);
+ strcpy(ouser,user);
+ strcpy(ourl,url);
+ }
+
+ puts("</table>\n</html>\n");
+ fclose(fin);
+ unlink(tmp);
+ fflush(NULL);
+
+}
+
+void header()
+{
+ puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"");
+ puts(" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
+ puts("<html>\n");
+ puts("<head>\n");
+ if(realtime_refresh)
+ printf(" <meta http-equiv=refresh content=\"%d\" url=\"sarg-php/sarg-realtime.php\"; charset=\"%s\">\n",realtime_refresh,CharSet);
+ else
+ printf(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n",CharSet);
+ css(stdout);
+ puts("</head>\n");
+ printf(buf,"<body style=\"font-family:%s;font-size:%s;background-color:%s;background-image:url(%s)\">\n",FontFace,TitleFontSize,BgColor,BgImage);
+ puts("<center><table cellpadding=\"1\" cellspacing=\"1\">\n");
+ printf("<tr><th class=\"title2\" colspan=\"10\">SARG %s</th></tr>\n",text[134]);
+ printf("<tr><th class=\"text\" colspan=\"10\">%s: %d s</th></tr>\n",text[136],realtime_refresh);
+ printf("<tr><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header3\">%s</th><th class=\"header\">%s</th></tr>\n",text[110],text[111],text[98],text[135],text[91]);
+}