📄 output.c
字号:
sprintf(buffer,"%s %d",l_month[cur_month-1],cur_year); write_html_head(buffer, out_fp); month_links(); month_total_table(); if (daily_graph || daily_stats) /* Daily stuff */ { fprintf(out_fp,"<A NAME=\"DAYSTATS\"></A>\n"); if (daily_graph) fprintf(out_fp,"<IMG SRC=\"%s\" ALT=\"%s\" " \ "HEIGHT=400 WIDTH=512><P>\n",png1_fname,dtitle); if (daily_stats) daily_total_table(); } if (hourly_graph || hourly_stats) /* Hourly stuff */ { fprintf(out_fp,"<A NAME=\"HOURSTATS\"></A>\n"); if (hourly_graph) fprintf(out_fp,"<IMG SRC=\"%s\" ALT=\"%s\" " \ "HEIGHT=256 WIDTH=512><P>\n",png2_fname,htitle); if (hourly_stats) hourly_total_table(); } /* Do URL related stuff here, sorting appropriately */ if ( (a_ctr=load_url_array(NULL)) ) { if ( (u_array=malloc(sizeof(UNODEPTR)*(a_ctr))) !=NULL ) { a_ctr=load_url_array(u_array); /* load up our sort array */ if (ntop_urls || dump_urls) { qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmph); if (ntop_urls) top_urls_table(0); /* Top URL's (by hits) */ if (dump_urls) dump_all_urls(); /* Dump URLS tab file */ } if (ntop_urlsK) /* Top URL's (by kbytes) */ {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpk); top_urls_table(1); } if (ntop_entry) /* Top Entry Pages */ {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpn); top_entry_table(0);} if (ntop_exit) /* Top Exit Pages */ {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpx); top_entry_table(1);} free(u_array); } else if (verbose) fprintf(stderr,"%s [u_array]\n",msg_nomem_tu); /* err */ } /* do hostname (sites) related stuff here, sorting appropriately... */ if ( (a_ctr=load_site_array(NULL)) ) { if ( (h_array=malloc(sizeof(HNODEPTR)*(a_ctr))) !=NULL ) { a_ctr=load_site_array(h_array); /* load up our sort array */ if (ntop_sites || dump_sites) { qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmph); if (ntop_sites) top_sites_table(0); /* Top sites table (by hits) */ if (dump_sites) dump_all_sites(); /* Dump sites tab file */ } if (ntop_sitesK) /* Top Sites table (by kbytes) */ { qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmpk); top_sites_table(1); } free(h_array); } else if (verbose) fprintf(stderr,"%s [h_array]\n",msg_nomem_ts); /* err */ } /* do referrer related stuff here, sorting appropriately... */ if ( (a_ctr=load_ref_array(NULL)) ) { if ( (r_array=malloc(sizeof(RNODEPTR)*(a_ctr))) != NULL) { a_ctr=load_ref_array(r_array); if (ntop_refs || dump_refs) { qsort(r_array,a_ctr,sizeof(RNODEPTR),qs_ref_cmph); if (ntop_refs) top_refs_table(); /* Top referrers table */ if (dump_refs) dump_all_refs(); /* Dump referrers tab file */ } free(r_array); } else if (verbose) fprintf(stderr,"%s [r_array]\n",msg_nomem_tr); /* err */ } /* do search string related stuff, sorting appropriately... */ if ( (a_ctr=load_srch_array(NULL)) ) { if ( (s_array=malloc(sizeof(SNODEPTR)*(a_ctr))) != NULL) { a_ctr=load_srch_array(s_array); if (ntop_search || dump_search) { qsort(s_array,a_ctr,sizeof(SNODEPTR),qs_srch_cmph); if (ntop_search) top_search_table(); /* top search strings table */ if (dump_search) dump_all_search(); /* dump search string tab file */ } free(s_array); } else if (verbose) fprintf(stderr,"%s [s_array]\n",msg_nomem_tsr);/* err */ } /* do ident (username) related stuff here, sorting appropriately... */ if ( (a_ctr=load_ident_array(NULL)) ) { if ( (i_array=malloc(sizeof(INODEPTR)*(a_ctr))) != NULL) { a_ctr=load_ident_array(i_array); if (ntop_users || dump_users) { qsort(i_array,a_ctr,sizeof(INODEPTR),qs_ident_cmph); if (ntop_users) top_users_table(); /* top usernames table */ if (dump_users) dump_all_users(); /* dump usernames tab file */ } free(i_array); } else if (verbose) fprintf(stderr,"%s [i_array]\n",msg_nomem_ti); /* err */ } /* do user agent related stuff here, sorting appropriately... */ if ( (a_ctr=load_agent_array(NULL)) ) { if ( (a_array=malloc(sizeof(ANODEPTR)*(a_ctr))) != NULL) { a_ctr=load_agent_array(a_array); if (ntop_agents || dump_agents) { qsort(a_array,a_ctr,sizeof(ANODEPTR),qs_agnt_cmph); if (ntop_agents) top_agents_table(); /* top user agents table */ if (dump_agents) dump_all_agents(); /* dump user agents tab file */ } free(a_array); } else if (verbose) fprintf(stderr,"%s [a_array]\n",msg_nomem_ta); /* err */ } if (ntop_ctrys ) top_ctry_table(); /* top countries table */ write_html_tail(out_fp); /* finish up the HTML document */ fclose(out_fp); /* close the file */ return (0); /* done... */}/*********************************************//* MONTH_LINKS - links to other page parts *//*********************************************/void month_links(){ fprintf(out_fp,"<SMALL>\n"); if (daily_stats || daily_graph) fprintf(out_fp,"<A HREF=\"#DAYSTATS\">[%s]</A>\n",msg_hlnk_ds); if (hourly_stats || hourly_graph) fprintf(out_fp,"<A HREF=\"#HOURSTATS\">[%s]</A>\n",msg_hlnk_hs); if (ntop_urls || ntop_urlsK) fprintf(out_fp,"<A HREF=\"#TOPURLS\">[%s]</A>\n",msg_hlnk_u); if (ntop_entry) fprintf(out_fp,"<A HREF=\"#TOPENTRY\">[%s]</A>\n",msg_hlnk_en); if (ntop_exit) fprintf(out_fp,"<A HREF=\"#TOPEXIT\">[%s]</A>\n",msg_hlnk_ex); if (ntop_sites || ntop_sitesK) fprintf(out_fp,"<A HREF=\"#TOPSITES\">[%s]</A>\n",msg_hlnk_s); if (ntop_refs && t_ref) fprintf(out_fp,"<A HREF=\"#TOPREFS\">[%s]</A>\n",msg_hlnk_r); if (ntop_search && t_ref) fprintf(out_fp,"<A HREF=\"#TOPSEARCH\">[%s]</A>\n",msg_hlnk_sr); if (ntop_users && t_user) fprintf(out_fp,"<A HREF=\"#TOPUSERS\">[%s]</A>\n",msg_hlnk_i); if (ntop_agents && t_agent) fprintf(out_fp,"<A HREF=\"#TOPAGENTS\">[%s]</A>\n",msg_hlnk_a); if (ntop_ctrys) fprintf(out_fp,"<A HREF=\"#TOPCTRYS\">[%s]</A>\n",msg_hlnk_c); fprintf(out_fp,"</SMALL>\n<P>\n");}/*********************************************//* MONTH_TOTAL_TABLE - monthly totals table *//*********************************************/void month_total_table(){ int i,days_in_month; u_long max_files=0,max_hits=0,max_visits=0,max_pages=0; double max_xfer=0.0; days_in_month=(l_day-f_day)+1; for (i=0;i<31;i++) { /* Get max/day values */ if (tm_hit[i]>max_hits) max_hits = tm_hit[i]; if (tm_file[i]>max_files) max_files = tm_file[i]; if (tm_page[i]>max_pages) max_pages = tm_page[i]; if (tm_visit[i]>max_visits) max_visits= tm_visit[i]; if (tm_xfer[i]>max_xfer) max_xfer = tm_xfer[i]; } 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 COLSPAN=3 ALIGN=center BGCOLOR=\"%s\">" \ "%s %s %d</TH></TR>\n",GREY,msg_mtot_ms,l_month[cur_month-1],cur_year); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /* Total Hits */ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_th,t_hit); /* Total Files */ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_tf,t_file); /* Total Pages */ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s %s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_h_total, msg_h_pages, t_page); /* Total Visits */ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s %s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_h_total, msg_h_visits, t_visit); /* Total XFer */ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>" \ "</FONT></TD></TR>\n",msg_mtot_tx,t_xfer/1024); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /**********************************************/ /* Unique Sites */ fprintf(out_fp,"<TR>" \ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_us,t_site); /* Unique URL's */ fprintf(out_fp,"<TR>" \ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_uu,t_url); /* Unique Referrers */ if (t_ref != 0) fprintf(out_fp,"<TR>" \ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_ur,t_ref); /* Unique Usernames */ if (t_user != 0) fprintf(out_fp,"<TR>" \ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_ui,t_user); /* Unique Agents */ if (t_agent != 0) fprintf(out_fp,"<TR>" \ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_ua,t_agent); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /**********************************************/ /* Hourly/Daily avg/max totals */ fprintf(out_fp,"<TR>" \ "<TH WIDTH=380 BGCOLOR=\"%s\"><FONT SIZE=-1 COLOR=\"%s\">.</FONT></TH>\n"\ "<TH WIDTH=65 BGCOLOR=\"%s\" ALIGN=right>" \ "<FONT SIZE=-1>%s </FONT></TH>\n" \ "<TH WIDTH=65 BGCOLOR=\"%s\" ALIGN=right>" \ "<FONT SIZE=-1>%s </FONT></TH></TR>\n", GREY,GREY,GREY,msg_h_avg,GREY,msg_h_max); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /* Max/Avg Hits per Hour */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_mhh, t_hit/(24*days_in_month),mh_hit); /* Max/Avg Hits per Day */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_mhd, t_hit/days_in_month, max_hits); /* Max/Avg Files per Day */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_mfd, t_file/days_in_month,max_files); /* Max/Avg Pages per Day */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_mpd, t_page/days_in_month,max_pages); /* Max/Avg Visits per Day */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%lu</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%lu</B>" \ "</FONT></TD></TR>\n",msg_mtot_mvd, t_visit/days_in_month,max_visits); /* Max/Avg KBytes per Day */ fprintf(out_fp,"<TR>" \ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>" \ "</FONT></TD></TR>\n",msg_mtot_mkd, (t_xfer/1024)/days_in_month,max_xfer/1024); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /**********************************************/ /* response code totals */ fprintf(out_fp,"<TR><TH COLSPAN=3 ALIGN=center BGCOLOR=\"%s\">\n" \ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",GREY,msg_mtot_rc); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); for (i=0;i<TOTAL_RC;i++) { if (response[i].count != 0) fprintf(out_fp,"<TR><TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%lu</B>" \ "</FONT></TD></TR>\n", response[i].desc, response[i].count); } fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /**********************************************/ fprintf(out_fp,"</TABLE>\n"); fprintf(out_fp,"<P>\n");}/*********************************************//* DAILY_TOTAL_TABLE - daily totals *//*********************************************/void daily_total_table(){ int i; /* Daily stats */ fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n"); fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); /* Daily statistics for ... */ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=13 ALIGN=center>" \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -