summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-rosy-file-server/luasrc/controller
diff options
context:
space:
mode:
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.lua52
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