description = [[
vulns.lua test post-processing script
]]

categories = {"vuln"}

require 'stdnse'
require 'vulns'

local FID

--local function save_not_vuln(vuln_table)
--  if vuln_table.state == vulns.STATE.NOT_VULN then
--    return true
--  end
--end

prerule = function()
  --FID = vulns.save_reports(save_not_vuln)
  FID = vulns.save_reports()
  if FID then
    return true
  end
  return false
end

postrule = function(host, port)
  if nmap.registry[SCRIPT_NAME] then
    FID = nmap.registry[SCRIPT_NAME].FID
    if FID and vulns.get_ids(FID) then
      return true
    end
  end
  return false
end

prerule_action = function()
  nmap.registry[SCRIPT_NAME] = nmap.registry[SCRIPT_NAME] or {}
  nmap.registry[SCRIPT_NAME].FID = FID -- save the FID for the postrule
  return nil
end

postrule_action = function(host, port)
  local filter = {
  }
  --local list = vulns.find(FID, {})
  --if list then
  --  local out = {}
  --  for _, vuln_table in ipairs(list) do
  --    local data = vulns.format_vuln(vuln_table)
  --    if data then
  --      table.insert(out, data)
  --      table.insert(out, "")
  --    end
  --  end
  --  table.insert(out, string.format("printed:  %d entry", #list))
  --  return stdnse.format_output(true, out)
  --end
  --return vulns.make_output(FID, filter)
  return vulns.make_output(FID, filter)
end

local tactions = {
  prerule = prerule_action,
  postrule = postrule_action,
}

action = function(...) return tactions[SCRIPT_TYPE](...) end
