File: webalizer.h

package info (click to toggle)
webalizer 2.23.08-3.3
  • links: PTS
  • area: main
  • in suites: bookworm, sid
  • size: 9,864 kB
  • sloc: ansic: 10,021; sh: 345; makefile: 94; python: 55
file content (316 lines) | stat: -rw-r--r-- 16,357 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
#ifndef _WEBALIZER_H
#define _WEBALIZER_H

#define PCENT(val,max) ((val)?((double)val/(double)max)*100.0 : 0.0)
#define IDX_2C(c1,c2)       (((c1-'a'+1)<<7)+(c2-'a'+1) )
#define IDX_3C(c1,c2,c3)    (((c1-'a'+1)<<12)+((c2-'a'+1)<<7)+(c3-'a'+1) )
#define IDX_4C(c1,c2,c3,c4) (((c1-'a'+1)<<17)+((c2-'a'+1)<<12)+((c3-'a'+1)<<7)+(c4-'a'+1) )
#define IDX_5C(c1,c2,c3,c4,c5) (((c1-'a'+1)<<22)+((c2-'a'+1)<<17)+((c3-'a'+1)<<12)+((c4-'a'+1)<<7)+(c5-'a'+1) )
#define IDX_6C(c1,c2,c3,c4,c5,c6) (((c1-'a'+1)<<27)+((c2-'a'+1)<<22)+((c3-'a'+1)<<17)+((c4-'a'+1)<<12)+((c5-'a'+1)<<7)+(c6-'a'+1) )

#ifndef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif

#define MAXHASH  4096                  /* Size of our hash tables          */
#define BUFSIZE  4096                  /* Max buffer size for log record   */
#define MAXHOST  256                   /* Max hostname buffer size         */
#define MAXURL   4096                  /* Max HTTP request/URL field size  */
#define MAXURLH  512                   /* Max URL field size in htab       */
#define MAXREF   1024                  /* Max referrer field size          */
#define MAXREFH  256                   /* Max referrer field size in htab  */
#define MAXAGENT 128                   /* Max user agent field size        */
#define MAXCTRY  48                    /* Max country name size            */
#define MAXSRCH  256                   /* Max size of search string buffer */
#define MAXSRCHH 128                   /* Max size of search str in htab   */
#define MAXIDENT 64                    /* Max size of ident string (user)  */
#define MAXKWORD 32                    /* Max size of config keyword       */
#define MAXKVAL  132                   /* Max size of config value         */
#define HISTSIZE 120                   /* Size of history in months        */
#define GRAPHMAX 72                    /* Max months in index graph        */

#define SLOP_VAL 3600                  /* out of sequence slop (seconds)   */

/* Log types */
#define LOG_CLF   0                    /* CLF/combined log type            */
#define LOG_FTP   1                    /* wu-ftpd xferlog type             */
#define LOG_SQUID 2                    /* squid proxy log                  */
#define LOG_W3C   3                    /* W3C extended log format          */

/* compression */
#define COMP_NONE 0
#define COMP_GZIP 1
#define COMP_BZIP 2

/* Response code defines as per draft ietf HTTP/1.1 rev 6 */
#define RC_CONTINUE           100
#define RC_SWITCHPROTO        101
#define RC_OK                 200
#define RC_CREATED            201
#define RC_ACCEPTED           202
#define RC_NONAUTHINFO        203
#define RC_NOCONTENT          204
#define RC_RESETCONTENT       205
#define RC_PARTIALCONTENT     206
#define RC_MULTIPLECHOICES    300
#define RC_MOVEDPERM          301
#define RC_MOVEDTEMP          302
#define RC_SEEOTHER           303
#define RC_NOMOD              304
#define RC_USEPROXY           305
#define RC_MOVEDTEMPORARILY   307
#define RC_BAD                400
#define RC_UNAUTH             401
#define RC_PAYMENTREQ         402
#define RC_FORBIDDEN          403
#define RC_NOTFOUND           404
#define RC_METHODNOTALLOWED   405
#define RC_NOTACCEPTABLE      406
#define RC_PROXYAUTHREQ       407
#define RC_TIMEOUT            408
#define RC_CONFLICT           409
#define RC_GONE               410
#define RC_LENGTHREQ          411
#define RC_PREFAILED          412
#define RC_REQENTTOOLARGE     413
#define RC_REQURITOOLARGE     414
#define RC_UNSUPMEDIATYPE     415
#define RC_RNGNOTSATISFIABLE  416
#define RC_EXPECTATIONFAILED  417
#define RC_SERVERERR          500
#define RC_NOTIMPLEMENTED     501
#define RC_BADGATEWAY         502
#define RC_UNAVAIL            503
#define RC_GATEWAYTIMEOUT     504
#define RC_BADHTTPVER         505

/* Index defines for RC codes */
#define IDX_UNDEFINED          0
#define IDX_CONTINUE           1
#define IDX_SWITCHPROTO        2
#define IDX_OK                 3
#define IDX_CREATED            4 
#define IDX_ACCEPTED           5 
#define IDX_NONAUTHINFO        6 
#define IDX_NOCONTENT          7  
#define IDX_RESETCONTENT       8 
#define IDX_PARTIALCONTENT     9 
#define IDX_MULTIPLECHOICES    10 
#define IDX_MOVEDPERM          11 
#define IDX_MOVEDTEMP          12 
#define IDX_SEEOTHER           13 
#define IDX_NOMOD              14 
#define IDX_USEPROXY           15 
#define IDX_MOVEDTEMPORARILY   16
#define IDX_BAD                17 
#define IDX_UNAUTH             18 
#define IDX_PAYMENTREQ         19 
#define IDX_FORBIDDEN          20 
#define IDX_NOTFOUND           21 
#define IDX_METHODNOTALLOWED   22 
#define IDX_NOTACCEPTABLE      23 
#define IDX_PROXYAUTHREQ       24 
#define IDX_TIMEOUT            25 
#define IDX_CONFLICT           26 
#define IDX_GONE               27 
#define IDX_LENGTHREQ          28 
#define IDX_PREFAILED          29 
#define IDX_REQENTTOOLARGE     30 
#define IDX_REQURITOOLARGE     31 
#define IDX_UNSUPMEDIATYPE     32
#define IDX_RNGNOTSATISFIABLE  33
#define IDX_EXPECTATIONFAILED  34 
#define IDX_SERVERERR          35 
#define IDX_NOTIMPLEMENTED     36 
#define IDX_BADGATEWAY         37 
#define IDX_UNAVAIL            38 
#define IDX_GATEWAYTIMEOUT     39 
#define IDX_BADHTTPVER         40 
#define TOTAL_RC               41

#ifdef USE_DNS
#include <netinet/in.h>       /* needed for in_addr structure definition   */
#ifndef INADDR_NONE
#define INADDR_NONE 0xFFFFFFFF
#endif  /* INADDR_NONE */
#endif

/* Response code structure */
struct response_code {     char    *desc;         /* code description     */
                      u_int64_t    count; };      /* hit counter          */

/* Country code structure */
struct	country_code {u_int64_t idx;              /* TLD index number     */
                           char *desc;            /* TLD description      */
                      u_int64_t count;            /* hit counter          */
                      u_int64_t files;            /* file counter         */
                         double xfer;             /* xfer amt counter     */
                         double ixfer;            /* in xfer amt counter  */
                         double oxfer; };         /* out xfer amt counter */

typedef struct country_code *CLISTPTR;

/* log record structure */
struct  log_struct  {  char   hostname[MAXHOST];  /* hostname             */
                       char   datetime[29];       /* raw timestamp        */
                       char   url[MAXURL];        /* raw request field    */
                        int   resp_code;          /* response code        */
                  u_int64_t   xfer_size;          /* xfer size in bytes   */
                  u_int64_t   ixfer_size;         /* in xfer size bytes   */
                  u_int64_t   oxfer_size;         /* out xfer size bytes  */
                       char   refer[MAXREF];      /* referrer             */
                       char   agent[MAXAGENT];    /* user agent (browser) */
                       char   srchstr[MAXSRCH];   /* search string        */
                       char   ident[MAXIDENT]; }; /* ident string (user)  */

extern struct log_struct log_rec;

extern char    *version     ;                 /* program version          */
extern char    *editlvl     ;                 /* edit level               */
extern char    *moddate     ;                 /* modification date        */
extern char    *copyright   ;

extern int     verbose      ;                 /* 2=verbose,1=err, 0=none  */ 
extern int     debug_mode   ;                 /* debug mode flag          */
extern int     time_me      ;                 /* timing display flag      */
extern int     local_time   ;                 /* 1=localtime 0=GMT (UTC)  */
extern int     hist_gap     ;                 /* hist error, save backup  */
extern int     ignore_hist  ;                 /* history flag (1=skip)    */
extern int     ignore_state ;                 /* state fiag (1=skip)      */
extern int     hourly_graph ;                 /* hourly graph display     */
extern int     hourly_stats ;                 /* hourly stats table       */
extern int     daily_graph  ;                 /* daily graph display      */
extern int     daily_stats  ;                 /* daily stats table        */
extern int     ctry_graph   ;                 /* country graph display    */
extern int     shade_groups ;                 /* Group shading 0=no 1=yes */
extern int     hlite_groups ;                 /* Group hlite 0=no 1=yes   */
extern int     mangle_agent ;                 /* mangle user agents       */
extern int     incremental  ;                 /* incremental mode 1=yes   */
extern int     use_https    ;                 /* use 'https://' on URLs   */
extern int     htaccess     ;                 /* create .htaccess? (0=no) */
extern int     visit_timeout;                 /* visit timeout (30 min)   */
extern int     graph_legend ;                 /* graph legend (1=yes)     */
extern int     graph_lines  ;                 /* graph lines (0=none)     */
extern int     fold_seq_err ;                 /* fold seq err (0=no)      */
extern int     log_type     ;                 /* (0=clf, 1=ftp, 2=squid)  */
extern int     group_domains;                 /* Group domains 0=none     */
extern int     hide_sites   ;                 /* Hide ind. sites (0=no)   */
extern int     graph_mths   ;                 /* # months in index graph  */
extern int     index_mths   ;                 /* # months in index table  */
extern int     year_hdrs    ;                 /* Show year headers (0=no) */
extern int     year_totals  ;                 /* Show year totals (0=no)  */
extern int     use_flags    ;                 /* Show flags in ctry table */
extern char    *flag_dir    ;                 /* flag directory           */
extern char    *hname       ;                 /* hostname for reports     */
extern char    *state_fname ;                 /* run state file name      */
extern char    *hist_fname  ;                 /* name of history file     */
extern char    *html_ext    ;                 /* HTML file prefix         */
extern char    *dump_ext    ;                 /* Dump file prefix         */
extern char    *conf_fname  ;                 /* name of config file      */
extern char    *log_fname   ;                 /* log file pointer         */
extern char    *out_dir     ;                 /* output directory         */
extern char    *blank_str   ;                 /* blank string             */
extern char    *dns_cache   ;                 /* DNS cache file name      */
extern int     geodb        ;                 /* Use GeoDB flag (0=no)    */
extern int     dns_children ;                 /* # of DNS children        */
extern int     cache_ips    ;                 /* Cache IP addrs (0=no)    */
extern int     cache_ttl    ;                 /* Cache entry TTL (days)   */
extern int     link_referrer;                 /* link referrer (0=no)     */
extern int     trimsquid    ;                 /* trim squid URLs (0=none) */
extern int     searchcasei  ;                 /* case insensitive search  */

extern int     ntop_sites   ;                 /* top n sites to display   */
extern int     ntop_sitesK  ;                 /* top n sites (by kbytes)  */
extern int     ntop_urls    ;                 /* top n url's to display   */
extern int     ntop_urlsK   ;                 /* top n url's (by kbytes)  */
extern int     ntop_entry   ;                 /* top n entry url's        */
extern int     ntop_exit    ;                 /* top n exit url's         */
extern int     ntop_refs    ;                 /* top n referrers ""       */
extern int     ntop_agents  ;                 /* top n user agents ""     */
extern int     ntop_ctrys   ;                 /* top n countries   ""     */
extern int     ntop_search  ;                 /* top n search strings     */
extern int     ntop_users   ;                 /* top n users to display   */

extern int     all_sites    ;                 /* List All sites (0=no)    */
extern int     all_urls     ;                 /* List All URLs  (0=no)    */
extern int     all_refs     ;                 /* List All Referrers       */
extern int     all_agents   ;                 /* List All User Agents     */
extern int     all_search   ;                 /* List All Search Strings  */
extern int     all_users    ;                 /* List All Usernames       */

extern int     dump_sites   ;                 /* Dump tab delimited sites */
extern int     dump_urls    ;                 /* URLs                     */
extern int     dump_refs    ;                 /* Referrers                */
extern int     dump_agents  ;                 /* User Agents              */
extern int     dump_users   ;                 /* Usernames                */
extern int     dump_search  ;                 /* Search strings           */
extern int     dump_header  ;                 /* Dump header as first rec */
extern char    *dump_path   ;                 /* Path for dump files      */
extern int     dump_inout   ;                 /* In Out kB (logio) 2=auto */

extern u_int64_t cur_tstamp;                  /* Current timestamp        */
extern u_int64_t epoch;                       /* used for timestamp adj.  */
extern int       check_dup;                   /* check for dups flag      */

extern int       cur_year,cur_month,          /* year/month/day/hour      */
                 cur_day, cur_hour,           /* tracking variables       */
                 cur_min, cur_sec;

extern double    t_xfer;                      /* monthly total xfer value */
extern double    t_ixfer;                     /* monthly total in xfer    */
extern double    t_oxfer;                     /* monthly total out xfer   */
extern u_int64_t t_hit, t_file, t_site,       /* monthly total vars       */
                 t_url, t_ref,  t_agent,
                 t_page,t_visit,t_user;

extern double    tm_xfer[31];                 /* daily transfer totals    */
extern double    tm_ixfer[31];                /* daily in xfer totals     */
extern double    tm_oxfer[31];                /* daily out xfer totals    */

extern u_int64_t tm_hit[31], tm_file[31],     /* daily total arrays       */
                 tm_site[31],tm_page[31],
                 tm_visit[31];

extern u_int64_t dt_site;                     /* daily 'sites' total      */

extern u_int64_t ht_hit,mh_hit;               /* hourly hits totals       */

extern u_int64_t th_hit[24], th_file[24],     /* hourly total arrays      */
                 th_page[24];

extern double    th_xfer[24];                 /* hourly xfer array        */
extern double    th_ixfer[24];
extern double    th_oxfer[24];

extern int       f_day,l_day;                 /* first/last day vars      */
extern int       gz_log;                      /* flag for zipped log      */

extern CLISTPTR  *top_ctrys;                  /* Top countries table      */

extern char    hit_color[];                   /* graph hit color          */
extern char    file_color[];                  /* graph file color         */
extern char    site_color[];                  /* graph site color         */
extern char    kbyte_color[];                 /* graph kbyte color        */
extern char    ikbyte_color[];                /* graph ikbyte color       */
extern char    okbyte_color[];                /* graph okbyte color       */
extern char    page_color[];                  /* graph page color         */
extern char    visit_color[];                 /* graph visit color        */
extern char    misc_color[];                  /* graph misc color         */
extern char    pie_color1[];                  /* pie additionnal color 1  */
extern char    pie_color2[];                  /* pie additionnal color 2  */
extern char    pie_color3[];                  /* pie additionnal color 3  */
extern char    pie_color4[];                  /* pie additionnal color 4  */

/* define our externally visible functions */

extern char      *cur_time();
extern u_int64_t ctry_idx(char *);
extern char      *un_idx(u_int64_t);
extern void      init_counters();
extern int       ispage(char *);
extern u_int64_t jdate(int,int,int);
extern char      from_hex(char);
extern int       isipaddr(char *);
extern char      *intl_strip_context();

#endif  /* _WEBALIZER_H */