static void monkey(uint64_t id) { uint32_t r; r = arc4random_uniform(100); if (r < 70) filter_api_accept(id); else if (r < 90) filter_api_reject_code(id, FILTER_FAIL, 666, "I am a monkey!"); else filter_api_reject_code(id, FILTER_CLOSE, 666, "I am a funny monkey!"); }
static int l_filter_reject_code(lua_State *L) { uint64_t id; const char *s_id; uint32_t action; uint32_t code; const char *line; if (lua_gettop(L) != 4) return (0); s_id = luaL_checklstring(L, 1, NULL); id = strtoimax(s_id, (char **)NULL, 10); action = luaL_checkinteger(L, 2); code = luaL_checkinteger(L, 3); line = luaL_checklstring(L, 4, NULL); switch (action) { case FILTER_FAIL: case FILTER_CLOSE: filter_api_reject_code(id, action, code, line); break; } return (0); }
static int clamav_on_eom(uint64_t id, size_t size) { struct clamav *cl; int r; if ((cl = filter_api_get_udata(id)) == NULL) return filter_api_accept(id); if (clamav_response(cl) == -1) { clamav_clear(cl); filter_api_set_udata(id, NULL); return filter_api_reject_code(id, FILTER_FAIL, 451, "4.7.1 Virus filter failed"); } r = cl->r; clamav_clear(cl); filter_api_set_udata(id, NULL); if (r) { log_warnx("warn: session %016"PRIx64": on_eom: REJECT virus", id); return filter_api_reject_code(id, FILTER_CLOSE, 554, "5.7.1 Virus found"); } return filter_api_accept(id); }
static PyObject * py_filter_reject_code(PyObject *self, PyObject *args) { uint64_t id; uint32_t action; uint32_t code; const char *line; if (! PyArg_ParseTuple(args, "Kiis", &id, &action, &code, &line)) return NULL; switch (action) { case FILTER_FAIL: case FILTER_CLOSE: filter_api_reject_code(id, action, code, line); Py_RETURN_TRUE; break; } Py_RETURN_FALSE; }