functioncUpload() local LuciFs = require("luci.fs") local XQBackup = require("xiaoqiang.module.XQBackup") local code = 0 local canupload = true local uploadFilepath = "/tmp/cfgbackup.tar.gz" local fileSize = tonumber(LuciHttp.getenv("CONTENT_LENGTH")) if fileSize > 102400then canupload = false end LuciHttp.setfilehandler( function(meta, chunk, eof) if canupload then ifnot fp then if meta and meta.name == "image"then fp = io.open(uploadFilepath, "w") end end if chunk then fp:write(chunk) end if eof then fp:close() end else code = 1630 end end ) if LuciHttp.formvalue("image") and fp then code = 0 end local result = {} if code == 0then local ext = XQBackup.extract(uploadFilepath) if ext == 0then result["des"] = XQBackup.getdes() else code = 1629 end end if code ~= 0then result["msg"] = XQErrorUtil.getErrorMessage(code) LuciFs.unlink(uploadFilepath) end result["code"] = code LuciHttp.write_json(result) end
-- 0:succeed -- 1:file does not exist -- 2:no description file -- 3:no mbu file functionextract(filepath) local fs = require("nixio.fs") local tarpath = filepath ifnot tarpath then tarpath = TARMBUFILE end ifnot fs.access(tarpath) then return1 end os.execute("cd /tmp; tar -xzf "..tarpath.." >/dev/null 2>/dev/null") os.execute("rm "..tarpath.." >/dev/null 2>/dev/null") ifnot fs.access(DESFILE) then return2 end ifnot fs.access(MBUFILE) then return3 end return0
#!/usr/bin/env lua -- ... local cfg = { -- ... ['xmlfile'] = "/usr/share/speedtest.xml", ['tmp_speedtest_xml'] = "/tmp/speedtest_urls.xml", } VERSION="__UNDEFINED__" -- ... -- 测试网速使用的url文件为,若存在/tmp/speedtest_urls.xml则使用,否则用/usr/share/speedtest.xml local filename = "" filexml = io.open(cfg.tmp_speedtest_xml) if filexml then filexml:close() filename = cfg.tmp_speedtest_xml else filename = cfg.xmlfile end
local pp = io.open(filename) local line = pp:read("*line") local size = 0 local resources = {} local u = "" local pids = {} -- ... functionwget_work(url) local _url = url pid = posix.fork() if pid < 0then print("fork error") return-1 elseif pid > 0then --print(string.format("child pid %d\n", pid)) else -- 拼接命令,最终在这里执行 os.execute('for i in $(seq '.. math.floor(cfg.nr/cfg.nc) ..'); do wget '.. url .. " -q -O /dev/null; done") end return pid end
while line do -- 从文件中提取url, 这里提取没有进行过滤 local _, _, url = string.find(line,'<item url="(.*)"/>') if url then table.insert(resources, url) end line = pp:read("*line") end pp:close()
local urls = mrandom(1, table.getn(resources), cfg.nc)
for k, v inipairs(urls) do if VERSION == "LESSMEM"then local pid = wget_work_loop(resources[v]) else -- VERSION 为 __UNDEFINED__, url直接作为参数 local pid = wget_work(resources[v]) end if(pid == 0) then os.exit(0) elseif(pid == -1) then done() end end
functionnetspeed() local XQPreference = require("xiaoqiang.XQPreference") local XQNSTUtil = require("xiaoqiang.module.XQNetworkSpeedTest") local code = 0 local result = {} local history = LuciHttp.formvalue("history") if history then result["bandwidth"] = tonumber(XQPreference.get("BANDWIDTH", 0, "xiaoqiang")) result["download"] = tonumber(string.format("%.2f", 128 * result.bandwidth)) result["bandwidth2"] = tonumber(XQPreference.get("BANDWIDTH2", 0, "xiaoqiang")) result["upload"] = tonumber(string.format("%.2f", 128 * result.bandwidth2)) else os.execute("/etc/init.d/miqos stop") -- 这里调用了downloadSpeedTest local download = XQNSTUtil.downloadSpeedTest() if download then result["download"] = download result["bandwidth"] = tonumber(string.format("%.2f", 8 * download/1024)) XQPreference.set("BANDWIDTH", tostring(result.bandwidth), "xiaoqiang") else code = 1588 end if code ~= 0then result["msg"] = XQErrorUtil.getErrorMessage(code) end os.execute("/etc/init.d/miqos start") end result["code"] = code LuciHttp.write_json(result) end functiondownloadSpeedTest() local speedtest = "/usr/bin/download_speedtest" local speed -- 直接调用sh文件 for _, line inipairs(LuciUtil.execl(speedtest)) do ifnot XQFunction.isStrNil(line) and line:match("^avg rx:") then speed = line:match("^avg rx:(%S+)") if speed then speed = tonumber(string.format("%.2f",speed/8)) end break end end return speed end
## make config file command = input("command: ") speed_test_filename = "speedtest_urls.xml" with open("template.xml","rt") as f: template = f.read() data = template.format(command=command) # print(data) with open("speedtest_urls.xml",'wt') as f: f.write(data)
with tarfile.open("payload.tar.gz", "w:gz") as tar: # tar.add("cfg_backup.des") # tar.add("cfg_backup.mbu") tar.add("speedtest_urls.xml")
评论