From 1750433bc162bf923557a16f6ed7dfd1d3b90be4 Mon Sep 17 00:00:00 2001 From: Jan Hoffmann Date: Thu, 2 Jan 2020 23:20:37 +0100 Subject: luci-app-vnstat2: add application This adds an application for vnStat version 2. Signed-off-by: Jan Hoffmann --- .../luci-app-vnstat2/luasrc/controller/vnstat2.lua | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 applications/luci-app-vnstat2/luasrc/controller/vnstat2.lua (limited to 'applications/luci-app-vnstat2/luasrc/controller') diff --git a/applications/luci-app-vnstat2/luasrc/controller/vnstat2.lua b/applications/luci-app-vnstat2/luasrc/controller/vnstat2.lua new file mode 100644 index 0000000000..139c1f4991 --- /dev/null +++ b/applications/luci-app-vnstat2/luasrc/controller/vnstat2.lua @@ -0,0 +1,50 @@ +module("luci.controller.vnstat2", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/vnstat") then + return + end + + entry({"admin", "status", "vnstat2"}, alias("admin", "status", "vnstat2", "graphs"), _("vnStat Traffic Monitor"), 90) + entry({"admin", "status", "vnstat2", "graphs"}, template("vnstat2/graphs"), _("Graphs"), 1) + entry({"admin", "status", "vnstat2", "config"}, view("vnstat2/config"), _("Configuration"), 2) + entry({"admin", "status", "vnstat2", "graph"}, call("action_graph"), nil, 3) +end + +function action_graph() + local util = require "luci.util" + + local param = luci.http.formvalue + + local iface = param("iface") + local style = param("style") + + if not iface or not style then + luci.http.status(404, "Not Found") + return + end + + local style_valid = false + for _, v in ipairs({"s", "t", "5", "h", "d", "m", "y"}) do + if v == style then + style_valid = true + break + end + end + + if not style_valid then + luci.http.status(404, "Not Found") + return + end + + luci.http.prepare_content("image/png") + + local cmd = "vnstati -i %s -%s -o -" % { + util.shellquote(iface), + util.shellquote(style) + } + + local image = io.popen(cmd) + luci.http.write(image:read("*a")) + image:close() +end -- cgit v1.2.3