* modules/freifunk: Updated wizard to be more generic
authorSteven Barth <steven@midlink.org>
Wed, 14 May 2008 19:39:09 +0000 (19:39 +0000)
committerSteven Barth <steven@midlink.org>
Wed, 14 May 2008 19:39:09 +0000 (19:39 +0000)
applications/luci-fw/src/model/cbi/admin_network/routing.lua
contrib/package/ffluci/Makefile
modules/admin-core/src/view/admin_index/wizard.htm
modules/freifunk/root/etc/config/freifunk
modules/freifunk/src/controller/admin/index/wizard.lua

index 45016f4..5805b1d 100644 (file)
@@ -21,8 +21,8 @@ for k, v in pairs(ffluci.model.uci.sections("network")) do
        end
 end
 
-s:option(Flag, "fwd", "FWD", "weiterleiten")
-s:option(Flag, "nat", "NAT", "übersetzen")
-s:option(Flag, "bidi", "<->", "beide Richtungen")
+s:option(Flag, "fwd", "FWD", "weiterleiten").rmempty = true
+s:option(Flag, "nat", "NAT", "übersetzen").rmempty = true
+s:option(Flag, "bidi", "<->", "beide Richtungen").rmempty = true
 
 return m
index 9984695..04d8e71 100644 (file)
@@ -66,7 +66,7 @@ endef
 define Package/ffluci-ff-halle
   $(call Package/ffluci/template)
   DEPENDS:=ffluci \
-   +ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-firewall +ffluci-app-splash \
+   +ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-splash \
    +olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
    +kmod-tun +ip
   TITLE:=Freifunk Halle Community Meta-Package
@@ -79,7 +79,7 @@ endef
 define Package/ffluci-ff-leipzig
   $(call Package/ffluci/template)
   DEPENDS:=ffluci \
-   +ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-firewall +ffluci-app-splash \
+   +ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-splash \
    +olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
    +kmod-tun +ip
   TITLE:=Freifunk Leipzig Community Meta-Package
@@ -107,7 +107,7 @@ endef
 
 define Package/ffluci-mod-freifunk
   $(call Package/ffluci/template)
-  DEPENDS:=ffluci +ffluci-mod-admin-core
+  DEPENDS:=ffluci +ffluci-mod-admin-core +ffluci-app-firewall
   TITLE:=Freifunk public and administrative pages
 endef
 
index 8c1a095..b08703f 100644 (file)
                        <div class="cbi-value-field"><input type="checkbox" name="dhcp" value="1" checked="checked" /></div>
                </div>
                <div class="cbi-value">
-                       <div class="cbi-value-title"><%:shareinet Internet teilen%></div>
+                       <div class="cbi-value-title"><%:cfginternal Erlaube Zugriff von internem Netzwerk%>:</div>
+                       <div class="cbi-value-field"><select name="frominternal">
+                               <option value=""></option>
+<% for k, v in pairs(ffluci.model.uci.sections("network")) do
+       if v[".type"] == "interface" and k ~= "loopback" then %>
+<option value="<%=k%>"<% if k == "lan" then %> selected="selected"<% end %>><%=k%></option>
+<%     end
+end %>
+                       </select></div>
+               </div>
+               <div class="cbi-value">
+                       <div class="cbi-value-title"><%:cfgexternal Erlaube Zugriff auf externes Netzwerk%>:</div>
+                       <div class="cbi-value-field"><select name="toexternal">
+                               <option value=""></option>
+<% for k, v in pairs(ffluci.model.uci.sections("network")) do
+       if v[".type"] == "interface" and k ~= "loopback" then %>
+<option value="<%=k%>"<% if k == "wan" then %> selected="selected"<% end %>><%=k%></option>
+<%     end
+end %>
+                       </select></div>
+               </div>
+               <div class="cbi-value">
+                       <div class="cbi-value-title"><%:shareinet Internetzugang ankündigen%></div>
                        <div class="cbi-value-field"><input type="checkbox" name="shareinet" value="1" checked="checked" /></div>
                </div>
        </div>
index 01b83f2..889b797 100644 (file)
@@ -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
index c7064bb..efca38d 100644 (file)
@@ -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