"Fossies" - the Fresh Open Source Software Archive

Member "sarg-2.4.0/include/conf.h" (24 Dec 2019, 12725 Bytes) of package /linux/privat/sarg-2.4.0.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "conf.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 2.3.11_vs_2.4.0.

    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 #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 
  298 struct 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[90];
  306    //! The HTML representation of the date.
  307    char html[90];
  308 };
  309 
  310 char outdir[MAXLEN];
  311 char outdirname[MAXLEN];
  312 struct periodstruct period;
  313 char code[MAXLEN];
  314 char code2[MAXLEN];
  315 char tmp[MAXLEN];
  316 char parse_out[MAXLEN];
  317 char html[MAXLEN];
  318 char ConfigFile[MAXLEN];
  319 char df;
  320 int LastLog;
  321 bool RemoveTempFiles;
  322 char ReplaceIndex[256];
  323 unsigned long int Index;
  324 bool OverwriteReport;
  325 unsigned long int RecordsWithoutUser;
  326 bool UseComma;
  327 char MailUtility[PATH_MAX];
  328 int TopSitesNum;
  329 int TopUsersNum;
  330 char ExcludeCodes[256];
  331 unsigned long int TopsitesSort;
  332 unsigned long int ReportType;
  333 char UserTabFile[255];
  334 char warea[MAXLEN];
  335 char name[MAXLEN];
  336 bool LongUrl;
  337 bool Ip2Name;
  338 int AccessLogFromCmdLine;
  339 char Title[MAXLEN];
  340 char BgColor[MAXLEN];
  341 char BgImage[MAXLEN];
  342 char TxColor[MAXLEN];
  343 char TxBgColor[MAXLEN];
  344 char TiColor[MAXLEN];
  345 char LogoImage[MAXLEN];
  346 char LogoText[MAXLEN];
  347 char LogoTextColor[MAXLEN];
  348 char Width[MAXLEN];
  349 char Height[MAXLEN];
  350 char FontFace[MAXLEN];
  351 char HeaderColor[MAXLEN];
  352 char HeaderBgColor[MAXLEN];
  353 char FontSize[MAXLEN];
  354 char PasswdFile[MAXLEN];
  355 char TempDir[MAXLEN];
  356 char TempDirPath[MAXLEN];
  357 char OutputDir[MAXLEN];
  358 char OutputEmail[MAXLEN];
  359 unsigned long int TopuserSort;
  360 unsigned long int UserSort;
  361 char module[255];
  362 char ExcludeHosts[255];
  363 char ExcludeUsers[255];
  364 char DateFormat;
  365 bool UserIp;
  366 char MaxElapsed[255];
  367 unsigned long int datetimeby;
  368 char CharSet[255];
  369 char UserInvalidChar[255];
  370 bool Graphs;
  371 char GraphDaysBytesBarColor[255];
  372 bool Privacy;
  373 char PrivacyString[255];
  374 char PrivacyStringColor[30];
  375 char IncludeUsers[MAXLEN];
  376 char ExcludeString[MAXLEN];
  377 bool SuccessfulMsg;
  378 unsigned long int TopUserFields;
  379 unsigned long int UserReportFields;
  380 char DataFile[MAXLEN];
  381 char DataFileDelimiter[3];
  382 unsigned long int DataFileFields;
  383 unsigned long int DataFileUrl;
  384 //! if \c true, show the number of lines read from the input log file during the reading of the file.
  385 bool ShowReadStatistics;
  386 /*!
  387 If \c true, the read statistics also includes the percent of the number of lines read.
  388 
  389 Beware that it requires two readings of the input log file. It is not possible if the
  390 input log file is stdin or a pipe.
  391 */
  392 bool ShowReadPercent;
  393 char IndexSortOrder[5];
  394 char DansGuardianConf[MAXLEN];
  395 bool DansguardianFilterOutDate;
  396 char SquidGuardConf[MAXLEN];
  397 char SquidGuarddbHome[255];
  398 char RedirectorLogFormat[4096];
  399 int NRedirectorLogs;
  400 char RedirectorLogs[MAX_REDIRECTOR_LOGS][MAX_REDIRECTOR_FILELEN];
  401 int RedirectorLogFromCmdLine;
  402 bool RedirectorFilterOutDate;
  403 bool ShowSargInfo;
  404 bool BytesInSitesUsersReport;
  405 bool ShowSargLogo;
  406 char ParsedOutputLog[MAXLEN];
  407 char ParsedOutputLogCompress[512];
  408 unsigned long int DisplayedValues;
  409 char HeaderFontSize[5];
  410 char TitleFontSize[5];
  411 char wwwDocumentRoot[MAXLEN];
  412 char ExternalCSSFile[MAXLEN];
  413 char BlockIt[255];
  414 unsigned long int NtlmUserFormat;
  415 //! How to display the index of the reports.
  416 unsigned long int IndexTree;
  417 //! The columns to show in the index of the reports.
  418 unsigned long int IndexFields;
  419 bool UserAuthentication;
  420 char AuthUserTemplateFile[1024];
  421 //! \c True to use anonymous file and directory names in the report.
  422 bool AnonymousOutputFiles;
  423 char val1[MAXLEN];
  424 char val3[MAXLEN];
  425 char val5[MAXLEN];
  426 char val6[MAXLEN];
  427 char val7[MAXLEN];
  428 char val8[MAXLEN];
  429 char val9[MAXLEN];
  430 char val10[MAXLEN];
  431 char val11[MAXLEN];
  432 char mask[MAXLEN];
  433 char site[MAXLEN];
  434 char us[50];
  435 char email[MAXLEN];
  436 char test[1];
  437 char user2[MAXLEN];
  438 char wentp[512];
  439 char addr[MAXLEN];
  440 char Ulimit[6];
  441 char RealtimeTypes[1024];
  442 char cmd[255];
  443 char ImageFile[255];
  444 unsigned long int RealtimeUnauthRec;
  445 char LDAPHost[255];
  446 char LDAPBindDN[512];
  447 char LDAPBindPW[255];
  448 int LDAPPort;
  449 int LDAPProtocolVersion;
  450 char LDAPBaseSearch[255];
  451 char LDAPFilterSearch[512];
  452 char LDAPTargetAttr[64];
  453 //! Character set to convert the LDAP returned string to.
  454 char LDAPNativeCharset[20];
  455 char GraphFont[MAXLEN];
  456 //! The full path to sorttable.js if the table in the reports must be dynamicaly sorted.
  457 char SortTableJs[256];
  458 //! The name of the file containing the host names to replace by an alias in the report.
  459 char HostAliasFile[512];
  460 //! The name of the file containing the user names to replace by an alias in the report.
  461 char UserAliasFile[512];
  462 //! The number of consecutive errors allowed in an input log file before the process is interrupted.
  463 int NumLogSuccessiveErrors;
  464 /*!
  465 The total number of errors allowed in an input log file before the process is interrupted. A negative
  466 value means the process should never fails irrespective of the number of errors found in the input
  467 log files.
  468 */
  469 int NumLogTotalErrors;
  470 //! Count the number of lines read from the input log files.
  471 unsigned long int lines_read;
  472 //! Count the number of records kept for the processing.
  473 unsigned long int records_kept;
  474 //! Count the number of users.
  475 unsigned long int nusers;
  476 
  477 int  idate;
  478 int  dansguardian_count;
  479 int  redirector_count;
  480 int  useragent_count;
  481 int  z1, z2, z3;
  482 int  ttopen;
  483 int  sarglog;
  484 int  isalog;
  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;