]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Rework] Stop embedding rspamadm scripts into C
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 4 Nov 2017 12:42:14 +0000 (12:42 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 4 Nov 2017 12:42:14 +0000 (12:42 +0000)
14 files changed:
lualib/rspamadm/ansicolors.lua [moved from src/rspamadm/ansicolors.lua.in with 93% similarity]
lualib/rspamadm/confighelp.lua [moved from src/rspamadm/confighelp.lua with 95% similarity]
lualib/rspamadm/fuzzy_convert.lua [moved from src/rspamadm/fuzzy_convert.lua with 100% similarity]
lualib/rspamadm/fuzzy_stat.lua [moved from src/rspamadm/fuzzy_stat.lua with 98% similarity]
lualib/rspamadm/getopt.lua [moved from src/rspamadm/getopt.lua.in with 96% similarity]
lualib/rspamadm/grep.lua [moved from src/rspamadm/grep.lua with 100% similarity]
lualib/rspamadm/stat_convert.lua [moved from src/rspamadm/stat_convert.lua with 100% similarity]
src/rspamadm/CMakeLists.txt
src/rspamadm/confighelp.c
src/rspamadm/fuzzy_convert.c
src/rspamadm/grep.c
src/rspamadm/rspamadm.c
src/rspamadm/rspamadm.h
src/rspamadm/stat_convert.c

similarity index 93%
rename from src/rspamadm/ansicolors.lua.in
rename to lualib/rspamadm/ansicolors.lua
index 1e9ca2065f67b697894fb13e6cb6f37895f7c2b6..739cf427c637cc55f6a05732796a82faa7f4cea1 100644 (file)
@@ -10,7 +10,7 @@ function colormt:__concat(other)
 end
 
 function colormt:__call(s)
-  return self .. s .. _M.reset
+  return self .. s .. ansicolors.reset
 end
 
 colormt.__metatable = {}
@@ -54,3 +54,5 @@ local colors = {
 for c, v in pairs(colors) do
   ansicolors[c] = makecolor(v)
 end
+
+return ansicolors
\ No newline at end of file
similarity index 95%
rename from src/rspamadm/confighelp.lua
rename to lualib/rspamadm/confighelp.lua
index e95dd0b36871bc13d62f43b76f423ca20551349e..a03578b6ec66101108ee47e10037a279819520c8 100644 (file)
@@ -7,9 +7,8 @@ local known_attrs = {
   default = 1,
 }
 
---.USE "getopt"
---.USE "ansicolors"
-
+local getopt = require "rspamadm/getopt"
+local ansicolors = require "rspamadm/ansicolors"
 
 local function maybe_print_color(key)
   if not opts['no-color'] then
@@ -101,7 +100,7 @@ local function print_help(key, value, tabs)
 end
 
 return function(args, res)
-  opts = getopt(args, '')
+  opts = getopt.getopt(args, '')
 
   local sorted = sort_values(res)
 
similarity index 98%
rename from src/rspamadm/fuzzy_stat.lua
rename to lualib/rspamadm/fuzzy_stat.lua
index 401b297d13f284478aa6b253bee118e8000a27b2..748dbda20203c97c78d70be8997ff7e86888c271 100644 (file)
@@ -141,13 +141,13 @@ local function print_result(r)
   return print_num(r)
 end
 
---.USE "getopt"
+local getopt = require "rspamadm/getopt"
 
 return function(args, res)
   local res_ips = {}
   local res_databases = {}
   local wrk = res['workers']
-  opts = getopt(args, '')
+  opts = getopt.getopt(args, '')
 
   if wrk then
     for _,pr in pairs(wrk) do
similarity index 96%
rename from src/rspamadm/getopt.lua.in
rename to lualib/rspamadm/getopt.lua
index d069d2d5fa7939c4aeb81471ea7d84f565ce02fe..bd0a2f67e996625b90358f19a877e495f7ef1f79 100644 (file)
@@ -29,3 +29,6 @@ local function getopt(arg, options)
   return tab
 end
 
+return {
+  getopt = getopt
+}
index 752e23d8b6e33a5ebea6b00b613063eca9db6b5f..7e991372ab2a9c337bd7751f09cc88ef7cd107eb 100644 (file)
@@ -21,16 +21,7 @@ SET(RSPAMADMSRC rspamadm.c
         ${CMAKE_SOURCE_DIR}/src/worker.c
         ${CMAKE_SOURCE_DIR}/src/rspamd_proxy.c
         ${CMAKE_SOURCE_DIR}/src/log_helper.c)
-SET(RSPAMADMLUASRC
-        ${CMAKE_CURRENT_SOURCE_DIR}/fuzzy_stat.lua
-        ${CMAKE_CURRENT_SOURCE_DIR}/confighelp.lua)
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-ADD_CUSTOM_TARGET(rspamadm_lua_preprocess
-        ${PERL_EXECUTABLE}
-            "${CMAKE_SOURCE_DIR}/lua_preprocess.pl"
-            "${CMAKE_CURRENT_SOURCE_DIR}"
-            "${CMAKE_CURRENT_BINARY_DIR}"
-        SOURCES ${RSPAMADMLUASRC} ${CMAKE_SOURCE_DIR}/lua_preprocess.pl)
 IF (ENABLE_HYPERSCAN MATCHES "ON")
     LIST(APPEND RSPAMADMSRC "${CMAKE_SOURCE_DIR}/src/hs_helper.c")
 ENDIF()
index a64afe4b01ef814cd1cb7fb4997384ce6e60fb48..f3da9422d5e4733f78f7cba29fa35cca29dbe4cf 100644 (file)
@@ -85,6 +85,7 @@ rspamadm_confighelp_show (struct rspamd_config *cfg, gint argc, gchar **argv,
 {
        rspamd_fstring_t *out;
 
+       rspamd_lua_set_path (cfg->lua_state, NULL, NULL);
        out = rspamd_fstring_new ();
 
        if (json) {
@@ -107,7 +108,7 @@ rspamadm_confighelp_show (struct rspamd_config *cfg, gint argc, gchar **argv,
                                argc,
                                argv,
                                obj,
-                               rspamadm_script_confighelp);
+                               "confighelp");
 
                rspamd_fstring_free (out);
                return;
index dc15b7e3871c94dfc37a87097547d9a75e1ab6b6..a143b89d9c8213c5517c5fa8548f5ac5e18be9e0 100644 (file)
@@ -17,7 +17,6 @@
 #include "config.h"
 #include "rspamadm.h"
 #include "lua/lua_common.h"
-#include "fuzzy_convert.lua.h"
 
 static gchar *source_db = NULL;
 static gchar *redis_host = NULL;
@@ -109,6 +108,7 @@ rspamadm_fuzzyconvert (gint argc, gchar **argv)
        }
 
        L = rspamd_lua_init ();
+       rspamd_lua_set_path (L, NULL, NULL);
 
        obj = ucl_object_typed_new (UCL_OBJECT);
        ucl_object_insert_key (obj, ucl_object_fromstring (source_db),
@@ -132,7 +132,7 @@ rspamadm_fuzzyconvert (gint argc, gchar **argv)
                        argc,
                        argv,
                        obj,
-                       rspamadm_script_fuzzy_convert);
+                       "fuzzy_convert");
 
        lua_close (L);
        ucl_object_unref (obj);
index 9665b40e86ade0714e7a3a34e0e96a75a39fceed..2ce4f2c7671866f7145ac99a740e6a7ce4bb7c23 100644 (file)
@@ -17,7 +17,6 @@
 #include "config.h"
 #include "rspamadm.h"
 #include "lua/lua_common.h"
-#include "grep.lua.h"
 
 static gchar *string = NULL;
 static gchar *pattern = NULL;
@@ -115,6 +114,7 @@ rspamadm_grep (gint argc, gchar **argv)
        }
 
        L = rspamd_lua_init ();
+       rspamd_lua_set_path (L, NULL, NULL);
 
        obj = ucl_object_typed_new (UCL_OBJECT);
        if (string) {
@@ -148,7 +148,7 @@ rspamadm_grep (gint argc, gchar **argv)
                        argc,
                        argv,
                        obj,
-                       rspamadm_script_grep);
+                       "grep");
 
        lua_close (L);
        ucl_object_unref (obj);
index d524a8f61c809a3148f1ab595d374c7e94e713ce..f58da84afd9a42ad56a3102e1c76d8734ab0b474 100644 (file)
@@ -187,28 +187,30 @@ rspamadm_parse_ucl_var (const gchar *option_name,
 
 gboolean
 rspamadm_execute_lua_ucl_subr (gpointer pL, gint argc, gchar **argv,
-               const ucl_object_t *res, const gchar *script)
+               const ucl_object_t *res, const gchar *script_name)
 {
        lua_State *L = pL;
        gint err_idx, i, ret;
        GString *tb;
+       gchar str[PATH_MAX];
 
-       g_assert (script != NULL);
+       g_assert (script_name != NULL);
        g_assert (res != NULL);
        g_assert (L != NULL);
 
-       if (luaL_dostring (L, script) != 0) {
-               msg_err ("cannot execute lua script: %s",
-                               lua_tostring (L, -1));
+       rspamd_snprintf (str, sizeof (str), "return require \"%s.%s\"", "rspamadm",
+                       script_name);
+
+       if (luaL_dostring (L, str) != 0) {
+               msg_err ("cannot execute lua script %s: %s",
+                               str, lua_tostring (L, -1));
                return FALSE;
        }
        else {
                if (lua_type (L, -1) != LUA_TFUNCTION) {
                        msg_err ("lua script must return "
                                        "function and not %s",
-                                       lua_typename (L,
-                                                       lua_type (L, -1)));
-                       lua_settop (L, 0);
+                                       lua_typename (L, lua_type (L, -1)));
 
                        return FALSE;
                }
@@ -233,7 +235,7 @@ rspamadm_execute_lua_ucl_subr (gpointer pL, gint argc, gchar **argv,
 
        if ((ret = lua_pcall (L, 2, 0, err_idx)) != 0) {
                tb = lua_touserdata (L, -1);
-               msg_err ("call to adm lua script failed (%d): %v", ret, tb);
+               msg_err ("call to rspamadm lua script failed (%d): %v", ret, tb);
 
                if (tb) {
                        g_string_free (tb, TRUE);
index 3c4da9aca662a8cbbd40d714c4deb70515a975af..a778457bc376acacdf81478ad4e58d6781e4b9c2 100644 (file)
@@ -41,6 +41,6 @@ extern struct rspamadm_command help_command;
 const struct rspamadm_command *rspamadm_search_command (const gchar *name);
 
 gboolean rspamadm_execute_lua_ucl_subr (gpointer L, gint argc, gchar **argv,
-               const ucl_object_t *res, const gchar *script);
+               const ucl_object_t *res, const gchar *script_name);
 
 #endif
index 48acbc9bd2bd117af22975e12255fe2b13a007bb..98eb337000361874e0077e0e1558e20bbb474f2d 100644 (file)
@@ -16,7 +16,6 @@
 #include "config.h"
 #include "rspamadm.h"
 #include "lua/lua_common.h"
-#include "stat_convert.lua.h"
 
 static gchar *source_db = NULL;
 static gchar *redis_host = NULL;
@@ -117,6 +116,7 @@ rspamadm_statconvert (gint argc, gchar **argv)
        }
 
        L = rspamd_lua_init ();
+       rspamd_lua_set_path (L, NULL, NULL);
 
        obj = ucl_object_typed_new (UCL_OBJECT);
        ucl_object_insert_key (obj, ucl_object_fromstring (source_db),
@@ -147,7 +147,7 @@ rspamadm_statconvert (gint argc, gchar **argv)
                        argc,
                        argv,
                        obj,
-                       rspamadm_script_stat_convert);
+                       "stat_convert");
 
        lua_close (L);
        ucl_object_unref (obj);