static struct rspamd_classifier_config * lua_check_classifier (lua_State * L) { void *ud = rspamd_lua_check_udata (L, 1, "rspamd{classifier}"); luaL_argcheck (L, ud != NULL, 1, "'classifier' expected"); return ud ? *((struct rspamd_classifier_config **)ud) : NULL; }
static struct rspamd_lua_url * lua_check_url (lua_State * L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{url}"); luaL_argcheck (L, ud != NULL, pos, "'url' expected"); return ud ? ((struct rspamd_lua_url *)ud) : NULL; }
static struct rspamd_statfile_config * lua_check_statfile (lua_State * L) { void *ud = rspamd_lua_check_udata (L, 1, "rspamd{statfile}"); luaL_argcheck (L, ud != NULL, 1, "'statfile' expected"); return ud ? *((struct rspamd_statfile_config **)ud) : NULL; }
struct rspamd_io_dispatcher_s * lua_check_io_dispatcher (lua_State * L) { void *ud = rspamd_lua_check_udata (L, 1, "rspamd{io_dispatcher}"); luaL_argcheck (L, ud != NULL, 1, "'io_dispatcher' expected"); return ud ? *((struct rspamd_io_dispatcher_s **)ud) : NULL; }
struct event_base * lua_check_event_base (lua_State *L) { void *ud = rspamd_lua_check_udata (L, 1, "rspamd{ev_base}"); luaL_argcheck (L, ud != NULL, 1, "'ev_base' expected"); return ud ? *((struct event_base **)ud) : NULL; }
struct fann * rspamd_lua_check_fann (lua_State *L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{fann}"); luaL_argcheck (L, ud != NULL, pos, "'fann' expected"); return ud ? *((struct fann **) ud) : NULL; }
static struct html_tag * lua_check_html_tag (lua_State * L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{html_tag}"); luaL_argcheck (L, ud != NULL, pos, "'html_tag' expected"); return ud ? *((struct html_tag **)ud) : NULL; }
struct rspamd_lua_map * lua_check_map (lua_State * L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{map}"); luaL_argcheck (L, ud != NULL, pos, "'map' expected"); return ud ? *((struct rspamd_lua_map **)ud) : NULL; }
static struct rspamd_worker * lua_check_worker (lua_State *L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{worker}"); luaL_argcheck (L, ud != NULL, pos, "'worker' expected"); return ud ? *((struct rspamd_worker **)ud) : NULL; }
struct lua_expression * rspamd_lua_expression (lua_State * L, gint pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{expr}"); luaL_argcheck (L, ud != NULL, pos, "'expr' expected"); return ud ? *((struct lua_expression **)ud) : NULL; }
static rspamd_cryptobox_hash_state_t * lua_check_cryptobox_hash (lua_State * L, int pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{cryptobox_hash}"); luaL_argcheck (L, ud != NULL, 1, "'cryptobox_hash' expected"); return ud ? *((rspamd_cryptobox_hash_state_t **)ud) : NULL; }
static rspamd_fstring_t * lua_check_cryptobox_sign (lua_State * L, int pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{cryptobox_signature}"); luaL_argcheck (L, ud != NULL, 1, "'cryptobox_signature' expected"); return ud ? *((rspamd_fstring_t **)ud) : NULL; }
static struct rspamd_cryptobox_keypair * lua_check_cryptobox_keypair (lua_State * L, int pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{cryptobox_keypair}"); luaL_argcheck (L, ud != NULL, 1, "'cryptobox_keypair' expected"); return ud ? *((struct rspamd_cryptobox_keypair **)ud) : NULL; }
static RSA * lua_check_rsa_privkey (lua_State * L, int pos) { void *ud = rspamd_lua_check_udata (L, pos, "rspamd{rsa_privkey}"); luaL_argcheck (L, ud != NULL, 1, "'rsa_privkey' expected"); return ud ? *((RSA **)ud) : NULL; }
static GList * call_classifier_pre_callback (struct rspamd_classifier_config *ccf, struct rspamd_task *task, lua_State *L, gboolean is_learn, gboolean is_spam) { struct rspamd_classifier_config **pccf; struct rspamd_task **ptask; struct rspamd_statfile_config **pst; GList *res = NULL; pccf = lua_newuserdata (L, sizeof (struct rspamd_classifier_config *)); rspamd_lua_setclass (L, "rspamd{classifier}", -1); *pccf = ccf; ptask = lua_newuserdata (L, sizeof (struct rspamd_task *)); rspamd_lua_setclass (L, "rspamd{task}", -1); *ptask = task; lua_pushboolean (L, is_learn); lua_pushboolean (L, is_spam); if (lua_pcall (L, 4, 1, 0) != 0) { msg_warn_task ("error running pre classifier callback %s", lua_tostring (L, -1)); lua_pop (L, 1); } else { if (lua_istable (L, -1)) { lua_pushnil (L); while (lua_next (L, -2)) { pst = rspamd_lua_check_udata (L, -1, "rspamd{statfile}"); if (pst) { res = g_list_prepend (res, *pst); } lua_pop (L, 1); } } lua_pop (L, 1); } return res; }