From a39bf5f58d880f17b10376b64670f54768354b65 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 14 May 2008 19:39:09 +0000 Subject: * modules/freifunk: Updated wizard to be more generic --- modules/admin-core/src/view/admin_index/wizard.htm | 24 ++++++- modules/freifunk/root/etc/config/freifunk | 4 -- .../freifunk/src/controller/admin/index/wizard.lua | 83 +++++++++++++++++++--- 3 files changed, 98 insertions(+), 13 deletions(-) (limited to 'modules') diff --git a/modules/admin-core/src/view/admin_index/wizard.htm b/modules/admin-core/src/view/admin_index/wizard.htm index 8c1a0952b..b08703ffe 100644 --- a/modules/admin-core/src/view/admin_index/wizard.htm +++ b/modules/admin-core/src/view/admin_index/wizard.htm @@ -23,7 +23,29 @@
-
<%:shareinet Internet teilen%>
+
<%:cfginternal Erlaube Zugriff von internem Netzwerk%>:
+
+
+
+
<%:cfgexternal Erlaube Zugriff auf externes Netzwerk%>:
+
+
+
+
<%:shareinet Internetzugang ankündigen%>
diff --git a/modules/freifunk/root/etc/config/freifunk b/modules/freifunk/root/etc/config/freifunk index 01b83f2c7..889b79787 100644 --- a/modules/freifunk/root/etc/config/freifunk +++ b/modules/freifunk/root/etc/config/freifunk @@ -19,7 +19,3 @@ config public community option dhcp 10.0.0.0 option dhcpmask 255.255.255.0 option dns "88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222" - -config settings routing - option internal 0 - option internet 0 diff --git a/modules/freifunk/src/controller/admin/index/wizard.lua b/modules/freifunk/src/controller/admin/index/wizard.lua index c7064bb1b..efca38d21 100644 --- a/modules/freifunk/src/controller/admin/index/wizard.lua +++ b/modules/freifunk/src/controller/admin/index/wizard.lua @@ -30,6 +30,7 @@ function configure_freifunk() uci:t_load("luci_splash") uci:t_load("olsr") uci:t_load("wireless") + uci:t_load("luci_fw") -- Configure FF-Interface @@ -43,16 +44,59 @@ function configure_freifunk() uci:t_set("network", "ff", "netmask", uci:t_get("freifunk", "community", "mask")) uci:t_set("network", "ff", "dns", uci:t_get("freifunk", "community", "dns")) - -- Enable internal routing - uci:t_set("freifunk", "routing", "internal", "1") + -- Reset Routing + local routing = uci:t_sections("luci_fw") + if routing then + for k, v in pairs(routing) do + if v[".type"] == "routing" and (v.iface == "ff" or v.oface == "ff") then + uci:t_del("luci_fw", k) + end + end - -- Enable internet routing - if ffluci.http.formvalue("shareinet") then - uci:t_set("freifunk", "routing", "internet", "1") - else - uci:t_set("freifunk", "routing", "internet", "0") + local int = uci:t_add("luci_fw", "routing") + uci:t_set("luci_fw", int, "iface", "ff") + uci:t_set("luci_fw", int, "oface", "ff") + uci:t_set("luci_fw", int, "fwd", "1") end + -- Routing from Internal + local iface = ffluci.http.formvalue("frominternal") + if iface and iface ~= "" then + local routing = uci:t_sections("luci_fw") + if routing then + for k, v in pairs(routing) do + if v[".type"] == "routing" and (v.iface == iface and v.oface == "ff") then + uci:t_del("luci_fw", k) + end + end + + local int = uci:t_add("luci_fw", "routing") + uci:t_set("luci_fw", int, "iface", iface) + uci:t_set("luci_fw", int, "oface", "ff") + uci:t_set("luci_fw", int, "fwd", "1") + uci:t_set("luci_fw", int, "nat", "1") + end + end + + -- Routing to External + local iface = ffluci.http.formvalue("toexternal") + if iface and iface ~= "" then + local routing = uci:t_sections("luci_fw") + if routing then + for k, v in pairs(routing) do + if v[".type"] == "routing" and (v.oface == iface and v.iface == "ff") then + uci:t_del("luci_fw", k) + end + end + + local int = uci:t_add("luci_fw", "routing") + uci:t_set("luci_fw", int, "iface", "ff") + uci:t_set("luci_fw", int, "oface", iface) + uci:t_set("luci_fw", int, "fwd", "1") + uci:t_set("luci_fw", int, "nat", "1") + end + end + -- Configure DHCP if ffluci.http.formvalue("dhcp") then local dhcpnet = uci:t_get("freifunk", "community", "dhcp"):match("^([0-9]+)") @@ -91,7 +135,29 @@ function configure_freifunk() local sk = uci:t_add("luci_splash", "iface") uci:t_set("luci_splash", sk, "network", "ffdhcp") - end + end + + local routing = uci:t_sections("luci_fw") + if routing then + for k, v in pairs(routing) do + if v[".type"] == "routing" and (v.iface == "ffdhcp" or v.oface == "ffdhcp") then + uci:t_del("luci_fw", k) + end + end + + local int = uci:t_add("luci_fw", "routing") + uci:t_set("luci_fw", int, "iface", "ffdhcp") + uci:t_set("luci_fw", int, "oface", "ff") + uci:t_set("luci_fw", int, "nat", "1") + + local iface = ffluci.http.formvalue("toexternal") + if iface and iface ~= "" then + local int = uci:t_add("luci_fw", "routing") + uci:t_set("luci_fw", int, "iface", "ffdhcp") + uci:t_set("luci_fw", int, "oface", iface) + uci:t_set("luci_fw", int, "nat", "1") + end + end end -- Configure OLSR @@ -166,6 +232,7 @@ function configure_freifunk() uci:t_save("luci_splash") uci:t_save("olsr") uci:t_save("wireless") + uci:t_save("luci_fw") ffluci.http.redirect(ffluci.dispatcher.build_url("admin", "uci", "changes")) end \ No newline at end of file -- cgit v1.2.3