]> git.ipfire.org Git - thirdparty/sarg.git/blob - include/conf.h
Add dynamic sorting of some tables
[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 NTLMUSERFORMAT_USER 0x0001UL
229 #define NTLMUSERFORMAT_DOMAINUSER 0x0002UL
230
231 #define RECORDWITHOUTUSER_IP 0x0001UL
232 #define RECORDWITHOUTUSER_IGNORE 0x0002UL
233 #define RECORDWITHOUTUSER_EVERYBODY 0x0004UL
234
235 #define DATAFILEURL_IP 0x0001UL
236 #define DATAFILEURL_NAME 0x0002UL
237
238 #define DISPLAY_BYTES 0x0001UL
239 #define DISPLAY_ABBREV 0x0002UL
240
241 #define DATETIME_ELAP 0x0001UL
242 #define DATETIME_BYTE 0x0002UL
243
244 #define REALTIME_UNAUTH_REC_SHOW 0x0001UL
245 #define REALTIME_UNAUTH_REC_IGNORE 0x0002UL
246
247 #define SORT_REVERSE 0x0001
248
249 #define TOPUSER_SORT_REVERSE SORT_REVERSE
250 #define TOPUSER_SORT_BYTES 0x0002UL
251 #define TOPUSER_SORT_USER 0x0004UL
252 #define TOPUSER_SORT_CONNECT 0x0008UL
253 #define TOPUSER_SORT_TIME 0x0010UL
254
255 #define TOPSITE_SORT_REVERSE SORT_REVERSE
256 #define TOPSITE_SORT_BYTES 0x0002UL
257 #define TOPSITE_SORT_CONNECT 0x0004UL
258
259 #define USER_SORT_REVERSE SORT_REVERSE
260 #define USER_SORT_BYTES 0x0002UL
261 #define USER_SORT_SITE 0x0004UL
262 #define USER_SORT_CONNECT 0x0008UL
263 #define USER_SORT_TIME 0x0010UL
264
265 struct periodstruct
266 {
267 //! The first date of the period.
268 struct tm start;
269 //! The last date of the period.
270 struct tm end;
271 //! The textual representation of the date.
272 char text[40];
273 //! The HTML representation of the date.
274 char html[40];
275 };
276
277 char outdir[MAXLEN];
278 char outdirname[MAXLEN];
279 struct periodstruct period;
280 char code[MAXLEN];
281 char code2[MAXLEN];
282 char tmp[MAXLEN];
283 char parse_out[MAXLEN];
284 char arqtt[MAXLEN];
285 char html[MAXLEN];
286 char ConfigFile[MAXLEN];
287 char df[20];
288 int LastLog;
289 bool RemoveTempFiles;
290 char ReplaceIndex[256];
291 unsigned long int Index;
292 bool OverwriteReport;
293 unsigned long int RecordsWithoutUser;
294 bool UseComma;
295 char MailUtility[PATH_MAX];
296 int TopSitesNum;
297 int TopUsersNum;
298 char ExcludeCodes[256];
299 unsigned long int TopsitesSort;
300 unsigned long int ReportType;
301 char UserTabFile[255];
302 char warea[MAXLEN];
303 char name[MAXLEN];
304 bool LongUrl;
305 bool Ip2Name;
306 int NAccessLog;
307 char AccessLog[MAXLOGS][MAX_LOG_FILELEN];
308 int AccessLogFromCmdLine;
309 char Title[MAXLEN];
310 char BgColor[MAXLEN];
311 char BgImage[MAXLEN];
312 char TxColor[MAXLEN];
313 char TxBgColor[MAXLEN];
314 char TiColor[MAXLEN];
315 char LogoImage[MAXLEN];
316 char LogoText[MAXLEN];
317 char LogoTextColor[MAXLEN];
318 char Width[MAXLEN];
319 char Height[MAXLEN];
320 char FontFace[MAXLEN];
321 char HeaderColor[MAXLEN];
322 char HeaderBgColor[MAXLEN];
323 char FontSize[MAXLEN];
324 char PasswdFile[MAXLEN];
325 char TempDir[MAXLEN];
326 char OutputDir[MAXLEN];
327 char OutputEmail[MAXLEN];
328 unsigned long int TopuserSort;
329 unsigned long int UserSort;
330 char UserAgentLog[255];
331 char module[255];
332 char ExcludeHosts[255];
333 char ExcludeUsers[255];
334 char DateFormat[2];
335 char PerUserLimitFile[255];
336 int PerUserLimit;
337 bool UserIp;
338 char MaxElapsed[255];
339 unsigned long int datetimeby;
340 char CharSet[255];
341 char UserInvalidChar[255];
342 bool Graphs;
343 char GraphDaysBytesBarColor[255];
344 bool Privacy;
345 char PrivacyString[255];
346 char PrivacyStringColor[30];
347 char IncludeUsers[MAXLEN];
348 char ExcludeString[MAXLEN];
349 bool SuccessfulMsg;
350 unsigned long int TopUserFields;
351 unsigned long int UserReportFields;
352 char DataFile[MAXLEN];
353 char DataFileDelimiter[3];
354 unsigned long int DataFileFields;
355 unsigned long int DataFileUrl;
356 bool ShowReadStatistics;
357 char IndexSortOrder[5];
358 char DansGuardianConf[MAXLEN];
359 bool DansguardianFilterOutDate;
360 char SquidGuardConf[MAXLEN];
361 char SquidGuarddbHome[255];
362 char RedirectorLogFormat[4096];
363 int NRedirectorLogs;
364 char RedirectorLogs[MAX_REDIRECTOR_LOGS][MAX_REDIRECTOR_FILELEN];
365 int RedirectorLogFromCmdLine;
366 bool RedirectorFilterOutDate;
367 bool ShowSargInfo;
368 bool BytesInSitesUsersReport;
369 bool ShowSargLogo;
370 char ParsedOutputLog[MAXLEN];
371 char ParsedOutputLogCompress[512];
372 unsigned long int DisplayedValues;
373 char HeaderFontSize[5];
374 char TitleFontSize[5];
375 char wwwDocumentRoot[MAXLEN];
376 char ExternalCSSFile[MAXLEN];
377 char BlockIt[255];
378 unsigned long int NtlmUserFormat;
379 unsigned long int IndexTree;
380 bool UserAuthentication;
381 char AuthUserTemplateFile[1024];
382 char val1[MAXLEN];
383 char val2[MAXLEN];
384 char val3[MAXLEN];
385 char val4[MAXLEN];
386 char val5[MAXLEN];
387 char val6[MAXLEN];
388 char val7[MAXLEN];
389 char val8[MAXLEN];
390 char val9[MAXLEN];
391 char val10[MAXLEN];
392 char val11[MAXLEN];
393 char mask[MAXLEN];
394 char site[MAXLEN];
395 char us[50];
396 char email[MAXLEN];
397 char test[1];
398 char user2[MAXLEN];
399 char wentp[512];
400 char addr[MAXLEN];
401 char Ulimit[6];
402 char RealtimeTypes[1024];
403 char cmd[255];
404 char ImageFile[255];
405 unsigned long int RealtimeUnauthRec;
406 char LDAPHost[255];
407 char LDAPBindDN[512];
408 char LDAPBindPW[255];
409 int LDAPPort;
410 int LDAPProtocolVersion;
411 char LDAPBaseSearch[255];
412 char LDAPFilterSearch[512];
413 char LDAPTargetAttr[64];
414 char GraphFont[MAXLEN];
415 //! The full path to sorttable.js if the table in the reports must be dynamicaly sorted.
416 char SortTableJs[256];
417
418 int idate;
419 int smartfilter;
420 int denied_count;
421 int download_count;
422 int authfail_count;
423 int dansguardian_count;
424 int squidguard_count;
425 int useragent_count;
426 int limit_flag;
427 int z1, z2, z3;
428 int ttopen;
429 int sarglog;
430 int isalog;
431 int dfrom;
432 int duntil;
433 int dataonly;
434 int indexonly;
435 bool iprel;
436 int langcode;
437 int debug;
438 int debugz;
439 int debugm;
440 int AuthfailReportLimit;
441 int DeniedReportLimit;
442 int DownloadReportLimit;
443 int SiteUsersReportLimit;
444 int DansGuardianReportLimit;
445 int SquidGuardReportLimit;
446 int UserReportLimit;
447 int realtime_refresh;
448 int realtime_access_log_lines;
449 int rc;
450 int ntopsites;
451 int nsitesusers;
452 int nrepday;
453 int ndownload;
454 int ntopuser;
455 bool squid24;
456
457 long long int nocost;
458 float cost;
459
460 typedef struct
461 { int list[ 24 ];
462 int len;
463 } numlist;
464
465 DIR *dirp;
466 struct dirent *direntp;