aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-23 14:12:14 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-23 14:12:14 +0100
commit9849dfadb597e7def4e415ec9aa144071cdd5d1c (patch)
tree028c18adff5dd8abd85804af993ebea9e9994bdf /src/lua
parenta98a5c4890c9daed109ed2e7bd7376a6179092ec (diff)
downloadrspamd-9849dfadb597e7def4e415ec9aa144071cdd5d1c.tar.gz
rspamd-9849dfadb597e7def4e415ec9aa144071cdd5d1c.zip
Start LUA API for HTML parts.
Diffstat (limited to 'src/lua')
-rw-r--r--src/lua/CMakeLists.txt3
-rw-r--r--src/lua/lua_common.c1
-rw-r--r--src/lua/lua_common.h1
-rw-r--r--src/lua/lua_html.c61
4 files changed, 65 insertions, 1 deletions
diff --git a/src/lua/CMakeLists.txt b/src/lua/CMakeLists.txt
index d1407c7a4..ad526d534 100644
--- a/src/lua/CMakeLists.txt
+++ b/src/lua/CMakeLists.txt
@@ -22,6 +22,7 @@ SET(LUASRC ${CMAKE_CURRENT_SOURCE_DIR}/lua_common.c
${CMAKE_CURRENT_SOURCE_DIR}/lua_mimepart.c
${CMAKE_CURRENT_SOURCE_DIR}/lua_url.c
${CMAKE_CURRENT_SOURCE_DIR}/lua_util.c
- ${CMAKE_CURRENT_SOURCE_DIR}/lua_tcp.c)
+ ${CMAKE_CURRENT_SOURCE_DIR}/lua_tcp.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/lua_html.c)
SET(RSPAMD_LUA ${LUASRC} PARENT_SCOPE) \ No newline at end of file
diff --git a/src/lua/lua_common.c b/src/lua/lua_common.c
index c2c54dbe1..59a78d873 100644
--- a/src/lua/lua_common.c
+++ b/src/lua/lua_common.c
@@ -237,6 +237,7 @@ rspamd_lua_init (struct rspamd_config *cfg)
luaopen_text (L);
luaopen_util (L);
luaopen_tcp (L);
+ luaopen_html (L);
rspamd_lua_add_preload (L, "ucl", luaopen_ucl);
diff --git a/src/lua/lua_common.h b/src/lua/lua_common.h
index 60bb6e446..152321373 100644
--- a/src/lua/lua_common.h
+++ b/src/lua/lua_common.h
@@ -214,6 +214,7 @@ 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);
gint rspamd_lua_call_filter (const gchar *function, struct rspamd_task *task);
gint rspamd_lua_call_chain_filter (const gchar *function,
diff --git a/src/lua/lua_html.c b/src/lua/lua_html.c
new file mode 100644
index 000000000..94bd7b982
--- /dev/null
+++ b/src/lua/lua_html.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2015, Vsevolod Stakhov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "lua_common.h"
+#include "message.h"
+#include "html.h"
+#include "images.h"
+
+/***
+ * @module rspamd_html
+ * This module provides different methods to access HTML tags. To get HTML context
+ * from an HTML part you could use method `part:get_html()`
+ * @example
+rspamd_config.R_HTML_IMAGE = function (task)
+ parts = task:get_text_parts()
+ if parts then
+ for _,part in ipairs(parts) do
+ if part:is_html() then
+ local html = part:get_html()
+ -- Do something with html
+ end
+ end
+ end
+ return false
+end
+ */
+
+static const struct luaL_reg htmllib_m[] = {
+ {"__tostring", rspamd_lua_class_tostring},
+ {NULL, NULL}
+};
+
+
+void
+luaopen_html (lua_State * L)
+{
+ rspamd_lua_new_class (L, "rspamd{html}", htmllib_m);
+ lua_pop (L, 1);
+}