📄 output.c
字号:
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 + -