diff options
author | Steven Barth <steven@midlink.org> | 2008-06-06 20:45:33 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-06-06 20:45:33 +0000 |
commit | cd0fb5e44e5cb538d93024d02a14a02c00752641 (patch) | |
tree | d6188cf6d6c9ee67b4a12261c3faee545cd446aa /applications/luci-ffwizard-leipzig | |
parent | 8644ff1eab93d067e316eee9f4b567e1bf07ccb3 (diff) |
* Removed High-Level UCI-API due to Lua compiler bugs
Diffstat (limited to 'applications/luci-ffwizard-leipzig')
-rw-r--r-- | applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua | 247 |
1 files changed, 123 insertions, 124 deletions
diff --git a/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua b/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua index 216230fe15..6c3ad8c026 100644 --- a/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua +++ b/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua @@ -22,176 +22,173 @@ end function configure_freifunk() local ip = luci.http.formvalue("ip") local uci = luci.model.uci - local cfg = uci.config - + local cfg = { + wireless = uci.load("wireless"), + luci_fw = uci.load("luci_fw"), + luci_splash = uci.load("luci_splash"), + olsr = uci.load("olsr") + } -- Configure FF-Interface uci.delete("network", "ff") uci.delete("network", "ffdhcp") - cfg.network.ff = "interface" - cfg.network.ff.type = "bridge" - cfg.network.ff.proto = "static" - cfg.network.ff.ipaddr = ip - cfg.network.ff.netmask = cfg.freifunk.community.mask - cfg.network.ff.dns = cfg.freifunk.community.dns + uci.section("network", "interface", "ff", { + type = "bridge", + proto = "static", + ipaddr = ip, + netmask = uci.get("freifunk", "community", "mask"), + dns = uci.get("freifunk", "community", "dns") + }) -- Reset Routing - uci.foreach("luci_fw", "routing", + uci.delete_all("luci_fw", "routing", function (section) - if section.iface == "ff" or section.oface == "ff" then - uci.delete("luci_fw", section[".name"]) - end + return (section.iface == "ff" or section.oface == "ff") end) if cfg.luci_fw then - cfg.luci_fw[""] = "routing" - cfg.luci_fw[""].iface = "ff" - cfg.luci_fw[""].oface = "ff" - cfg.luci_fw[""].fwd = "1" + uci.section("luci_fw", "routing", nil, { + iface = "ff", + oface = "ff", + fwd = "1" + }) end -- Routing from Internal local iface = luci.http.formvalue("frominternal") if iface and iface ~= "" then - uci.foreach("luci_fw", "routing", + uci.delete_all("luci_fw", "routing", function (section) - if section.iface == iface and section.oface == "ff" then - uci.delete("luci_fw", section[".name"]) - end + return (section.iface == iface and section.oface == "ff") end) if cfg.luci_fw then - cfg.luci_fw[""] = "routing" - cfg.luci_fw[""].iface = iface - cfg.luci_fw[""].oface = "ff" - cfg.luci_fw[""].fwd = "1" - cfg.luci_fw[""].nat = "1" + uci.section("luci_fw", "routing", nil, { + iface = iface, + oface = "ff", + fwd = "1", + nat = "1" + }) end end - + -- Routing to External local iface = luci.http.formvalue("toexternal") if iface and iface ~= "" then - uci.foreach("luci_fw", "routing", + uci.delete_all("luci_fw", "routing", function (section) - if section.oface == iface and section.iface == "ff" then - uci.delete("luci_fw", section[".name"]) - end + return (section.oface == iface and section.iface == "ff") end) if cfg.luci_fw then - cfg.luci_fw[""] = "routing" - cfg.luci_fw[""].oface = iface - cfg.luci_fw[""].iface = "ff" - cfg.luci_fw[""].fwd = "1" - cfg.luci_fw[""].nat = "1" + uci.section("luci_fw", "routing", nil, { + oface = iface, + iface = "ff", + fwd = "1", + nat = "1" + }) end end -- Configure DHCP if luci.http.formvalue("dhcp") then - local dhcpnet = cfg.freifunk.community.dhcp:match("^([0-9]+)") + local dhcpnet = uci.get("freifunk", "community", "dhcp"):match("^([0-9]+)") local dhcpip = ip:gsub("^[0-9]+", dhcpnet) - cfg.network.ffdhcp = "interface" - cfg.network.ffdhcp.proto = "static" - cfg.network.ffdhcp.ifname = "br-ff:dhcp" - cfg.network.ffdhcp.ipaddr = dhcpip - cfg.network.ffdhcp.netmask = cfg.freifunk.community.dhcpmask + uci.section("network", "interface", "ffdhcp", { + proto = "static", + ifname = "br-ff:dhcp", + ipaddr = dhcpip, + netmask = uci.get("freifunk", "community", "dhcpmask") + }) - uci.foreach("dhcp", "dhcp", - function (section) - if section.interface == "ffdhcp" then - uci.delete("dhcp", section[".name"]) - end - end) + uci.delete_all("dhcp", "dhcp", + function (section) + return (section.interface == "ffdhcp") + end) local dhcpbeg = 48 + tonumber(ip:match("[0-9]+$")) * 4 - - cfg.dhcp[""] = "dhcp" - cfg.dhcp[""].interface = "ffdhcp" - cfg.dhcp[""].start = dhcpbeg - cfg.dhcp[""].limit = (dhcpbeg < 252) and 3 or 2 - cfg.dhcp[""].leasetime = "30m" - - - uci.foreach("luci_splash", "iface", + uci.section("dhcp", "dhcp", nil, { + interface = "ffdhcp", + start = dhcpbeg, + limit = ((dhcpbeg < 252) and 3 or 2), + leasetime = "30m" + }) + + + uci.delete_all("luci_splash", "iface", function (section) - if section.network == "ffdhcp" then - uci.delete("luci_splash", section[".name"]) - end + return (section.network == "ffdhcp") end) - + if cfg.luci_splash then - cfg.luci_splash[""] = "iface" - cfg.luci_splash[""].network = "ffdhcp" + uci.section("luci_splash", "iface", nil, { + network = "ffdhcp" + }) end - uci.foreach("luci_fw", "routing", + uci.delete_all("luci_fw", "routing", function (section) - if section.iface == "ffdhcp" or section.oface == "ffdhcp" then - uci.delete("luci_fw", section[".name"]) - end + return (section.iface == "ffdhcp" or section.oface == "ffdhcp") end) - if cfg.luci_fw then - cfg.luci_fw[""] = "routing" - cfg.luci_fw[""].iface = "ffdhcp" - cfg.luci_fw[""].oface = "ff" - cfg.luci_fw[""].nat = "1" + if cfg.luci_fw then + uci.section("luci_fw", "routing", nil, { + iface = "ffdhcp", + oface = "ff", + nat = "1" + }) local iface = luci.http.formvalue("toexternal") if iface and iface ~= "" then - cfg.luci_fw[""] = "routing" - cfg.luci_fw[""].iface = "ffdhcp" - cfg.luci_fw[""].oface = iface - cfg.luci_fw[""].nat = "1" + uci.section("luci_fw", "routing", nil, { + iface = "ffdhcp", + oface = iface, + nat = "1" + }) end end end - + -- Configure OLSR if luci.http.formvalue("olsr") and cfg.olsr then - uci.foreach("olsr", "Interface", - function (section) - uci.delete("olsr", section[".name"]) - end) - - uci.foreach("olsr", "LoadPlugin", - function (section) - uci.delete("olsr", section[".name"]) - end) + uci.delete_all("olsr", "Interface") + uci.delete_all("olsr", "LoadPlugin") if luci.http.formvalue("shareinet") then - cfg.olsr.dyn_gw = "LoadPlugin" - cfg.olsr.dyn_gw.Library = "olsrd_dyn_gw.so.0.4" + uci.section("olsr", "LoadPlugin", "dyn_gw", { + Library = "olsrd_dyn_gw.so.0.4" + }) end - cfg.olsr.nameservice = "LoadPlugin" - cfg.olsr.nameservice.Library = "olsrd_nameservice.so.0.3" - cfg.olsr.nameservice.name = ip:gsub("%.", "-") - cfg.olsr.nameservice.hosts_file = "/var/etc/hosts" - cfg.olsr.nameservice.suffix = ".olsr" - cfg.olsr.nameservice.latlon_infile = "/tmp/latlon.txt" + uci.section("olsr", "LoadPlugin", "nameservice", { + Library = "olsrd_nameservice.so.0.3", + name = ip:gsub("%.", "-"), + hosts_file = "/var/etc/hosts", + suffix = ".olsr", + latlon_infile = "/tmp/latlon.txt" + }) - cfg.olsr.txtinfo = "LoadPlugin" - cfg.olsr.txtinfo.Library = "olsrd_txtinfo.so.0.1" - cfg.olsr.txtinfo.Accept = "127.0.0.1" + uci.section("olsr", "LoadPlugin", "txtinfo", { + Library = "olsrd_txtinfo.so.0.1", + Accept = "127.0.0.1" + }) - cfg.olsr[""] = "Interface" - cfg.olsr[""].Interface = "ff" - cfg.olsr[""].HelloInterval = "6.0" - cfg.olsr[""].HelloValidityTime = "108.0" - cfg.olsr[""].TcInterval = "4.0" - cfg.olsr[""].TcValidityTime = "324.0" - cfg.olsr[""].MidInterval = "18.0" - cfg.olsr[""].MidValidityTime = "324.0" - cfg.olsr[""].HnaInterval = "18.0" - cfg.olsr[""].HnaValidityTime = "108.0" + uci.section("olsr", "Interface", nil, { + Interface = "ff", + HelloInterval = "6.0", + HelloValidityTime = "108.0", + TcInterval = "4.0", + TcValidityTime = "324.0", + MidInterval = "18.0", + MidValidityTime = "324.0", + HnaInterval = "18.0", + HnaValidityTime = "108.0" + }) end - + -- Configure Wifi if cfg.wireless then uci.foreach("wireless", "wifi-device", @@ -199,32 +196,34 @@ function configure_freifunk() local device = section[".name"] if luci.http.formvalue("wifi."..iface) then - uci.foreach("wireless", "wifi-iface", + uci.delete_all("wireless", "wifi-iface", function (section) - if section.device == device then - uci.delete("wireless", section[".name"]) - end + return (section.device == device) end) end - cfg.wireless[device].disabled = "0" - cfg.wireless[device].mode = "11g" - cfg.wireless[device].txantenna = "1" - cfg.wireless[device].rxantenna = "1" - cfg.wireless[device].channel = cfg.freifunk.community.channel + uci.tset("wireless", "device", { + disabled = "0", + mode = "11g", + txantenna = "1", + rxantenna = "1", + channel = uci.get("freifunk", "community", "channel") + }) - cfg.wireless[""] = "wifi-iface" - cfg.wireless[""].device = iface - cfg.wireless[""].network = "ff" - cfg.wireless[""].mode = "adhoc" - cfg.wireless[""].ssid = cfg.freifunk.community.essid - cfg.wireless[""].bssid = cfg.freifunk.community.bssid - cfg.wireless[""].txpower = 13 + uci.section("wireless", "wifi-iface", nil, { + device = iface, + network = "ff", + mode = "adhoc", + ssid = uci.get("freifunk", "community", "essid"), + bssid = uci.get("freifunk", "community", "bssid"), + txpower = 13 + }) end) end - + -- Save UCI uci.save() + luci.http.redirect(luci.dispatcher.build_url("admin", "uci", "changes")) end
\ No newline at end of file |