📄 generate.c
字号:
break; } case M_REPORT_BOOKMARKS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_bookmarks, mhash_count(staweb->bookmarks),_("Bookmarked Pages")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Bookmarked Page") ); show_mhash(ext_conf, f,staweb->bookmarks,conf->max_bookmarks,HIGHLIGHT| INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Bookmarked Page") ); table_end(f); break; } case M_REPORT_BROKEN_LINKS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_broken_links, mhash_count(staweb->status_missing_file),_("Missing File / Broken Link")), 6); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH><TH>%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Broken Link"), _("last referrering URL"), _("Last Hit") ); show_mhash(ext_conf, f,staweb->status_missing_file,conf->max_broken_links,GROUPING| INDEX | BROKEN_LINK | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH><TH>%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Broken Link"), _("last referrering URL"), _("Last Hit") ); table_end(f); break; } case M_REPORT_INTERNAL_ERROR: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_internal_errors, mhash_count(staweb->status_internal_error),_("Internal Errors")), 5); show_mhash(ext_conf, f,staweb->status_internal_error,conf->max_internal_errors, INDEX | BROKEN_LINK); table_end(f); break; } case M_REPORT_SEARCH_STRINGS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_search_strings, mhash_count(staweb->searchstring),_("SearchStrings")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Search String") ); show_mhash(ext_conf, f,staweb->searchstring, conf->max_search_strings, INDEX | PERCENT | GROUPING); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Search String") ); table_end(f); break; } case M_REPORT_SEARCH_ENGINE: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_search_engines, mhash_count(staweb->searchsite),_("SearchEngines")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Search Engine") ); show_mhash(ext_conf, f,staweb->searchsite, conf->max_search_engines, HIGHLIGHT| GROUPING |INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Search Engine") ); table_end(f); break; } case M_REPORT_COUNTRIES: { char *ref; write_report_header(ext_conf, f, sep_sub, sep_report); if (conf->show_country_graph) { ref = create_pic_countries(ext_conf, state, subpath); if (ref && strlen(ref)) { fprintf(f, "%s", ref); } } table_start(f, table_header(conf->max_countries, mhash_count(staweb->country_hash),_("Countries")), 5); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), conf->col_visits, _("Visits"), _("Country") ); show_mhash(ext_conf, f, staweb->country_hash, conf->max_countries, VISITS | INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), conf->col_visits, _("Visits"), _("Country") ); table_end(f); break; } case M_REPORT_SUMMARY: { write_report_header(ext_conf, f, sep_sub, sep_report); sumdat.files = maxdat.files = 0; sumdat.xfersize = maxdat.xfersize = 0; sumdat.hits = maxdat.hits = 0; sumdat.hosts = maxdat.hosts = 0; sumdat.pages = maxdat.pages = 0; sumdat.visits = maxdat.visits = 0; /* count the values */ for ( i = 0; i < 31; i++) { if (staweb->days[i].hits) last_day = i+1; sumdat.files += staweb->days[i].files; sumdat.xfersize += staweb->days[i].xfersize; sumdat.hits += staweb->days[i].hits; sumdat.hosts += staweb->days[i].hosts; sumdat.pages += staweb->days[i].pages; sumdat.visits += staweb->days[i].visits; if (maxdat.files < staweb->days[i].files) maxdat.files = staweb->days[i].files; if (maxdat.hits < staweb->days[i].hits) maxdat.hits = staweb->days[i].hits; if (maxdat.hosts < staweb->days[i].hosts) maxdat.hosts = staweb->days[i].hosts; if (maxdat.pages < staweb->days[i].pages) maxdat.pages = staweb->days[i].pages; if (maxdat.visits < staweb->days[i].visits) maxdat.visits = staweb->days[i].visits; if (maxdat.xfersize < staweb->days[i].xfersize) maxdat.xfersize = staweb->days[i].xfersize; } maxdat.hosts = sumdat.hosts = mhash_count(staweb->host_hash); table_start(f, _("Summary"), 3); /* Totals */ fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%li</TD></TR>\n", _("Total Hits"), sumdat.hits); fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%li</TD></TR>\n", _("Total Files"), sumdat.files); fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%li</TD></TR>\n", _("Total Pages"), sumdat.pages); fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%li</TD></TR>\n", _("Total Hosts"), sumdat.hosts); fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%li</TD></TR>\n", _("Total Visits"), sumdat.visits); fprintf(f,"<TR><TD>%s</TD><TD colspan=2 align=right>%.0f</TD></TR>\n", _("Transfered Bytes"), sumdat.xfersize / 1024); fprintf(f,"<TR><TH> </TH><TH>%s</TH><TH>%s</TH></TR>\n", _("avg"), _("max")); fprintf(f,"<TR><TD>%s</TD><TD align=right>%li</TD><TD align=right>%li</TD></TR>\n", _("Hits per Day"), sumdat.hits / last_day, maxdat.hits); fprintf(f,"<TR><TD>%s</TD><TD align=right>%li</TD><TD align=right>%li</TD></TR>\n", _("Files per Day"), sumdat.files / last_day, maxdat.files); fprintf(f,"<TR><TD>%s</TD><TD align=right>%li</TD><TD align=right>%li</TD></TR>\n", _("Pages per Day"), sumdat.pages / last_day, maxdat.pages); fprintf(f,"<TR><TD>%s</TD><TD align=right>%li</TD><TD align=right>%li</TD></TR>\n", _("Hosts per Day"), sumdat.hosts / last_day, maxdat.hosts); fprintf(f,"<TR><TD>%s</TD><TD align=right>%li</TD><TD align=right>%li</TD></TR>\n", _("Visits per Day"), sumdat.visits / last_day, maxdat.visits); fprintf(f,"<TR><TD>%s</TD><TD align=right>%.0f</TD><TD align=right>%.0f</TD></TR>\n", _("Tranfered Kbytes per Day"), (sumdat.xfersize / 1024) / last_day, maxdat.xfersize / 1024); if (sumdat.visits) { d = (staweb->allvisittime / sumdat.visits); min = d / 60; sec = (int)floor(d) % 60; } else { min = 0; sec = 0; } fprintf(f,"<TR><TD>%s</TD><TD align=right>%d:%02d %s</TD><TD align=right>%s</TD></TR>\n", _("Time per visit"), min, sec, _("min"), "---"); if (sumdat.visits) { d = (double)staweb->allvisitlength / sumdat.visits; } else { d = 0; } fprintf(f,"<TR><TD>%s</TD><TD align=right>%.2f</TD><TD align=right>%s</TD></TR>\n", _("Pages per visit"), d, "---"); s_200 = mhash_get_value(staweb->status_hash, "200"); s_304 = mhash_get_value(staweb->status_hash, "304"); d = ((double)s_304/(s_200+s_304)) * 100; fprintf(f,"<TR><TD>%s</TD><TD align=right>%.2f%%</TD><TD align=right>%s</TD></TR>\n", _("Cache Hit ratio"), d, "---"); table_end(f); break; } case M_REPORT_DAILY: { char *ref; write_report_header(ext_conf, f, sep_sub, sep_report); if (conf->show_daily_graph) { ref = create_pic_31_day(ext_conf, state, subpath); if (ref && strlen(ref)) { fprintf(f, "%s", ref); } } table_start(f, _("Daily Statistics"), 6); fprintf(f,"<TR><TH>%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH></TR>\n", _("Day"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes") ); for ( i = 0; i < last_day; i++) { fprintf(f,"<TR><TD>%d</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%.0f</TD></TR>\n", i+1, staweb->days[i].hits, staweb->days[i].files, staweb->days[i].pages, staweb->days[i].visits, staweb->days[i].xfersize / 1024 ); } fprintf(f,"<TR><TH>%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH></TR>\n", _("Day"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes") ); table_end(f); break; } case M_REPORT_HOURLY: { char *ref; write_report_header(ext_conf, f, sep_sub, sep_report); if (conf->show_hourly_graph) { ref = create_pic_24_hour(ext_conf, state, subpath); if (ref && strlen(ref)) { fprintf(f, "%s", ref); } } table_start(f, _("Hourly Statistics"), 6); fprintf(f,"<TR><TH>%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH></TR>\n", _("Hour"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes") ); for ( i = 0; i < 24; i++) { fprintf(f,"<TR><TD>%d</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%li</TD><TD align=right>%.0f</TD></TR>\n", i, staweb->hours[i].hits, staweb->hours[i].files, staweb->hours[i].pages, staweb->hours[i].visits, staweb->hours[i].xfersize / 1024 ); } fprintf(f,"<TR><TH>%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH></TR>\n", _("Hour"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes") ); table_end(f); break; } default: break; } l = l->next; } mlist_free(menu_items); if (f) { file_end(f,ext_conf); fclose (f); } return 0;}int mplugins_output_generate_history_output(mconfig *ext_conf, mlist *history, char *subpath) { mlist *l = history; FILE *f; char filename[255]; char *ref; config_output *conf = ext_conf->output; sprintf(filename, "%s%s%s/index.html", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath ? "/" : "", subpath ? subpath : "" ); if (!(f = fopen(filename, "w"))) { return -1; } file_start_index(f,ext_conf,0); if (conf->show_monthly_graph) { ref = create_pic_12_month(ext_conf, history, subpath); if (ref && strlen(ref)) { fprintf(f, "%s", ref); } } table_start(f, _("History"), -11); fprintf(f,"<TR><TH> </TH><TH colspan=5>%s</TH><TH colspan=5>%s</TH></TR>", _("Average/day"), _("Totals") ); fprintf(f,"<TR><TH>%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH><TH bgcolor=\"%s\">%s</TH>" \ "<TH bgcolor=\"%s\">%s</TH>" \ "</TR>\n", _("Month"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes"), conf->col_hits, _("Hits"), conf->col_files, _("Files"), conf->col_pages, _("Pages"), conf->col_visits, _("Visits"), conf->col_xfer, _("KBytes") ); /* go to the last element */ while (l->next) l = l->next; while (l) { data_History *data = ((data_History *)l->data); if (!data) break; if (data->count != 0) { fprintf(f,"<TR><TD class=\"centerb\"><A HREF=\"%s\">%s %04i</A></TD>" \ "<TD class=\"tinyr\">%li</TD><TD class=\"tinyr\">%li</TD>" \ "<TD class=\"tinyr\">%li</TD><TD class=\"tinyr\">%li</TD>" \ "<TD class=\"tinyr\">%.0f</TD>" \ "<TD class=\"tinyr\">%li</TD><TD class=\"tinyr\">%li</TD>" \ "<TD class=\"tinyr\">%li</TD><TD class=\"tinyr\">%li</TD>" \ "<TD class=\"tinyr\">%.0f</TD>" \ "</TR>\n", get_url(ext_conf, data->year, data->month, "000", "000"), get_month_string(data->month,1), data->year, data->hits / data->count, data->files / data->count, data->pages/ data->count, data->visits/ data->count, data->xfersize / 1024 / data->count, data->hits, data->files, data->pages, data->visits, data->xfersize / 1024 ); } else { fprintf(stderr, "count == 0, is this ok ?? splitby without an entry ??\n"); } l = l->prev; } table_end(f); file_end_index(f,ext_conf); fclose(f); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -