mirror of
https://github.com/JamesonHuang/OpenWrt_Luci_Lua.git
synced 2024-11-24 06:10:11 +00:00
671 lines
18 KiB
Lua
671 lines
18 KiB
Lua
|
module("meizu.dlfs", package.seeall)
|
||
|
-- download functions
|
||
|
|
||
|
local cjson = require "cjson"
|
||
|
local lfs = require "lfs"
|
||
|
local bfs = require "meizu.bfs"
|
||
|
local RC = require "meizu.r10config"
|
||
|
local nixio = require "nixio"
|
||
|
|
||
|
local b64dec = bfs.b64dec
|
||
|
local bind_router = bfs.bind_router
|
||
|
local cal_str_md5 = bfs.cal_str_md5
|
||
|
local data_to_json = bfs.data_to_json
|
||
|
local exec_cmd_in_sh = bfs.exec_cmd_in_sh
|
||
|
local exec_reboot = bfs.exec_reboot
|
||
|
local get_device_SN = bfs.get_device_SN
|
||
|
local get_device_version = bfs.get_device_version
|
||
|
local get_https_data = bfs.get_https_data
|
||
|
local rts_get_access_token = bfs.rts_get_access_token
|
||
|
local set_passwd = bfs.set_passwd
|
||
|
local silent_upgrade = bfs.silent_upgrade
|
||
|
local table_merge = bfs.table_merge
|
||
|
|
||
|
local aria2rpc = "http://127.0.0.1:6800/jsonrpc"
|
||
|
local httpreq = require("socket.http").request
|
||
|
local lue = require("luci.util").exec
|
||
|
|
||
|
function aria2_make_req_param(method, gid)
|
||
|
local p = [[{"jsonrpc":"2.0", "method":"]]
|
||
|
p = p..method..[[", ]]
|
||
|
p = p..[["id":1, "params":["]]
|
||
|
p = p..gid..'"]}'
|
||
|
p = p..'{"Accept=application/json, text/javascript, */*; q=0.01"}'
|
||
|
p = p..'{"Accept-Encoding=gzip, deflate"}'
|
||
|
p = p..'{"Content-Type=application/x-www-form-urlencoded; charset=UTF-8"}'
|
||
|
p = p..'{"Pragma=no-cache"}'
|
||
|
p = p..'{"Cache-Control=no-cache"}'
|
||
|
|
||
|
return p
|
||
|
end
|
||
|
|
||
|
function aria2_make_status_param(method, params)
|
||
|
local p = [[{"jsonrpc":"2.0", "method":"]]
|
||
|
p = p..method..[[", ]]
|
||
|
p = p..[["id":1]]
|
||
|
if params == "" then
|
||
|
p = p..'}'
|
||
|
else
|
||
|
p = p..[[, "params":[]]
|
||
|
p = p..params..']}'
|
||
|
end
|
||
|
p = p..'{"Accept=application/json, text/javascript, */*; q=0.01"}'
|
||
|
p = p..'{"Accept-Encoding=gzip, deflate"}'
|
||
|
p = p..'{"Content-Type=application/x-www-form-urlencoded; charset=UTF-8"}'
|
||
|
p = p..'{"Pragma=no-cache"}'
|
||
|
p = p..'{"Cache-Control=no-cache"}'
|
||
|
|
||
|
return p
|
||
|
end
|
||
|
|
||
|
function aria2_success_res(command, gid, status)
|
||
|
local res = [[{"result":true, "command":"]]..command..[[", "gid":"]]..gid..[[", "message":"]]..status..[["}]]
|
||
|
|
||
|
return res
|
||
|
end
|
||
|
|
||
|
function aria2_failed_res(command, gid, status)
|
||
|
local res = [[{"result":flase, "command":"]]..command..[[", "gid":"]]..gid..[[", "message":"]]..status..[["}]]
|
||
|
|
||
|
return res
|
||
|
end
|
||
|
|
||
|
function aria2_download_task_pause(gid, command)
|
||
|
local param = aria2_make_req_param("aria2.pause", gid)
|
||
|
local res, code, headers, status = httpreq(aria2rpc, param)
|
||
|
local success_res = aria2_success_res(command, gid, status)
|
||
|
local failed_res = aria2_failed_res(command, gid, status)
|
||
|
|
||
|
if code == 200 then
|
||
|
return success_res
|
||
|
else
|
||
|
return failed_res
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function aria2_download_task_unpause(gid, command)
|
||
|
local param = aria2_make_req_param("aria2.unpause", gid)
|
||
|
local res, code, headers, status = httpreq(aria2rpc,param)
|
||
|
local success_res = aria2_success_res(command, gid, status)
|
||
|
local failed_res = aria2_failed_res(command, gid, status)
|
||
|
|
||
|
if code == 200 then
|
||
|
return success_res
|
||
|
else
|
||
|
return failed_res
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function aria2_download_task_remove(gid, command)
|
||
|
local param = aria2_make_req_param("aria2.removeDownloadResult", gid)
|
||
|
local res, code, headers, status = httpreq(aria2rpc,param)
|
||
|
local success_res = aria2_success_res(command, gid, status)
|
||
|
local failed_res = aria2_failed_res(command, gid, status)
|
||
|
|
||
|
if code == 200 then
|
||
|
return success_res
|
||
|
else
|
||
|
return failed_res
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function aria2_get_active_list()
|
||
|
local result = {}
|
||
|
local param = aria2_make_status_param("aria2.tellActive", "")
|
||
|
local res, code, headers, status = httpreq(aria2rpc, param)
|
||
|
|
||
|
if code == 200 then
|
||
|
local jsd = cjson.decode(res)
|
||
|
for key, value in pairs(jsd.result) do
|
||
|
local data = {status = "", speed = nil, total = nil,
|
||
|
completed = nil, gid = "", file = ""}
|
||
|
|
||
|
data.status = value.status
|
||
|
data.speed = tonumber(value.downloadSpeed)
|
||
|
data.total = tonumber(value.totalLength)
|
||
|
data.completed = tonumber(value.completedLength)
|
||
|
data.gid = value.gid
|
||
|
local jsd = cjson.encode(value.files)
|
||
|
jsd = string.sub(jsd, 2, -2)
|
||
|
local fn = cjson.decode(jsd)
|
||
|
data.file = ""
|
||
|
if string.match(fn.path, ".+/([^/]*%.%w+)$") then
|
||
|
data.file = string.match(fn.path, ".+/([^/]*%.%w+)$")
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
function aria2_get_pause_list()
|
||
|
local param = aria2_make_status_param("aria2.tellWaiting", "0, 1000")
|
||
|
local res, code, headers, status = httpreq(aria2rpc,param)
|
||
|
local result = {}
|
||
|
if code == 200 then
|
||
|
local jsd = cjson.decode(res)
|
||
|
|
||
|
for key, value in pairs(jsd.result) do
|
||
|
local data = {status = "", speed = nil, total = nil,
|
||
|
completed = nil, gid = "", file = ""}
|
||
|
data.status = value.status
|
||
|
data.speed = tonumber(value.downloadSpeed)
|
||
|
data.total = tonumber(value.totalLength)
|
||
|
data.completed = tonumber(value.completedLength)
|
||
|
data.gid = value.gid
|
||
|
local jsd = cjson.encode(value.files)
|
||
|
jsd = string.sub(jsd, 2, -2)
|
||
|
local fn = cjson.decode(jsd)
|
||
|
data.file = ""
|
||
|
if string.match(fn.path, ".+/([^/]*%.%w+)$") then
|
||
|
data.file = string.match(fn.path, ".+/([^/]*%.%w+)$")
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return result;
|
||
|
end
|
||
|
|
||
|
function aria2_get_history_list()
|
||
|
local param = aria2_make_status_param("aria2.tellStopped", "0, 1000")
|
||
|
local result = {}
|
||
|
local res, code, headers, status = httpreq(aria2rpc, param)
|
||
|
if code == 200 then
|
||
|
local jsd = cjson.decode(res)
|
||
|
for key, value in pairs(jsd.result) do
|
||
|
local data = {status = "", speed = nil, total = nil,
|
||
|
completed = nil, gid = "", file = ""}
|
||
|
data.speed = tonumber(value.downloadSpeed)
|
||
|
data.total = tonumber(value.totalLength)
|
||
|
data.completed = tonumber(value.completedLength)
|
||
|
local jsd = cjson.encode(value.files)
|
||
|
jsd = string.sub(jsd, 2, -2)
|
||
|
local fn = cjson.decode(jsd)
|
||
|
data.status = value.status
|
||
|
data.gid = value.gid
|
||
|
data.file = ""
|
||
|
if string.match(fn.path, ".+/([^/]*%.%w+)$") then
|
||
|
data.file = string.match(fn.path, ".+/([^/]*%.%w+)$")
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
function aria2_download_task_start(url)
|
||
|
local param = '[{"jsonrpc":"2.0", "method":"aria2.addUri", "id":"1",'..
|
||
|
'"params":[['..'"'..url..'"'.."]]}]"
|
||
|
local res, code, headers, status = httpreq(aria2rpc, param)
|
||
|
local jsd = nil
|
||
|
if code == 200 then
|
||
|
res = string.sub(res, 2, -2)
|
||
|
jsd = cjson.decode(res)
|
||
|
end
|
||
|
local success_res = '{"result":true, "gid":'..'"'..jsd.result..'"'..
|
||
|
', "message":'..'"'..status..'"'.."}"
|
||
|
local failed_res = '{"result":false, "message":'..'"'..status..'"'.."}"
|
||
|
|
||
|
if code == 200 then
|
||
|
return success_res
|
||
|
else
|
||
|
return failed_res
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function thunder_clean_list_log()
|
||
|
if nixio.fs.access("/tmp/tdal.log") then
|
||
|
nixio.fs.unlink("/tmp/tdal.log")
|
||
|
end
|
||
|
if nixio.fs.access("/tmp/tdhl.log") then
|
||
|
nixio.fs.unlink("/tmp/tdhl.log")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function thunder_download_task_pause(gid, command)
|
||
|
thunder_clean_list_log()
|
||
|
local success_res = '{"result":true, "command":'..'"'..command..'"'..
|
||
|
', "gid":'..'"'..gid..'"'..
|
||
|
', "message":'..'"success"'.."}"
|
||
|
local cmd = "/usr/bin/xunleiR.py pause "..gid
|
||
|
local ret = lue(cmd)
|
||
|
|
||
|
return success_res
|
||
|
end
|
||
|
|
||
|
function download_task_pause(gid, command)
|
||
|
if string.match(gid, "^tdid_") then
|
||
|
local tdid = string.sub(gid, 6)
|
||
|
return thunder_download_task_pause(tdid, command)
|
||
|
else
|
||
|
return aria2_download_task_pause(gid, command)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function thunder_download_task_unpause(gid, command)
|
||
|
thunder_clean_list_log()
|
||
|
local success_res = '{"result":true, "command":'..
|
||
|
'"'..command..'"'..', "gid":'..
|
||
|
'"'..gid..'"'..', "message":'..'"success"'.."}"
|
||
|
local cmd = "/usr/bin/xunleiR.py start "..gid
|
||
|
local ret = lue(cmd)
|
||
|
|
||
|
return success_res
|
||
|
end
|
||
|
|
||
|
function download_task_unpause(gid, command)
|
||
|
if string.match(gid, "^tdid_") then
|
||
|
local tdid = string.sub(gid, 6)
|
||
|
return thunder_download_task_unpause(tdid, command)
|
||
|
else
|
||
|
return aria2_download_task_unpause(gid, command)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function thunder_download_task_remove(gid, command)
|
||
|
thunder_clean_list_log()
|
||
|
local success_res = '{"result":true, "command":'..
|
||
|
'"'..command..'"'..', "gid":'..
|
||
|
'"'..gid..'"'..', "message":'..'"success"'.."}"
|
||
|
--local cmd = "/usr/bin/xunleiR.py remove "..gid
|
||
|
local cmd = "/usr/bin/xunleiR.py delete "..gid
|
||
|
local ret = lue(cmd)
|
||
|
require "MZLog".log(3, ret)
|
||
|
|
||
|
return success_res
|
||
|
end
|
||
|
|
||
|
function download_task_remove(gid, command)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, gid)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
if string.match(gid, "^tdid_") then
|
||
|
local tdid = string.sub(gid, 6)
|
||
|
return thunder_download_task_remove(tdid, command)
|
||
|
else
|
||
|
return aria2_download_task_remove(gid, command)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function get_pause_list()
|
||
|
local result = aria2_get_pause_list()
|
||
|
local ret_msg = ""
|
||
|
if nil ~= next(result) then
|
||
|
--result = cjson.encode(result)
|
||
|
local jsr = data_to_json(result)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, jsr)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
ret_msg = '{"result":true, "message":'..jsr.."}"
|
||
|
else
|
||
|
ret_msg = '{"result":false, "message":[]}'
|
||
|
end
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, ret_msg)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
|
||
|
return ret_msg
|
||
|
end
|
||
|
|
||
|
function nw_get_pause_list()
|
||
|
local data = get_pause_list()
|
||
|
luci.http.write(data)
|
||
|
end
|
||
|
|
||
|
function thunder_get_bind_code()
|
||
|
local ret = {}
|
||
|
local lue = require"luci.util".exec
|
||
|
local cmd = [[/usr/bin/xunleiR.py sysinfo|awk -F',' '{print $5}']]
|
||
|
local code = lue(cmd)
|
||
|
ret = '{"code":'..code..'}'
|
||
|
|
||
|
return ret
|
||
|
end
|
||
|
|
||
|
function nw_thunder_get_bind_code()
|
||
|
local data = thunder_get_bind_code()
|
||
|
luci.http.write(data)
|
||
|
end
|
||
|
|
||
|
function ww_thunder_get_bind_code()
|
||
|
return thunder_get_bind_code()
|
||
|
end
|
||
|
|
||
|
function thunder_state_code(code)
|
||
|
local ret = "active"
|
||
|
if code == 0 or code == 8 or code == 13 or code == 14 or code == 37 then
|
||
|
ret = "active"
|
||
|
end
|
||
|
if code == 9 or code == 10 then
|
||
|
ret = "paused"
|
||
|
end
|
||
|
if code == 11 or code == 15 then
|
||
|
ret = "complete"
|
||
|
end
|
||
|
|
||
|
return ret
|
||
|
end
|
||
|
|
||
|
function thunder_localpath_translate(path)
|
||
|
if type(path) == "string" then
|
||
|
path = string.gsub(path, "/opt/xware/mnt/", "/router/Thunder/")
|
||
|
end
|
||
|
return path
|
||
|
end
|
||
|
|
||
|
function thunder_get_active_list()
|
||
|
local cmd = "/usr/bin/xunleiR.py list"
|
||
|
local ret
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
if nixio.fs.access("/tmp/tdal.log") then
|
||
|
local fp = io.open("/tmp/tdal.log", "r")
|
||
|
local data = fp:read("*a")
|
||
|
ret = data
|
||
|
fp:close()
|
||
|
else
|
||
|
ret = lue(cmd)
|
||
|
local fp = io.open("/tmp/tdal.log", "wb")
|
||
|
fp:write(ret)
|
||
|
fp:close()
|
||
|
end
|
||
|
local result = {}
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, ret)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
if ret then
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
local jsd = cjson.decode(ret)
|
||
|
local tasks = jsd.tasks
|
||
|
for k, v in pairs(tasks) do
|
||
|
local data = {}
|
||
|
if (_G.next(v) ~= nil) then
|
||
|
data.speed = v.speed
|
||
|
data.status = thunder_state_code(v.state)
|
||
|
data.total = tonumber(v.size)
|
||
|
data.completed = tonumber(data.total * tonumber(v.progress)/10000)
|
||
|
data.file = v.name
|
||
|
data.path = thunder_localpath_translate(v.path)
|
||
|
data.gid = 'tdid_'..v.id
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, data_to_json(result))
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
function thunder_get_rlist()
|
||
|
thunder_clean_list_log()
|
||
|
local cmd = "/usr/bin/xunleiR.py rlist"
|
||
|
local ret = lue(cmd)
|
||
|
local jsd = cjson.decode(ret)
|
||
|
local tasks = jsd.tasks
|
||
|
local result = {}
|
||
|
for k, v in pairs(tasks) do
|
||
|
local data = {}
|
||
|
if (_G.next(v) ~= nil) then
|
||
|
data.speed = v.speed
|
||
|
data.status = thunder_state_code(v.state)
|
||
|
data.total = tonumber(v.size)
|
||
|
data.completed = tonumber(data.total * tonumber(v.progress)/10000)
|
||
|
data.file = v.name
|
||
|
data.gid = 'tdid_'..v.id
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
function get_active_list(start, refine_cnt)
|
||
|
local s = 0
|
||
|
local cnt
|
||
|
if start then
|
||
|
s = start
|
||
|
end
|
||
|
local result = {}
|
||
|
local aria2_alist = aria2_get_active_list()
|
||
|
local thunder_alist = thunder_get_active_list()
|
||
|
local aria2_plist = aria2_get_pause_list()
|
||
|
--local thunder_rlist = thunder_get_rlist()
|
||
|
if _G.next(aria2_alist) then
|
||
|
result = table_merge(result, aria2_alist)
|
||
|
end
|
||
|
if _G.next(thunder_alist) then
|
||
|
result = table_merge(result, thunder_alist)
|
||
|
end
|
||
|
if _G.next(aria2_plist) then
|
||
|
result = table_merge(result, aria2_plist)
|
||
|
end
|
||
|
|
||
|
local ret_msg = {}
|
||
|
local total = require("table").getn(result)
|
||
|
ret_msg["total"] = total
|
||
|
ret_msg["result"] = false
|
||
|
local ret = {}
|
||
|
if _G.next(result) then
|
||
|
if refine_cnt then
|
||
|
cnt = refine_cnt
|
||
|
else
|
||
|
cnt = total
|
||
|
end
|
||
|
local pos = 0
|
||
|
for k, v in pairs(result) do
|
||
|
if pos >= s and (pos - s + 1 <= cnt) then
|
||
|
table.insert(ret, v)
|
||
|
pos = pos + 1
|
||
|
end
|
||
|
end
|
||
|
ret_msg["result"] = true
|
||
|
ret_msg["message"] = ret
|
||
|
else
|
||
|
ret_msg["message"] = "[]"
|
||
|
end
|
||
|
ret_msg["start"] = s
|
||
|
if ret and type(ret) == "table" and _G.next(ret) then
|
||
|
ret_msg["count"] = require("table").getn(ret)
|
||
|
else
|
||
|
ret_msg["count"] = 0
|
||
|
end
|
||
|
ret_msg = data_to_json(ret_msg)
|
||
|
require "MZLog".log(3, ret_msg)
|
||
|
|
||
|
return ret_msg
|
||
|
end
|
||
|
|
||
|
function nw_get_active_list()
|
||
|
local data = get_active_list()
|
||
|
luci.http.write(data)
|
||
|
end
|
||
|
|
||
|
function thunder_get_history_list()
|
||
|
local cmd = "/usr/bin/xunleiR.py clist"
|
||
|
local ret
|
||
|
if nixio.fs.access("/tmp/tdhl.log") then
|
||
|
local fp = io.open("/tmp/tdhl.log", "r")
|
||
|
local data = nixio.fs.readfile("/tmp/tdhl.log")
|
||
|
ret = data
|
||
|
else
|
||
|
ret = lue(cmd)
|
||
|
local fp = io.open("/tmp/tdhl.log", "wb")
|
||
|
fp:write(ret)
|
||
|
fp:close()
|
||
|
end
|
||
|
|
||
|
local jsd = cjson.decode(ret)
|
||
|
local tasks = jsd.tasks
|
||
|
local result = {}
|
||
|
for k, v in pairs(tasks) do
|
||
|
local data = {}
|
||
|
if (_G.next(v) ~= nil) then
|
||
|
data.speed = v.speed
|
||
|
data.total = tonumber(v.size)
|
||
|
data.completed = v.size
|
||
|
data.status = thunder_state_code(v.state)
|
||
|
data.file = v.name
|
||
|
data.path = thunder_localpath_translate(v.path)
|
||
|
data.gid = 'tdid_'..v.id
|
||
|
end
|
||
|
table.insert(result, data)
|
||
|
end
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
function get_history_list(start, refine_cnt)
|
||
|
local s = 0
|
||
|
local cnt
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
if start then
|
||
|
s = start
|
||
|
require "MZLog".log(3, start)
|
||
|
end
|
||
|
if refine_cnt then
|
||
|
require "MZLog".log(3, refine_cnt)
|
||
|
end
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
local result = {}
|
||
|
local aria2_ret = aria2_get_history_list()
|
||
|
local thunder_ret = thunder_get_history_list()
|
||
|
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, data_to_json(aria2_ret))
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
|
||
|
if nil ~= _G.next(aria2_ret) then
|
||
|
table_merge(result, aria2_ret)
|
||
|
end
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, data_to_json(thunder_ret))
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
if _G.next(thunder_ret) then
|
||
|
table_merge(result, thunder_ret)
|
||
|
end
|
||
|
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
local total = require("table").getn(result)
|
||
|
local ret_msg = {}
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
ret_msg["total"] = total
|
||
|
ret_msg["result"] = false
|
||
|
if _G.next(result) then
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
local cnt
|
||
|
if refine_cnt then
|
||
|
cnt = refine_cnt
|
||
|
else
|
||
|
cnt = total
|
||
|
end
|
||
|
local ret = {}
|
||
|
local pos = 0
|
||
|
for k, v in pairs(result) do
|
||
|
if pos >= s and (pos - s + 1 <= cnt) then
|
||
|
table.insert(ret, v)
|
||
|
pos = pos + 1
|
||
|
end
|
||
|
end
|
||
|
ret_msg["count"] = require("table").getn(ret)
|
||
|
local jsd = data_to_json(ret)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, jsd)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
ret_msg["result"] = true
|
||
|
--ret_msg["message"] = jsd
|
||
|
ret_msg["message"] = ret
|
||
|
else
|
||
|
ret_msg["message"] = "[]"
|
||
|
end
|
||
|
ret_msg["start"] = s
|
||
|
if ret and type(ret) == "table" and _G.next(ret) then
|
||
|
ret_msg["count"] = require("table").getn(ret)
|
||
|
else
|
||
|
ret_msg["count"] = 0
|
||
|
end
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
ret_msg = data_to_json(ret_msg)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
require "MZLog".log(3, ret_msg)
|
||
|
require "MZLog".log(3, debug.getinfo(1).currentline)
|
||
|
|
||
|
return ret_msg
|
||
|
end
|
||
|
|
||
|
function nw_get_history_list()
|
||
|
local data = get_history_list()
|
||
|
luci.http.write(data)
|
||
|
end
|
||
|
|
||
|
function thunder_download_task_start(url)
|
||
|
thunder_clean_list_log()
|
||
|
local ret = ""
|
||
|
local cmd = [[/usr/bin/xunleiR.py download ']]..url..[[']]
|
||
|
require "MZLog".log(3, cmd)
|
||
|
ret = lue(cmd)
|
||
|
require "MZLog".log(3, ret)
|
||
|
local jsr = cjson.decode(ret)
|
||
|
ret = {}
|
||
|
ret["message"] = ""
|
||
|
ret["result"] = false
|
||
|
if jsr and jsr.rtn then
|
||
|
require "MZLog".log(3, jsr.rtn)
|
||
|
ret["rtn"] = jsr.rtn
|
||
|
if jsr.rtn == 0 or jsr.rtn == 202 then
|
||
|
ret["result"] = true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if jsr and jsr.id then
|
||
|
ret["gid"] = "tdid_"..jsr.id
|
||
|
else
|
||
|
ret["gid"] = "tdid_0"
|
||
|
end
|
||
|
|
||
|
return data_to_json(ret)
|
||
|
end
|
||
|
|
||
|
function download_task_start(url, dltype)
|
||
|
require "MZLog".log(3, url)
|
||
|
require "MZLog".log(3, dltype)
|
||
|
local res = ""
|
||
|
if dltype == "thunder" then
|
||
|
res = thunder_download_task_start(url)
|
||
|
else
|
||
|
res = aria2_download_task_start(url)
|
||
|
end
|
||
|
require "MZLog".log(3, res)
|
||
|
|
||
|
return res
|
||
|
end
|
||
|
|
||
|
function nw_download_task_start()
|
||
|
local url = luci.http.formvalue("url")
|
||
|
local dltype = luci.http.formvalue("type")
|
||
|
local res = download_task_start(url, dltype)
|
||
|
luci.http.write(res)
|
||
|
|
||
|
return res
|
||
|
end
|
||
|
|
||
|
function download_task_operate(gid, command)
|
||
|
if command == "downloadpause" then
|
||
|
return download_task_pause(gid, command)
|
||
|
elseif command == "downloadunpause" then
|
||
|
return download_task_unpause(gid, command)
|
||
|
elseif command == "downloadremove" then
|
||
|
return download_task_remove(gid, command)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function nw_download_task_operate()
|
||
|
local command = luci.http.formvalue("command")
|
||
|
local gid = luci.http.formvalue("gid")
|
||
|
local ret = download_task_operate(gid, command)
|
||
|
|
||
|
luci.http.write(ret)
|
||
|
end
|