]> source.dussan.org Git - rspamd.git/commitdiff
Start LUA API for HTML parts.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 23 Jul 2015 13:12:14 +0000 (14:12 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 23 Jul 2015 13:12:14 +0000 (14:12 +0100)
src/lua/CMakeLists.txt
src/lua/lua_common.c
src/lua/lua_common.h
src/lua/lua_html.c [new file with mode: 0644]

index d1407c7a44c2b4429122d7969d99ba03aa2d53f5..ad526d53412547653b5d420e174bc58338a98b5b 100644 (file)
@@ -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
index c2c54dbe1efec39110c795bfbfba88f38dc42e4b..59a78d873e7ff8eda7ebaa56bb8bfaca33b48bbc 100644 (file)
@@ -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);
 
index 60bb6e44688b427c44f4ff37ce18019f3cd622db..152321373fc665fdeaabf7151be96cbf0f8629a9 100644 (file)
@@ -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 (file)
index 0000000..94bd7b9
--- /dev/null
@@ -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);
+}