X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fnetwork.lua;h=f7c94f2cdff92cc193f02cf45bc14948aa86f998;hp=ebe8af8a9161e11d6396ade4e4a25c9080b70490;hb=18677e216b26acc148387c5414756a5b94c8a17c;hpb=a493e28e91248d6c4e9dbf4682d882a22647d914 diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index ebe8af8a9..f7c94f2cd 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -17,6 +17,7 @@ module("luci.controller.admin.network", package.seeall) function index() require("luci.i18n") local uci = require("luci.model.uci").cursor() + local net = require "luci.model.network".init(uci) local i18n = luci.i18n.translate local has_wifi = nixio.fs.stat("/etc/config/wireless") local has_switch = false @@ -59,6 +60,18 @@ function index() page = entry({"admin", "network", "wireless_status"}, call("wifi_status"), nil, 16) page.leaf = true + + local wdev + for _, wdev in ipairs(net:get_wifidevs()) do + local wnet + for _, wnet in ipairs(wdev:get_wifinets()) do + entry( + {"admin", "network", "wireless", wnet.netid}, + alias("admin", "network", "wireless"), + wdev:name() .. ": " .. wnet:shortname() + ) + end + end end page = entry({"admin", "network", "network"}, arcombine(cbi("admin_network/network"), cbi("admin_network/ifaces")), i18n("Interfaces"), 10) @@ -198,7 +211,13 @@ function iface_status() if net then local info local dev = net:ifname() - local data = { id = iface, uptime = net:uptime() } + local data = { + id = iface, + proto = net:proto(), + uptime = net:uptime(), + gwaddr = net:gwaddr(), + dnsaddrs = net:dnsaddrs() + } for _, info in ipairs(nixio.getifaddrs()) do local name = info.name:match("[^:]+") if name == dev then @@ -307,24 +326,29 @@ function iface_delete() end function wifi_status() + local netm = require "luci.model.network".init() local path = luci.dispatcher.context.requestpath - local arp = luci.sys.net.arptable() local rv = { } local dev for dev in path[#path]:gmatch("[%w%.%-]+") do local j = { id = dev } - local iw = luci.sys.wifi.getiwinfo(dev) + local wn = netm:get_wifinet(dev) + local iw = wn and wn.iwinfo if iw then local f for _, f in ipairs({ "channel", "frequency", "txpower", "bitrate", "signal", "noise", - "quality", "quality_max", "mode", "ssid", "bssid", "country", + "quality", "quality_max", "bssid", "country", "encryption", "ifname", "assoclist" }) do j[f] = iw[f] end end + + j.mode = wn and wn:active_mode() or "?" + j.ssid = wn and wn:active_ssid() or "?" + rv[#rv+1] = j end @@ -338,43 +362,10 @@ function wifi_status() end function lease_status() - local rv = { } - local leasefile = "/var/dhcp.leases" - - local uci = require "luci.model.uci".cursor() - local nfs = require "nixio.fs" - - uci:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile and nfs.access(s.leasefile) then - leasefile = s.leasefile - return false - end - end) - - local fd = io.open(leasefile, "r") - if fd then - while true do - local ln = fd:read("*l") - if not ln then - break - else - local ts, mac, ip, name = ln:match("^(%d+) (%S+) (%S+) (%S+)") - if ts and mac and ip and name then - rv[#rv+1] = { - expires = os.difftime(tonumber(ts) or 0, os.time()), - macaddr = mac, - ipaddr = ip, - hostname = (name ~= "*") and name - } - end - end - end - fd:close() - end + local s = require "luci.tools.status" luci.http.prepare_content("application/json") - luci.http.write_json(rv) + luci.http.write_json(s.dhcp_leases()) end function diag_command(cmd)