webalizer.c
来自「统计日志的工具」· C语言 代码 · 共 1,572 行 · 第 1/5 页
C
1,572 行
cur_day=rec_day; cur_hour=rec_hour; cur_min=rec_min; cur_sec=rec_sec; f_day=rec_day; } /* adjust last day processed if different */ if (rec_day > l_day) l_day = rec_day; /* update min/sec stuff */ if (cur_sec != rec_sec) cur_sec = rec_sec; if (cur_min != rec_min) cur_min = rec_min; /* check for hour change */ if (cur_hour != rec_hour) { /* if yes, init hourly stuff */ if (ht_hit > mh_hit) mh_hit = ht_hit; ht_hit = 0; cur_hour = rec_hour; } /* check for day change */ if (cur_day != rec_day) { /* if yes, init daily stuff */ tm_site[cur_day-1]=dt_site; dt_site=0; tm_visit[cur_day-1]=tot_visit(sd_htab); del_hlist(sd_htab); cur_day = rec_day; } /* check for month change */ if (cur_month != rec_month) { /* if yes, do monthly stuff */ t_visit=tot_visit(sm_htab); month_update_exit(req_tstamp); /* process exit pages */ write_month_html(); /* generate HTML for month */ clear_month(); cur_month = rec_month; /* update our flags */ cur_year = rec_year; f_day=l_day=rec_day; }#ifdef USE_DNS /* Resolve IP address if needed */ if (dns_db) { if (inet_addr(log_rec.hostname) != INADDR_NONE) resolve_dns(&log_rec); }#endif /* lowercase hostname */ cp1 = log_rec.hostname; while (*cp1 != '\0') { if ( (*cp1>='A') && (*cp1<='Z') ) *cp1 += 'a'-'A'; if ( (isalnum((int)*cp1))||(*cp1=='.')||(*cp1=='-') ) cp1++; else *cp1='\0'; } /* Catch blank hostnames here */ if (log_rec.hostname[0]=='\0') strncpy(log_rec.hostname,"Unknown",8); /* Ignore/Include check */ if ( (isinlist(include_sites,log_rec.hostname)==NULL) && (isinlist(include_urls,log_rec.url)==NULL) && (isinlist(include_refs,log_rec.refer)==NULL) && (isinlist(include_agents,log_rec.agent)==NULL) && (isinlist(include_users,log_rec.ident)==NULL) ) { if (isinlist(ignored_sites,log_rec.hostname)!=NULL) { total_ignore++; continue; } if (isinlist(ignored_urls,log_rec.url)!=NULL) { total_ignore++; continue; } if (isinlist(ignored_agents,log_rec.agent)!=NULL) { total_ignore++; continue; } if (isinlist(ignored_refs,log_rec.refer)!=NULL) { total_ignore++; continue; } if (isinlist(ignored_users,log_rec.ident)!=NULL) { total_ignore++; continue; } } /* Bump response code totals */ switch (log_rec.resp_code) { case RC_CONTINUE: i=IDX_CONTINUE; break; case RC_SWITCHPROTO: i=IDX_SWITCHPROTO; break; case RC_OK: i=IDX_OK; break; case RC_CREATED: i=IDX_CREATED; break; case RC_ACCEPTED: i=IDX_ACCEPTED; break; case RC_NONAUTHINFO: i=IDX_NONAUTHINFO; break; case RC_NOCONTENT: i=IDX_NOCONTENT; break; case RC_RESETCONTENT: i=IDX_RESETCONTENT; break; case RC_PARTIALCONTENT: i=IDX_PARTIALCONTENT; break; case RC_MULTIPLECHOICES: i=IDX_MULTIPLECHOICES; break; case RC_MOVEDPERM: i=IDX_MOVEDPERM; break; case RC_MOVEDTEMP: i=IDX_MOVEDTEMP; break; case RC_SEEOTHER: i=IDX_SEEOTHER; break; case RC_NOMOD: i=IDX_NOMOD; break; case RC_USEPROXY: i=IDX_USEPROXY; break; case RC_MOVEDTEMPORARILY: i=IDX_MOVEDTEMPORARILY; break; case RC_BAD: i=IDX_BAD; break; case RC_UNAUTH: i=IDX_UNAUTH; break; case RC_PAYMENTREQ: i=IDX_PAYMENTREQ; break; case RC_FORBIDDEN: i=IDX_FORBIDDEN; break; case RC_NOTFOUND: i=IDX_NOTFOUND; break; case RC_METHODNOTALLOWED: i=IDX_METHODNOTALLOWED; break; case RC_NOTACCEPTABLE: i=IDX_NOTACCEPTABLE; break; case RC_PROXYAUTHREQ: i=IDX_PROXYAUTHREQ; break; case RC_TIMEOUT: i=IDX_TIMEOUT; break; case RC_CONFLICT: i=IDX_CONFLICT; break; case RC_GONE: i=IDX_GONE; break; case RC_LENGTHREQ: i=IDX_LENGTHREQ; break; case RC_PREFAILED: i=IDX_PREFAILED; break; case RC_REQENTTOOLARGE: i=IDX_REQENTTOOLARGE; break; case RC_REQURITOOLARGE: i=IDX_REQURITOOLARGE; break; case RC_UNSUPMEDIATYPE: i=IDX_UNSUPMEDIATYPE; break; case RC_RNGNOTSATISFIABLE:i=IDX_RNGNOTSATISFIABLE;break; case RC_EXPECTATIONFAILED:i=IDX_EXPECTATIONFAILED;break; case RC_SERVERERR: i=IDX_SERVERERR; break; case RC_NOTIMPLEMENTED: i=IDX_NOTIMPLEMENTED; break; case RC_BADGATEWAY: i=IDX_BADGATEWAY; break; case RC_UNAVAIL: i=IDX_UNAVAIL; break; case RC_GATEWAYTIMEOUT: i=IDX_GATEWAYTIMEOUT; break; case RC_BADHTTPVER: i=IDX_BADHTTPVER; break; default: i=IDX_UNDEFINED; break; } response[i].count++; /* now save in the various hash tables... */ if (log_rec.resp_code==RC_OK || log_rec.resp_code==RC_PARTIALCONTENT) i=1; else i=0; /* URL/ident hash table (only if valid response code) */ if ((log_rec.resp_code==RC_OK)||(log_rec.resp_code==RC_NOMOD)|| (log_rec.resp_code==RC_PARTIALCONTENT)) { /* URL hash table */ if (put_unode(log_rec.url,OBJ_REG,(u_long)1, log_rec.xfer_size,&t_url,(u_long)0,(u_long)0,um_htab)) { if (verbose) /* Error adding URL node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_u, log_rec.url); } /* ident (username) hash table */ if (put_inode(log_rec.ident,OBJ_REG, 1,(u_long)i,log_rec.xfer_size,&t_user, 0,rec_tstamp,im_htab)) { if (verbose) /* Error adding ident node, skipping .... */ fprintf(stderr,"%s %s\n", msg_nomem_i, log_rec.ident); } } /* referrer hash table */ if (ntop_refs) { if (log_rec.refer[0]!='\0') if (put_rnode(log_rec.refer,OBJ_REG,(u_long)1,&t_ref,rm_htab)) { if (verbose) fprintf(stderr,"%s %s\n", msg_nomem_r, log_rec.refer); } } /* hostname (site) hash table - daily */ if (put_hnode(log_rec.hostname,OBJ_REG, 1,(u_long)i,log_rec.xfer_size,&dt_site, 0,rec_tstamp,"",sd_htab)) { if (verbose) /* Error adding host node (daily), skipping .... */ fprintf(stderr,"%s %s\n",msg_nomem_dh, log_rec.hostname); } /* hostname (site) hash table - monthly */ if (put_hnode(log_rec.hostname,OBJ_REG, 1,(u_long)i,log_rec.xfer_size,&t_site, 0,rec_tstamp,"",sm_htab)) { if (verbose) /* Error adding host node (monthly), skipping .... */ fprintf(stderr,"%s %s\n", msg_nomem_mh, log_rec.hostname); } /* user agent hash table */ if (ntop_agents) { if (log_rec.agent[0]!='\0') if (put_anode(log_rec.agent,OBJ_REG,(u_long)1,&t_agent,am_htab)) { if (verbose) fprintf(stderr,"%s %s\n", msg_nomem_a, log_rec.agent); } } /* bump monthly/daily/hourly totals */ t_hit++; ht_hit++; /* daily/hourly hits */ t_xfer += log_rec.xfer_size; /* total xfer size */ tm_xfer[rec_day-1] += log_rec.xfer_size; /* daily xfer total */ tm_hit[rec_day-1]++; /* daily hits total */ th_xfer[rec_hour] += log_rec.xfer_size; /* hourly xfer total */ th_hit[rec_hour]++; /* hourly hits total */ /* if RC_OK, increase file counters */ if (log_rec.resp_code == RC_OK) { t_file++; tm_file[rec_day-1]++; th_file[rec_hour]++; } /* Pages (pageview) calculation */ if (ispage(log_rec.url)) { t_page++; tm_page[rec_day-1]++; th_page[rec_hour]++; /* do search string stuff if needed */ if (ntop_search) srch_string(log_rec.srchstr); } /*********************************************/ /* RECORD PROCESSED - DO GROUPS HERE */ /*********************************************/ /* URL Grouping */ if ( (cp1=isinglist(group_urls,log_rec.url))!=NULL) { if (put_unode(cp1,OBJ_GRP,(u_long)1,log_rec.xfer_size, &ul_bogus,(u_long)0,(u_long)0,um_htab)) { if (verbose) /* Error adding URL node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_u, cp1); } } /* Site Grouping */ if ( (cp1=isinglist(group_sites,log_rec.hostname))!=NULL) { if (put_hnode(cp1,OBJ_GRP,1,(u_long)(log_rec.resp_code==RC_OK)?1:0, log_rec.xfer_size,&ul_bogus, 0,rec_tstamp,"",sm_htab)) { if (verbose) /* Error adding Site node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1); } } else { /* Domain Grouping */ if (group_domains) { cp1 = get_domain(log_rec.hostname); if (cp1 != NULL) { if (put_hnode(cp1,OBJ_GRP,1, (u_long)(log_rec.resp_code==RC_OK)?1:0, log_rec.xfer_size,&ul_bogus, 0,rec_tstamp,"",sm_htab)) { if (verbose) /* Error adding Site node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1); } } } } /* Referrer Grouping */ if ( (cp1=isinglist(group_refs,log_rec.refer))!=NULL) { if (put_rnode(cp1,OBJ_GRP,(u_long)1,&ul_bogus,rm_htab)) { if (verbose) /* Error adding Referrer node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_r, cp1); } } /* User Agent Grouping */ if ( (cp1=isinglist(group_agents,log_rec.agent))!=NULL) { if (put_anode(cp1,OBJ_GRP,(u_long)1,&ul_bogus,am_htab)) { if (verbose) /* Error adding User Agent node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_a, cp1); } } /* Ident (username) Grouping */ if ( (cp1=isinglist(group_users,log_rec.ident))!=NULL) { if (put_inode(cp1,OBJ_GRP,1,(u_long)(log_rec.resp_code==RC_OK)?1:0, log_rec.xfer_size,&ul_bogus, 0,rec_tstamp,im_htab)) { if (verbose) /* Error adding Username node, skipping ... */ fprintf(stderr,"%s %s\n", msg_nomem_i, cp1); } } } /*********************************************/ /* BAD RECORD */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?