Пример #1
0
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!");
}
Пример #2
0
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);
}
Пример #3
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);
}
Пример #4
0
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;
}