]>
git.ipfire.org Git - thirdparty/sarg.git/blob - datafile.c
d28ef485ff830d4943e067df4c85bf95744e2aff
2 * AUTHOR: Pedro Lineu Orso orso@penguintech.com.br
4 * SARG Squid Analysis Report Generator http://sarg.sourceforge.net
7 * please look at http://sarg.sourceforge.net/donations.php
8 * ---------------------------------------------------------------------
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
26 #include "include/conf.h"
28 void saverecs ( char * dirname
, char * user
, long long int nacc
, char * url
, long long int nbytes
, char * ip
, char * hora
, char * dia
, long long int nelap
, long long int incache
, long long int oucache
);
29 void grava_SmartFilter ( char * dirname
, char * user
, char * ip
, char * data
, char * hora
, char * url
, char * smart
);
31 void data_file ( char * tmp
)
36 char accdia
[ 11 ], acchora
[ 9 ], accuser
[ MAXLEN
], accip
[ MAXLEN
], accurl
[ MAXLEN
], accbytes
[ 12 ], accelap
[ 10 ];
37 char oldaccdia
[ 11 ], oldacchora
[ 9 ], oldaccip
[ MAXLEN
], wdir
[ MAXLEN
], per1
[ MAXLEN
];
38 char dirname
[ MAXLEN
], wdirname
[ MAXLEN
], oldurl
[ MAXLEN
], oldaccuser
[ MAXLEN
];
39 char olduser
[ MAXLEN
], oldmsg
[ 50 ], acccode
[ 50 ], oldaccelap
[ 10 ], oldacccode
[ 50 ];
40 char ipantes
[ MAXLEN
], nameantes
[ MAXLEN
];
41 char accsmart
[ MAXLEN
];
49 struct dirent
* direntp
;
50 long long int nbytes
= 0 ;
51 long long int nelap
= 0 ;
53 long long int rtotal
= 0 ;
54 long long int incache
= 0 ;
55 long long int oucache
= 0 ;
62 strncat ( tmp
, "/sarg" , 5 );
65 while ( ( direntp
= readdir ( dirp
)) != NULL
) {
66 if ( strstr ( direntp
-> d_name
, ".log" ) == 0 )
68 sprintf ( tmp3
, "%s/%s" , tmp
, direntp
-> d_name
);
70 if (( fp_in
= fopen ( tmp3
, "r" ))== NULL
){
71 fprintf ( stderr
, "SARG: (datafile) %s: %s \n " , text
[ 45 ], tmp
);
74 strcpy ( wdname
, direntp
-> d_name
);
76 getword ( wname2
, wdname
, '.' );
80 while ( fgets ( buf
, sizeof ( buf
), fp_in
)!= NULL
) {
81 getword ( accdia
, buf
, ' ' );
82 getword ( acchora
, buf
, ' ' );
83 getword ( accuser
, buf
, ' ' );
84 getword ( accip
, buf
, ' ' );
85 getword ( accurl
, buf
, ' ' );
86 getword ( accbytes
, buf
, ' ' );
87 getword ( acccode
, buf
, ' ' );
88 getword ( accelap
, buf
, ' ' );
89 getword ( accsmart
, buf
, ' ' );
90 getword ( accsmart
, buf
, '"' );
92 if ( strcmp ( Ip2Name
, "yes" ) == 0 ) {
93 if ( strcmp ( accip
, ipantes
) != 0 ) {
94 strcpy ( ipantes
, accip
);
96 strcpy ( nameantes
, accip
);
97 } else strcpy ( accip
, nameantes
);
101 strcpy ( oldurl
, accurl
);
102 strcpy ( oldacccode
, acccode
);
103 strcpy ( oldaccelap
, accelap
);
104 strcpy ( oldaccuser
, accuser
);
105 strcpy ( oldaccip
, accip
);
106 strcpy ( oldaccdia
, accdia
);
107 strcpy ( oldacchora
, acchora
);
111 if ( strcmp ( oldurl
, accurl
) != 0 || strcmp ( oldaccuser
, accuser
) != 0 ){
113 if ( strstr ( oldacccode
, "DENIED" ) != 0 )
114 sprintf ( oldmsg
, "%s" , text
[ 46 ]);
115 strcpy ( wdirname
, dirname
);
116 gravatmp ( oldaccuser
, wdirname
, oldurl
, nacc
, nbytes
, oldmsg
, nelap
, indexonly
, incache
, oucache
);
117 strcpy ( wdirname
, dirname
);
118 saverecs ( wdirname
, oldaccuser
, nacc
, oldurl
, nbytes
, oldaccip
, oldacchora
, oldaccdia
, nelap
, incache
, oucache
);
124 if ( strcmp ( oldaccuser
, accuser
) != 0 )
129 nbytes
+= my_atoll ( accbytes
);
130 nelap
+= my_atoll ( accelap
);
132 strcpy ( wcrc
, acccode
);
133 getword ( crc2
, wcrc
, '/' );
135 if ( strstr ( crc2
, "MISS" ) != 0 )
136 oucache
+= my_atoll ( accbytes
);
137 else incache
+= my_atoll ( accbytes
);
139 strcpy ( oldurl
, accurl
);
140 strcpy ( oldaccuser
, accuser
);
141 strcpy ( oldacccode
, acccode
);
142 strcpy ( oldaccelap
, accelap
);
143 strcpy ( oldaccip
, accip
);
144 strcpy ( oldaccdia
, accdia
);
145 strcpy ( oldacchora
, acchora
);
151 ( void ) closedir ( dirp
);
153 sprintf ( Msg
, "Datafile %s successfully" , DataFile
);
159 void saverecs ( char * dirname
, char * user
, long long int nacc
, char * url
, long long int nbytes
, char * ip
, char * hora
, char * dia
, long long int nelap
, long long int incache
, long long int oucache
)
165 if (( fp_ou
= fopen ( DataFile
, "a" ))== NULL
){
166 fprintf ( stderr
, "SARG: (datafile) %s: %s \n " , text
[ 45 ], DataFile
);
170 my_lltoa ( nacc
, val1
, 0 );
171 my_lltoa ( nbytes
, val2
, 0 );
172 my_lltoa ( nelap
, val3
, 0 );
173 my_lltoa ( incache
, val4
, 0 );
174 my_lltoa ( oucache
, val5
, 0 );
176 if ( strstr ( DataFileFields
, "user" ) != 0 ) {
178 strncat ( reg
, DataFileDelimiter
, 1 );
180 if ( strstr ( DataFileFields
, "date" ) != 0 ) {
181 strncat ( reg
, dia
, strlen ( dia
));
182 strncat ( reg
, DataFileDelimiter
, 1 );
184 if ( strstr ( DataFileFields
, "time" ) != 0 ) {
185 strncat ( reg
, hora
, strlen ( hora
));
186 strncat ( reg
, DataFileDelimiter
, 1 );
188 if ( strstr ( DataFileFields
, "url" ) != 0 ) {
191 strncat ( reg
, name
, strlen ( name
));
192 strncat ( reg
, DataFileDelimiter
, 1 );
194 if ( strstr ( DataFileFields
, "connect" ) != 0 ) {
195 strncat ( reg
, val1
, strlen ( val1
));
196 strncat ( reg
, DataFileDelimiter
, 1 );
198 if ( strstr ( DataFileFields
, "bytes" ) != 0 ) {
199 strncat ( reg
, val2
, strlen ( val2
));
200 strncat ( reg
, DataFileDelimiter
, 1 );
202 if ( strstr ( DataFileFields
, "in_cache" ) != 0 ) {
203 strncat ( reg
, val4
, strlen ( val4
));
204 strncat ( reg
, DataFileDelimiter
, 1 );
206 if ( strstr ( DataFileFields
, "out_cache" ) != 0 ) {
207 strncat ( reg
, val5
, strlen ( val5
));
208 strncat ( reg
, DataFileDelimiter
, 1 );
210 if ( strstr ( DataFileFields
, "elapsed" ) != 0 ) {
211 strncat ( reg
, val3
, strlen ( val3
));
212 strncat ( reg
, DataFileDelimiter
, 1 );
215 reg
[ strlen ( reg
)- 1 ]= ' \n ' ;