diff options
author | Rosy Song <rosysong@rosinson.com> | 2018-12-28 10:47:02 +0800 |
---|---|---|
committer | Rosy Song <rosysong@rosinson.com> | 2019-01-02 16:31:59 +0800 |
commit | f6a0e3852f4aee2dbe595e5ce05c5217d42dccb8 (patch) | |
tree | 84ba3a39bc62540ec699b7e5bb6dc974e018c6fc /applications/luci-app-rosy-file-server/luasrc/controller | |
parent | 1893892581707fcd83e684a7a03dd6b5d3c2c3a2 (diff) |
luci-app-rosy-file-server: add new application
Signed-off-by: Rosy Song <rosysong@rosinson.com>
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 |