diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/euvd.lua | 72 | ||||
-rw-r--r-- | plugins/hello.lua | 5 | ||||
-rw-r--r-- | plugins/repology.lua | 34 | ||||
-rw-r--r-- | plugins/robtex.lua | 39 |
4 files changed, 150 insertions, 0 deletions
diff --git a/plugins/euvd.lua b/plugins/euvd.lua new file mode 100644 index 0000000..9b67831 --- /dev/null +++ b/plugins/euvd.lua @@ -0,0 +1,72 @@ +local milla = require("milla") +local os = require("os") +local json = require("json") + +-- https://euvd.enisa.europa.eu/apidoc +function euvd(cli_args) + local args = {} + for i in string.gmatch(cli_args, "%S+") do table.insert(args, i) end + + os.setenv("http_proxy", "http://172.17.0.1:8120") + + local http = require("http") + local url + + local url_latest = + "https://euvdservices.enisa.europa.eu/api/lastvulnerabilities" + local url_exploited = + "https://euvdservices.enisa.europa.eu/api/exploitedvulnerabilities" + local url_critical = + "https://euvdservices.enisa.europa.eu/api/criticalvulnerabilities" + + if args[1] == "latest" then + url = url_latest + elseif args[1] == "exploited" then + url = url_exploited + elseif args[1] == "critical" then + url = url_critical + else + return "Invalid command" + end + + local response, err = http.request("GET", url, {timeout = "10s"}) + if err ~= nil then + print(err) + return err + end + print(response.body) + + local json_response, err = json.decode(response.body) + if err ~= nil then + print(err) + return err + end + + if response.status_code ~= 200 then + return "Error: " .. response.status_code + end + + local result = "" + for k, v in ipairs(json_response) do + result = result .. "id: " .. v["id"] .. "\n" + result = result .. "description: " .. v["description"] .. "\n" + result = result .. "datePublished: " .. v["datePublished"] .. "\n" + result = result .. "dateUpdated: " .. v["dateUpdated"] .. "\n" + result = result .. "baseScore: " .. v["baseScore"] .. "\n" + result = result .. "baseScoreVersion: " .. v["baseScoreVersion"] .. "\n" + result = result .. "baseScoreVector: " .. v["baseScoreVector"] .. "\n" + result = result .. "references: " .. v["references"] .. "\n" + result = result .. "aliases: " .. v["aliases"] .. "\n" + result = result .. "assigner: " .. v["assigner"] .. "\n" + result = result .. "epss: " .. v["epss"] .. "\n" + result = result .. + "----------------------------------------------------------------" .. + "\n" + end + + print(result) + + return result +end + +milla.register_cmd("/plugins/euvd.lua", "euvd", "euvd") diff --git a/plugins/hello.lua b/plugins/hello.lua new file mode 100644 index 0000000..b9c5bc2 --- /dev/null +++ b/plugins/hello.lua @@ -0,0 +1,5 @@ +local milla = require("milla") + +function hello() milla.reply_to("hello") end + +milla.register_cmd("/plugins/hello.lua", "hello", "hello") diff --git a/plugins/repology.lua b/plugins/repology.lua new file mode 100644 index 0000000..57278b6 --- /dev/null +++ b/plugins/repology.lua @@ -0,0 +1,34 @@ +local milla = require("milla") +local os = require("os") +local json = require("json") + +-- https://repology.org/api +-- /repology void_x86_64 +function repology(arg) + -- os.setenv("http_proxy", "http://172.17.0.1:8120") + + local http = require("http") + + local url = "https://repology.org/api/v1/repository/" .. arg .. "/problems" + + local response = http.request("GET", url) + + io.write(response.body) + + local json_response, err = json.decode(response.body) + io.write(json_response) + if err ~= nil then print(err) end + + for _, item in pairs(json_response) do + for k, v in ipairs(item) do print(k, v) end + end + + local result = "" + for key, value in pairs(json_response) do + result = result .. key .. ": " .. value .. " -- " + end + + return result +end + +milla.register_cmd("/plugins/repology.lua", "repology", "repology") diff --git a/plugins/robtex.lua b/plugins/robtex.lua new file mode 100644 index 0000000..79b7b63 --- /dev/null +++ b/plugins/robtex.lua @@ -0,0 +1,39 @@ +local milla = require("milla") +local os = require("os") + +-- https://www.robtex.com/api/ +function robtex(cli_args) + local args = {} + for i in string.gmatch(cli_args, "%S+") do table.insert(args, i) end + + os.setenv("http_proxy", "http://172.17.0.1:8120") + + local http = require("http") + + local url_ipquery = "https://freeapi.robtex.com/ipquery/" + local url_asquery = "https://freeapi.robtex.com/asquery/" + local url_pdns_forward = "https://freeapi.robtex.com/pdns/forward/" + local url_rpns_reverse = "https://freeapi.robtex.com/pdns/reverse" + + local url + + if args[1] == "ipquery" then + url = url_ipquery .. args[2] + elseif args[1] == "asquery" then + url = url_asquery .. args[2] + elseif args[1] == "pdns_forward" then + url = url_pdns_forward .. args[2] + elseif args[1] == "pdns_reverse" then + url = url_rpns_reverse .. args[2] + else + return "Invalid command" + end + + local response = http.request("GET", url) + + io.write(response.body) + + return response.body +end + +milla.register_cmd("/plugins/robtex.lua", "robtex", "robtex") |