コード例 #1
0
ファイル: trace.c プロジェクト: BeQ/webserver
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;
}
コード例 #2
0
ファイル: header_op.c プロジェクト: 304471720/webserver
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;
}
コード例 #3
0
ファイル: http.c プロジェクト: Daniel15/webserver
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;
}