X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fadmin-core%2Fluasrc%2Ftools%2Fwebadmin.lua;h=62168ebb70e0809ca15a0f3c1500217d9e6bb82e;hb=a27c539deac41b583434564fbd0c2f8c5317b0f9;hp=d6d952117e7661c7f6b980ca7b442b0a566b0772;hpb=2c09564d762b692d970a531cca58eb52ba3807e7;p=project%2Fluci.git diff --git a/modules/admin-core/luasrc/tools/webadmin.lua b/modules/admin-core/luasrc/tools/webadmin.lua index d6d952117..62168ebb7 100644 --- a/modules/admin-core/luasrc/tools/webadmin.lua +++ b/modules/admin-core/luasrc/tools/webadmin.lua @@ -14,7 +14,7 @@ $Id$ ]]-- module("luci.tools.webadmin", package.seeall) -require("luci.model.uci") +local uci = require("luci.model.uci") require("luci.sys") require("luci.ip") @@ -29,13 +29,44 @@ function byte_format(byte) end end +function date_format(secs) + local suff = {"min", "h", "d"} + local mins = 0 + local hour = 0 + local days = 0 + + secs = math.floor(secs) + if secs > 60 then + mins = math.floor(secs / 60) + secs = secs % 60 + end + + if mins > 60 then + hour = math.floor(mins / 60) + mins = mins % 60 + end + + if hour > 24 then + days = math.floor(hour / 24) + hour = hour % 24 + end + + if days > 0 then + return string.format("%.0fd %02.0fh %02.0fmin %02.0fs", days, hour, mins, secs) + else + return string.format("%02.0fh %02.0fmin %02.0fs", hour, mins, secs) + end +end + function network_get_addresses(net) + local state = uci.cursor_state() + state:load("network") local addr = {} - local ipv4 = luci.model.uci.get_statevalue("network", net, "ipaddr") - local mav4 = luci.model.uci.get_statevalue("network", net, "netmask") - local ipv6 = luci.model.uci.get_statevalue("network", net, "ip6addr") + local ipv4 = state:get("network", net, "ipaddr") + local mav4 = state:get("network", net, "netmask") + local ipv6 = state:get("network", net, "ip6addr") - if ipv4 and mav4 then + if ipv4 and mav4 and #ipv4 > 0 and #mav4 > 0 then ipv4 = luci.ip.IPv4(ipv4, mav4) if ipv4 then @@ -47,7 +78,7 @@ function network_get_addresses(net) table.insert(addr, ipv6) end - luci.model.uci.foreach("network", "alias", + state:foreach("network", "alias", function (section) if section.interface == net then if section.ipaddr and section.netmask then @@ -69,7 +100,7 @@ function network_get_addresses(net) end function cbi_add_networks(field) - luci.model.uci.foreach("network", "interface", + uci.cursor():foreach("network", "interface", function (section) if section[".name"] ~= "loopback" then field:value(section[".name"]) @@ -86,13 +117,14 @@ function cbi_add_knownips(field) end function network_get_zones(net) - if not luci.model.uci.load("firewall") then + local state = uci.cursor_state() + if not state:load("firewall") then return nil end local zones = {} - luci.model.uci.foreach("firewall", "zone", + state:foreach("firewall", "zone", function (section) local znet = section.network or section.name if luci.util.contains(luci.util.split(znet, " "), net) then @@ -107,7 +139,7 @@ end function firewall_find_zone(name) local find - luci.model.uci.foreach("firewall", "zone", + luci.model.uci.cursor():foreach("firewall", "zone", function (section) if section.name == name then find = section[".name"] @@ -116,4 +148,24 @@ function firewall_find_zone(name) ) return find -end \ No newline at end of file +end + +function iface_get_network(iface) + local state = uci.cursor_state() + state:load("network") + local net + + state:foreach("network", "interface", + function (section) + local ifname = state:get( + "network", section[".name"], "ifname" + ) + + if iface == ifname then + net = section[".name"] + end + end + ) + + return net +end