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 + -
显示快捷键?