diff options
Diffstat (limited to 'applications/luci-app-rosy-file-server/luasrc/controller')
-rw-r--r-- | applications/luci-app-rosy-file-server/luasrc/controller/rosy-file-server/rosy-file-server.lua | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/applications/luci-app-rosy-file-server/luasrc/controller/rosy-file-server/rosy-file-server.lua b/applications/luci-app-rosy-file-server/luasrc/controller/rosy-file-server/rosy-file-server.lua new file mode 100644 index 0000000000..6c7c492089 --- /dev/null +++ b/applications/luci-app-rosy-file-server/luasrc/controller/rosy-file-server/rosy-file-server.lua @@ -0,0 +1,52 @@ +-- Copyright 2018 Rosy Song <rosysong@rosinson.com> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.rosy-file-server.rosy-file-server", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/rosyfs") then + return + end + + local root = node() + if not root.target then + root.target = alias("httpfs") + root.index = true + end + + page = node() + page.lock = true + page.target = alias("httpfs") + page.subindex = true + page.index = false + + page = node("httpfs") + page.title = _("File-server") + page.target = alias("httpfs", "rosy-file-server") + page.order = 5 + page.setuser = "root" + page.setgroup = "root" + page.index = true + + entry({"httpfs", "rosy-file-server"}, + form("rosy-file-server/rosy-file-server"), _("Rosy File Server"), 10) + entry({"httpfs", "file-server-download"}, + post("action_download"), nil) + + entry({"admin", "services", "rosyfs"}, + cbi("rosy-file-server/rosyfs"), _("Rosy File Server"), 61) +end + +function action_download() + local p = luci.http.formvalue("path") or "" + local n = luci.http.formvalue("name") or "" + + if not p or not n then + luci.http.status(400, "Bad Request") + return + end + + luci.http.header('Content-Disposition', 'attachment; filename="%s"' % n) + luci.http.prepare_content("application/octet-stream") + luci.sys.process.exec({ "/bin/dd", "if=%s%s" % { p, n }, "conv=fsync,notrunc" }, luci.http.write) +end |