aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua/lua_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/lua_common.h')
-rw-r--r--src/lua/lua_common.h164
1 files changed, 109 insertions, 55 deletions
diff --git a/src/lua/lua_common.h b/src/lua/lua_common.h
index 93bb5a28e..d14ebba54 100644
--- a/src/lua/lua_common.h
+++ b/src/lua/lua_common.h
@@ -2,7 +2,6 @@
#define RSPAMD_LUA_H
#include "config.h"
-#ifdef WITH_LUA
#include <lua.h>
#include <lauxlib.h>
@@ -48,6 +47,10 @@ luaL_register (lua_State *L, const gchar *name, const struct luaL_reg *methods)
lua_State * L)
#define LUA_INTERFACE_DEF(class, name) { # name, lua_ ## class ## _ ## name }
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern const luaL_reg null_reg[];
#define RSPAMD_LUA_API_VERSION 12
@@ -126,17 +129,17 @@ struct rspamd_lua_cached_entry {
* Create and register new class
*/
void rspamd_lua_new_class (lua_State *L,
- const gchar *classname,
- const struct luaL_reg *methods);
+ const gchar *classname,
+ const struct luaL_reg *methods);
/**
* Create and register new class with static methods
*/
void rspamd_lua_new_class_full (lua_State *L,
- const gchar *classname,
- const gchar *static_name,
- const struct luaL_reg *methods,
- const struct luaL_reg *func);
+ const gchar *classname,
+ const gchar *static_name,
+ const struct luaL_reg *methods,
+ const struct luaL_reg *func);
/**
* Set class name for object at @param objidx position
@@ -151,7 +154,7 @@ void rspamd_lua_table_set (lua_State *L, const gchar *index, const gchar *value)
/**
* Get string value of index in a table (return t['index'])
*/
-const gchar * rspamd_lua_table_get (lua_State *L, const gchar *index);
+const gchar *rspamd_lua_table_get (lua_State *L, const gchar *index);
/**
* Convert classname to string
@@ -169,6 +172,7 @@ gpointer rspamd_lua_check_class (lua_State *L, gint index, const gchar *name);
lua_State *rspamd_lua_init (bool wipe_mem);
void rspamd_lua_start_gc (struct rspamd_config *cfg);
+
/**
* Sets field in a global variable
* @param L
@@ -178,7 +182,8 @@ void rspamd_lua_start_gc (struct rspamd_config *cfg);
*/
void
rspamd_plugins_table_push_elt (lua_State *L, const gchar *field_name,
- const gchar *new_elt);
+ const gchar *new_elt);
+
/**
* Load and initialize lua plugins
*/
@@ -188,7 +193,8 @@ rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load);
/**
* Initialize new locked lua_State structure
*/
-struct lua_locked_state * rspamd_init_lua_locked (struct rspamd_config *cfg);
+struct lua_locked_state *rspamd_init_lua_locked (struct rspamd_config *cfg);
+
/**
* Free locked state structure
*/
@@ -207,11 +213,11 @@ void rspamd_lua_task_push (lua_State *L, struct rspamd_task *task);
/**
* Return lua ip structure at the specified address
*/
-struct rspamd_lua_ip * lua_check_ip (lua_State * L, gint pos);
+struct rspamd_lua_ip *lua_check_ip (lua_State *L, gint pos);
-struct rspamd_lua_text * lua_check_text (lua_State * L, gint pos);
+struct rspamd_lua_text *lua_check_text (lua_State *L, gint pos);
-struct rspamd_lua_regexp *lua_check_regexp (lua_State * L, gint pos);
+struct rspamd_lua_regexp *lua_check_regexp (lua_State *L, gint pos);
enum rspamd_lua_task_header_type {
RSPAMD_TASK_HEADER_PUSH_SIMPLE = 0,
@@ -223,6 +229,7 @@ enum rspamd_lua_task_header_type {
gint rspamd_lua_push_header (lua_State *L,
struct rspamd_mime_header *h,
enum rspamd_lua_task_header_type how);
+
/**
* Push specific header to lua
*/
@@ -233,10 +240,11 @@ gint rspamd_lua_push_header_array (lua_State *L,
/**
* Check for task at the specified position
*/
-struct rspamd_task *lua_check_task (lua_State * L, gint pos);
-struct rspamd_task *lua_check_task_maybe (lua_State * L, gint pos);
+struct rspamd_task *lua_check_task (lua_State *L, gint pos);
+
+struct rspamd_task *lua_check_task_maybe (lua_State *L, gint pos);
-struct rspamd_lua_map *lua_check_map (lua_State * L, gint pos);
+struct rspamd_lua_map *lua_check_map (lua_State *L, gint pos);
/**
* Push ip address from a string (nil is pushed if a string cannot be converted)
@@ -257,74 +265,114 @@ int rspamd_lua_typerror (lua_State *L, int narg, const char *tname);
void rspamd_lua_add_preload (lua_State *L, const gchar *name, lua_CFunction func);
void luaopen_task (lua_State *L);
+
void luaopen_config (lua_State *L);
+
void luaopen_map (lua_State *L);
-void luaopen_trie (lua_State * L);
+
+void luaopen_trie (lua_State *L);
+
void luaopen_textpart (lua_State *L);
+
void luaopen_mimepart (lua_State *L);
+
void luaopen_image (lua_State *L);
+
void luaopen_url (lua_State *L);
+
void luaopen_classifier (lua_State *L);
-void luaopen_statfile (lua_State * L);
+
+void luaopen_statfile (lua_State *L);
+
void luaopen_regexp (lua_State *L);
+
void luaopen_cdb (lua_State *L);
-void luaopen_xmlrpc (lua_State * L);
-void luaopen_http (lua_State * L);
-void luaopen_redis (lua_State * L);
-void luaopen_upstream (lua_State * L);
-void luaopen_mempool (lua_State * L);
-void luaopen_dns_resolver (lua_State * L);
-void luaopen_rsa (lua_State * L);
-void luaopen_ip (lua_State * L);
-void luaopen_expression (lua_State * L);
-void luaopen_logger (lua_State * L);
+
+void luaopen_xmlrpc (lua_State *L);
+
+void luaopen_http (lua_State *L);
+
+void luaopen_redis (lua_State *L);
+
+void luaopen_upstream (lua_State *L);
+
+void luaopen_mempool (lua_State *L);
+
+void luaopen_dns_resolver (lua_State *L);
+
+void luaopen_rsa (lua_State *L);
+
+void luaopen_ip (lua_State *L);
+
+void luaopen_expression (lua_State *L);
+
+void luaopen_logger (lua_State *L);
+
void luaopen_text (lua_State *L);
-void luaopen_util (lua_State * L);
-void luaopen_tcp (lua_State * L);
-void luaopen_html (lua_State * L);
+
+void luaopen_util (lua_State *L);
+
+void luaopen_tcp (lua_State *L);
+
+void luaopen_html (lua_State *L);
+
void luaopen_sqlite3 (lua_State *L);
+
void luaopen_cryptobox (lua_State *L);
+
void luaopen_dns (lua_State *L);
-void luaopen_udp (lua_State * L);
-void luaopen_worker (lua_State * L);
-void luaopen_kann (lua_State * L);
+
+void luaopen_udp (lua_State *L);
+
+void luaopen_worker (lua_State *L);
+
+void luaopen_kann (lua_State *L);
void rspamd_lua_dostring (const gchar *line);
double rspamd_lua_normalize (struct rspamd_config *cfg,
- long double score,
- void *params);
+ long double score,
+ void *params);
/* Config file functions */
void rspamd_lua_post_load_config (struct rspamd_config *cfg);
+
gboolean rspamd_lua_handle_param (struct rspamd_task *task,
- gchar *mname,
- gchar *optname,
- enum lua_var_type expected_type,
- gpointer *res);
+ gchar *mname,
+ gchar *optname,
+ enum lua_var_type expected_type,
+ gpointer *res);
+
gboolean rspamd_lua_check_condition (struct rspamd_config *cfg,
- const gchar *condition);
+ const gchar *condition);
+
void rspamd_lua_dumpstack (lua_State *L);
/* Set lua path according to the configuration */
void rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj,
- GHashTable *vars);
+ GHashTable *vars);
/* Set some lua globals */
gboolean rspamd_lua_set_env (lua_State *L, GHashTable *vars, char **lua_env,
- GError **err);
+ GError **err);
+
void rspamd_lua_set_globals (struct rspamd_config *cfg, lua_State *L);
-struct memory_pool_s * rspamd_lua_check_mempool (lua_State * L, gint pos);
-struct rspamd_config * lua_check_config (lua_State * L, gint pos);
-struct rspamd_async_session* lua_check_session (lua_State * L, gint pos);
-struct ev_loop* lua_check_ev_base (lua_State * L, gint pos);
-struct rspamd_dns_resolver * lua_check_dns_resolver (lua_State * L, gint pos);
+struct memory_pool_s *rspamd_lua_check_mempool (lua_State *L, gint pos);
+
+struct rspamd_config *lua_check_config (lua_State *L, gint pos);
+
+struct rspamd_async_session *lua_check_session (lua_State *L, gint pos);
+
+struct ev_loop *lua_check_ev_base (lua_State *L, gint pos);
+
+struct rspamd_dns_resolver *lua_check_dns_resolver (lua_State *L, gint pos);
enum rspamd_lua_parse_arguments_flags {
RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT = 0,
RSPAMD_LUA_PARSE_ARGUMENTS_IGNORE_MISSING,
};
+
/**
* Extract an arguments from lua table according to format string. Supported arguments are:
* [*]key=S|I|N|B|V|U{a-z};[key=...]
@@ -419,7 +467,7 @@ void *rspamd_lua_check_udata_maybe (lua_State *L, gint pos, const gchar *classna
* @param task
*/
void lua_call_finish_script (struct rspamd_config_cfg_lua_script *sc,
- struct rspamd_task *task);
+ struct rspamd_task *task);
/**
* Run post-load operations
@@ -428,9 +476,10 @@ void lua_call_finish_script (struct rspamd_config_cfg_lua_script *sc,
* @param ev_base
*/
void rspamd_lua_run_postloads (lua_State *L, struct rspamd_config *cfg,
- struct ev_loop *ev_base, struct rspamd_worker *w);
+ struct ev_loop *ev_base, struct rspamd_worker *w);
void rspamd_lua_run_config_post_init (lua_State *L, struct rspamd_config *cfg);
+
void rspamd_lua_run_config_unload (lua_State *L, struct rspamd_config *cfg);
/**
@@ -440,7 +489,7 @@ void rspamd_lua_run_config_unload (lua_State *L, struct rspamd_config *cfg);
* @param ref
*/
void rspamd_lua_add_ref_dtor (lua_State *L, rspamd_mempool_t *pool,
- gint ref);
+ gint ref);
/**
* Tries to load some module using `require` and get some method from it
@@ -450,7 +499,7 @@ void rspamd_lua_add_ref_dtor (lua_State *L, rspamd_mempool_t *pool,
* @return TRUE if function exists in that module, the function is pushed in stack, otherwise stack is unchanged and FALSE is returned
*/
gboolean rspamd_lua_require_function (lua_State *L, const gchar *modname,
- const gchar *funcname);
+ const gchar *funcname);
/**
* Tries to load redis server definition from ucl object specified
@@ -460,9 +509,10 @@ gboolean rspamd_lua_require_function (lua_State *L, const gchar *modname,
* @return
*/
gboolean rspamd_lua_try_load_redis (lua_State *L, const ucl_object_t *obj,
- struct rspamd_config *cfg, gint *ref_id);
+ struct rspamd_config *cfg, gint *ref_id);
struct rspamd_stat_token_s;
+
/**
* Pushes a single word into Lua
* @param L
@@ -477,6 +527,7 @@ enum rspamd_lua_words_type {
RSPAMD_LUA_WORDS_FULL,
RSPAMD_LUA_WORDS_MAX
};
+
/**
* Pushes words (rspamd_stat_token_t) to Lua
* @param L
@@ -484,7 +535,7 @@ enum rspamd_lua_words_type {
* @param how
*/
gint rspamd_lua_push_words (lua_State *L, GArray *words,
- enum rspamd_lua_words_type how);
+ enum rspamd_lua_words_type how);
/* Paths defs */
#define RSPAMD_CONFDIR_INDEX "CONFDIR"
@@ -516,5 +567,8 @@ extern ucl_object_t *lua_traces;
#define LUA_TRACE_POINT do {} while(0)
#endif
-#endif /* WITH_LUA */
+#ifdef __cplusplus
+}
+#endif
+
#endif /* RSPAMD_LUA_H */