?? network.lua
字號:
#!/usr/bin/lua-- Copyright (C) 2008 OpenRB.comrequire('fslib')-- get all current system interfacesifaces = proc('if-json -a')file = 'network'wififile = 'wireless'os.execute('touch /etc/config/network')os.execute('touch /etc/config/wireless')ifnames = {}wifiifs = {}cfgnames = uci.get_all(file)wificfgs = uci.get_all(wififile)-- create list of interface namesfor ifname, props in pairs(ifaces) do if (props['type'] == 'Ethernet' and not ifname:find('^ath') and not ifname:find('^br--')) then -- ethernet type interface, add to list ifnames[ ifname ] = '' elseif (ifname:find('^wifi')) then -- wireless, check if already added later wifiifs[ ifname ] = '' ifnames[ ifname ] = '' endend-- create ifname : cfgname pairsfor cfgname, props in pairs(cfgnames) do ifname = string.gsub(props['ifname'], '^ath', 'wifi') if (ifnames[ ifname ] ~= nil) then ifnames[ ifname ] = cfgname endend-- create section for ifnames with no cfgnamefor ifname, cfgname in pairs(ifnames) do if (cfgname == '') then cfgname = iftocfgr(ifname) ifnames[ ifname ] = cfgname ifname = string.gsub(ifname, '^wifi', 'ath') -- set required uci values uci.set(file, cfgname, 'interface') uci.set(file, cfgname, 'ifname', ifname) uci.set(file, cfgname, 'proto', 'none') else ifnames[ ifname ] = nil endenduci.commit(file)startwifi = false-- set config values for wirelessfor ifname, _ in pairs(wifiifs) do if (wificfgs[ ifname ] == nil) then uci.set(wififile, ifname, 'wifi-device') uci.set(wififile, ifname, 'type', 'atheros') uci.set(wififile, ifname, 'channel', 'auto') cfgname = ifname .. 'if' uci.set(wififile, cfgname, 'wifi-iface') uci.set(wififile, cfgname, 'device', ifname) uci.set(wififile, cfgname, 'mode', 'sta') uci.set(wififile, cfgname, 'ssid', 'FlashSYS') uci.set(wififile, cfgname, 'encryption', 'none') startwifi = true elseif (wificfgs[ ifname ].disabled == '1') then uci.set(wififile, ifname, 'disabled', '0') startwifi = true endend-- remove wireless bridges, use proper bridges insteadfor cfgname, props in pairs(wificfgs) do if (props['.type'] == 'wifi-iface' and props['network']) then uci.delete(wififile, cfgname, 'network') endend-- rate detection for wirelesswifiratesraw = readlines('dmesg | grep ^wifi | grep rates', 0, true)wifirates = { '11a', '11b', '11g' }wifireset = {}for _, wifirateraw in ipairs(wifiratesraw) do ifnamesep = wifirateraw:find(':') if ifnamesep then ifname = wifirateraw:sub(1, (ifnamesep - 1)) if wifireset[ ifname ] == nil then for _, wifirate in ipairs(wifirates) do uci.set(wififile, ifname, wifirate, '0') end wifireset[ ifname ] = true end for _, wifirate in ipairs(wifirates) do if wifirateraw:match(' ' .. wifirate .. ' ') then uci.set(wififile, ifname, wifirate, '1') end end endenduci.commit(wififile)-- init newly added interfacesfor ifname, cfgname in pairs(ifnames) do os.execute('ifup ' .. cfgname)endif (startwifi) then os.execute('wifi')end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -