File: flow_dbms.lua

package info (click to toggle)
ntopng 5.2.1%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 121,832 kB
  • sloc: javascript: 143,431; cpp: 71,175; ansic: 11,108; sh: 4,687; makefile: 911; python: 587; sql: 512; pascal: 234; perl: 118; ruby: 52; exp: 4
file content (50 lines) | stat: -rw-r--r-- 1,003 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
--
-- (C) 2021 - ntop.org
--

local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/flow_dbms/drivers/?.lua;" .. package.path
local flow_dbms = {}
local driver

local available_tops = {"host", "src_host", "dst_host",
			"port", "src_port", "dst_port",
			"conversations"}

local function checkTop(what_k)
   for _, k in pairs(available_tops) do
      if k == what_k then return true end
   end

   return false
end

function flow_dbms:new()
   if ntop.getPrefs().is_dump_flows_to_mysql_enabled == true then
      driver = require("mysql"):new()
   else --[[ if nindex is enabled... --]]
   end

   local obj = {
      driver = driver
   }

   setmetatable(obj, self)
   self.__index = self

   return obj
end

function flow_dbms:queryTopk(ifid, what_k, filter)
   if not driver then
      return {} -- TODO: handle error
   end

   if not checkTop(what_k) then
      return {} -- TODO: handle error
   end

   return driver:topk(ifid, what_k, filter)
end

return flow_dbms