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 256 /* 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 */ 303