]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Save resolver in config structure and allow to get it from Lua
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Jan 2017 12:13:10 +0000 (12:13 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Jan 2017 12:18:41 +0000 (12:18 +0000)
CMakeLists.txt
src/libserver/cfg_file.h
src/libserver/dns.c
src/lua/lua_config.c

index 887bc93f56f936c3214b4fc240c23bcc7eb78cba..af5ed5d986de6d87475dd50367dc32a922a25dd3 100644 (file)
@@ -662,14 +662,12 @@ IF(ENABLE_JEMALLOC MATCHES "ON")
                ROOT ${JEMALLOC_ROOT_DIR} MODULES jemalloc)
        SET(WITH_JEMALLOC "1")
 ENDIF()
+ProcessPackage(GTHREAD2 LIBRARY ghtread-2.0 INCLUDE glib.h
+       INCLUDE_SUFFIXES include/glib include/glib-2.0
+       ROOT ${GLIB_ROOT_DIR} MODULES gthread-2.0>=2.28)
 ProcessPackage(GLIB2 LIBRARY glib-2.0 INCLUDE glib.h
        INCLUDE_SUFFIXES include/glib include/glib-2.0
        ROOT ${GLIB_ROOT_DIR} MODULES glib-2.0>=2.28)
-IF(GLIB_ROOT_DIR)
-       LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "-lpthread")
-       LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "-lffi")
-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
-ENDIF()
 
 IF(ENABLE_PCRE2 MATCHES "ON")
        ProcessPackage(PCRE LIBRARY pcre2 INCLUDE pcre2.h INCLUDE_SUFFIXES include/pcre2
index 89d13a1f2ccd88c75a7e78b90b822876286c883e..5b0b87f8b39a33ab9d853baa847f11677f96b502 100644 (file)
@@ -32,6 +32,7 @@ struct module_s;
 struct worker_s;
 struct rspamd_external_libs_ctx;
 struct rspamd_cryptobox_pubkey;
+struct rspamd_dns_resolver;
 
 enum { VAL_UNDEF=0, VAL_TRUE, VAL_FALSE };
 
@@ -399,6 +400,7 @@ struct rspamd_config {
        gdouble upstream_error_time;                                    /**< rate of upstream errors                                                    */
        gdouble upstream_revive_time;                                   /**< revive timeout for upstreams                                               */
        struct upstream_ctx *ups_ctx;                                   /**< upstream context                                                                   */
+       struct rspamd_dns_resolver *dns_resolver;               /**< dns resolver if loaded                                                             */
 
        guint min_word_len;                                                             /**< minimum length of the word to be considered                */
        guint max_word_len;                                                             /**< maximum length of the word to be considered                */
index 5d662d8353de43db4743727807499cc5e4e16be7..e1ab754db5a6c6dbf9e1c3ce168eb8f384fd9f91 100644 (file)
@@ -287,6 +287,10 @@ dns_resolver_init (rspamd_logger_t *logger,
 
        rdns_resolver_init (dns_resolver->r);
 
+       if (cfg != NULL) {
+               cfg->dns_resolver = dns_resolver;
+       }
+
        return dns_resolver;
 }
 
index 06157f44eee118de8c0a5036b9d704ed543cb9d8..e5866d6ca15603422d4164f394c04e1e2bf5a3a4 100644 (file)
@@ -62,6 +62,12 @@ LUA_FUNCTION_DEF (config, get_all_opt);
  * @return {mempool} [memory pool](mempool.md) object
  */
 LUA_FUNCTION_DEF (config, get_mempool);
+/***
+ * @method rspamd_config:get_resolver()
+ * Returns DNS resolver.
+ * @return {dns_resolver} opaque DNS resolver pointer if any
+ */
+LUA_FUNCTION_DEF (config, get_resolver);
 /***
  * @method rspamd_config:add_radix_map(mapline[, description])
  * Creates new dynamic map of IP/mask addresses.
@@ -595,6 +601,7 @@ LUA_FUNCTION_DEF (config, set_peak_cb);
 static const struct luaL_reg configlib_m[] = {
        LUA_INTERFACE_DEF (config, get_module_opt),
        LUA_INTERFACE_DEF (config, get_mempool),
+       LUA_INTERFACE_DEF (config, get_resolver),
        LUA_INTERFACE_DEF (config, get_all_opt),
        LUA_INTERFACE_DEF (config, add_radix_map),
        LUA_INTERFACE_DEF (config, radix_from_config),
@@ -712,6 +719,27 @@ lua_config_get_mempool (lua_State * L)
                rspamd_lua_setclass (L, "rspamd{mempool}", -1);
                *ppool = cfg->cfg_pool;
        }
+       else {
+               lua_pushnil (L);
+       }
+       return 1;
+}
+
+static int
+lua_config_get_resolver (lua_State * L)
+{
+       struct rspamd_dns_resolver **pres;
+       struct rspamd_config *cfg = lua_check_config (L, 1);
+
+       if (cfg != NULL && cfg->dns_resolver) {
+               pres = lua_newuserdata (L, sizeof (*pres));
+               rspamd_lua_setclass (L, "rspamd{resolver}", -1);
+               *pres = cfg->dns_resolver;
+       }
+       else {
+               lua_pushnil (L);
+       }
+
        return 1;
 }