static void form_all_members()

in native/common/jk_status.c [3053:3244]


static void form_all_members(jk_ws_service_t *s,
                             status_endpoint_t *p,
                             jk_worker_t *jw,
                             const char *attribute,
                             jk_log_context_t *l)
{
    const char *name = NULL;
    lb_worker_t *lb = NULL;
    status_worker_t *w = p->worker;
    const char *aname;
    unsigned int i;

    JK_TRACE_ENTER(l);
    if (!attribute) {
        jk_log(l, JK_LOG_WARNING,
               "Status worker '%s' missing request parameter '%s'",
               w->name, JK_STATUS_ARG_ATTRIBUTE);
        JK_TRACE_EXIT(l);
        return;
    }
    else {
        if (!strcmp(attribute, JK_STATUS_ARG_LBM_ACTIVATION))
            aname=JK_STATUS_ARG_LBM_TEXT_ACTIVATION;
        else if (!strcmp(attribute, JK_STATUS_ARG_LBM_FACTOR))
            aname=JK_STATUS_ARG_LBM_TEXT_FACTOR;
        else if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE))
            aname=JK_STATUS_ARG_LBM_TEXT_ROUTE;
        else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT))
            aname=JK_STATUS_ARG_LBM_TEXT_REDIRECT;
        else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN))
            aname=JK_STATUS_ARG_LBM_TEXT_DOMAIN;
        else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE))
            aname=JK_STATUS_ARG_LBM_TEXT_DISTANCE;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CACHE_TO))
            aname=JK_STATUS_ARG_AJP_TEXT_CACHE_TO;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_PING_TO))
            aname=JK_STATUS_ARG_AJP_TEXT_PING_TO;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CONNECT_TO))
            aname=JK_STATUS_ARG_AJP_TEXT_CONNECT_TO;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_PREPOST_TO))
            aname=JK_STATUS_ARG_AJP_TEXT_PREPOST_TO;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_REPLY_TO))
            aname=JK_STATUS_ARG_AJP_TEXT_REPLY_TO;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_RETRIES))
            aname=JK_STATUS_ARG_AJP_TEXT_RETRIES;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_RETRY_INT))
            aname=JK_STATUS_ARG_AJP_TEXT_RETRY_INT;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CPING_INT))
            aname=JK_STATUS_ARG_AJP_TEXT_CPING_INT;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_REC_OPTS))
            aname=JK_STATUS_ARG_AJP_TEXT_REC_OPTS;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_BUSY_LIMIT))
            aname=JK_STATUS_ARG_AJP_TEXT_BUSY_LIMIT;
        else if (!strcmp(attribute, JK_STATUS_ARG_AJP_MAX_PK_SZ))
            aname=JK_STATUS_ARG_AJP_TEXT_MAX_PK_SZ;
        else {
            jk_log(l, JK_LOG_WARNING,
                   "Status worker '%s' unknown attribute '%s'",
                   w->name, attribute);
            JK_TRACE_EXIT(l);
            return;
        }
    }
    if (jw->type == JK_LB_WORKER_TYPE) {
        lb = (lb_worker_t *)jw->worker_private;
        name = lb->name;
        if (JK_IS_DEBUG_LEVEL(l))
            jk_log(l, JK_LOG_DEBUG,
                   "Status worker '%s' producing edit form for attribute '%s' [%s] of all members of lb worker '%s'",
                   w->name, attribute, aname, name);
    }
    else {
        jk_log(l, JK_LOG_WARNING,
               "Status worker '%s' worker type not implemented",
               w->name);
        JK_TRACE_EXIT(l);
        return;
    }

    if (lb) {
        jk_putv(s, "<hr/><h3>Edit attribute '", aname,
                "' for all members of load balancer ",
                name, "</h3>\n", NULL);

        status_start_form(s, p, "get", JK_STATUS_CMD_UPDATE, NULL, l);

        jk_putv(s, "<table><tr>"
                "<th>Balanced Worker</th><th>", aname, "</th>"
                "</tr>", NULL);

        for (i = 0; i < lb->num_of_workers; i++) {
            lb_sub_worker_t *wr = &(lb->lb_workers[i]);
            jk_worker_t *jw = wr->worker;
            ajp_worker_t *aw = (ajp_worker_t *)jw->worker_private;;

            jk_putv(s, "<tr><td>", wr->name, "</td><td>\n", NULL);

            if (!strcmp(attribute, JK_STATUS_ARG_LBM_ACTIVATION)) {

                jk_printf(s, l, "Active:&nbsp;<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
                jk_printf(s, l, " value=\"%d\"", JK_LB_ACTIVATION_ACTIVE);
                if (wr->activation == JK_LB_ACTIVATION_ACTIVE)
                    jk_puts(s, " checked=\"checked\"");
                jk_puts(s, "/>&nbsp;|&nbsp;\n");
                jk_printf(s, l, "Disabled:&nbsp;<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
                jk_printf(s, l, " value=\"%d\"", JK_LB_ACTIVATION_DISABLED);
                if (wr->activation == JK_LB_ACTIVATION_DISABLED)
                    jk_puts(s, " checked=\"checked\"");
                jk_puts(s, "/>&nbsp;|&nbsp;\n");
                jk_printf(s, l, "Stopped:&nbsp;<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
                jk_printf(s, l, " value=\"%d\"", JK_LB_ACTIVATION_STOPPED);
                if (wr->activation == JK_LB_ACTIVATION_STOPPED)
                    jk_puts(s, " checked=\"checked\"");
                jk_puts(s, "/>\n");

            }
            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_FACTOR)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", wr->lb_factor);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_putv(s, "value=\"", wr->route, NULL);
                jk_printf(s, l, "\" maxlength=\"%d\"/>\n", JK_MAX_NAME_LEN);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_putv(s, "value=\"", wr->redirect, NULL);
                jk_printf(s, l, "\" maxlength=\"%d\"/>\n", JK_MAX_NAME_LEN);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_putv(s, "value=\"", wr->domain, NULL);
                jk_printf(s, l, "\" maxlength=\"%d\"/>\n", JK_MAX_NAME_LEN);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", wr->distance);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CACHE_TO)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->cache_timeout);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_PING_TO)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->ping_timeout);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CONNECT_TO)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->connect_timeout);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_PREPOST_TO)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->prepost_timeout);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_REPLY_TO)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->reply_timeout);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_RETRIES)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->retries);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_RETRY_INT)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->retry_interval);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_CPING_INT)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->conn_ping_interval);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_REC_OPTS)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->recovery_opts);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_BUSY_LIMIT)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->busy_limit);
            }
            else if (!strcmp(attribute, JK_STATUS_ARG_AJP_MAX_PK_SZ)) {
                jk_printf(s, l, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"text\"", i);
                jk_printf(s, l, "value=\"%d\"/>\n", aw->max_packet_size);
            }

            jk_puts(s, "</td></tr>");
        }

        jk_puts(s, "</table>\n");
        jk_puts(s, "<br/><input type=\"submit\" value=\"Update Balancer\"/></form>\n");
    }
    JK_TRACE_EXIT(l);
}