📄 generate.c
字号:
char filename[255]; int f; const char *def_css = "BODY {background: #eeeeee; }\n""TH { font-family: arial,helvetica; font-size: 10pt; color: black; }\n""TD { font-family: arial,helvetica; font-size: 10pt; color: black; background: #FFFFFF;}\n""TD.TINYR { text-align: right; font-family: arial,helvetica; font-size: 9pt; color: black; }\n""TD.CENTERB { text-align: center; font-weight: bolder; }\n""TD.RIGHTB { text-align: right; font-weight: bolder; }\n""TD.GROUPING { font-family: arial,helvetica; font-size: 10pt; color: black; background: #d0d0e0;}\n""TD.MENU { background: #eeeeff;}"; sprintf(filename, "%s%s%s/modlogan.css", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath ? "" : "/", subpath ? subpath : ""); if ((f = open (filename, O_CREAT | O_EXCL | O_WRONLY, S_IROTH | S_IRGRP | S_IWUSR | S_IRUSR)) != -1) { if (ext_conf->debug_level > 0) fprintf(stderr, "writing CSS-definition\n"); write (f, def_css, strlen(def_css)); close(f); } return 0;}int write_report_header(mconfig *ext_conf, FILE *f, char *sub, char *report) { config_output *conf = ext_conf->output; if (conf->page_style && !strcasecmp(conf->page_style, "onepage")) { fprintf(f, "<CENTER><A NAME=\"%.3s%s\"></A><A HREF=\"#000\">[top]</A></CENTER>", sub, report); } else if (conf->page_style && !strcasecmp(conf->page_style, "seppage")) { fprintf(f, "<CENTER><A NAME=\"%s\"></A></CENTER>", report); } else { fprintf(f, "<CENTER><A NAME=\"%s\"></A><A HREF=\"#000\">[top]</A></CENTER>", report); } return 0;}int mplugins_output_generate_monthly_output(mconfig *ext_conf, mstate *state, char *subpath) { unsigned int i, s_200, s_304; unsigned int min, sec; double d = 0; FILE *f = NULL; char filename[255]; data_History sumdat, maxdat; int last_day = 1; config_output *conf = ext_conf->output; mlist *menu_items = mlist_init(), *l; char last_sub[4] = { 0, 0, 0, 0 }; char last_report[4] = { 0, 0, 0, 0 }; mstate_web *staweb = NULL; if (!state->ext) return -1; if (state->ext_type != M_STATE_TYPE_WEB) return -1; staweb = state->ext; if (subpath) { sprintf(filename, "%s/%s/", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath); mkdir(filename, 0755); } write_css(ext_conf, subpath); get_menu_items(ext_conf, state, menu_items); l = menu_items; while (l) {/* sort the list */ mlist *min_l = NULL; mlist *hl = l->next; char *min = ""; char *last = ((data_StrInt *)l->data)->string; while (hl) { if (hl->data) { if ( strcmp(((data_StrInt *)hl->data)->string, min) > 0 && strcmp(((data_StrInt *)hl->data)->string, last) < 0) { min = ((data_StrInt *)hl->data)->string; min_l = hl; } } hl = hl->next; } if (min_l) { data_StrInt *d; d = l->data; l->data = min_l->data; min_l->data = d; } l = l->next; }/* write the menu */ l = menu_items; while (l) { data_StrInt *data = l->data; char *sep_main, *sep_sub, *sep_report = NULL; /* seperate menu string */ sep_main = strchr(data->string, '/'); sep_main++; sep_sub = strchr(sep_main, '/'); if (sep_sub) { sep_sub++; sep_report = strchr(sep_sub, '/'); if (sep_report) { sep_report++; } } /* open file */ if (conf->page_style && !strcasecmp(conf->page_style, "onepage")) { if (sep_main && strncmp(last_sub, sep_main, 3)) { strncpy(last_sub, sep_main, 3); sprintf(filename, "%s%s%s/m_usage_%04i%02i.html", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath ? "/" : "", subpath ? subpath : "", state->year, state->month); if (f) { file_end(f, ext_conf); fclose(f); } if (!(f = fopen(filename, "w"))) { return -1; } /* create menu */ file_start(f,ext_conf,state->timestamp); write_menu(ext_conf, state,f, menu_items, last_sub); fprintf (f, "</TD><TD>"); } } else if (conf->page_style && !strcasecmp(conf->page_style, "seppage")) { if (sep_sub && sep_report && (strncmp(last_sub, sep_sub, 3) != 0 || strncmp(last_report, sep_report, 3) != 0)) { strncpy(last_report, sep_report, 3); strncpy(last_sub, sep_sub, 3); sprintf(filename, "%s%s%s/m_usage_%04i%02i_%.3s_%s.html", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath ? "/" : "", subpath ? subpath : "", state->year, state->month, sep_sub ? sep_sub : "", sep_report ? sep_report : ""); if (f) { file_end(f,ext_conf); fclose(f); } if (!(f = fopen(filename, "w"))) { fprintf(stderr, "%s.%d: %s %s\n", __FILE__, __LINE__, _("Can't open file"), filename); return -1; } /* create menu */ file_start(f,ext_conf, state->timestamp); write_menu(ext_conf, state,f, menu_items, last_sub); fprintf (f, "</TD><TD>"); } } else { if (sep_sub && strncmp(last_sub, sep_sub, 3)) { strncpy(last_sub, sep_sub, 3); sprintf(filename, "%s%s%s/m_usage_%04i%02i_%s.html", ext_conf->outputdir ? ext_conf->outputdir : ".", subpath ? "/" : "", subpath ? subpath : "", state->year, state->month, last_sub); if (f) { file_end(f,ext_conf); fclose(f); } if (!(f = fopen(filename, "w"))) { return -1; } /* create menu */ file_start(f,ext_conf, state->timestamp); write_menu(ext_conf, state,f, menu_items, last_sub); fprintf (f, "</TD><TD>"); } } /* write report */ switch (data->type) { case M_REPORT_REQ_URL: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_req_urls, mhash_count(staweb->req_url_hash),_("Requested URL's")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("URL") ); show_mhash(ext_conf, f,staweb->req_url_hash, conf->max_req_urls,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"), _("URL") ); table_end(f); break; } case M_REPORT_REF_URL: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_ref_urls, mhash_count(staweb->ref_url_hash),_("Referring URL's")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Referrer") ); show_mhash(ext_conf, f,staweb->ref_url_hash, conf->max_ref_urls, 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"), _("Referrer") ); table_end(f); break; } case M_REPORT_OS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_os, mhash_count(staweb->os_hash), _("Used Operating Systems")), 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"), _("Operating System") ); show_mhash(ext_conf, f,staweb->os_hash, conf->max_os, GROUPING | 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"), _("Operating System") ); table_end(f); break; } case M_REPORT_HOSTS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_hosts, mhash_count(staweb->host_hash),_("Hosts")), 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"), _("Host") ); show_mhash(ext_conf, f,staweb->host_hash, conf->max_hosts, GROUPING| INDEX | VISITS | 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"), _("Host") ); table_end(f); break; } case M_REPORT_ENTRY_PAGES: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_entry_pages, mhash_count(staweb->entry_pages),_("Entry Pages")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Entry Page") ); show_mhash(ext_conf, f,staweb->entry_pages, conf->max_entry_pages, HIGHLIGHT| INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Entry Page") ); table_end(f); break; } case M_REPORT_EXIT_PAGES: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_exit_pages, mhash_count(staweb->exit_pages),_("Exit Pages")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Exit Page") ); show_mhash(ext_conf, f,staweb->exit_pages, conf->max_exit_pages, HIGHLIGHT| INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Exit Page") ); table_end(f); break; } case M_REPORT_INDEXED: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_indexed_pages, mhash_count(staweb->indexed_pages),_("Indexed Pages")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Indexed Page") ); show_mhash(ext_conf, f,staweb->indexed_pages, conf->max_indexed_pages,HIGHLIGHT| INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Indexed Page") ); table_end(f); break; } case M_REPORT_USERAGENT: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_ua, mhash_count(staweb->ua_hash),_("Used Browsers")), 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"), _("Browser") ); show_mhash(ext_conf, f,staweb->ua_hash, conf->max_ua, GROUPING | 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"), _("Browser") ); table_end(f); break; } case M_REPORT_REQ_PROT: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_req_prot, mhash_count(staweb->req_prot_hash),_("Used Request Protocol")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Protocol") ); show_mhash(ext_conf, f,staweb->req_prot_hash, conf->max_req_prot, INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Protocol") ); table_end(f); break; } case M_REPORT_REQ_METH: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_req_meth, mhash_count(staweb->req_meth_hash),_("Used Request Method")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Method") ); show_mhash(ext_conf, f,staweb->req_meth_hash,conf->max_req_meth, INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Method") ); table_end(f); break; } case M_REPORT_STATUS_CODES: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_status_codes, mhash_count(staweb->status_hash),_("Status Code")), 2); fprintf(f,"<TR><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Status Code") ); show_status_mhash(f,staweb->status_hash, conf->max_status_codes); fprintf(f,"<TR><TH bgcolor=\"%s\">%s</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Status Code") ); table_end(f); break; } case M_REPORT_ROBOTS: { write_report_header(ext_conf, f, sep_sub, sep_report); table_start(f, table_header(conf->max_robots, mhash_count(staweb->robots),_("Robots")), 4); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Robot") ); show_mhash(ext_conf, f,staweb->robots, conf->max_robots, INDEX | PERCENT); fprintf(f,"<TR><TH>#</TH><TH bgcolor=\"%s\">%s</TH><TH>%%</TH><TH>%s</TH></TR>\n", conf->col_hits, _("Hits"), _("Robot") ); table_end(f);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -