local uci = require "luci.model.uci".cursor()
local tools = require "luci.tools.ffwizard"
local util = require "luci.util"
+local sys = require "luci.sys"
-------------------- View --------------------
uci:save("firewall")
- -- Crate network interface
+ -- Create network interface
local netconfig = uci:get_all("freifunk", "interface")
util.update(netconfig, uci:get_all(external, "interface") or {})
netconfig.proto = "static"
uci:save("network")
tools.firewall_zone_add_interface("freifunk", device)
+
+
+ -- Set hostname
+ local new_hostname = ip:gsub("%.", "-")
+ local old_hostname = sys.hostname()
+
+ if old_hostname == "OpenWrt" or old_hostname:match("^%d+-%d+-%d+-%d+$") then
+ uci:foreach("system", "system",
+ function(s)
+ uci:set("system", s['.name'], "hostname", new_hostname)
+ end)
+
+ sys.hostname(new_hostname)
+ uci:save("system")
+ end
end
local community = net:formvalue(section)
local external = community and uci:get("freifunk", community, "external") or ""
+ -- Configure nameservice
+ local hostname
+ uci:foreach("system", "system", function(s) hostname = s.hostname end)
+
+ if hostname then
+ uci:foreach("olsrd", "LoadPlugin",
+ function(s)
+ if s.library == "olsrd_nameservice.so.0.3" then
+ uci:set("olsrd", s['.name'], "name", hostname)
+ end
+ end)
+ end
+
-- Delete old interface
uci:delete_all("olsrd", "Interface", {interface=device})
olsrbase.ignore = "0"
uci:section("olsrd", "Interface", nil, olsrbase)
uci:save("olsrd")
+
+ -- Import hosts
+ uci:foreach("dhcp", "dnsmasq", function(s)
+ uci:set("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
+ end)
+ uci:save("dhcp")
end
function share.write(self, section, value)
uci:delete_all("firewall", "forwarding", {src="freifunk", dest="wan"})
+ uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw_plain.so.0.4"})
if value == "1" then
uci:section("firewall", "forwarding", nil, {src="freifunk", dest="wan"})
+ uci:section("olsrd", "LoadPlugin", nil, {library="olsrd_dyn_gw_plain.so.0.4"})
end
uci:save("firewall")
+ uci:save("olsrd")
end