summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-vnstat2/luasrc/controller
diff options
context:
space:
mode:
authorJan Hoffmann <jan@3e8.eu>2020-01-02 23:20:37 +0100
committerJan Hoffmann <jan@3e8.eu>2020-01-23 12:44:22 +0100
commit1750433bc162bf923557a16f6ed7dfd1d3b90be4 (patch)
tree668c2fd83bbed07b13c2a59729d50730daabeb85 /applications/luci-app-vnstat2/luasrc/controller
parentd844caf13787a66a5deac438d9f28746b79136ff (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.lua50
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