jk_status.c
来自「以便Apache与其他服务进行整合 Mod_JK安装」· C语言 代码 · 共 1,753 行 · 第 1/5 页
C
1,753 行
jk_print_xml_att_int(s, 4, "member_count", lb->num_of_workers); jk_print_xml_att_int(s, 4, "good", good); jk_print_xml_att_int(s, 4, "degraded", degraded); jk_print_xml_att_int(s, 4, "bad", bad); jk_print_xml_att_int(s, 4, "busy", lb->s->busy); jk_print_xml_att_int(s, 4, "max_busy", lb->s->max_busy); jk_print_xml_att_int(s, 4, "map_count", map_count); jk_print_xml_att_int(s, 4, "time_to_maintenance_min", ms_min); jk_print_xml_att_int(s, 4, "time_to_maintenance_max", ms_max); jk_print_xml_stop_elt(s, 2, 0); } else if (mime == JK_STATUS_MIME_TXT) { jk_puts(s, "Balancer Worker:"); jk_printf(s, " name=%s", name); jk_printf(s, " type=%s", status_worker_type(JK_LB_WORKER_TYPE)); jk_printf(s, " sticky_session=%s", jk_get_bool(lb->sticky_session)); jk_printf(s, " sticky_session_force=%s", jk_get_bool(lb->sticky_session_force)); jk_printf(s, " retries=%d", lb->retries); jk_printf(s, " recover_time=%d", lb->recover_wait_time); jk_printf(s, " max_reply_timeouts=%d", lb->max_reply_timeouts); jk_printf(s, " method=%s", jk_lb_get_method(lb, l)); jk_printf(s, " lock=%s", jk_lb_get_lock(lb, l)); jk_printf(s, " member_count=%d", lb->num_of_workers); jk_printf(s, " good=%d", good); jk_printf(s, " degraded=%d", degraded); jk_printf(s, " bad=%d", bad); jk_printf(s, " busy=%d", lb->s->busy); jk_printf(s, " max_busy=%d", lb->s->max_busy); jk_printf(s, " map_count=%d", map_count); jk_printf(s, " time_to_maintenance_min=%d", ms_min); jk_printf(s, " time_to_maintenance_max=%d", ms_max); jk_puts(s, "\n"); } else if (mime == JK_STATUS_MIME_PROP) { jk_print_prop_att_string(s, w, NULL, "list", name); jk_print_prop_att_string(s, w, name, "type", status_worker_type(JK_LB_WORKER_TYPE)); jk_print_prop_att_string(s, w, name, "sticky_session", jk_get_bool(lb->sticky_session)); jk_print_prop_att_string(s, w, name, "sticky_session_force", jk_get_bool(lb->sticky_session_force)); jk_print_prop_att_int(s, w, name, "retries", lb->retries); jk_print_prop_att_int(s, w, name, "recover_time", lb->recover_wait_time); jk_print_prop_att_int(s, w, name, "max_reply_timeouts", lb->max_reply_timeouts); jk_print_prop_att_string(s, w, name, "method", jk_lb_get_method(lb, l)); jk_print_prop_att_string(s, w, name, "lock", jk_lb_get_lock(lb, l)); jk_print_prop_att_int(s, w, name, "member_count", lb->num_of_workers); jk_print_prop_att_int(s, w, name, "good", good); jk_print_prop_att_int(s, w, name, "degraded", degraded); jk_print_prop_att_int(s, w, name, "bad", bad); jk_print_prop_att_int(s, w, name, "busy", lb->s->busy); jk_print_prop_att_int(s, w, name, "max_busy", lb->s->max_busy); jk_print_prop_att_int(s, w, name, "map_count", map_count); jk_print_prop_att_int(s, w, name, "time_to_maintenance_min", ms_min); jk_print_prop_att_int(s, w, name, "time_to_maintenance_max", ms_max); } if (!hide_members) { if (mime == JK_STATUS_MIME_HTML) { jk_puts(s, "<h4>Balancer Members ["); if (single) { status_write_uri(s, p, "Hide", JK_STATUS_CMD_SHOW, JK_STATUS_MIME_UNKNOWN, NULL, NULL, JK_STATUS_ARG_OPTION_NO_MEMBERS, 0, "", l); } else { status_write_uri(s, p, "Hide", JK_STATUS_CMD_LIST, JK_STATUS_MIME_UNKNOWN, NULL, NULL, JK_STATUS_ARG_OPTION_NO_MEMBERS, 0, "", l); } jk_puts(s, "]</h4>\n"); jk_puts(s, "<table>" JK_STATUS_SHOW_MEMBER_HEAD); } for (j = 0; j < lb->num_of_workers; j++) { worker_record_t *wr = &(lb->lb_workers[j]); ajp_worker_t *a = (ajp_worker_t *)wr->w->worker_private; int rs_min = 0; int rs_max = 0; if (wr->s->state == JK_LB_STATE_ERROR) { rs_min = lb->recover_wait_time - (int)difftime(now, wr->s->error_time); if (rs_min < 0) { rs_min = 0; } rs_max = rs_min + lb->maintain_time; if (rs_min < ms_min) { rs_min = ms_min; } } if (mime == JK_STATUS_MIME_HTML) { jk_puts(s, "<tr>\n<td>"); if (!read_only) { jk_puts(s, "["); status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, wr->s->name, 0, 0, "", l); jk_puts(s, "|"); status_write_uri(s, p, "R", JK_STATUS_CMD_RESET, JK_STATUS_MIME_UNKNOWN, name, wr->s->name, 0, 0, "", l); if (wr->s->state == JK_LB_STATE_ERROR) { jk_puts(s, "|"); status_write_uri(s, p, "T", JK_STATUS_CMD_RECOVER, JK_STATUS_MIME_UNKNOWN, name, wr->s->name, 0, 0, "", l); } jk_puts(s, "]"); } jk_puts(s, " </td>"); jk_printf(s, JK_STATUS_SHOW_MEMBER_ROW, wr->s->name, status_worker_type(wr->w->type), a->host, a->port, jk_dump_hinfo(&a->worker_inet_addr, buf), jk_lb_get_activation(wr, l), jk_lb_get_state(wr, l), wr->s->distance, wr->s->lb_factor, wr->s->lb_mult, wr->s->lb_value, wr->s->elected, wr->s->errors, wr->s->client_errors, wr->s->reply_timeouts, status_strfsize(wr->s->transferred, buf_wr), status_strfsize(wr->s->readed, buf_rd), wr->s->busy, wr->s->max_busy, wr->s->route, wr->s->redirect ? (*wr->s->redirect ? wr->s->redirect : " ") : " ", wr->s->domain ? (*wr->s->domain ? wr->s->domain : " ") : " ", rs_min, rs_max); } else if (mime == JK_STATUS_MIME_XML) { jk_print_xml_start_elt(s, w, 6, 0, "member"); jk_print_xml_att_string(s, 8, "name", wr->s->name); jk_print_xml_att_string(s, 8, "type", status_worker_type(wr->w->type)); jk_print_xml_att_string(s, 8, "host", a->host); jk_print_xml_att_int(s, 8, "port", a->port); jk_print_xml_att_string(s, 8, "address", jk_dump_hinfo(&a->worker_inet_addr, buf)); jk_print_xml_att_string(s, 8, "activation", jk_lb_get_activation(wr, l)); jk_print_xml_att_int(s, 8, "lbfactor", wr->s->lb_factor); jk_print_xml_att_string(s, 8, "route", wr->s->route); jk_print_xml_att_string(s, 8, "redirect", wr->s->redirect); jk_print_xml_att_string(s, 8, "domain", wr->s->domain); jk_print_xml_att_int(s, 8, "distance", wr->s->distance); jk_print_xml_att_string(s, 8, "state", jk_lb_get_state(wr, l)); jk_print_xml_att_uint64(s, 8, "lbmult", wr->s->lb_mult); jk_print_xml_att_uint64(s, 8, "lbvalue", wr->s->lb_value); jk_print_xml_att_uint64(s, 8, "elected", wr->s->elected); jk_print_xml_att_uint32(s, 8, "errors", wr->s->errors); jk_print_xml_att_uint32(s, 8, "client_errors", wr->s->client_errors); jk_print_xml_att_uint32(s, 8, "reply_timeouts", wr->s->reply_timeouts); jk_print_xml_att_uint64(s, 8, "transferred", wr->s->transferred); jk_print_xml_att_uint64(s, 8, "read", wr->s->readed); jk_print_xml_att_int(s, 8, "busy", wr->s->busy); jk_print_xml_att_int(s, 8, "max_busy", wr->s->max_busy); jk_print_xml_att_int(s, 8, "time_to_recover_min", rs_min); jk_print_xml_att_int(s, 8, "time_to_recover_max", rs_max); /* Terminate the tag */ jk_print_xml_stop_elt(s, 6, 1); } else if (mime == JK_STATUS_MIME_TXT) { jk_puts(s, "Member:"); jk_printf(s, " name=%s", wr->s->name); jk_printf(s, " type=%s", status_worker_type(wr->w->type)); jk_printf(s, " host=%s", a->host); jk_printf(s, " port=%d", a->port); jk_printf(s, " address=%s", jk_dump_hinfo(&a->worker_inet_addr, buf)); jk_printf(s, " activation=%s", jk_lb_get_activation(wr, l)); jk_printf(s, " lbfactor=%d", wr->s->lb_factor); jk_printf(s, " route=\"%s\"", wr->s->route ? wr->s->route : ""); jk_printf(s, " redirect=\"%s\"", wr->s->redirect ? wr->s->redirect : ""); jk_printf(s, " domain=\"%s\"", wr->s->domain ? wr->s->domain : ""); jk_printf(s, " distance=%d", wr->s->distance); jk_printf(s, " state=%s", jk_lb_get_state(wr, l)); jk_printf(s, " lbmult=%" JK_UINT64_T_FMT, wr->s->lb_mult); jk_printf(s, " lbvalue=%" JK_UINT64_T_FMT, wr->s->lb_value); jk_printf(s, " elected=%" JK_UINT64_T_FMT, wr->s->elected); jk_printf(s, " errors=%" JK_UINT32_T_FMT, wr->s->errors); jk_printf(s, " client_errors=%" JK_UINT32_T_FMT, wr->s->client_errors); jk_printf(s, " reply_timeouts=%" JK_UINT32_T_FMT, wr->s->reply_timeouts); jk_printf(s, " transferred=%" JK_UINT64_T_FMT, wr->s->transferred); jk_printf(s, " read=%" JK_UINT64_T_FMT, wr->s->readed); jk_printf(s, " busy=%d", wr->s->busy); jk_printf(s, " max_busy=%d", wr->s->max_busy); jk_printf(s, " time_to_recover_min=%d", rs_min); jk_printf(s, " time_to_recover_max=%d", rs_max); jk_puts(s, "\n"); } else if (mime == JK_STATUS_MIME_PROP) { jk_print_prop_att_string(s, w, name, "balance_workers", wr->s->name); jk_print_prop_att_string(s, w, wr->s->name, "type", status_worker_type(wr->w->type)); jk_print_prop_att_string(s, w, wr->s->name, "host", a->host); jk_print_prop_att_int(s, w, wr->s->name, "port", a->port); jk_print_prop_att_string(s, w, wr->s->name, "address", jk_dump_hinfo(&a->worker_inet_addr, buf)); jk_print_prop_att_string(s, w, wr->s->name, "activation", jk_lb_get_activation(wr, l)); jk_print_prop_att_int(s, w, wr->s->name, "lbfactor", wr->s->lb_factor); jk_print_prop_att_string(s, w, wr->s->name, "route", wr->s->route); jk_print_prop_att_string(s, w, wr->s->name, "redirect", wr->s->redirect); jk_print_prop_att_string(s, w, wr->s->name, "domain", wr->s->domain); jk_print_prop_att_int(s, w, wr->s->name, "distance", wr->s->distance); jk_print_prop_att_string(s, w, wr->s->name, "state", jk_lb_get_state(wr, l)); jk_print_prop_att_uint64(s, w, wr->s->name, "lbmult", wr->s->lb_mult); jk_print_prop_att_uint64(s, w, wr->s->name, "lbvalue", wr->s->lb_value); jk_print_prop_att_uint64(s, w, wr->s->name, "elected", wr->s->elected); jk_print_prop_att_uint32(s, w, wr->s->name, "errors", wr->s->errors); jk_print_prop_att_uint32(s, w, wr->s->name, "client_errors", wr->s->client_errors); jk_print_prop_att_uint32(s, w, wr->s->name, "reply_timeouts", wr->s->reply_timeouts); jk_print_prop_att_uint64(s, w, wr->s->name, "transferred", wr->s->transferred); jk_print_prop_att_uint64(s, w, wr->s->name, "read", wr->s->readed); jk_print_prop_att_int(s, w, wr->s->name, "busy", wr->s->busy); jk_print_prop_att_int(s, w, wr->s->name, "max_busy", wr->s->max_busy); jk_print_prop_att_int(s, w, wr->s->name, "time_to_recover_min", rs_min); jk_print_prop_att_int(s, w, wr->s->name, "time_to_recover_max", rs_max); } } if (mime == JK_STATUS_MIME_HTML) { jk_puts(s, "</table><br/>\n"); if (!read_only) { jk_puts(s, "<b>E</b>dit one attribute for all members: ["); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ACTIVATION, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_ACTIVATION, l); jk_puts(s, "\n|"); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_FACTOR, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_FACTOR, l); jk_puts(s, "\n|"); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ROUTE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_ROUTE, l); jk_puts(s, "\n|"); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_REDIRECT, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_REDIRECT, l); jk_puts(s, "\n|"); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DOMAIN, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_DOMAIN, l); jk_puts(s, "\n|"); status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DISTANCE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, JK_STATUS_ARG_LBM_DISTANCE, l); jk_puts(s, "\n]<br/>\n"); } } } else { if (mime == JK_STATUS_MIME_HTML) { jk_puts(s, "<p>\n"); if (single) { status_write_uri(s, p, "Show Balancer Members", JK_STATUS_CMD_SHOW, JK_STATUS_MIME_UNKNOWN, NULL, NULL, 0, JK_STATUS_ARG_OPTION_NO_MEMBERS, "", l); } else { status_write_uri(s, p, "Show Balancer Members", JK_STATUS_CMD_LIST, JK_STATUS_MIME_UNKNOWN, NULL, NULL, 0, JK_STATUS_ARG_OPTION_NO_MEMBERS, "", l); } jk_puts(s, "</p>\n"); } } if (name) display_maps(s, p, name, l); if (mime == JK_STATUS_MIME_XML) { jk_print_xml_close_elt(s, w, 2, "balancer"); } JK_TRACE_EXIT(l);}static void display_worker_ajp(jk_ws_service_t *s, status_endpoint_t *p, ajp_worker_t *aw, jk_logger_t *l){ char buf[32]; int cmd; int mime; int single = 0; const char *arg; int map_count; const char *name = aw->name; status_worker_t *w = p->worker; JK_TRACE_ENTER(l); status_get_string(p, JK_STATUS_ARG_CMD, NULL, &arg, l); cmd = status_cmd_int(arg); status_get_string(p, JK_STATUS_ARG_MIME, NULL, &arg, l); mime = status_mime_int(arg); if (cmd == JK_STATUS_CMD_SHOW) { single = 1; } map_count = count_maps(s, name, l); if (mime == JK_STATUS_MIME_HTML) { jk_puts(s, "<hr/><h3>["); if (single) jk_puts(s, "S"); else status_write_uri(s, p, "S", JK_STATUS_CMD_SHOW, JK_STATUS_MIME_UNKNOWN, name, "", 0, 0, "", l); jk_puts(s, "] "); jk_putv(s, "Worker Status for ", name, "</h3>\n", NULL); jk_puts(s, "<table>" JK_STATUS_SHOW_AJP_HEAD); jk_printf(s, JK_STATUS_SHOW_AJP_ROW, status_worker_type(aw->worker.type), aw->host, aw->port, jk_dump_hinfo(&aw->worker_inet_addr, buf)); jk_puts(s, "</table>\n"); } else if (mime == JK_STATUS_MIME_XML) { jk_print_xml_start_elt(s, w, 0, 0, "ajp"); jk_print_xml_att_string(s, 2, "name", name); jk_print_xml_att_string(s, 2, "type", status_worker_type(aw->worker.type)); jk_print_xml_att_string(s, 2, "host", aw->host); jk_print_xml_att_int(s, 2, "port", aw->port); jk_print_xml_att_string(s, 2, "address", jk_dump_hinfo(&aw->worker_inet_addr, buf)); jk_print_xml_att_int(s, 2, "map_count", map_count); /* Terminate the tag */ jk_print_xml_stop_elt(s, 0, 0); } else if (mime == JK_STATUS_MIME_TXT) { jk_puts(s, "AJP Worker:"); jk_printf(s, " name=%s", name); jk_printf(s, " type=%s", status_worker_type(aw->worker.type)); jk_printf(s, " host=%s", aw->host); jk_printf(s, " port=%d", aw->port); jk_printf(s, " address=%s", jk_dump_hinfo(&aw->worker_inet_addr, buf)); jk_printf(s, " map_cou
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?