diff options
author | Jan Hoffmann <jan@3e8.eu> | 2020-01-02 23:20:37 +0100 |
---|---|---|
committer | Jan Hoffmann <jan@3e8.eu> | 2020-01-23 12:44:22 +0100 |
commit | 1750433bc162bf923557a16f6ed7dfd1d3b90be4 (patch) | |
tree | 668c2fd83bbed07b13c2a59729d50730daabeb85 /applications/luci-app-vnstat2/luasrc/controller | |
parent | d844caf13787a66a5deac438d9f28746b79136ff (diff) |
luci-app-vnstat2: add application
This adds an application for vnStat version 2.
Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Diffstat (limited to 'applications/luci-app-vnstat2/luasrc/controller')
-rw-r--r-- | applications/luci-app-vnstat2/luasrc/controller/vnstat2.lua | 50 |
1 files changed, 50 insertions, 0 deletions
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 |