]> git.ipfire.org Git - thirdparty/sarg.git/blob - include/conf.h
875804c2f75057bc40895357fd57df28abc6a152
[thirdparty/sarg.git] / include / conf.h
1 #include "config.h"
2 #include "info.h"
3 #include "btree_cache.h"
4
5 #ifdef HAVE_WINSOCK2_H
6 #include <winsock2.h>
7 #endif
8 #ifdef HAVE_WINDOWS_H
9 #include <windows.h>
10 #endif
11 #ifdef HAVE_STDIO_H
12 #include <stdio.h>
13 #endif
14 #ifdef HAVE_STDLIB_H
15 #include <stdlib.h>
16 #endif
17 #ifdef HAVE_STRING_H
18 #include <string.h>
19 #endif
20 #ifdef HAVE_STRINGS_H
21 #include <strings.h>
22 #endif
23 #ifdef HAVE_SYS_TIME_H
24 #include <sys/time.h>
25 #endif
26 #ifdef HAVE_TIME_H
27 #include <time.h>
28 #endif
29 #ifdef HAVE_SYS_RESOURCE_H
30 #include <sys/resource.h>
31 #endif
32 #ifdef HAVE_UNISTD_H
33 #include <unistd.h>
34 #endif
35 #if defined(HAVE_SYS_DIRENT_H) && !defined(HAVE_DIRENT_H)
36 #include <sys/dirent.h>
37 #endif
38 #ifdef HAVE_DIRENT_H
39 #include <dirent.h>
40 #endif
41 #ifdef HAVE_SYS_SOCKET_H
42 #include <sys/socket.h>
43 #endif
44 #ifdef HAVE_NETDB_H
45 #include <netdb.h>
46 #endif
47 #ifdef HAVE_TYPES_H
48 #include <types.h>
49 #endif
50 #ifdef HAVE_NETINET_IN_H
51 #include <netinet/in.h>
52 #endif
53 #ifdef HAVE_ARPA_INET_H
54 #include <arpa/inet.h>
55 #endif
56 #ifdef HAVE_SYS_STAT_H
57 #include <sys/stat.h>
58 #endif
59 #ifdef HAVE_CTYPE_H
60 #include <ctype.h>
61 #endif
62 #ifdef HAVE_ERRNO_H
63 #include <errno.h>
64 #endif
65 #ifdef HAVE_SYS_WAIT_H
66 #include <sys/wait.h>
67 #endif
68 #ifdef HAVE_GD_H
69 #define HAVE_GD 1
70 #include <gd.h>
71 #endif
72 #ifdef HAVE_GDFONTL_H
73 #include <gdfontl.h>
74 #endif
75 #ifdef HAVE_GDFONTT_H
76 #include <gdfontt.h>
77 #endif
78 #ifdef HAVE_GDFONTS_H
79 #include <gdfonts.h>
80 #endif
81 #ifdef HAVE_GDFONTMB_H
82 #include <gdfontmb.h>
83 #endif
84 #ifdef HAVE_GDFONTG_H
85 #include <gdfontg.h>
86 #endif
87 #ifdef HAVE_STDARG_H
88 #include <stdarg.h>
89 #endif
90 #ifdef HAVE_INTTYPES_H
91 #include <inttypes.h>
92 #endif
93 #ifdef HAVE_LIMITS_H
94 #include <limits.h>
95 #endif
96 #ifdef HAVE_WINSOCK_H
97 #include <winsock.h>
98 #endif
99 #ifdef HAVE_MATH_H
100 #include <math.h>
101 #endif
102 #ifdef HAVE_LOCALE_H
103 #include <locale.h>
104 #endif
105 #ifdef HAVE_EXECINFO_H
106 #include <execinfo.h>
107 #endif
108 #ifdef HAVE_LIBGEN_H
109 #include <libgen.h>
110 #endif
111 #ifdef HAVE_STDBOOL_H
112 #include <stdbool.h>
113 #else
114 typedef int bool;
115 #define true 1
116 #define false 0
117 #endif
118 #ifdef HAVE_FCNTL_H
119 #include <fcntl.h>
120 #endif
121 #ifdef HAVE_FNMATCH_H
122 #include <fnmatch.h>
123 #endif
124
125 #if defined(HAVE_FOPEN64)
126 #define _FILE_OFFSET_BITS 64
127 #define MY_FOPEN fopen64
128 #else
129 #define MY_FOPEN fopen
130 #endif
131
132 #if !defined(HAVE_BZERO)
133 #define bzero(mem,size) memset(mem,0,size)
134 #endif
135
136 #if defined(IBERTY_LIB) && !defined(HAVE_MKSTEMP)
137 int mkstemps(char *template, int suffixlen);
138 #define mkstemp(template) mkstemps(template,0)
139 #endif
140
141 #ifdef __MINGW32__
142 #define pgettext(msgctxt,msgid) (msgid)
143 #define ngettext(singular,plural,number) (plural)
144 #else
145 #include "gettext.h"
146 #endif
147 #if defined(ENABLE_NLS) && defined(HAVE_LIBINTL_H)
148 #define _(String) gettext(String)
149 #ifdef gettext_noop
150 #define N_(String) gettext_noop(String)
151 #else
152 #define N_(String) (String)
153 #endif
154 #else /* No NLS */
155 #define _(String) (String)
156 #define N_(String) (String)
157 #endif //NLS
158
159 #if defined(__MINGW32__)
160 #define mkdir(p,m) _mkdir(p)
161
162 #ifndef WIFEXITED
163 #define WIFEXITED(S) 1
164 #endif
165
166 #ifndef WEXITSTATUS
167 #define WEXITSTATUS(S) (S)
168 #endif
169
170 #endif /*__MINGW32__*/
171
172 #ifndef __GNUC__
173 # define __attribute__(x)
174 #endif
175
176 #define MAXLEN 20000
177 #define MAX_URL_LEN 40000
178 #define MAX_TRUNCATED_URL 250
179 #define MAX_USER_LEN 256
180 #define MAX_USER_FNAME_LEN 128
181 #define MAX_IP_LEN 64
182 #define MAX_DATETIME_LEN 32
183 #define MAX_REDIRECTOR_LOGS 64
184 #define MAX_REDIRECTOR_FILELEN 1024
185 /*!
186 Arbitrary limit on the number of days that are accepted in the selected range of the log file.
187 Sarg will complain that there are too many days in the files if this limit is overrun.
188 */
189 #define MAX_DATETIME_DAYS 1000
190
191 #define REPORT_TYPE_USERS_SITES 0x0001UL
192 #define REPORT_TYPE_SITE_USER_TIME_DATE 0x0002UL
193 #define REPORT_TYPE_TOPUSERS 0x0004UL
194 #define REPORT_TYPE_TOPSITES 0x0008UL
195 #define REPORT_TYPE_SITES_USERS 0x0010UL
196 #define REPORT_TYPE_DATE_TIME 0x0020UL
197 #define REPORT_TYPE_DENIED 0x0040UL
198 #define REPORT_TYPE_AUTH_FAILURES 0x0080UL
199 #define REPORT_TYPE_DOWNLOADS 0x0100UL
200
201 #define DATA_FIELD_USER 0x0001UL
202 #define DATA_FIELD_DATE 0x0002UL
203 #define DATA_FIELD_TIME 0x0004UL
204 #define DATA_FIELD_URL 0x0008UL
205 #define DATA_FIELD_CONNECT 0x0010UL
206 #define DATA_FIELD_BYTES 0x0020UL
207 #define DATA_FIELD_IN_CACHE 0x0040UL
208 #define DATA_FIELD_OUT_CACHE 0x0080UL
209 #define DATA_FIELD_ELAPSED 0x0100UL
210
211 #define TOPUSERFIELDS_NUM 0x0001UL
212 #define TOPUSERFIELDS_DATE_TIME 0x0002UL
213 #define TOPUSERFIELDS_USERID 0x0004UL
214 #define TOPUSERFIELDS_CONNECT 0x0008UL
215 #define TOPUSERFIELDS_BYTES 0x0010UL
216 #define TOPUSERFIELDS_SETYB 0x0020UL
217 #define TOPUSERFIELDS_IN_CACHE_OUT 0x0040UL
218 #define TOPUSERFIELDS_USED_TIME 0x0080UL
219 #define TOPUSERFIELDS_MILISEC 0x0100UL
220 #define TOPUSERFIELDS_PTIME 0x0200UL
221 #define TOPUSERFIELDS_TOTAL 0x0400UL
222 #define TOPUSERFIELDS_AVERAGE 0x0800UL
223 #define TOPUSERFIELDS_USERIP 0x1000UL
224
225 #define USERREPORTFIELDS_CONNECT 0x0001UL
226 #define USERREPORTFIELDS_BYTES 0x0002UL
227 #define USERREPORTFIELDS_SETYB 0x0004UL
228 #define USERREPORTFIELDS_IN_CACHE_OUT 0x0008UL
229 #define USERREPORTFIELDS_USED_TIME 0x0010UL
230 #define USERREPORTFIELDS_MILISEC 0x0020UL
231 #define USERREPORTFIELDS_PTIME 0x0040UL
232 #define USERREPORTFIELDS_TOTAL 0x0080UL
233 #define USERREPORTFIELDS_AVERAGE 0x0100UL
234
235 #define INDEX_YES 0x0001UL
236 #define INDEX_NO 0x0002UL
237 #define INDEX_ONLY 0x0004UL
238
239 #define INDEX_TREE_DATE 0x0001UL
240 #define INDEX_TREE_FILE 0x0002UL
241
242 #define INDEXFIELDS_DIRSIZE 0x0001UL
243
244 #define NTLMUSERFORMAT_USER 0x0001UL
245 #define NTLMUSERFORMAT_DOMAINUSER 0x0002UL
246
247 #define RECORDWITHOUTUSER_IP 0x0001UL
248 #define RECORDWITHOUTUSER_IGNORE 0x0002UL
249 #define RECORDWITHOUTUSER_EVERYBODY 0x0004UL
250
251 #define DATAFILEURL_IP 0x0001UL
252 #define DATAFILEURL_NAME 0x0002UL
253
254 #define DISPLAY_BYTES 0x0001UL
255 #define DISPLAY_ABBREV 0x0002UL
256
257 #define DATETIME_ELAP 0x0001UL
258 #define DATETIME_BYTE 0x0002UL
259
260 #define REALTIME_UNAUTH_REC_SHOW 0x0001UL
261 #define REALTIME_UNAUTH_REC_IGNORE 0x0002UL
262
263 #define SORT_REVERSE 0x0001
264
265 #define TOPUSER_SORT_REVERSE SORT_REVERSE
266 #define TOPUSER_SORT_BYTES 0x0002UL
267 #define TOPUSER_SORT_USER 0x0004UL
268 #define TOPUSER_SORT_CONNECT 0x0008UL
269 #define TOPUSER_SORT_TIME 0x0010UL
270
271 #define TOPSITE_SORT_REVERSE SORT_REVERSE
272 #define TOPSITE_SORT_BYTES 0x0002UL
273 #define TOPSITE_SORT_CONNECT 0x0004UL
274 #define TOPSITE_SORT_TIME 0x0008UL
275 #define TOPSITE_SORT_USER 0x0010UL
276
277 #define USER_SORT_REVERSE SORT_REVERSE
278 #define USER_SORT_BYTES 0x0002UL
279 #define USER_SORT_SITE 0x0004UL
280 #define USER_SORT_CONNECT 0x0008UL
281 #define USER_SORT_TIME 0x0010UL
282
283 //! Value to exclude all the javascripts from the html page.
284 #define HTML_JS_NONE 0x0000
285 //! Bit to include sorttable.js in the html plage.
286 #define HTML_JS_SORTTABLE 0x0001
287
288 //! The character prefixed in front of the host names that are aliased.
289 #define ALIAS_PREFIX '*'
290
291 //! Maximum number of limit files that can be stored.
292 #define MAX_USER_LIMITS 16
293
294 //! Name of the html file containing the index of a report file.
295 #define INDEX_HTML_FILE "index.html"
296
297 struct periodstruct
298 {
299 //! The first date of the period.
300 struct tm start;
301 //! The last date of the period.
302 struct tm end;
303 //! The textual representation of the date.
304 char text[40];
305 //! The HTML representation of the date.
306 char html[40];
307 };
308
309 char outdir[MAXLEN];
310 char outdirname[MAXLEN];
311 struct periodstruct period;
312 char code[MAXLEN];
313 char code2[MAXLEN];
314 char tmp[MAXLEN];
315 char parse_out[MAXLEN];
316 char html[MAXLEN];
317 char ConfigFile[MAXLEN];
318 char df;
319 int LastLog;
320 bool RemoveTempFiles;
321 char ReplaceIndex[256];
322 unsigned long int Index;
323 bool OverwriteReport;
324 unsigned long int RecordsWithoutUser;
325 bool UseComma;
326 char MailUtility[PATH_MAX];
327 int TopSitesNum;
328 int TopUsersNum;
329 char ExcludeCodes[256];
330 unsigned long int TopsitesSort;
331 unsigned long int ReportType;
332 char UserTabFile[255];
333 char warea[MAXLEN];
334 char name[MAXLEN];
335 bool LongUrl;
336 bool Ip2Name;
337 int AccessLogFromCmdLine;
338 char Title[MAXLEN];
339 char BgColor[MAXLEN];
340 char BgImage[MAXLEN];
341 char TxColor[MAXLEN];
342 char TxBgColor[MAXLEN];
343 char TiColor[MAXLEN];
344 char LogoImage[MAXLEN];
345 char LogoText[MAXLEN];
346 char LogoTextColor[MAXLEN];
347 char Width[MAXLEN];
348 char Height[MAXLEN];
349 char FontFace[MAXLEN];
350 char HeaderColor[MAXLEN];
351 char HeaderBgColor[MAXLEN];
352 char FontSize[MAXLEN];
353 char PasswdFile[MAXLEN];
354 char TempDir[MAXLEN];
355 char OutputDir[MAXLEN];
356 char OutputEmail[MAXLEN];
357 unsigned long int TopuserSort;
358 unsigned long int UserSort;
359 char module[255];
360 char ExcludeHosts[255];
361 char ExcludeUsers[255];
362 char DateFormat;
363 bool UserIp;
364 char MaxElapsed[255];
365 unsigned long int datetimeby;
366 char CharSet[255];
367 char UserInvalidChar[255];
368 bool Graphs;
369 char GraphDaysBytesBarColor[255];
370 bool Privacy;
371 char PrivacyString[255];
372 char PrivacyStringColor[30];
373 char IncludeUsers[MAXLEN];
374 char ExcludeString[MAXLEN];
375 bool SuccessfulMsg;
376 unsigned long int TopUserFields;
377 unsigned long int UserReportFields;
378 char DataFile[MAXLEN];
379 char DataFileDelimiter[3];
380 unsigned long int DataFileFields;
381 unsigned long int DataFileUrl;
382 //! if \c true, show the number of lines read from the input log file during the reading of the file.
383 bool ShowReadStatistics;
384 /*!
385 If \c true, the read statistics also includes the percent of the number of lines read.
386
387 Beware that it requires two readings of the input log file. It is not possible if the
388 input log file is stdin or a pipe.
389 */
390 bool ShowReadPercent;
391 char IndexSortOrder[5];
392 char DansGuardianConf[MAXLEN];
393 bool DansguardianFilterOutDate;
394 char SquidGuardConf[MAXLEN];
395 char SquidGuarddbHome[255];
396 char RedirectorLogFormat[4096];
397 int NRedirectorLogs;
398 char RedirectorLogs[MAX_REDIRECTOR_LOGS][MAX_REDIRECTOR_FILELEN];
399 int RedirectorLogFromCmdLine;
400 bool RedirectorFilterOutDate;
401 bool ShowSargInfo;
402 bool BytesInSitesUsersReport;
403 bool ShowSargLogo;
404 char ParsedOutputLog[MAXLEN];
405 char ParsedOutputLogCompress[512];
406 unsigned long int DisplayedValues;
407 char HeaderFontSize[5];
408 char TitleFontSize[5];
409 char wwwDocumentRoot[MAXLEN];
410 char ExternalCSSFile[MAXLEN];
411 char BlockIt[255];
412 unsigned long int NtlmUserFormat;
413 //! How to display the index of the reports.
414 unsigned long int IndexTree;
415 //! The columns to show in the index of the reports.
416 unsigned long int IndexFields;
417 bool UserAuthentication;
418 char AuthUserTemplateFile[1024];
419 //! \c True to use anonymous file and directory names in the report.
420 bool AnonymousOutputFiles;
421 char val1[MAXLEN];
422 char val3[MAXLEN];
423 char val5[MAXLEN];
424 char val6[MAXLEN];
425 char val7[MAXLEN];
426 char val8[MAXLEN];
427 char val9[MAXLEN];
428 char val10[MAXLEN];
429 char val11[MAXLEN];
430 char mask[MAXLEN];
431 char site[MAXLEN];
432 char us[50];
433 char email[MAXLEN];
434 char test[1];
435 char user2[MAXLEN];
436 char wentp[512];
437 char addr[MAXLEN];
438 char Ulimit[6];
439 char RealtimeTypes[1024];
440 char cmd[255];
441 char ImageFile[255];
442 unsigned long int RealtimeUnauthRec;
443 char LDAPHost[255];
444 char LDAPBindDN[512];
445 char LDAPBindPW[255];
446 int LDAPPort;
447 int LDAPProtocolVersion;
448 char LDAPBaseSearch[255];
449 char LDAPFilterSearch[512];
450 char LDAPTargetAttr[64];
451 //! Character set to convert the LDAP returned string to.
452 char LDAPNativeCharset[20];
453 char GraphFont[MAXLEN];
454 //! The full path to sorttable.js if the table in the reports must be dynamicaly sorted.
455 char SortTableJs[256];
456 //! The name of the file containing the host names to replace by an alias in the report.
457 char HostAliasFile[512];
458 //! The name of the file containing the user names to replace by an alias in the report.
459 char UserAliasFile[512];
460 //! The number of consecutive errors allowed in an input log file before the process is interrupted.
461 int NumLogSuccessiveErrors;
462 /*!
463 The total number of errors allowed in an input log file before the process is interrupted. A negative
464 value means the process should never fails irrespective of the number of errors found in the input
465 log files.
466 */
467 int NumLogTotalErrors;
468 //! Count the number of lines read from the input log files.
469 unsigned long int lines_read;
470 //! Count the number of records kept for the processing.
471 unsigned long int records_kept;
472 //! Count the number of users.
473 unsigned long int nusers;
474
475 int idate;
476 int dansguardian_count;
477 int redirector_count;
478 int useragent_count;
479 int z1, z2, z3;
480 int ttopen;
481 int sarglog;
482 int isalog;
483 int dfrom;
484 int duntil;
485 bool dataonly;
486 bool indexonly;
487 bool iprel;
488 int langcode;
489 int debug;
490 int debugz;
491 int AuthfailReportLimit;
492 int DeniedReportLimit;
493 int DownloadReportLimit;
494 int SiteUsersReportLimit;
495 int DansGuardianReportLimit;
496 int SquidGuardReportLimit;
497 int UserReportLimit;
498 int realtime_refresh;
499 int realtime_access_log_lines;
500 int rc;
501 int ntopsites;
502 int nrepday;
503 bool squid24;
504 //! \c True to keep the temporary files for inspection.
505 bool KeepTempLog;
506
507 long long int nocost;
508 float cost;
509
510 typedef struct
511 { int list[ 24 ];
512 int len;
513 } numlist;