Imported Upstream version 2.23.05
[hcoop/zz_old/debian/webalizer.git] / webalizer.h
CommitLineData
e015f748
CE
1#ifndef _WEBALIZER_H
2#define _WEBALIZER_H
3
4#define PCENT(val,max) ((val)?((double)val/(double)max)*100.0 : 0.0)
5#define IDX_2C(c1,c2) (((c1-'a'+1)<<7)+(c2-'a'+1) )
6#define IDX_3C(c1,c2,c3) (((c1-'a'+1)<<12)+((c2-'a'+1)<<7)+(c3-'a'+1) )
7#define IDX_4C(c1,c2,c3,c4) (((c1-'a'+1)<<17)+((c2-'a'+1)<<12)+((c3-'a'+1)<<7)+(c4-'a'+1) )
8#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) )
9#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) )
10
11#ifndef MAX
12#define MAX(a,b) ((a) > (b) ? (a) : (b))
13#endif
14
15#define MAXHASH 4096 /* Size of our hash tables */
16#define BUFSIZE 4096 /* Max buffer size for log record */
17#define MAXHOST 128 /* Max hostname buffer size */
18#define MAXURL 4096 /* Max HTTP request/URL field size */
19#define MAXURLH 512 /* Max URL field size in htab */
20#define MAXREF 1024 /* Max referrer field size */
21#define MAXREFH 256 /* Max referrer field size in htab */
22#define MAXAGENT 128 /* Max user agent field size */
23#define MAXCTRY 48 /* Max country name size */
24#define MAXSRCH 256 /* Max size of search string buffer */
25#define MAXSRCHH 128 /* Max size of search str in htab */
26#define MAXIDENT 64 /* Max size of ident string (user) */
27#define MAXKWORD 32 /* Max size of config keyword */
28#define MAXKVAL 132 /* Max size of config value */
29#define HISTSIZE 120 /* Size of history in months */
30#define GRAPHMAX 72 /* Max months in index graph */
31
32#define SLOP_VAL 3600 /* out of sequence slop (seconds) */
33
34/* Log types */
35#define LOG_CLF 0 /* CLF/combined log type */
36#define LOG_FTP 1 /* wu-ftpd xferlog type */
37#define LOG_SQUID 2 /* squid proxy log */
38#define LOG_W3C 3 /* W3C extended log format */
39
40/* compression */
41#define COMP_NONE 0
42#define COMP_GZIP 1
43#define COMP_BZIP 2
44
45/* Response code defines as per draft ietf HTTP/1.1 rev 6 */
46#define RC_CONTINUE 100
47#define RC_SWITCHPROTO 101
48#define RC_OK 200
49#define RC_CREATED 201
50#define RC_ACCEPTED 202
51#define RC_NONAUTHINFO 203
52#define RC_NOCONTENT 204
53#define RC_RESETCONTENT 205
54#define RC_PARTIALCONTENT 206
55#define RC_MULTIPLECHOICES 300
56#define RC_MOVEDPERM 301
57#define RC_MOVEDTEMP 302
58#define RC_SEEOTHER 303
59#define RC_NOMOD 304
60#define RC_USEPROXY 305
61#define RC_MOVEDTEMPORARILY 307
62#define RC_BAD 400
63#define RC_UNAUTH 401
64#define RC_PAYMENTREQ 402
65#define RC_FORBIDDEN 403
66#define RC_NOTFOUND 404
67#define RC_METHODNOTALLOWED 405
68#define RC_NOTACCEPTABLE 406
69#define RC_PROXYAUTHREQ 407
70#define RC_TIMEOUT 408
71#define RC_CONFLICT 409
72#define RC_GONE 410
73#define RC_LENGTHREQ 411
74#define RC_PREFAILED 412
75#define RC_REQENTTOOLARGE 413
76#define RC_REQURITOOLARGE 414
77#define RC_UNSUPMEDIATYPE 415
78#define RC_RNGNOTSATISFIABLE 416
79#define RC_EXPECTATIONFAILED 417
80#define RC_SERVERERR 500
81#define RC_NOTIMPLEMENTED 501
82#define RC_BADGATEWAY 502
83#define RC_UNAVAIL 503
84#define RC_GATEWAYTIMEOUT 504
85#define RC_BADHTTPVER 505
86
87/* Index defines for RC codes */
88#define IDX_UNDEFINED 0
89#define IDX_CONTINUE 1
90#define IDX_SWITCHPROTO 2
91#define IDX_OK 3
92#define IDX_CREATED 4
93#define IDX_ACCEPTED 5
94#define IDX_NONAUTHINFO 6
95#define IDX_NOCONTENT 7
96#define IDX_RESETCONTENT 8
97#define IDX_PARTIALCONTENT 9
98#define IDX_MULTIPLECHOICES 10
99#define IDX_MOVEDPERM 11
100#define IDX_MOVEDTEMP 12
101#define IDX_SEEOTHER 13
102#define IDX_NOMOD 14
103#define IDX_USEPROXY 15
104#define IDX_MOVEDTEMPORARILY 16
105#define IDX_BAD 17
106#define IDX_UNAUTH 18
107#define IDX_PAYMENTREQ 19
108#define IDX_FORBIDDEN 20
109#define IDX_NOTFOUND 21
110#define IDX_METHODNOTALLOWED 22
111#define IDX_NOTACCEPTABLE 23
112#define IDX_PROXYAUTHREQ 24
113#define IDX_TIMEOUT 25
114#define IDX_CONFLICT 26
115#define IDX_GONE 27
116#define IDX_LENGTHREQ 28
117#define IDX_PREFAILED 29
118#define IDX_REQENTTOOLARGE 30
119#define IDX_REQURITOOLARGE 31
120#define IDX_UNSUPMEDIATYPE 32
121#define IDX_RNGNOTSATISFIABLE 33
122#define IDX_EXPECTATIONFAILED 34
123#define IDX_SERVERERR 35
124#define IDX_NOTIMPLEMENTED 36
125#define IDX_BADGATEWAY 37
126#define IDX_UNAVAIL 38
127#define IDX_GATEWAYTIMEOUT 39
128#define IDX_BADHTTPVER 40
129#define TOTAL_RC 41
130
131#ifdef USE_DNS
132#include <netinet/in.h> /* needed for in_addr structure definition */
133#ifndef INADDR_NONE
134#define INADDR_NONE 0xFFFFFFFF
135#endif /* INADDR_NONE */
136#endif
137
138/* Response code structure */
139struct response_code { char *desc; /* code description */
140 u_int64_t count; }; /* hit counter */
141
142/* Country code structure */
143struct country_code {u_int64_t idx; /* TLD index number */
144 char *desc; /* TLD description */
145 u_int64_t count; /* hit counter */
146 u_int64_t files; /* file counter */
147 double xfer; }; /* xfer amt counter */
148
149typedef struct country_code *CLISTPTR;
150
151/* log record structure */
152struct log_struct { char hostname[MAXHOST]; /* hostname */
153 char datetime[29]; /* raw timestamp */
154 char url[MAXURL]; /* raw request field */
155 int resp_code; /* response code */
156 u_int64_t xfer_size; /* xfer size in bytes */
157 char refer[MAXREF]; /* referrer */
158 char agent[MAXAGENT]; /* user agent (browser) */
159 char srchstr[MAXSRCH]; /* search string */
160 char ident[MAXIDENT]; }; /* ident string (user) */
161
162extern struct log_struct log_rec;
163
164extern char *version ; /* program version */
165extern char *editlvl ; /* edit level */
166extern char *moddate ; /* modification date */
167extern char *copyright ;
168
169extern int verbose ; /* 2=verbose,1=err, 0=none */
170extern int debug_mode ; /* debug mode flag */
171extern int time_me ; /* timing display flag */
172extern int local_time ; /* 1=localtime 0=GMT (UTC) */
173extern int hist_gap ; /* hist error, save backup */
174extern int ignore_hist ; /* history flag (1=skip) */
175extern int ignore_state ; /* state fiag (1=skip) */
176extern int hourly_graph ; /* hourly graph display */
177extern int hourly_stats ; /* hourly stats table */
178extern int daily_graph ; /* daily graph display */
179extern int daily_stats ; /* daily stats table */
180extern int ctry_graph ; /* country graph display */
181extern int shade_groups ; /* Group shading 0=no 1=yes */
182extern int hlite_groups ; /* Group hlite 0=no 1=yes */
183extern int mangle_agent ; /* mangle user agents */
184extern int incremental ; /* incremental mode 1=yes */
185extern int use_https ; /* use 'https://' on URLs */
186extern int htaccess ; /* create .htaccess? (0=no) */
187extern int visit_timeout; /* visit timeout (30 min) */
188extern int graph_legend ; /* graph legend (1=yes) */
189extern int graph_lines ; /* graph lines (0=none) */
190extern int fold_seq_err ; /* fold seq err (0=no) */
191extern int log_type ; /* (0=clf, 1=ftp, 2=squid) */
192extern int group_domains; /* Group domains 0=none */
193extern int hide_sites ; /* Hide ind. sites (0=no) */
194extern int graph_mths ; /* # months in index graph */
195extern int index_mths ; /* # months in index table */
196extern int year_hdrs ; /* Show year headers (0=no) */
197extern int year_totals ; /* Show year totals (0=no) */
198extern int use_flags ; /* Show flags in ctry table */
199extern char *flag_dir ; /* flag directory */
200extern char *hname ; /* hostname for reports */
201extern char *state_fname ; /* run state file name */
202extern char *hist_fname ; /* name of history file */
203extern char *html_ext ; /* HTML file prefix */
204extern char *dump_ext ; /* Dump file prefix */
205extern char *conf_fname ; /* name of config file */
206extern char *log_fname ; /* log file pointer */
207extern char *out_dir ; /* output directory */
208extern char *blank_str ; /* blank string */
209extern char *dns_cache ; /* DNS cache file name */
210extern int geodb ; /* Use GeoDB flag (0=no) */
211extern int dns_children ; /* # of DNS children */
212extern int cache_ips ; /* Cache IP addrs (0=no) */
213extern int cache_ttl ; /* Cache entry TTL (days) */
214extern int link_referrer; /* link referrer (0=no) */
215extern int trimsquid ; /* trim squid URLs (0=none) */
216extern int searchcasei ; /* case insensitive search */
217
218extern int ntop_sites ; /* top n sites to display */
219extern int ntop_sitesK ; /* top n sites (by kbytes) */
220extern int ntop_urls ; /* top n url's to display */
221extern int ntop_urlsK ; /* top n url's (by kbytes) */
222extern int ntop_entry ; /* top n entry url's */
223extern int ntop_exit ; /* top n exit url's */
224extern int ntop_refs ; /* top n referrers "" */
225extern int ntop_agents ; /* top n user agents "" */
226extern int ntop_ctrys ; /* top n countries "" */
227extern int ntop_search ; /* top n search strings */
228extern int ntop_users ; /* top n users to display */
229
230extern int all_sites ; /* List All sites (0=no) */
231extern int all_urls ; /* List All URLs (0=no) */
232extern int all_refs ; /* List All Referrers */
233extern int all_agents ; /* List All User Agents */
234extern int all_search ; /* List All Search Strings */
235extern int all_users ; /* List All Usernames */
236
237extern int dump_sites ; /* Dump tab delimited sites */
238extern int dump_urls ; /* URLs */
239extern int dump_refs ; /* Referrers */
240extern int dump_agents ; /* User Agents */
241extern int dump_users ; /* Usernames */
242extern int dump_search ; /* Search strings */
243extern int dump_header ; /* Dump header as first rec */
244extern char *dump_path ; /* Path for dump files */
245
246extern u_int64_t cur_tstamp; /* Current timestamp */
247extern u_int64_t epoch; /* used for timestamp adj. */
248extern int check_dup; /* check for dups flag */
249
250extern int cur_year,cur_month, /* year/month/day/hour */
251 cur_day, cur_hour, /* tracking variables */
252 cur_min, cur_sec;
253
254extern double t_xfer; /* monthly total xfer value */
255extern u_int64_t t_hit, t_file, t_site, /* monthly total vars */
256 t_url, t_ref, t_agent,
257 t_page,t_visit,t_user;
258
259extern double tm_xfer[31]; /* daily transfer totals */
260
261extern u_int64_t tm_hit[31], tm_file[31], /* daily total arrays */
262 tm_site[31],tm_page[31],
263 tm_visit[31];
264
265extern u_int64_t dt_site; /* daily 'sites' total */
266
267extern u_int64_t ht_hit,mh_hit; /* hourly hits totals */
268
269extern u_int64_t th_hit[24], th_file[24], /* hourly total arrays */
270 th_page[24];
271
272extern double th_xfer[24]; /* hourly xfer array */
273
274extern int f_day,l_day; /* first/last day vars */
275extern int gz_log; /* flag for zipped log */
276
277extern CLISTPTR *top_ctrys; /* Top countries table */
278
279extern char hit_color[]; /* graph hit color */
280extern char file_color[]; /* graph file color */
281extern char site_color[]; /* graph site color */
282extern char kbyte_color[]; /* graph kbyte color */
283extern char page_color[]; /* graph page color */
284extern char visit_color[]; /* graph visit color */
285extern char misc_color[]; /* graph misc color */
286extern char pie_color1[]; /* pie additionnal color 1 */
287extern char pie_color2[]; /* pie additionnal color 2 */
288extern char pie_color3[]; /* pie additionnal color 3 */
289extern char pie_color4[]; /* pie additionnal color 4 */
290
291/* define our externally visable functions */
292
293extern char *cur_time();
294extern u_int64_t ctry_idx(char *);
295extern char *un_idx(u_int64_t);
296extern void init_counters();
297extern int ispage(char *);
298extern u_int64_t jdate(int,int,int);
299extern char from_hex(char);
300extern int isipaddr(char *);
301
302#endif /* _WEBALIZER_H */