applications/luci-wol: handle command execution in write hook and use message facility to output info

remotes/tags/0.10.0
Jo-Philipp Wich 2010-04-21 21:25:58 +00:00
parent 3cb299dc10
commit 34b3ae2a42
1 changed files with 42 additions and 45 deletions

View File

@ -23,51 +23,6 @@ m.reset = false
local has_ewk = fs.access("/usr/bin/etherwake")
local has_wol = fs.access("/usr/bin/wol")
if luci.http.formvalue("cbi.submit") then
local host = luci.http.formvalue("cbid.wol.1.mac")
if host and #host > 0 then
local cmd
local util = luci.http.formvalue("cbid.wol.1.binary") or (
has_ewk and "/usr/bin/etherwake" or "/usr/bin/wol"
)
if util == "/usr/bin/etherwake" then
local iface = luci.http.formvalue("cbid.wol.1.iface")
cmd = "%s -D%s %q" %{
util, (iface ~= "" and " -i %q" % iface or ""), host
}
else
cmd = "%s -v %q" %{ util, host }
end
is = m:section(SimpleSection)
function is.render()
luci.http.write(
"<p><br /><strong>%s</strong><br /><br /><code>%s<br /><br />" %{
translate("Starting WoL utility:"), cmd
}
)
local p = io.popen(cmd .. " 2>&1")
if p then
while true do
local l = p:read("*l")
if l then
if #l > 100 then l = l:sub(1, 100) .. "..." end
luci.http.write(l .. "<br />")
else
break
end
end
p:close()
end
luci.http.write("</code><br /></p>")
end
end
end
s = m:section(SimpleSection)
@ -120,5 +75,47 @@ for mac, ip in pairs(arp) do
end
function host.write(self, s, val)
local host = luci.http.formvalue("cbid.wol.1.mac")
if host and #host > 0 then
local cmd
local util = luci.http.formvalue("cbid.wol.1.binary") or (
has_ewk and "/usr/bin/etherwake" or "/usr/bin/wol"
)
if util == "/usr/bin/etherwake" then
local iface = luci.http.formvalue("cbid.wol.1.iface")
cmd = "%s -D%s %q" %{
util, (iface ~= "" and " -i %q" % iface or ""), host
}
else
cmd = "%s -v %q" %{ util, host }
end
local msg = "<p><strong>%s</strong><br /><br /><code>%s<br /><br />" %{
translate("Starting WoL utility:"), cmd
}
local p = io.popen(cmd .. " 2>&1")
if p then
while true do
local l = p:read("*l")
if l then
if #l > 100 then l = l:sub(1, 100) .. "..." end
msg = msg .. l .. "<br />"
else
break
end
end
p:close()
end
msg = msg .. "</code></p>"
m.message = msg
end
end
return m