diff options
3 files changed, 63 insertions, 0 deletions
diff --git a/applications/luci-minidlna/luasrc/controller/minidlna.lua b/applications/luci-minidlna/luasrc/controller/minidlna.lua index 3444a3d66..c775bdd24 100644 --- a/applications/luci-minidlna/luasrc/controller/minidlna.lua +++ b/applications/luci-minidlna/luasrc/controller/minidlna.lua @@ -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 diff --git a/applications/luci-minidlna/luasrc/view/admin_status/index/minidlna.htm b/applications/luci-minidlna/luasrc/view/admin_status/index/minidlna.htm new file mode 100644 index 000000000..b2feeb2ef --- /dev/null +++ b/applications/luci-minidlna/luasrc/view/admin_status/index/minidlna.htm @@ -0,0 +1 @@ +<%+minidlna_status%> diff --git a/applications/luci-minidlna/luasrc/view/minidlna_status.htm b/applications/luci-minidlna/luasrc/view/minidlna_status.htm new file mode 100644 index 000000000..6808245ab --- /dev/null +++ b/applications/luci-minidlna/luasrc/view/minidlna_status.htm @@ -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> |