ret_t cherokee_trace_set_modules (cherokee_buffer_t *modules) { ret_t ret; char *p; char *end; cherokee_buffer_t tmp = CHEROKEE_BUF_INIT; /* Store a copy of the modules */ cherokee_buffer_clean (&trace.modules); if (trace.from_filter != NULL) { cherokee_access_free (trace.from_filter); } trace.from_filter = NULL; if (cherokee_buffer_case_cmp_str (modules, "none") != 0) { cherokee_buffer_add_buffer (&trace.modules, modules); } /* Check the special properties */ trace.use_syslog = (strstr (modules->buf, "syslog") != NULL); trace.print_time = (strstr (modules->buf, "time") != NULL); trace.print_thread = (strstr (modules->buf, "thread") != NULL); /* Even a more special 'from' property */ p = strstr (modules->buf, "from="); if (p != NULL) { p += 5; end = strchr(p, ','); if (end == NULL) { end = p + strlen(p); } if (end > p) { ret = cherokee_access_new (&trace.from_filter); if (ret != ret_ok) return ret_error; cherokee_buffer_add (&tmp, p, end-p); ret = cherokee_access_add (trace.from_filter, tmp.buf); if (ret != ret_ok) { ret = ret_error; goto out; } } } ret = ret_ok; out: cherokee_buffer_mrproper (&tmp); return ret; }
ret_t cherokee_header_op_configure (cherokee_header_op_t *op, cherokee_config_node_t *conf) { ret_t ret; cherokee_buffer_t *tmp; /* Operation type */ ret = cherokee_config_node_read (conf, "type", &tmp); if (ret != ret_ok) { free (op); return ret_error; } if (cherokee_buffer_case_cmp_str (tmp, "add") == 0) { op->op = cherokee_header_op_add; } else if (cherokee_buffer_case_cmp_str (tmp, "del") == 0) { op->op = cherokee_header_op_del; } else { free (op); return ret_error; } /* Details */ ret = cherokee_config_node_copy (conf, "header", &op->header); if (ret != ret_ok) { free (op); return ret_error; } if (op->op == cherokee_header_op_add) { ret = cherokee_config_node_copy (conf, "value", &op->value); if (ret != ret_ok) { cherokee_buffer_mrproper (&op->header); free (op); return ret_error; } } return ret_ok; }
ret_t cherokee_http_string_to_method (cherokee_buffer_t *string, cherokee_http_method_t *method) { if (cherokee_buffer_case_cmp_str (string, "get") == 0) *method = http_get; else if (cherokee_buffer_case_cmp_str (string, "post") == 0) *method = http_post; else if (cherokee_buffer_case_cmp_str (string, "head") == 0) *method = http_head; else if (cherokee_buffer_case_cmp_str (string, "put") == 0) *method = http_put; else if (cherokee_buffer_case_cmp_str (string, "options") == 0) *method = http_options; else if (cherokee_buffer_case_cmp_str (string, "delete") == 0) *method = http_delete; else if (cherokee_buffer_case_cmp_str (string, "trace") == 0) *method = http_trace; else if (cherokee_buffer_case_cmp_str (string, "connect") == 0) *method = http_connect; else if (cherokee_buffer_case_cmp_str (string, "copy") == 0) *method = http_copy; else if (cherokee_buffer_case_cmp_str (string, "lock") == 0) *method = http_lock; else if (cherokee_buffer_case_cmp_str (string, "mkcol") == 0) *method = http_mkcol; else if (cherokee_buffer_case_cmp_str (string, "move") == 0) *method = http_move; else if (cherokee_buffer_case_cmp_str (string, "notify") == 0) *method = http_notify; else if (cherokee_buffer_case_cmp_str (string, "poll") == 0) *method = http_poll; else if (cherokee_buffer_case_cmp_str (string, "propfind") == 0) *method = http_propfind; else if (cherokee_buffer_case_cmp_str (string, "proppatch") == 0) *method = http_proppatch; else if (cherokee_buffer_case_cmp_str (string, "search") == 0) *method = http_search; else if (cherokee_buffer_case_cmp_str (string, "subscribe") == 0) *method = http_subscribe; else if (cherokee_buffer_case_cmp_str (string, "unlock") == 0) *method = http_unlock; else if (cherokee_buffer_case_cmp_str (string, "unsubscribe") == 0) *method = http_unsubscribe; else if (cherokee_buffer_case_cmp_str (string, "report") == 0) *method = http_report; else if (cherokee_buffer_case_cmp_str (string, "patch") == 0) *method = http_patch; else if (cherokee_buffer_case_cmp_str (string, "version_control") == 0) *method = http_version_control; else if (cherokee_buffer_case_cmp_str (string, "checkout") == 0) *method = http_checkout; else if (cherokee_buffer_case_cmp_str (string, "uncheckout") == 0) *method = http_uncheckout; else if (cherokee_buffer_case_cmp_str (string, "checkin") == 0) *method = http_checkin; else if (cherokee_buffer_case_cmp_str (string, "update") == 0) *method = http_update; else if (cherokee_buffer_case_cmp_str (string, "label") == 0) *method = http_label; else if (cherokee_buffer_case_cmp_str (string, "mkworkspace") == 0) *method = http_mkworkspace; else if (cherokee_buffer_case_cmp_str (string, "mkactivity") == 0) *method = http_mkactivity; else if (cherokee_buffer_case_cmp_str (string, "baseline_control") == 0) *method = http_baseline_control; else if (cherokee_buffer_case_cmp_str (string, "merge") == 0) *method = http_merge; else if (cherokee_buffer_case_cmp_str (string, "invalid") == 0) *method = http_invalid; else if (cherokee_buffer_case_cmp_str (string, "purge") == 0) *method = http_purge; else { *method = http_unknown; return ret_not_found; } return ret_ok; }