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