applications/luci-minidlna: add status output

This commit is contained in:
Jo-Philipp Wich 2012-04-07 23:38:53 +00:00
parent 393d85fcab
commit 3353616e61
3 changed files with 63 additions and 0 deletions

View file

@ -24,4 +24,37 @@ function index()
page = entry({"admin", "services", "minidlna"}, cbi("minidlna"), _("miniDLNA"))
page.i18n = "minidlna"
page.dependent = true
entry({"admin", "services", "minidlna_status"}, call("minidlna_status"))
end
function minidlna_status()
local sys = require "luci.sys"
local uci = require "luci.model.uci".cursor()
local port = tonumber(uci:get_first("minidlna", "minidlna", "port"))
local status = {
running = (sys.call("pidof minidlna >/dev/null") == 0),
audio = 0,
video = 0,
image = 0
}
if status.running then
local fd = sys.httpget("http://127.0.0.1:%d/" % (port or 8200), true)
if fd then
local ln
repeat
ln = fd:read("*l")
if ln and ln:match("files:") then
local ftype, fcount = ln:match("(.+) files: (%d+)")
status[ftype:lower()] = tonumber(fcount) or 0
end
until not ln
fd:close()
end
end
luci.http.prepare_content("application/json")
luci.http.write_json(status)
end

View file

@ -0,0 +1 @@
<%+minidlna_status%>

View file

@ -0,0 +1,29 @@
<script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=luci.dispatcher.build_url("admin/services/minidlna_status")%>', null,
function(x, st)
{
var tb = document.getElementById('minidlna_status');
if (st && tb)
{
if (st.running)
{
tb.innerHTML = String.format(
'<%:%The miniDLNA service is active, serving %d audio, %d video and %d image files.%>',
st.audio, st.video, st.image
);
}
else
{
tb.innerHTML = '<%:The miniDLNA service is not running.%>';
}
}
}
);
//]]></script>
<fieldset class="cbi-section">
<legend><%:miniDLNA Status%></legend>
<p id="minidlna_status">
<em><%:Collecting data...%></em>
</p>
</fieldset>