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