12345678910111213141516171819202122232425262728293031323334353637383940 |
- local batman_adv = require 'gluon.batman_adv'
- local iwinfo = require 'iwinfo'
- function neighbours(iface)
- local stations = {}
- for k, v in pairs(iface.iw.assoclist(iface.ifname)) do
- stations[k:lower()] = { signal = v.signal
- , noise = v.noise
- , inactive = v.inactive
- }
- end
- if next(stations) then
- return stations
- end
- end
- function interfaces()
- local interfaces = {}
- for ifname in batman_adv.interfaces('bat0') do
- pcall(function()
- local address = util.readline(io.open('/sys/class/net/' .. ifname .. '/address'))
- local wifitype = iwinfo.type(ifname)
- if wifitype ~= nil then
- interfaces[address] = { ifname = ifname, iw = iwinfo[wifitype] }
- end
- end)
- end
- return interfaces
- end
- local wifi = {}
- for address, iface in pairs(interfaces()) do
- wifi[address] = { [{}] = true, neighbours = neighbours(iface) }
- end
- if next(wifi) then
- return wifi
- end
|