⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 output.c

📁 统计日志的工具
💻 C
📖 第 1 页 / 共 5 页
字号:
            hptr->string);         h_reg--;      }   }   fprintf(out_fp,"</PRE></FONT>\n");   write_html_tail(out_fp);   fclose(out_fp);   return 1;}/*********************************************//* TOP_URLS_TABLE - generate top n table     *//*********************************************/void top_urls_table(int flag){   u_long cnt=0,u_reg=0,u_grp=0,u_hid=0, tot_num;   int i;   UNODEPTR uptr, *pointer;   cnt=a_ctr; pointer=u_array;   while (cnt--)   {      /* calculate totals */      switch ( (int)((UNODEPTR)(*pointer)->flag) )      {         case OBJ_REG:  u_reg++;  break;         case OBJ_GRP:  u_grp++;  break;         case OBJ_HIDE: u_hid++;  break;      }      pointer++;   }   if ( (tot_num=u_reg+u_grp)==0 ) return;              /* split if none    */   i=(flag)?ntop_urlsK:ntop_urls;                       /* Hits or KBytes?? */   if (tot_num > i) tot_num = i;                        /* get max to do... */   if ((!flag) || (flag&&!ntop_urls))                   /* now do <A> tag   */      fprintf(out_fp,"<A NAME=\"TOPURLS\"></A>\n");   fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>"  \           "%s %lu %s %lu %s %s %s</TH></TR>\n",           GREY,msg_top_top,tot_num,msg_top_of,           t_url,msg_top_u,msg_h_by,msg_h_xfer);   else fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>"   \           "%s %lu %s %lu %s</TH></TR>\n",           GREY,msg_top_top,tot_num,msg_top_of,t_url,msg_top_u);   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>"                  \                  "<FONT SIZE=\"-1\">#</FONT></TH>\n",GREY);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",                  DKGREEN,msg_h_hits);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",                  RED,msg_h_xfer);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                      \                  "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",                  CYAN,msg_h_url);   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   pointer=u_array; i=0;   while (tot_num)   {      uptr=*pointer++;             /* point to the URL node */      if (uptr->flag != OBJ_HIDE)      {         /* shade grouping? */         if (shade_groups && (uptr->flag==OBJ_GRP))            fprintf(out_fp,"<TR BGCOLOR=\"%s\">\n", GRPCOLOR);         else fprintf(out_fp,"<TR>\n");         fprintf(out_fp,            "<TD ALIGN=center><FONT SIZE=\"-1\"><B>%d</B></FONT></TD>\n" \            "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \            "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \            "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"\            "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \            "<TD ALIGN=left NOWRAP><FONT SIZE=\"-1\">",            i+1,uptr->count,            (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,            uptr->xfer/1024,            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0);         if (uptr->flag==OBJ_GRP)         {            if (hlite_groups)               fprintf(out_fp,"<STRONG>%s</STRONG></FONT></TD></TR>\n",                uptr->string);            else fprintf(out_fp,"%s</FONT></TD></TR>\n",uptr->string);         }         else 	 {            /* check for a service prefix (ie: http://) */            if (strstr(uptr->string,"://")!=NULL)               fprintf(out_fp,"<A HREF=\"%s\">%s</A></FONT></TD></TR>\n",                 uptr->string,uptr->string);	    else            {               if (log_type == LOG_FTP) /* FTP log? */                   fprintf(out_fp,"%s</FONT></TD></TR>\n",uptr->string);               else               {             /* Web log  */                  if (use_https)                     /* secure server mode, use https:// */                     fprintf(out_fp,                     "<A HREF=\"https://%s%s\">%s</A></FONT></TD></TR>\n",                      hname,uptr->string,uptr->string);                   else                      /* otherwise use standard 'http://' */                      fprintf(out_fp,                      "<A HREF=\"http://%s%s\">%s</A></FONT></TD></TR>\n",                      hname,uptr->string,uptr->string);               }            }	 }         tot_num--;         i++;      }   }   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   if ((!flag) || (flag&&!ntop_urls))   {      if ( (all_urls) && ((u_reg+u_grp)>ntop_urls) )      {         if (all_urls_page(u_reg, u_grp))         {            fprintf(out_fp,"<TR BGCOLOR=\"%s\">",GRPCOLOR);            fprintf(out_fp,"<TD COLSPAN=6 ALIGN=\"center\">\n");            fprintf(out_fp,"<FONT SIZE=\"-1\">");            fprintf(out_fp,"<A HREF=\"./url_%04d%02d.%s\">",                    cur_year,cur_month,html_ext);            fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_urls);            if (flag)   /* do we need to sort first? */               qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmph);         }      }   }   fprintf(out_fp,"</TABLE>\n<P>\n");}/*********************************************//* ALL_URLS_PAGE - HTML page of all urls     *//*********************************************/int all_urls_page(u_long u_reg, u_long u_grp){   UNODEPTR uptr, *pointer;   char     url_fname[256], buffer[256];   FILE     *out_fp;   int      i=(u_grp)?1:0;   /* generate file name */   sprintf(url_fname,"url_%04d%02d.%s",cur_year,cur_month,html_ext);   /* open file */   if ( (out_fp=open_out_file(url_fname))==NULL ) return 0;   sprintf(buffer,"%s %d - %s",l_month[cur_month-1],cur_year,msg_h_url);   write_html_head(buffer, out_fp);   fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");   fprintf(out_fp," %12s      %12s      %s\n",           msg_h_hits,msg_h_xfer,msg_h_url);   fprintf(out_fp,"----------------  ----------------  " \                  "--------------------\n\n");   /* do groups first (if any) */   pointer=u_array;   while (u_grp)   {      uptr=*pointer++;      if (uptr->flag == OBJ_GRP)      {         fprintf(out_fp,"%-8lu %6.02f%%  %8.0f %6.02f%%  %s\n",            uptr->count,            (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,            uptr->xfer/1024,            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,            uptr->string);         u_grp--;      }   }   if (i) fprintf(out_fp,"\n");   /* now do invididual sites (if any) */   pointer=u_array;   while (u_reg)   {      uptr=*pointer++;      if (uptr->flag == OBJ_REG)      {         fprintf(out_fp,"%-8lu %6.02f%%  %8.0f %6.02f%%  %s\n",            uptr->count,            (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,            uptr->xfer/1024,            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,            uptr->string);         u_reg--;      }   }   fprintf(out_fp,"</PRE></FONT>\n");   write_html_tail(out_fp);   fclose(out_fp);   return 1;}/*********************************************//* TOP_ENTRY_TABLE - top n entry/exit urls   *//*********************************************/void top_entry_table(int flag){   u_long cnt=0, u_entry=0, u_exit=0, tot_num;   u_long t_entry=0, t_exit=0;   int i;   UNODEPTR uptr, *pointer;   cnt=a_ctr; pointer=u_array;   while (cnt--)   {      if ( (int)((UNODEPTR)(*pointer)->flag) == OBJ_REG )      {         if ( (u_long)((UNODEPTR)(*pointer)->entry) )            {  u_entry++; t_entry+=(u_long)((UNODEPTR)(*pointer)->entry); }         if ( (u_long)((UNODEPTR)(*pointer)->exit)  )            { u_exit++;   t_exit +=(u_long)((UNODEPTR)(*pointer)->exit);  }      }      pointer++;   }   /* calculate how many we have */   tot_num=(flag)?u_exit:u_entry;   if (flag) { if (tot_num > ntop_exit ) tot_num=ntop_exit;  }   else      { if (tot_num > ntop_entry) tot_num=ntop_entry; }   /* return if none to do */   if (!tot_num) return;   if (flag) fprintf(out_fp,"<A NAME=\"TOPEXIT\"></A>\n"); /* do anchor tag */   else      fprintf(out_fp,"<A NAME=\"TOPENTRY\"></A>\n");   fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>"        \           "%s %lu %s %lu %s</TH></TR>\n",           GREY,msg_top_top,tot_num,msg_top_of,           (flag)?u_exit:u_entry,(flag)?msg_top_ex:msg_top_en);   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>"                  \                  "<FONT SIZE=\"-1\">#</FONT></TH>\n",                  GREY);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",                  DKGREEN,msg_h_hits);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",                  YELLOW,msg_h_visits);   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                      \                  "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",                  CYAN,msg_h_url);   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   pointer=u_array; i=0;   while (tot_num)   {      uptr=*pointer++;      if (uptr->flag != OBJ_HIDE)      {         fprintf(out_fp,"<TR>\n");         fprintf(out_fp,             "<TD ALIGN=center><FONT SIZE=\"-1\"><B>%d</B></FONT></TD>\n" \             "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \             "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \             "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \             "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \             "<TD ALIGN=left NOWRAP><FONT SIZE=\"-1\">",             i+1,uptr->count,             (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,             (flag)?uptr->exit:uptr->entry,             (flag)?((t_exit==0)?0:((float)uptr->exit/t_exit)*100.0)                   :((t_entry==0)?0:((float)uptr->entry/t_entry)*100.0));         /* check for a service prefix (ie: http://) */         if (strstr(uptr->string,"://")!=NULL)          fprintf(out_fp,             "<A HREF=\"%s\">%s</A></FONT></TD></TR>\n",              uptr->string,uptr->string);	 else         {            if (use_https)            /* secure server mode, use https:// */             fprintf(out_fp,                "<A HREF=\"https://%s%s\">%s</A></FONT></TD></TR>\n",                 hname,uptr->string,uptr->string);            else            /* otherwise use standard 'http://' */             fprintf(out_fp,                "<A HREF=\"http://%s%s\">%s</A></FONT></TD></TR>\n",                 hname,uptr->string,uptr->string);	 }         tot_num--;         i++;      }   }   fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");   fprintf(out_fp,"</TABLE>\n<P>\n");}/*********************************************//* TOP_REFS_TABLE - generate top n table     *//*********************************************/void top_refs_table(){   u_long cnt=0, r_reg=0, r_grp=0, r_hid=0, tot_num;   int i;   RNODEPTR rptr, *pointer;   if (t_ref==0) return;        /* return if none to process */   cnt=a_ctr; pointer=r_array;   while(cnt--)   {      /* calculate totals */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -