+require("luci.model.uci")
+require("luci.sys")
+require("luci.ip")
+
+function byte_format(byte)
+ local suff = {"B", "KB", "MB", "GB", "TB"}
+ for i=1, 5 do
+ if byte > 1024 and i < 5 then
+ byte = byte / 1024
+ else
+ return string.format("%.2f %s", byte, suff[i])
+ end
+ end
+end
+
+function date_format(secs)
+ local suff = {"min", "h", "d"}
+ local mins = 0
+ local hour = 0
+ local days = 0
+ 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(hours / 24)
+ hour = hour % 24
+ end
+
+ if days > 0 then
+ return string.format("%dd %02dh %02dmin %02ds", days, hour, mins, secs)
+ else
+ return string.format("%02dh %02dmin %02ds", hour, mins, secs)
+ end
+end
+
+function network_get_addresses(net)
+ luci.model.uci.load_state("network")
+ local addr = {}
+ local ipv4 = luci.model.uci.get("network", net, "ipaddr")
+ local mav4 = luci.model.uci.get("network", net, "netmask")
+ local ipv6 = luci.model.uci.get("network", net, "ip6addr")
+
+ if ipv4 and mav4 then
+ ipv4 = luci.ip.IPv4(ipv4, mav4)
+
+ if ipv4 then
+ table.insert(addr, ipv4:string())
+ end
+ end
+
+ if ipv6 then
+ table.insert(addr, ipv6)
+ end
+
+ luci.model.uci.foreach("network", "alias",
+ function (section)
+ if section.interface == net then
+ if section.ipaddr and section.netmask then
+ local ipv4 = luci.ip.IPv4(section.ipaddr, section.netmask)
+
+ if ipv4 then
+ table.insert(addr, ipv4:string())
+ end
+ end
+
+ if section.ip6addr then
+ table.insert(addr, section.ip6addr)
+ end
+ end
+ end
+ )
+
+ return addr
+end