102 lines
2.1 KiB
HTML
102 lines
2.1 KiB
HTML
<%#
|
|
Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
|
|
Licensed to the public under the Apache License 2.0.
|
|
-%>
|
|
|
|
<%-
|
|
|
|
local fs = require "nixio.fs"
|
|
local sys = require "luci.sys"
|
|
local utl = require "luci.util"
|
|
|
|
local param = luci.http.formvalue
|
|
|
|
local iface = param("iface")
|
|
local style = param("style")
|
|
|
|
style = (style and #style > 0) and style or "s"
|
|
|
|
|
|
--
|
|
-- render image
|
|
--
|
|
if iface then
|
|
style = style:gsub("[^%w]", "")
|
|
iface = iface:gsub("[^%w%.%-%_]", "")
|
|
|
|
luci.http.prepare_content("image/png")
|
|
|
|
local png = io.popen("vnstati -i '%s' '-%s' -o -" % { iface, style })
|
|
luci.http.write(png:read("*a"))
|
|
png:close()
|
|
|
|
return
|
|
|
|
--
|
|
-- update database
|
|
--
|
|
else
|
|
sys.call("vnstat -u >/dev/null 2>/dev/null")
|
|
end
|
|
|
|
|
|
--
|
|
-- find databases
|
|
--
|
|
local dbdir, line
|
|
|
|
for line in io.lines("/etc/vnstat.conf") do
|
|
dbdir = line:match("^%s*DatabaseDir%s+[\"'](%S-)[\"']")
|
|
if dbdir then break end
|
|
end
|
|
|
|
dbdir = dbdir or "/var/lib/vnstat"
|
|
|
|
-%>
|
|
|
|
<%+header%>
|
|
|
|
<h2 name="content"><%:VnStat Graphs%></h2>
|
|
|
|
<form action="" method="get">
|
|
|
|
<select name="style">
|
|
<option value="s"<%=(style == "s") and ' selected="selected"' or ''%>><%:Summary display%></option>
|
|
<option value="t"<%=(style == "t") and ' selected="selected"' or ''%>><%:Top 10 display%></option>
|
|
<option value="h"<%=(style == "h") and ' selected="selected"' or ''%>><%:Hourly traffic%></option>
|
|
<option value="d"<%=(style == "d") and ' selected="selected"' or ''%>><%:Daily traffic%></option>
|
|
<option value="m"<%=(style == "m") and ' selected="selected"' or ''%>><%:Monthly traffic%></option>
|
|
</select>
|
|
|
|
<input type="submit" value="<%:Update »%>" />
|
|
|
|
</form>
|
|
|
|
<br /><hr /><br />
|
|
|
|
<div style="text-align:center">
|
|
<%
|
|
empty = true
|
|
ifdir = fs.dir(dbdir)
|
|
|
|
if ifdir then
|
|
for iface in ifdir do
|
|
if iface:sub(1,1) ~= "." then
|
|
empty = false
|
|
%>
|
|
<img src="<%=REQUEST_URI%>?iface=<%=iface%>&style=<%=param('style')%>" alt="" />
|
|
<br /><br />
|
|
<%
|
|
end
|
|
end
|
|
end
|
|
%>
|
|
|
|
<% if empty then %>
|
|
<p><em><%:No database has been set up yet. Go to the VnStat configuration and enable monitoring for one or more interfaces.%></em></p>
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
<%+footer%>
|