]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Support ClickHouse database
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 2 Dec 2018 13:22:53 +0000 (13:22 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 2 Dec 2018 13:22:53 +0000 (13:22 +0000)
Issue: #2655

lualib/lua_clickhouse.lua
src/plugins/lua/clickhouse.lua

index e14518ca6a9575f3e83eed2dd85a5648e8dc1b4f..bdb096d042e91bbf39be8cc39b1dc555bad44a5a 100644 (file)
@@ -222,7 +222,9 @@ exports.select = function (upstream, settings, params, query, ok_cb, fail_cb)
       connect_prefix = 'https://'
     end
     local ip_addr = upstream:get_addr():to_string(true)
-    http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow'
+    local database = params.database or 'default'
+    http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow',
+        connect_prefix, ip_addr, escape_spaces(database))
   end
 
   return rspamd_http.request(http_params)
@@ -271,7 +273,9 @@ exports.select_sync = function (upstream, settings, params, query, ok_cb, fail_c
       connect_prefix = 'https://'
     end
     local ip_addr = upstream:get_addr():to_string(true)
-    http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow'
+    local database = params.database or 'default'
+    http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow',
+        connect_prefix, ip_addr, escape_spaces(database))
   end
 
   local err, response = rspamd_http.request(http_params)
@@ -333,9 +337,11 @@ exports.insert = function (upstream, settings, params, query, rows,
       connect_prefix = 'https://'
     end
     local ip_addr = upstream:get_addr():to_string(true)
-    http_params.url = string.format('%s%s/?query=%s%%20FORMAT%%20TabSeparated',
+    local database = params.database or 'default'
+    http_params.url = string.format('%s%s/?database=%s&query=%s%%20FORMAT%%20TabSeparated',
         connect_prefix,
         ip_addr,
+        escape_spaces(database),
         escape_spaces(query))
   end
 
@@ -383,7 +389,9 @@ exports.generic = function (upstream, settings, params, query,
       connect_prefix = 'https://'
     end
     local ip_addr = upstream:get_addr():to_string(true)
-    http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow'
+    local database = params.database or 'default'
+    http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow',
+        connect_prefix, ip_addr, escape_spaces(database))
   end
 
   return rspamd_http.request(http_params)
@@ -426,7 +434,9 @@ exports.generic_sync = function (upstream, settings, params, query)
       connect_prefix = 'https://'
     end
     local ip_addr = upstream:get_addr():to_string(true)
-    http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow'
+    local database = params.database or 'default'
+    http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow',
+        connect_prefix, ip_addr, escape_spaces(database))
   end
 
   return rspamd_http.request(http_params)
index 68a435c6c868bd0c0d29dbbfbb972141b668c633..5fc642760f7cc1275ebd518d601ed0a38ae9e267 100644 (file)
@@ -50,6 +50,7 @@ local settings = {
   full_urls = false,
   from_tables = nil,
   enable_symbols = false,
+  database = 'default',
   use_https = false,
   use_gzip = true,
   allow_local = false,