From: Vsevolod Stakhov Date: Mon, 7 Jan 2013 14:48:50 +0000 (+0400) Subject: Add skeleton for learning commands. X-Git-Tag: 0.5.4~24 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=908ed0e5ede59e608b742a3abd028bcfc2c2abd0;p=rspamd.git Add skeleton for learning commands. --- diff --git a/src/webui.c b/src/webui.c index 657750b46..6104002bb 100644 --- a/src/webui.c +++ b/src/webui.c @@ -68,6 +68,8 @@ #define PATH_GRAPH "/graph" #define PATH_PIE_CHART "/pie" #define PATH_HISTORY "/history" +#define PATH_LEARN_SPAM "/learnspam" +#define PATH_LEARN_HAM "/learnham" /* Graph colors */ #define COLOR_CLEAN "#58A458" @@ -778,6 +780,68 @@ http_handle_history (struct evhttp_request *req, gpointer arg) evbuffer_free (evb); } +/* + * Learn spam command handler: + * request: /learnspam + * headers: Password + * input: plaintext data + * reply: plaintext reply + */ +static void +http_handle_learn_spam (struct evhttp_request *req, gpointer arg) +{ + struct rspamd_webui_worker_ctx *ctx = arg; + struct evbuffer *evb, *inb; + + inb = req->input_buffer; + evb = evbuffer_new (); + if (!evb) { + msg_err ("cannot allocate evbuffer for reply"); + evhttp_send_reply (req, HTTP_INTERNAL, "500 insufficient memory", NULL); + return; + } + + /* XXX: Add real learning here */ + + evbuffer_add (evb, "OK" CRLF, 5); + evhttp_add_header (req->output_headers, "Connection", "close"); + http_calculate_content_length (evb, req); + + evhttp_send_reply (req, HTTP_OK, "OK", evb); + evbuffer_free (evb); +} + +/* + * Learn ham command handler: + * request: /learnham + * headers: Password + * input: plaintext data + * reply: plaintext reply + */ +static void +http_handle_learn_ham (struct evhttp_request *req, gpointer arg) +{ + struct rspamd_webui_worker_ctx *ctx = arg; + struct evbuffer *evb, *inb; + + inb = req->input_buffer; + evb = evbuffer_new (); + if (!evb) { + msg_err ("cannot allocate evbuffer for reply"); + evhttp_send_reply (req, HTTP_INTERNAL, "500 insufficient memory", NULL); + return; + } + + /* XXX: Add real learning here */ + + evbuffer_add (evb, "OK" CRLF, 5); + evhttp_add_header (req->output_headers, "Connection", "close"); + http_calculate_content_length (evb, req); + + evhttp_send_reply (req, HTTP_OK, "OK", evb); + evbuffer_free (evb); +} + gpointer init_webui_worker (void) { @@ -858,6 +922,8 @@ start_webui_worker (struct rspamd_worker *worker) evhttp_set_cb (ctx->http, PATH_GRAPH, http_handle_graph, ctx); evhttp_set_cb (ctx->http, PATH_PIE_CHART, http_handle_pie_chart, ctx); evhttp_set_cb (ctx->http, PATH_HISTORY, http_handle_history, ctx); + evhttp_set_cb (ctx->http, PATH_LEARN_SPAM, http_handle_learn_spam, ctx); + evhttp_set_cb (ctx->http, PATH_LEARN_HAM, http_handle_learn_ham, ctx); ctx->resolver = dns_resolver_init (ctx->ev_base, worker->srv->cfg);