in native/common/jk_status.c [5320:5410]
static int JK_METHOD init(jk_worker_t *pThis,
jk_map_t *props,
jk_worker_env_t *we, jk_log_context_t *l)
{
JK_TRACE_ENTER(l);
if (pThis && pThis->worker_private) {
status_worker_t *p = pThis->worker_private;
char **good_rating;
unsigned int num_of_good;
char **bad_rating;
unsigned int num_of_bad;
unsigned int i;
p->we = we;
p->css = jk_get_worker_style_sheet(props, p->name, NULL);
p->prefix = jk_get_worker_prop_prefix(props, p->name, JK_STATUS_PREFIX_DEF);
p->ns = jk_get_worker_name_space(props, p->name, JK_STATUS_NS_DEF);
p->xmlns = jk_get_worker_xmlns(props, p->name, JK_STATUS_XMLNS_DEF);
p->doctype = jk_get_worker_xml_doctype(props, p->name, NULL);
p->read_only = jk_get_is_read_only(props, p->name);
p->user_case_insensitive = jk_get_worker_user_case_insensitive(props, p->name);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' is %s and has css '%s', prefix '%s', name space '%s', xml name space '%s', document type '%s'",
p->name,
p->read_only ? "read-only" : "read/write",
p->css ? p->css : "(null)",
p->prefix ? p->prefix : "(null)",
p->ns ? p->ns : "(null)",
p->xmlns ? p->xmlns : "(null)",
p->doctype ? p->doctype : "(null)");
if (jk_get_worker_user_list(props, p->name,
&(p->user_names),
&(p->num_of_users)) && p->num_of_users) {
for (i = 0; i < p->num_of_users; i++) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' restricting access to user '%s' case %s",
p->name, p->user_names[i],
p->user_case_insensitive ? "insensitive" : "sensitive");
}
}
if (jk_get_worker_good_rating(props, p->name,
&good_rating,
&num_of_good) && num_of_good) {
p->good_mask = 0;
for (i = 0; i < num_of_good; i++) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' rating as good: '%s'",
p->name, good_rating[i]);
p->good_mask |= status_get_rating(good_rating[i], l);
}
}
else {
p->good_mask = JK_STATUS_MASK_GOOD_DEF;
}
if (jk_get_worker_bad_rating(props, p->name,
&bad_rating,
&num_of_bad) && num_of_bad) {
p->bad_mask = 0;
for (i = 0; i < num_of_bad; i++) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' rating as bad: '%s'",
p->name, bad_rating[i]);
p->bad_mask |= status_get_rating(bad_rating[i], l);
}
}
else {
p->bad_mask = JK_STATUS_MASK_BAD_DEF;
}
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' has good rating for '%08" JK_UINT32_T_HEX_FMT
"' and bad rating for '%08" JK_UINT32_T_HEX_FMT "'",
p->name,
p->good_mask,
p->bad_mask);
if (p->good_mask & p->bad_mask)
jk_log(l, JK_LOG_WARNING,
"Status worker '%s' has non empty intersection '%08" JK_UINT32_T_HEX_FMT
"' between good rating for '%08" JK_UINT32_T_HEX_FMT
"' and bad rating for '%08" JK_UINT32_T_HEX_FMT "'",
p->name,
p->good_mask & p->bad_mask,
p->good_mask,
p->bad_mask);
}
JK_TRACE_EXIT(l);
return JK_TRUE;
}