diff options
author | Jo-Philipp Wich <jo@mein.io> | 2020-04-20 17:55:39 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2020-04-20 19:05:27 +0200 |
commit | fdce990b90f21f6925795d1f788f3e87bcdd0400 (patch) | |
tree | 754477c0046c74b1e23e0ce82c1551b6950f4fbd /applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua | |
parent | 79814b2f5286b6956d555b796407e2394169669d (diff) |
luci-app-nlbwmon: convert to client side JS
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua')
-rw-r--r-- | applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua b/applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua deleted file mode 100644 index 2b6490d332..0000000000 --- a/applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua +++ /dev/null @@ -1,227 +0,0 @@ --- Copyright 2017 Jo-Philipp Wich <jo@mein.io> --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.nlbw", package.seeall) - -function index() - entry({"admin", "nlbw"}, firstchild(), _("Bandwidth Monitor"), 80).acl_depends = { "luci-app-nlbwmon" } - entry({"admin", "nlbw", "display"}, template("nlbw/display"), _("Display"), 1) - entry({"admin", "nlbw", "config"}, cbi("nlbw/config"), _("Configuration"), 2) - entry({"admin", "nlbw", "backup"}, template("nlbw/backup"), _("Backup"), 3) - entry({"admin", "nlbw", "data"}, call("action_data"), nil, 4) - entry({"admin", "nlbw", "list"}, call("action_list"), nil, 5) - entry({"admin", "nlbw", "ptr"}, call("action_ptr"), nil, 6).leaf = true - entry({"admin", "nlbw", "download"}, call("action_download"), nil, 7) - entry({"admin", "nlbw", "restore"}, post("action_restore"), nil, 8) - entry({"admin", "nlbw", "commit"}, call("action_commit"), nil, 9) -end - -local function exec(cmd, args, writer) - local os = require "os" - local nixio = require "nixio" - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - - while true do - local buffer = fdi:read(2048) - - if not buffer or #buffer == 0 then - break - end - - if writer then - writer(buffer) - end - end - - nixio.waitpid(pid) - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exece(cmd, args, nil) - nixio.stdout:close() - os.exit(1) - end -end - -function action_data() - local http = require "luci.http" - - local types = { - csv = "text/csv", - json = "application/json" - } - - local args = { } - local mtype = http.formvalue("type") or "json" - local delim = http.formvalue("delim") or "," - local period = http.formvalue("period") - local group_by = http.formvalue("group_by") - local order_by = http.formvalue("order_by") - - if types[mtype] then - args[#args+1] = "-c" - args[#args+1] = mtype - else - http.status(400, "Unsupported type") - return - end - - if delim and #delim > 0 then - args[#args+1] = "-s%s" % delim - end - - if period and #period > 0 then - args[#args+1] = "-t" - args[#args+1] = period - end - - if group_by and #group_by > 0 then - args[#args+1] = "-g" - args[#args+1] = group_by - end - - if order_by and #order_by > 0 then - args[#args+1] = "-o" - args[#args+1] = order_by - end - - http.prepare_content(types[mtype]) - http.header("Content-Disposition", "attachment; filename=\"data.%s\"" % mtype) - exec("/usr/sbin/nlbw", args, http.write) -end - -function action_list() - local http = require "luci.http" - - local fd = io.popen("/usr/sbin/nlbw -c list") - local periods = { } - - if fd then - while true do - local period = fd:read("*l") - - if not period then - break - end - - periods[#periods+1] = period - end - - fd:close() - end - - http.prepare_content("application/json") - http.write_json(periods) -end - -function action_ptr(...) - local http = require "luci.http" - local util = require "luci.util" - - http.prepare_content("application/json") - http.write_json(util.ubus("network.rrdns", "lookup", { - addrs = {...}, timeout = 3000 - })) -end - -function action_download() - local nixio = require "nixio" - local http = require "luci.http" - local sys = require "luci.sys" - local uci = require "luci.model.uci".cursor() - - local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory") - or "/var/lib/nlbwmon" - - if dir and nixio.fs.stat(dir, "type") == "dir" then - local n = "nlbwmon-backup-%s-%s.tar.gz" - %{ sys.hostname(), os.date("%Y-%m-%d") } - - http.prepare_content("application/octet-stream") - http.header("Content-Disposition", "attachment; filename=\"%s\"" % n) - exec("/bin/tar", { "-C", dir, "-c", "-z", ".", "-f", "-" }, http.write) - else - http.status(500, "Unable to find database directory") - end -end - -function action_restore() - local nixio = require "nixio" - local http = require "luci.http" - local i18n = require "luci.i18n" - local tpl = require "luci.template" - local uci = require "luci.model.uci".cursor() - - local tmp = "/tmp/nlbw-restore.tar.gz" - local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory") - or "/var/lib/nlbwmon" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "archive" then - fp = io.open(tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end) - - local files = { } - local tar = io.popen("/bin/tar -tzf %s" % tmp, "r") - if tar then - while true do - local file = tar:read("*l") - if not file then - break - elseif file:match("^%d%d%d%d%d%d%d%d%.db%.gz$") or - file:match("^%./%d%d%d%d%d%d%d%d%.db%.gz$") then - files[#files+1] = file - end - end - tar:close() - end - - if #files == 0 then - http.status(500, "Internal Server Error") - tpl.render("nlbw/backup", { - message = i18n.translate("Invalid or empty backup archive") - }) - return - end - - - local output = { } - - exec("/etc/init.d/nlbwmon", { "stop" }) - exec("/bin/mkdir", { "-p", dir }) - - exec("/bin/tar", { "-C", dir, "-vxzf", tmp, unpack(files) }, - function(chunk) output[#output+1] = chunk:match("%S+") end) - - exec("/bin/rm", { "-f", tmp }) - exec("/etc/init.d/nlbwmon", { "start" }) - - tpl.render("nlbw/backup", { - message = i18n.translatef( - "The following database files have been restored: %s", - table.concat(output, ", ")) - }) -end - -function action_commit() - local http = require "luci.http" - local disp = require "luci.dispatcher" - - http.redirect(disp.build_url("admin/nlbw/display")) - exec("/usr/sbin/nlbw", { "-c", "commit" }) -end |