Приведение в более приличный вид с выносом используемых базовых функций в отдельную...
[lua-filemanager.git] / www / cgi-bin / fs-download
1 #!/usr/bin/lua
2
3 nixio = require "nixio"
4 fs = require "nixio.fs"
5 util = require "luci.util"
6 ltn12 = require "ltn12"
7 luafm = require "luafm"
8
9 args = {}
10
11 for dummy,param in pairs(util.split(nixio.getenv('QUERY_STRING'),'&')) do
12   val = util.split(param,'=')
13   args[val[1]] = util.urldecode(val[2],true)
14 end
15
16 path = luafm.make_path(args["path"])
17 if path then
18   file = io.open(path,"rb")
19 else
20   file = nil
21 end  
22
23 if file then
24   print("Content-Type: application/octet-stream")
25   print('Content-Disposition: attachment; filename="'..fs.basename(args["path"])..'"')
26   print("\r")
27   ltn12.pump.all(
28     ltn12.source.file(file),
29     ltn12.sink.file(io.stdout)
30   )
31 else
32   print("Status: 404 Not Found")
33   print("Content-Type: text/plain")
34   print("\r")
35   print("File not found")
36 end