⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 save.lua

📁 嵌入式无线路由系统openwrt的web配置工具
💻 LUA
字号:
#!/usr/bin/lua-- Copyright (C) 2008 OpenRB.comrequire('fslib')data = datajson() or {}file = 'network'restartif = nilif (data['bridge'] and data['values'] ~= nil) then  -- build list of interfaces  iflist = {}  for field, value in pairs(data['values']) do    if (field:find('^if_') and value ~= '') then      table.insert(iflist, value)    end  end  isbridge = true  if (#iflist == 0) then    error('cannot create bridge with no interfaces')  end  data['ifname'] = table.concat(iflist, ' ')  data['values']['type'] = 'bridge'end-- creating new bridge interfaceif (data['new_bridge'] and data['values'] ~= nil) then  brname = data['values']['brname']  -- new brigde name must be passed  if (brname ~= nil and brname ~= '') then    cfg = uci.init(file, brname)    if (cfg == nil) then      -- bridge should be put above all interfaces      f = io.open('/tmp/fs2' .. file, 'w')      if (f ~= nil) then        f:write("config 'interface' '" .. brname .. "'\n")        f:close()                -- add current config values and move config back        os.execute('cat /etc/config/' .. file .. ' >> /tmp/fs2' .. file)        os.execute('mv /tmp/fs2' .. file .. ' /etc/config/' .. file)        data['id'] = brname        restartif = brname      end    end  end  end-- check that some data is passedif (data['ifname'] ~= nil) then  wififile = 'wireless'  cfg = uci.init(file)    -- no id passed, get id from ifname  if (data['id'] == nil) then     data['id'] = iftocfgr(data['ifname'])  end  -- we have id, save values  if (data['id'] ~= nil) then    ifname = data['ifname']    uci.set(file, data['id'], 'interface')    uci.set(file, data['id'], 'ifname', ifname)        -- some values passed, add them    if (data['values'] ~= nil) then      if (data['bridged'] == nil) then        fields = {'proto', 'ipaddr', 'netmask', 'gateway', 'username', 'password',                   'keepalive', 'demand', 'server', 'mtu', 'dns', 'stp', 'type'}        for _, field in ipairs(fields) do          uci.setvalue(file, data['id'], field, data['values'][ field ])        end      end      -- save wireless device info      if (data['wifidevice'] ~= nil) then        uci.init(wififile, data['wifidevice'], 'wifi-device')                -- set correct channel        data['values']['channel'] = data['values']['agmode'] == '11a' and data['values']['channel_5g'] or data['values']['channel_2g']                fields = {'agmode', 'channel', 'distance'}        for _, field in ipairs(fields) do          uci.setvalue(wififile, data['wifidevice'], field, data['values'][ field ])        end      end      -- save wireless iface info      if (data['wifiiface'] ~= nil) then        -- if previous bridge setting was not found, default to no bridge        prev_bridge = uci.get(wififile, data['wifiiface'], 'network')        if (prev_bridge == nil) then          prev_bridge = ''        end                fields = {'ssid', 'mode', 'wds', 'txpower', 'network', 'rate', 'encryption',                   'key', 'key1', 'key2', 'key3', 'key4', 'server', 'port', 'hidden',                  'mcast_rate', 'ff', 'xr', 'ar', 'bursting', 'compression'}        for _, field in ipairs(fields) do          uci.setvalue(wififile, data['wifiiface'], field, data['values'][ field ])        end                curr_bridge = data['values']['network']        -- save bridge settings        if (curr_bridge ~= nil and curr_bridge ~= prev_bridge) then          -- bridge existed, remove it          if (prev_bridge ~= '') then            uci.delete(file, prev_bridge, 'type')          end                    -- new brigde specified, add some specific settings          if (curr_bridge ~= '') then            uci.set(file, curr_bridge, 'type', 'bridge')            uci.setvalue(wififile, data['wifiiface'], 'wds', '1')            -- reset network setting to default for wifi iface            uci.delete(file, data['id'])            uci.set(file, data['id'], 'interface')            uci.set(file, data['id'], 'ifname', data['ifname'])            uci.set(file, data['id'], 'proto', 'none')          end                end      end            if (data['wifidevice'] ~= nil or data['wifiiface'] ~= nil) then        uci.commit(wififile)        end            -- change mtu on the fly      if (data['values']['mtu'] ~= nil) then        os.execute('ifconfig ' .. data['ifname'] .. ' mtu ' .. data['values']['mtu'])      end    end    uci.commit(file)  endend-- set 'bridged values' for all interfacesif (isbridge) then  cfg = uci.get_all(file)  brlist = {}  iflist = {}  for cfgname, options in pairs(cfg) do    if (options['type'] == 'bridge') then      cfgnames = split(options['ifname'], ' ')      if (cfgnames) then        for _, icfgname in ipairs(cfgnames) do          brlist[ icfgname ] = cfgname        end      end    else      uci.delete(file, cfgname, 'bridged')      iflist[ options['ifname'] ] = cfgname    end  end  for ifname, brname in pairs(brlist) do    cfgname = iflist[ ifname ]    if (cfgname) then      uci.set(file, cfgname, 'bridged', brname)    end  end  uci.commit(file)endif (restartif ~= nil) then  os.execute('ifup ' .. restartif)end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -