Imported Debian patch 2.23.05-1
[hcoop/zz_old/debian/webalizer.git] / webalizer.h
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 */
139 struct response_code { char *desc; /* code description */
140 u_int64_t count; }; /* hit counter */
141
142 /* Country code structure */
143 struct 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
149 typedef struct country_code *CLISTPTR;
150
151 /* log record structure */
152 struct 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
162 extern struct log_struct log_rec;
163
164 extern char *version ; /* program version */
165 extern char *editlvl ; /* edit level */
166 extern char *moddate ; /* modification date */
167 extern char *copyright ;
168
169 extern int verbose ; /* 2=verbose,1=err, 0=none */
170 extern int debug_mode ; /* debug mode flag */
171 extern int time_me ; /* timing display flag */
172 extern int local_time ; /* 1=localtime 0=GMT (UTC) */
173 extern int hist_gap ; /* hist error, save backup */
174 extern int ignore_hist ; /* history flag (1=skip) */
175 extern int ignore_state ; /* state fiag (1=skip) */
176 extern int hourly_graph ; /* hourly graph display */
177 extern int hourly_stats ; /* hourly stats table */
178 extern int daily_graph ; /* daily graph display */
179 extern int daily_stats ; /* daily stats table */
180 extern int ctry_graph ; /* country graph display */
181 extern int shade_groups ; /* Group shading 0=no 1=yes */
182 extern int hlite_groups ; /* Group hlite 0=no 1=yes */
183 extern int mangle_agent ; /* mangle user agents */
184 extern int incremental ; /* incremental mode 1=yes */
185 extern int use_https ; /* use 'https://' on URLs */
186 extern int htaccess ; /* create .htaccess? (0=no) */
187 extern int visit_timeout; /* visit timeout (30 min) */
188 extern int graph_legend ; /* graph legend (1=yes) */
189 extern int graph_lines ; /* graph lines (0=none) */
190 extern int fold_seq_err ; /* fold seq err (0=no) */
191 extern int log_type ; /* (0=clf, 1=ftp, 2=squid) */
192 extern int group_domains; /* Group domains 0=none */
193 extern int hide_sites ; /* Hide ind. sites (0=no) */
194 extern int graph_mths ; /* # months in index graph */
195 extern int index_mths ; /* # months in index table */
196 extern int year_hdrs ; /* Show year headers (0=no) */
197 extern int year_totals ; /* Show year totals (0=no) */
198 extern int use_flags ; /* Show flags in ctry table */
199 extern char *flag_dir ; /* flag directory */
200 extern char *hname ; /* hostname for reports */
201 extern char *state_fname ; /* run state file name */
202 extern char *hist_fname ; /* name of history file */
203 extern char *html_ext ; /* HTML file prefix */
204 extern char *dump_ext ; /* Dump file prefix */
205 extern char *conf_fname ; /* name of config file */
206 extern char *log_fname ; /* log file pointer */
207 extern char *out_dir ; /* output directory */
208 extern char *blank_str ; /* blank string */
209 extern char *dns_cache ; /* DNS cache file name */
210 extern int geodb ; /* Use GeoDB flag (0=no) */
211 extern int dns_children ; /* # of DNS children */
212 extern int cache_ips ; /* Cache IP addrs (0=no) */
213 extern int cache_ttl ; /* Cache entry TTL (days) */
214 extern int link_referrer; /* link referrer (0=no) */
215 extern int trimsquid ; /* trim squid URLs (0=none) */
216 extern int searchcasei ; /* case insensitive search */
217
218 extern int ntop_sites ; /* top n sites to display */
219 extern int ntop_sitesK ; /* top n sites (by kbytes) */
220 extern int ntop_urls ; /* top n url's to display */
221 extern int ntop_urlsK ; /* top n url's (by kbytes) */
222 extern int ntop_entry ; /* top n entry url's */
223 extern int ntop_exit ; /* top n exit url's */
224 extern int ntop_refs ; /* top n referrers "" */
225 extern int ntop_agents ; /* top n user agents "" */
226 extern int ntop_ctrys ; /* top n countries "" */
227 extern int ntop_search ; /* top n search strings */
228 extern int ntop_users ; /* top n users to display */
229
230 extern int all_sites ; /* List All sites (0=no) */
231 extern int all_urls ; /* List All URLs (0=no) */
232 extern int all_refs ; /* List All Referrers */
233 extern int all_agents ; /* List All User Agents */
234 extern int all_search ; /* List All Search Strings */
235 extern int all_users ; /* List All Usernames */
236
237 extern int dump_sites ; /* Dump tab delimited sites */
238 extern int dump_urls ; /* URLs */
239 extern int dump_refs ; /* Referrers */
240 extern int dump_agents ; /* User Agents */
241 extern int dump_users ; /* Usernames */
242 extern int dump_search ; /* Search strings */
243 extern int dump_header ; /* Dump header as first rec */
244 extern char *dump_path ; /* Path for dump files */
245
246 extern u_int64_t cur_tstamp; /* Current timestamp */
247 extern u_int64_t epoch; /* used for timestamp adj. */
248 extern int check_dup; /* check for dups flag */
249
250 extern int cur_year,cur_month, /* year/month/day/hour */
251 cur_day, cur_hour, /* tracking variables */
252 cur_min, cur_sec;
253
254 extern double t_xfer; /* monthly total xfer value */
255 extern 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
259 extern double tm_xfer[31]; /* daily transfer totals */
260
261 extern u_int64_t tm_hit[31], tm_file[31], /* daily total arrays */
262 tm_site[31],tm_page[31],
263 tm_visit[31];
264
265 extern u_int64_t dt_site; /* daily 'sites' total */
266
267 extern u_int64_t ht_hit,mh_hit; /* hourly hits totals */
268
269 extern u_int64_t th_hit[24], th_file[24], /* hourly total arrays */
270 th_page[24];
271
272 extern double th_xfer[24]; /* hourly xfer array */
273
274 extern int f_day,l_day; /* first/last day vars */
275 extern int gz_log; /* flag for zipped log */
276
277 extern CLISTPTR *top_ctrys; /* Top countries table */
278
279 extern char hit_color[]; /* graph hit color */
280 extern char file_color[]; /* graph file color */
281 extern char site_color[]; /* graph site color */
282 extern char kbyte_color[]; /* graph kbyte color */
283 extern char page_color[]; /* graph page color */
284 extern char visit_color[]; /* graph visit color */
285 extern char misc_color[]; /* graph misc color */
286 extern char pie_color1[]; /* pie additionnal color 1 */
287 extern char pie_color2[]; /* pie additionnal color 2 */
288 extern char pie_color3[]; /* pie additionnal color 3 */
289 extern char pie_color4[]; /* pie additionnal color 4 */
290
291 /* define our externally visable functions */
292
293 extern char *cur_time();
294 extern u_int64_t ctry_idx(char *);
295 extern char *un_idx(u_int64_t);
296 extern void init_counters();
297 extern int ispage(char *);
298 extern u_int64_t jdate(int,int,int);
299 extern char from_hex(char);
300 extern int isipaddr(char *);
301
302 #endif /* _WEBALIZER_H */