]>
git.ipfire.org Git - thirdparty/sarg.git/blob - grepday.c
007318703205dd214734c48397b40b6c634222ad
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"
39 //char *font1 = SYSCONFDIR"/fonts/FreeSans.ttf";
40 char *font1
= SYSCONFDIR
"/fonts/DejaVuSans.ttf";
43 #if defined(HAVE_GD) && defined(HAVE_ICONV_H) && defined(gdFTEX_Unicode)
45 #define SARGgdImageStringFT I18NgdImageStringFT
47 char * I18NgdImageStringFT (gdImage
* im
, int *brect
, int fg
, char *fontlist
,
48 double ptsize
, double angle
, int x
, int y
, char *string
)
51 char *sstring
, *str
, *sstr
, *retval
;
54 slen
= strlen(string
) + 1; // We must include string termination character
55 sslen
= slen
* 2; // We assume that UTF8 maximum 2 times large than local
56 sstring
= (char *)malloc(sslen
);
58 str
= (char *) string
;
59 sstr
= (char *) sstring
;
61 localtoutf
= iconv_open ("UTF-8", CharSet
);
62 iconv (localtoutf
, (ICONV_CONST
char **)&str
, &slen
, &sstr
, &sslen
);
63 iconv_close (localtoutf
);
65 retval
= gdImageStringFTEx (im
, brect
, fg
, fontlist
, ptsize
, angle
, x
, y
, sstring
, gdFTEX_Unicode
);
71 #define SARGgdImageStringFT gdImageStringFT
74 void *bar(long long int *n
)
80 long long int lim
, num
;
83 static char limits
[400][12]={"0","500","1000","2000","3000","4000",
84 "5000","6000","7000","8000","9000","10000",
85 "20000","30000","40000","50000","70000","90000",
86 "110000","130000","150000","170000","190000","210000",
87 "230000","250000","280000","310000","340000","370000",
88 "400000","430000","450000","460000","490000","500000",
89 "550000","600000","650000","700000","750000","800000",
90 "850000","900000","950000","1000000","1100000","1200000",
91 "1300000","1400000","1500000","1600000","1700000","1800000",
92 "1900000","2000000","2100000","2200000","2300000","2400000",
93 "2500000","2600000","2700000","2800000","2900000","3000000",
94 "3100000","3200000","3300000","3400000","3500000","3600000",
95 "3700000","3800000","3900000","4000000","4100000","4200000",
96 "4300000","4400000","4500000","4600000","4700000","4800000",
97 "4900000","5000000","5100000","5200000","5300000","5400000",
98 "5500000","5600000","5700000","5800000","5900000","6000000",
99 "6100000","6200000","6300000","6400000","6500000","6600000",
100 "6700000","6800000","6900000","7000000","7100000","7200000",
101 "7300000","7400000","7500000","7600000","7700000","7800000",
102 "7900000","8000000","8100000","8200000","8300000","8400000",
103 "8500000","8600000","8700000","8800000","8900000","9000000",
104 "9100000","9200000","9300000","9400000","9500000","9600000",
105 "9700000","9800000","9900000","10000000","10500000","11000000",
106 "11500000","12000000","12500000","13000000","13500000","14000000",
107 "14500000","15000000","15500000","16000000","16500000","17000000",
108 "17500000","18000000","18500000","19000000","19500000","20000000",
109 "21000000","22000000","23000000","24000000","25000000","26000000",
110 "27000000","28000000","29000000","30000000","31000000","32000000",
111 "33000000","34000000","35000000","36000000","37000000","38000000",
112 "39000000","40000000","41000000","42000000","43000000","44000000",
113 "45000000","46000000","47000000","48000000","49000000","50000000",
114 "51000000","52000000","53000000","54000000","55000000","56000000",
115 "57000000","58000000","59000000","60000000","61000000","62000000",
116 "63000000","64000000","65000000","66000000","67000000","68000000",
117 "69000000","70000000","71000000","72000000","73000000","74000000",
118 "75000000","76000000","77000000","78000000","79000000","80000000",
119 "81000000","82000000","83000000","84000000","85000000","86000000",
120 "87000000","88000000","89000000","90000000","91000000","92000000",
121 "93000000","94000000","95000000","96000000","97000000","98000000",
122 "99000000","100000000","110000000","120000000","130000000","140000000",
123 "150000000","160000000","170000000","180000000","190000000","200000000",
124 "210000000","220000000","230000000","240000000","250000000","260000000",
125 "270000000","280000000","290000000","300000000","310000000","320000000",
126 "330000000","340000000","350000000","360000000","370000000","380000000",
127 "390000000","400000000","410000000","420000000","430000000","440000000",
128 "450000000","460000000","470000000","480000000","490000000","500000000",
129 "510000000","520000000","530000000","540000000","550000000","560000000",
130 "570000000","580000000","590000000","600000000","610000000","620000000",
131 "630000000","640000000","650000000","660000000","670000000","680000000",
132 "690000000","700000000","710000000","720000000","730000000","740000000",
133 "750000000","760000000","770000000","780000000","790000000","800000000",
134 "810000000","820000000","830000000","840000000","850000000","860000000",
135 "870000000","880000000","890000000","900000000","910000000","920000000",
136 "930000000","940000000","950000000","960000000","970000000","980000000",
137 "990000000","1000000000","1100000000","1200000000","1300000000","1400000000",
138 "1500000000","1600000000","1700000000","1800000000","1900000000","2000000000",
139 "2100000000","2200000000","2300000000","2400000000","2500000000","2600000000",
140 "2700000000","2800000000","2900000000","3000000000","3100000000","3200000000",
141 "3300000000","3400000000","3500000000","3600000000","3700000000","3800000000",
142 "3900000000","4000000000","4100000000","4200000000","4300000000","4400000000",
143 "4500000000","4600000000","4700000000","4800000000","4900000000","5000000000"};
145 if(access(font1
, R_OK
) != 0) {
146 fprintf(stderr
, "SARG: (grepday) Fontname: %s not found.\n",font1
);
150 if(strcmp(GraphDaysBytesBarColor
,"orange") == 0) {
151 color1
= gdImageColorAllocate(im
, 255, 233, 142);
152 color2
= gdImageColorAllocate(im
, 220, 163, 72);
153 color3
= gdImageColorAllocate(im
, 255, 198, 107);
155 if(strcmp(GraphDaysBytesBarColor
,"blue") == 0) {
156 color1
= gdImageColorAllocate(im
, 62, 80, 167);
157 color2
= gdImageColorAllocate(im
, 40, 51, 101);
158 color3
= gdImageColorAllocate(im
, 57, 73, 150);
160 if(strcmp(GraphDaysBytesBarColor
,"green") == 0) {
161 color1
= gdImageColorAllocate(im
,120,166,129);
162 color2
= gdImageColorAllocate(im
,84,113,82);
163 color3
= gdImageColorAllocate(im
,158,223,167);
165 if(strcmp(GraphDaysBytesBarColor
,"yellow") == 0) {
166 color1
= gdImageColorAllocate(im
,185,185,10);
167 color2
= gdImageColorAllocate(im
,111,111,10);
168 color3
= gdImageColorAllocate(im
,166,166,10);
170 if(strcmp(GraphDaysBytesBarColor
,"brown") == 0) {
171 color1
= gdImageColorAllocate(im
,97,45,27);
172 color2
= gdImageColorAllocate(im
,60,30,20);
173 color3
= gdImageColorAllocate(im
,88,41,26);
175 if(strcmp(GraphDaysBytesBarColor
,"red") == 0){
176 color1
= gdImageColorAllocate(im
,185,10,10);
177 color2
= gdImageColorAllocate(im
,111,10,10);
178 color3
= gdImageColorAllocate(im
,166,10,10);
181 blue
= gdImageColorAllocate(im
, 0, 0, 255);
182 white
= gdImageColorAllocate(im
, 255, 255, 255);
183 dimgray
= gdImageColorAllocate(im
, 105, 105, 105);
184 goldenrod
= gdImageColorAllocate(im
, 234, 234, 174);
185 goldenrod2
= gdImageColorAllocate(im
, 207, 181, 59);
188 for(x
=0; x
<=366; x
++) {
189 lim
= my_atoll(limits
[x
]);
197 gdImageFilledRectangle(im
, x1
, val
, x1
+11, 425, color3
);
207 gdImageFilledPolygon(im
, points
, 4, color1
);
209 gdImageLine(im
, x1
+8, val
-2, x1
+8, val
-10, dimgray
);
210 gdImageFilledRectangle(im
, x1
-2, val
-20, x1
+18, val
-10, goldenrod
);
211 gdImageRectangle(im
, x1
-2, val
-20, x1
+18, val
-10, goldenrod2
);
213 snprintf(v
,6,"%s",fixnum(num
,0));
215 SARGgdImageStringFT(im
,&brect
[0],black
,font1
,6,0.0,x1
-1,val
-12,v
);
225 gdImageFilledPolygon(im
, points
, 4, color2
);
231 void greport_day(char *user
, int *iprel
, int *ipuser
)
233 FILE *fp_in
, *pngout
;
236 char wdirname
[MAXLEN
];
250 if(strcmp(Graphs
,"yes") != 0) {
255 im
= gdImageCreate(720, 480);
257 lavender
= gdImageColorAllocate(im
, 230, 230, 250);
258 white
= gdImageColorAllocate(im
, 255, 255, 255);
259 gray
= gdImageColorAllocate(im
, 192, 192, 192);
260 silver
= gdImageColorAllocate(im
, 211, 211, 211);
261 black
= gdImageColorAllocate(im
, 0, 0, 0);
262 blue
= gdImageColorAllocate(im
, 35, 35, 227);
263 dimgray
= gdImageColorAllocate(im
, 105, 105, 105);
264 darkblue
= gdImageColorAllocate(im
, 0, 0, 139);
266 gdImageRectangle(im
, 0, 0, 719, 479, dimgray
);
267 gdImageFilledRectangle(im
, 60, 60, 700, 420, silver
);
277 gdImageFilledPolygon(im
, points
, 4, gray
);
287 gdImageFilledPolygon(im
, points
, 4, gray
);
289 gdImageLine(im
, 50, 65, 50, 430, black
);
290 gdImageLine(im
, 45, 425, 690, 425, black
);
291 gdImageLine(im
, 50, 425, 60, 420, black
);
292 gdImageLine(im
, 60, 420, 60, 60, black
);
293 gdImageLine(im
, 700, 60, 700, 420, black
);
294 gdImageLine(im
, 690, 425, 700, 420, black
);
296 for(x
=415; x
>=65; x
=x
-10) {
297 gdImageLine(im
, 50, x
, 60, x
-5, dimgray
);
298 gdImageLine(im
, 47, x
, 50, x
, dimgray
);
301 for(x
=60; x
<=420; x
=x
+10)
302 gdImageLine(im
, 60, x
, 700, x
, dimgray
);
304 gdImageLine(im
, 60, 420, 700, 420, black
);
306 for(x
=70; x
<=680; x
=x
+20)
307 gdImageLine(im
, x
, 425, x
, 428, dimgray
);
310 for(x
=1; x
<=31; x
++) {
312 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,y
,437,s
);
317 local
= localtime(&t
);
318 if(strcmp(DateFormat
,"u") == 0)
319 strftime(ftime
, 127, "%b/%d/%Y %H:%M", local
);
320 if(strcmp(DateFormat
,"e") == 0)
321 strftime(ftime
, 127, "%d/%b/%Y-%H:%M", local
);
323 if(dotinuser
&& strstr(name
,"_")) {
324 str2
=(char *)subs(name
,"_",".");
328 SARGgdImageStringFT(im
,&brect
[0],darkblue
,font1
,7,0.0,620,470,ftime
);
329 if(strcmp(ShowSargInfo
,"yes") == 0) SARGgdImageStringFT(im
,&brect
[0],darkblue
,font1
,10,0.0,257,15,"SARG, ");
330 SARGgdImageStringFT(im
,&brect
[0],darkblue
,font1
,10,0.0,300,15,Title
);
331 sprintf(warea
,"%s: %s",text
[89],period
);
332 SARGgdImageStringFT(im
,&brect
[0],darkblue
,font1
,9,0.0,300,27,warea
);
333 sprintf(warea
,"%s: %s",text
[90],name
);
334 SARGgdImageStringFT(im
,&brect
[0],darkblue
,font1
,9,0.0,300,38,warea
);
335 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,418," 50K");
336 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,408,"250K");
337 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,398,"500K");
338 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,388," 1M");
339 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,378," 2M");
340 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,368," 3M");
341 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,358," 4M");
342 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,348," 5M");
343 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,338," 6M");
344 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,328," 7M");
345 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,318," 8M");
346 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,308," 9M");
347 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,298," 10M");
348 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,288," 15M");
349 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,278," 20M");
350 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,268," 30M");
351 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,258," 40M");
352 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,248," 50M");
353 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,238," 60M");
354 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,228," 70M");
355 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,218," 80M");
356 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,208," 90M");
357 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,198,"100M");
358 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,188,"200M");
359 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,178,"300M");
360 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,168,"400M");
361 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,158,"500M");
362 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,148,"600M");
363 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,138,"700M");
364 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,128,"800M");
365 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,118,"900M");
366 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23,108," 1G");
367 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23, 98," 2G");
368 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23, 88," 3G");
369 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23, 78," 4G");
370 SARGgdImageStringFT(im
,&brect
[0],dimgray
,font1
,7,0.0,23, 68," 5G");
371 SARGgdImageStringFT(im
,&brect
[0],black
,font1
,10,3.14/2,20,248,text
[93]);
372 SARGgdImageStringFT(im
,&brect
[0],black
,font1
,10,0.0,330,460,text
[127]);
374 sprintf(graph
,"%s/%s/graph_day.png",dirname
,user
);
375 sprintf(wdirname
,"%s/%s.day",tmp
,user
);
376 sprintf(tmp5
,"%s/%s.graph",tmp
,user
);
378 if(access(wdirname
, R_OK
) != 0)
381 sprintf(csort
,"sort -t'/' -k 2,2 -o '%s' '%s'",tmp5
,wdirname
);
382 if(strcmp(DateFormat
,"e") == 0)
383 sprintf(csort
,"sort -t'/' -k 1,1 -o '%s' '%s'",tmp5
,wdirname
);
387 if((fp_in
=fopen(tmp5
,"r"))==NULL
) {
388 fprintf(stderr
, "SARG: (grepday) %s: %s\n",text
[8],tmp5
);
392 if((pngout
=fopen(graph
,"wb"))==NULL
) {
393 fprintf(stderr
, "SARG: (grepday) %s: %s\n",text
[8],graph
);
398 if(strstr(wuser
,"_") != 0)
401 if(strcmp(Ip2Name
,"yes") == 0)
402 if((str
=(char *) strstr(name
, ".")) != (char *) NULL
) {
403 if((str
=(char *) strstr(str
+1, ".")) != (char *) NULL
)
407 if(UserTabFile
[0] != '\0') {
408 sprintf(warea
,":%s:",wuser
);
409 if((str
=(char *) strstr(userfile
,warea
)) != (char *) NULL
) {
411 str2
=(char *) strstr(str
+1,":");
414 while(str2
[z1
] != ':') {
418 } else strcpy(name
,wuser
);
419 } else strcpy(name
,user
);
421 while(fgets(buf
,sizeof(buf
),fp_in
)!=NULL
) {
422 if (getword(data
,sizeof(data
),buf
,' ')<0 || getword(day
,sizeof(day
),data
,'/')<0) {
423 printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",tmp5
);
426 if(strcmp(DateFormat
,"u") == 0) {
427 if (getword(day
,sizeof(day
),data
,'/')<0) {
428 printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",tmp5
);
436 if (getword(bytes
,sizeof(bytes
),buf
,' ')<0 || getword(bytes
,sizeof(bytes
),buf
,' ')<0) {
437 printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",tmp5
);
440 bytes
[strlen(bytes
)-1]='\0';
442 if(strcmp(oday
,day
) != 0) {
444 x1
= 44 +(atoi(oday
) * 20);
449 tot
=tot
+my_atoll(bytes
);
453 x1
= 44 +(atoi(day
) * 20);
457 gdImagePng(im
, pngout
);