]> git.ipfire.org Git - thirdparty/sarg.git/blame_incremental - include/conf.h
Add support to decompress xz files
[thirdparty/sarg.git] / include / conf.h
... / ...
CommitLineData
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
114typedef 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)
137int 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/*!
186Arbitrary limit on the number of days that are accepted in the selected range of the log file.
187Sarg 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#define REPORT_TYPE_USERAGENT 0x0200UL
201
202#define DATA_FIELD_USER 0x0001UL
203#define DATA_FIELD_DATE 0x0002UL
204#define DATA_FIELD_TIME 0x0004UL
205#define DATA_FIELD_URL 0x0008UL
206#define DATA_FIELD_CONNECT 0x0010UL
207#define DATA_FIELD_BYTES 0x0020UL
208#define DATA_FIELD_IN_CACHE 0x0040UL
209#define DATA_FIELD_OUT_CACHE 0x0080UL
210#define DATA_FIELD_ELAPSED 0x0100UL
211
212#define TOPUSERFIELDS_NUM 0x0001UL
213#define TOPUSERFIELDS_DATE_TIME 0x0002UL
214#define TOPUSERFIELDS_USERID 0x0004UL
215#define TOPUSERFIELDS_CONNECT 0x0008UL
216#define TOPUSERFIELDS_BYTES 0x0010UL
217#define TOPUSERFIELDS_SETYB 0x0020UL
218#define TOPUSERFIELDS_IN_CACHE_OUT 0x0040UL
219#define TOPUSERFIELDS_USED_TIME 0x0080UL
220#define TOPUSERFIELDS_MILISEC 0x0100UL
221#define TOPUSERFIELDS_PTIME 0x0200UL
222#define TOPUSERFIELDS_TOTAL 0x0400UL
223#define TOPUSERFIELDS_AVERAGE 0x0800UL
224#define TOPUSERFIELDS_USERIP 0x1000UL
225
226#define USERREPORTFIELDS_CONNECT 0x0001UL
227#define USERREPORTFIELDS_BYTES 0x0002UL
228#define USERREPORTFIELDS_SETYB 0x0004UL
229#define USERREPORTFIELDS_IN_CACHE_OUT 0x0008UL
230#define USERREPORTFIELDS_USED_TIME 0x0010UL
231#define USERREPORTFIELDS_MILISEC 0x0020UL
232#define USERREPORTFIELDS_PTIME 0x0040UL
233#define USERREPORTFIELDS_TOTAL 0x0080UL
234#define USERREPORTFIELDS_AVERAGE 0x0100UL
235
236#define INDEX_YES 0x0001UL
237#define INDEX_NO 0x0002UL
238#define INDEX_ONLY 0x0004UL
239
240#define INDEX_TREE_DATE 0x0001UL
241#define INDEX_TREE_FILE 0x0002UL
242
243#define INDEXFIELDS_DIRSIZE 0x0001UL
244
245#define NTLMUSERFORMAT_USER 0x0001UL
246#define NTLMUSERFORMAT_DOMAINUSER 0x0002UL
247
248#define RECORDWITHOUTUSER_IP 0x0001UL
249#define RECORDWITHOUTUSER_IGNORE 0x0002UL
250#define RECORDWITHOUTUSER_EVERYBODY 0x0004UL
251
252#define DATAFILEURL_IP 0x0001UL
253#define DATAFILEURL_NAME 0x0002UL
254
255#define DISPLAY_BYTES 0x0001UL
256#define DISPLAY_ABBREV 0x0002UL
257
258#define DATETIME_ELAP 0x0001UL
259#define DATETIME_BYTE 0x0002UL
260
261#define REALTIME_UNAUTH_REC_SHOW 0x0001UL
262#define REALTIME_UNAUTH_REC_IGNORE 0x0002UL
263
264#define SORT_REVERSE 0x0001
265
266#define TOPUSER_SORT_REVERSE SORT_REVERSE
267#define TOPUSER_SORT_BYTES 0x0002UL
268#define TOPUSER_SORT_USER 0x0004UL
269#define TOPUSER_SORT_CONNECT 0x0008UL
270#define TOPUSER_SORT_TIME 0x0010UL
271
272#define TOPSITE_SORT_REVERSE SORT_REVERSE
273#define TOPSITE_SORT_BYTES 0x0002UL
274#define TOPSITE_SORT_CONNECT 0x0004UL
275#define TOPSITE_SORT_TIME 0x0008UL
276#define TOPSITE_SORT_USER 0x0010UL
277
278#define USER_SORT_REVERSE SORT_REVERSE
279#define USER_SORT_BYTES 0x0002UL
280#define USER_SORT_SITE 0x0004UL
281#define USER_SORT_CONNECT 0x0008UL
282#define USER_SORT_TIME 0x0010UL
283
284//! Value to exclude all the javascripts from the html page.
285#define HTML_JS_NONE 0x0000
286//! Bit to include sorttable.js in the html plage.
287#define HTML_JS_SORTTABLE 0x0001
288
289//! The character prefixed in front of the host names that are aliased.
290#define ALIAS_PREFIX '*'
291
292//! Maximum number of limit files that can be stored.
293#define MAX_USER_LIMITS 16
294
295//! Name of the html file containing the index of a report file.
296#define INDEX_HTML_FILE "index.html"
297
298struct periodstruct
299{
300 //! The first date of the period.
301 struct tm start;
302 //! The last date of the period.
303 struct tm end;
304 //! The textual representation of the date.
305 char text[40];
306 //! The HTML representation of the date.
307 char html[40];
308};
309
310char outdir[MAXLEN];
311char outdirname[MAXLEN];
312struct periodstruct period;
313char code[MAXLEN];
314char code2[MAXLEN];
315char tmp[MAXLEN];
316char parse_out[MAXLEN];
317char html[MAXLEN];
318char ConfigFile[MAXLEN];
319char df;
320int LastLog;
321bool RemoveTempFiles;
322char ReplaceIndex[256];
323unsigned long int Index;
324bool OverwriteReport;
325unsigned long int RecordsWithoutUser;
326bool UseComma;
327char MailUtility[PATH_MAX];
328int TopSitesNum;
329int TopUsersNum;
330char ExcludeCodes[256];
331unsigned long int TopsitesSort;
332unsigned long int ReportType;
333char UserTabFile[255];
334char warea[MAXLEN];
335char name[MAXLEN];
336bool LongUrl;
337bool Ip2Name;
338int AccessLogFromCmdLine;
339char Title[MAXLEN];
340char BgColor[MAXLEN];
341char BgImage[MAXLEN];
342char TxColor[MAXLEN];
343char TxBgColor[MAXLEN];
344char TiColor[MAXLEN];
345char LogoImage[MAXLEN];
346char LogoText[MAXLEN];
347char LogoTextColor[MAXLEN];
348char Width[MAXLEN];
349char Height[MAXLEN];
350char FontFace[MAXLEN];
351char HeaderColor[MAXLEN];
352char HeaderBgColor[MAXLEN];
353char FontSize[MAXLEN];
354char PasswdFile[MAXLEN];
355char TempDir[MAXLEN];
356char OutputDir[MAXLEN];
357char OutputEmail[MAXLEN];
358unsigned long int TopuserSort;
359unsigned long int UserSort;
360char module[255];
361char ExcludeHosts[255];
362char ExcludeUsers[255];
363char DateFormat;
364bool UserIp;
365char MaxElapsed[255];
366unsigned long int datetimeby;
367char CharSet[255];
368char UserInvalidChar[255];
369bool Graphs;
370char GraphDaysBytesBarColor[255];
371bool Privacy;
372char PrivacyString[255];
373char PrivacyStringColor[30];
374char IncludeUsers[MAXLEN];
375char ExcludeString[MAXLEN];
376bool SuccessfulMsg;
377unsigned long int TopUserFields;
378unsigned long int UserReportFields;
379char DataFile[MAXLEN];
380char DataFileDelimiter[3];
381unsigned long int DataFileFields;
382unsigned long int DataFileUrl;
383//! if \c true, show the number of lines read from the input log file during the reading of the file.
384bool ShowReadStatistics;
385/*!
386If \c true, the read statistics also includes the percent of the number of lines read.
387
388Beware that it requires two readings of the input log file. It is not possible if the
389input log file is stdin or a pipe.
390*/
391bool ShowReadPercent;
392char IndexSortOrder[5];
393char DansGuardianConf[MAXLEN];
394bool DansguardianFilterOutDate;
395char SquidGuardConf[MAXLEN];
396char SquidGuarddbHome[255];
397char RedirectorLogFormat[4096];
398int NRedirectorLogs;
399char RedirectorLogs[MAX_REDIRECTOR_LOGS][MAX_REDIRECTOR_FILELEN];
400int RedirectorLogFromCmdLine;
401bool RedirectorFilterOutDate;
402bool ShowSargInfo;
403bool BytesInSitesUsersReport;
404bool ShowSargLogo;
405char ParsedOutputLog[MAXLEN];
406char ParsedOutputLogCompress[512];
407unsigned long int DisplayedValues;
408char HeaderFontSize[5];
409char TitleFontSize[5];
410char wwwDocumentRoot[MAXLEN];
411char ExternalCSSFile[MAXLEN];
412char BlockIt[255];
413unsigned long int NtlmUserFormat;
414//! How to display the index of the reports.
415unsigned long int IndexTree;
416//! The columns to show in the index of the reports.
417unsigned long int IndexFields;
418bool UserAuthentication;
419char AuthUserTemplateFile[1024];
420//! \c True to use anonymous file and directory names in the report.
421bool AnonymousOutputFiles;
422char val1[MAXLEN];
423char val3[MAXLEN];
424char val5[MAXLEN];
425char val6[MAXLEN];
426char val7[MAXLEN];
427char val8[MAXLEN];
428char val9[MAXLEN];
429char val10[MAXLEN];
430char val11[MAXLEN];
431char mask[MAXLEN];
432char site[MAXLEN];
433char us[50];
434char email[MAXLEN];
435char test[1];
436char user2[MAXLEN];
437char wentp[512];
438char addr[MAXLEN];
439char Ulimit[6];
440char RealtimeTypes[1024];
441char cmd[255];
442char ImageFile[255];
443unsigned long int RealtimeUnauthRec;
444char LDAPHost[255];
445char LDAPBindDN[512];
446char LDAPBindPW[255];
447int LDAPPort;
448int LDAPProtocolVersion;
449char LDAPBaseSearch[255];
450char LDAPFilterSearch[512];
451char LDAPTargetAttr[64];
452//! Character set to convert the LDAP returned string to.
453char LDAPNativeCharset[20];
454char GraphFont[MAXLEN];
455//! The full path to sorttable.js if the table in the reports must be dynamicaly sorted.
456char SortTableJs[256];
457//! The name of the file containing the host names to replace by an alias in the report.
458char HostAliasFile[512];
459//! The name of the file containing the user names to replace by an alias in the report.
460char UserAliasFile[512];
461//! The number of consecutive errors allowed in an input log file before the process is interrupted.
462int NumLogSuccessiveErrors;
463/*!
464The total number of errors allowed in an input log file before the process is interrupted. A negative
465value means the process should never fails irrespective of the number of errors found in the input
466log files.
467*/
468int NumLogTotalErrors;
469//! Count the number of lines read from the input log files.
470unsigned long int lines_read;
471//! Count the number of records kept for the processing.
472unsigned long int records_kept;
473//! Count the number of users.
474unsigned long int nusers;
475
476int idate;
477int dansguardian_count;
478int redirector_count;
479int useragent_count;
480int z1, z2, z3;
481int ttopen;
482int sarglog;
483int isalog;
484int dfrom;
485int duntil;
486bool dataonly;
487bool indexonly;
488bool iprel;
489int langcode;
490int debug;
491int debugz;
492int AuthfailReportLimit;
493int DeniedReportLimit;
494int DownloadReportLimit;
495int SiteUsersReportLimit;
496int DansGuardianReportLimit;
497int SquidGuardReportLimit;
498int UserReportLimit;
499int realtime_refresh;
500int realtime_access_log_lines;
501int rc;
502int ntopsites;
503int nrepday;
504bool squid24;
505//! \c True to keep the temporary files for inspection.
506bool KeepTempLog;
507
508long long int nocost;
509float cost;
510
511typedef struct
512{ int list[ 24 ];
513 int len;
514} numlist;