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) )
12 #define MAX(a,b) ((a) > (b) ? (a) : (b))
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 */
32 #define SLOP_VAL 3600 /* out of sequence slop (seconds) */
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 */
45 /* Response code defines as per draft ietf HTTP/1.1 rev 6 */
46 #define RC_CONTINUE 100
47 #define RC_SWITCHPROTO 101
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
60 #define RC_USEPROXY 305
61 #define RC_MOVEDTEMPORARILY 307
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
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
87 /* Index defines for RC codes */
88 #define IDX_UNDEFINED 0
89 #define IDX_CONTINUE 1
90 #define IDX_SWITCHPROTO 2
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
103 #define IDX_USEPROXY 15
104 #define IDX_MOVEDTEMPORARILY 16
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
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
132 #include <netinet/in.h> /* needed for in_addr structure definition */
134 #define INADDR_NONE 0xFFFFFFFF
135 #endif /* INADDR_NONE */
138 /* Response code structure */
139 struct response_code
{ char *desc
; /* code description */
140 u_int64_t count
; }; /* hit counter */
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 */
149 typedef struct country_code
*CLISTPTR
;
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) */
162 extern struct log_struct log_rec
;
164 extern char *version
; /* program version */
165 extern char *editlvl
; /* edit level */
166 extern char *moddate
; /* modification date */
167 extern char *copyright
;
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 */
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 */
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 */
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 */
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 */
250 extern int cur_year
,cur_month
, /* year/month/day/hour */
251 cur_day
, cur_hour
, /* tracking variables */
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
;
259 extern double tm_xfer
[31]; /* daily transfer totals */
261 extern u_int64_t tm_hit
[31], tm_file
[31], /* daily total arrays */
262 tm_site
[31],tm_page
[31],
265 extern u_int64_t dt_site
; /* daily 'sites' total */
267 extern u_int64_t ht_hit
,mh_hit
; /* hourly hits totals */
269 extern u_int64_t th_hit
[24], th_file
[24], /* hourly total arrays */
272 extern double th_xfer
[24]; /* hourly xfer array */
274 extern int f_day
,l_day
; /* first/last day vars */
275 extern int gz_log
; /* flag for zipped log */
277 extern CLISTPTR
*top_ctrys
; /* Top countries table */
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 */
291 /* define our externally visable functions */
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 *);
302 #endif /* _WEBALIZER_H */