]>
git.ipfire.org Git - thirdparty/sarg.git/blob - repday.c
2 * AUTHOR: Pedro Lineu Orso pedro.orso@gmail.com
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"
30 void report_day ( char * user
, int * iprel
, int * ipuser
)
42 char wdirname
[ MAXLEN
];
47 long long int v
[ 24 ] = { 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L ,
48 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L };
49 long long int t
[ 24 ] = { 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L ,
50 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L , 0L };
51 long long int tt
= 0 , ttt
= 0 ;
54 sprintf ( arqout
, "%s/%s/d%s.html" , dirname
, user
, user
);
55 sprintf ( wdirname
, "%s/%s.day" , tmp
, user
);
57 if ( access ( wdirname
, R_OK
) != 0 )
60 if (( fp_in
= fopen ( wdirname
, "r" ))== NULL
) {
61 fprintf ( stderr
, "SARG: (repday) %s: %s \n " , text
[ 8 ], wdirname
);
65 if (( fp_ou
= fopen ( arqout
, "w" ))== NULL
) {
66 fprintf ( stderr
, "SARG: (repday) %s: %s \n " , text
[ 8 ], arqout
);
70 fprintf ( fp_ou
, "<!DOCTYPE HTML PUBLIC \" -//W3C//DTD HTML 4.01 Transitional//EN \" \" http://www.w3.org/TR/html4/loose.dtd \" > \n <html> \n <head> \n <meta http-equiv= \" Content-Type \" content= \" text/html; charset=%s \" > \n " , CharSet
);
72 fputs ( "</head> \n " , fp_ou
);
73 if ( strlen ( FontFace
) > 0 ) fprintf ( fp_ou
, "<font face=%s> \n " , FontFace
);
74 fprintf ( fp_ou
, "<body bgcolor=%s text=%s background='%s'> \n " , BgColor
, TxColor
, BgImage
);
75 if ( strlen ( LogoImage
) > 0 ) fprintf ( fp_ou
, "<center><table cellpadding= \" 0 \" cellspacing= \" 0 \" > \n <tr><th class= \" logo \" ><img src='%s' border=0 align=absmiddle width=%s height=%s> %s</th></tr> \n <tr><td height= \" 5 \" ></td></tr> \n </table> \n " , LogoImage
, Width
, Height
, LogoText
);
77 if ( strcmp ( IndexTree
, "date" ) == 0 )
78 show_sarg ( fp_ou
, "../../../.." );
80 show_sarg ( fp_ou
, "../.." );
82 fputs ( "<center><table cellpadding=0 cellspacing=0> \n " , fp_ou
);
83 sprintf ( html
, "<tr><th class= \" title \" colspan=2>%s</th></tr> \n " , Title
);
86 fputs ( "</table></center> \n " , fp_ou
);
87 fputs ( "<center><table cellpadding=0 cellspacing=0> \n " , fp_ou
);
89 sprintf ( html
, "<tr><td class= \" header3 \" colspan= \" 2 \" >%s: %s</td></tr> \n " , text
[ 89 ], period
);
93 if ( strstr ( wuser
, "_" ) != 0 )
96 if ( strcmp ( Ip2Name
, "yes" ) == 0 )
97 if (( str
=( char *) strstr ( name
, "." )) != ( char *) NULL
) {
98 if (( str
=( char *) strstr ( str
+ 1 , "." )) != ( char *) NULL
)
99 ip2name ( wuser
, sizeof ( wuser
));
102 if ( UserTabFile
[ 0 ] != '\0' ) {
103 sprintf ( warea
, ":%s:" , wuser
);
104 if (( str
=( char *) strstr ( userfile
, warea
)) != ( char *) NULL
) {
106 str2
=( char *) strstr ( str
+ 1 , ":" );
109 while ( str2
[ z1
] != ':' ) {
113 } else strcpy ( name
, wuser
);
114 } else strcpy ( name
, user
);
116 if ( dotinuser
&& strstr ( name
, "_" )) {
117 str2
=( char *) subs ( name
, "_" , "." );
121 sprintf ( html
, "<tr><th class= \" header3 \" colspan= \" 2 \" >%s: %s</th></tr> \n " , text
[ 90 ], name
);
124 fputs ( "<tr><td></td></tr><tr><td></td></tr> \n " , fp_ou
);
125 fputs ( "<tr><td></td></tr><tr><td></td></tr></table> \n " , fp_ou
);
127 fputs ( "<table cellpadding=0 cellspacing=2> \n " , fp_ou
);
129 fputs ( "<tr><td border=0></td> \n " , fp_ou
);
131 if ( strcmp ( datetimeby
, "bytes" ) == 0 )
132 strcpy ( html
, text
[ 93 ] );
134 strcpy ( html
, "H:M:S" );
136 for ( i
= 0 ; i
< hours
. len
; i
++ )
138 "<td class= \" header3 \" >%02dH<br>%s</td> \n " , hours
. list
[ i
], html
);
140 "<td class= \" header3 \" >%s<br>%s</td></tr> \n " , text
[ 107 ], html
);
142 while ( fgets ( buf
, sizeof ( buf
), fp_in
)!= NULL
) {
143 if ( getword ( data
, sizeof ( data
), buf
, ' ' )< 0 ) {
144 printf ( "SARG: Maybe you have a broken record or garbage in your %s file. \n " , wdirname
);
152 if ( getword ( hour
, sizeof ( hour
), buf
, ' ' )< 0 || getword ( elap
, sizeof ( elap
), buf
, ' ' )< 0 ) {
153 printf ( "SARG: Maybe you have a broken record or garbage in your %s file. \n " , wdirname
);
156 elap
[ strlen ( elap
)- 1 ]= '\0' ;
158 if ( strcmp ( data
, odata
) != 0 ) {
161 for ( i
= 0 ; i
< hours
. len
; i
++ )
162 sprintf ( c
[ hours
. list
[ i
] ], "%s" , fixtime ( v
[ hours
. list
[ i
] ]));
164 for ( i
= 8 ; i
<= 17 ; i
++ )
165 if ( strcmp ( c
[ hours
. list
[ i
] ], "00:00:00" ) == 0 )
166 bzero ( c
[ hours
. list
[ i
] ], 12 );
169 "<tr><td class= \" data \" >%s</td> \n " , odata
);
170 for ( i
= 0 ; i
< hours
. len
; i
++ )
172 "<td class= \" data \" >%s</td> \n " , c
[ hours
. list
[ i
] ] );
174 "<td class= \" data \" >%s</td> \n " , fixtime ( tt
) );
177 for ( i
= 0 ; i
< hours
. len
; i
++ ) v
[ hours
. list
[ i
] ]= 0 ;
184 v
[ ihour
]+= my_atoll ( elap
);
186 t
[ ihour
]+= my_atoll ( elap
);
191 for ( i
= 0 ; i
< hours
. len
; i
++ )
192 sprintf ( c
[ hours
. list
[ i
] ], "%s" , fixtime ( v
[ hours
. list
[ i
] ]));
194 for ( i
= 0 ; i
< hours
. len
; i
++ )
195 if ( strcmp ( c
[ hours
. list
[ i
] ], "00:00:00" ) == 0 ) bzero ( c
[ hours
. list
[ i
] ], 12 );
198 "<tr><td class= \" data \" >%s</td> \n " , data
);
199 for ( i
= 0 ; i
< hours
. len
; i
++ )
201 "<td class= \" data \" >%s</td> \n " , c
[ hours
. list
[ i
] ] );
203 "<td class= \" data \" >%s</td></tr> \n " , fixtime ( tt
) );
205 for ( i
= 0 ; i
< hours
. len
; i
++ )
206 sprintf ( c
[ hours
. list
[ i
] ], "%s" , fixtime ( t
[ hours
. list
[ i
] ]));
209 "<tr><td class= \" header \" >%s</td> \n " , text
[ 107 ] );
210 for ( i
= 0 ; i
< hours
. len
; i
++ )
212 "<td class= \" header2 \" >%s</td> \n " , c
[ hours
. list
[ i
] ] );
214 "<td class= \" header2 \" >%s</td></tr> \n " , fixtime ( ttt
) );
216 fputs ( "</body> \n </html> \n " , fp_ou
);