Completed rewrite of network interface configuration page
[project/luci.git] / modules / admin-core / luasrc / tools / webadmin.lua
index 3664997..ac11845 100644 (file)
@@ -16,6 +16,7 @@ $Id$
 module("luci.tools.webadmin", package.seeall)
 require("luci.model.uci")
 require("luci.sys")
+require("luci.ip")
 
 function byte_format(byte)
        local suff = {"B", "KB", "MB", "GB", "TB"}
@@ -28,6 +29,45 @@ function byte_format(byte)
        end
 end
 
+function network_get_addresses(net)
+       local addr = {}
+       local ipv4 = luci.model.uci.get_statevalue("network", net, "ipaddr")
+       local mav4 = luci.model.uci.get_statevalue("network", net, "netmask")
+       local ipv6 = luci.model.uci.get_statevalue("network", net, "ip6addr")
+       
+       if ipv4 and mav4 then
+               ipv4 = luci.ip.IPv4(ipv4, mav4)
+               
+               if ipv4 then 
+                       table.insert(addr, ipv4:string())
+               end
+       end
+
+       if ipv6 then
+               table.insert(addr, ipv6)
+       end
+       
+       luci.model.uci.foreach("network", "alias",
+               function (section)
+                       if section.interface == net then
+                               if section.ipaddr and section.netmask then
+                                       local ipv4 = luci.ip.IPv4(section.ipaddr, section.netmask)
+                                       
+                                       if ipv4 then
+                                               table.insert(addr, ipv4:string())
+                                       end
+                               end
+                               
+                               if section.ip6addr then
+                                       table.insert(addr, section.ip6addr)
+                               end
+                       end
+               end
+       )
+       
+       return addr
+end
+
 function cbi_add_networks(field)
        luci.model.uci.foreach("network", "interface",
                function (section)
@@ -42,4 +82,37 @@ function cbi_add_knownips(field)
        for i, dataset in ipairs(luci.sys.net.arptable()) do
                field:value(dataset["IP address"])
        end
+end
+
+function network_get_zones(net)
+       if not luci.model.uci.load("firewall") then
+               return nil
+       end
+       
+       local zones = {}
+       
+       luci.model.uci.foreach("firewall", "zone", 
+               function (section)
+                       local znet = section.network or section.name
+                       if luci.util.contains(luci.util.split(znet, " "), net) then
+                               table.insert(zones, section.name)
+                       end
+               end
+       )
+       
+       return zones
+end
+
+function firewall_find_zone(name)
+       local find
+       
+       luci.model.uci.foreach("firewall", "zone", 
+               function (section)
+                       if section.name == name then
+                               find = section[".name"]
+                       end
+               end
+       )
+       
+       return find
 end
\ No newline at end of file