modules/admin-full: make menus work with no dnsmasq or firewall installed
This commit is contained in:
parent
9c3db58ee4
commit
1aa676d501
2 changed files with 132 additions and 110 deletions
|
@ -20,6 +20,9 @@ local fw = require "luci.model.firewall"
|
|||
|
||||
arg[1] = arg[1] or ""
|
||||
|
||||
local has_dnsmasq = fs.access("/etc/config/dhcp")
|
||||
local has_firewall = fs.access("/etc/config/firewall")
|
||||
|
||||
local has_3g = fs.access("/usr/bin/gcom")
|
||||
local has_pptp = fs.access("/usr/sbin/pptp")
|
||||
local has_pppd = fs.access("/usr/sbin/pppd")
|
||||
|
@ -30,9 +33,12 @@ local has_6in4 = fs.access("/lib/network/6in4.sh")
|
|||
local has_6to4 = fs.access("/lib/network/6to4.sh")
|
||||
|
||||
m = Map("network", translate("Interfaces") .. " - " .. arg[1]:upper(), translate("On this page you can configure the network interfaces. You can bridge several interfaces by ticking the \"bridge interfaces\" field and enter the names of several network interfaces separated by spaces. You can also use <abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation <samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: <samp>eth0.1</samp>)."))
|
||||
m:chain("firewall")
|
||||
m:chain("wireless")
|
||||
|
||||
if has_firewall then
|
||||
m:chain("firewall")
|
||||
end
|
||||
|
||||
nw.init(m.uci)
|
||||
fw.init(m.uci)
|
||||
|
||||
|
@ -56,7 +62,7 @@ if has_pppd then s:tab("ppp", translate("PPP Settings")) end
|
|||
if has_pppoa then s:tab("atm", translate("ATM Settings")) end
|
||||
if has_6in4 or has_6to4 then s:tab("tunnel", translate("Tunnel Settings")) end
|
||||
s:tab("physical", translate("Physical Settings"))
|
||||
s:tab("firewall", translate("Firewall Settings"))
|
||||
if has_firewall then s:tab("firewall", translate("Firewall Settings")) end
|
||||
|
||||
st = s:taboption("general", DummyValue, "__status", translate("Status"))
|
||||
st.template = "admin_network/iface_status"
|
||||
|
@ -143,8 +149,7 @@ ifname_multi.cfgvalue = ifname_single.cfgvalue
|
|||
ifname_multi.write = ifname_single.write
|
||||
|
||||
|
||||
local fwd_to, fwd_from
|
||||
|
||||
if has_firewall then
|
||||
fwzone = s:taboption("firewall", Value, "_fwzone",
|
||||
translate("Create / Assign firewall-zone"),
|
||||
translate("Choose the firewall zone you want to assign to this interface. Select <em>unspecified</em> to remove the interface from the associated zone or fill out the <em>create</em> field to define a new zone and attach the interface to it."))
|
||||
|
@ -176,6 +181,7 @@ function fwzone.write(self, section, value)
|
|||
zone:add_network(section)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ipaddr = s:taboption("general", Value, "ipaddr", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
|
||||
ipaddr.optional = true
|
||||
|
@ -507,6 +513,11 @@ dns.optional = true
|
|||
dns.datatype = "ip4addr"
|
||||
|
||||
|
||||
--
|
||||
-- Display DNS settings if dnsmasq is available
|
||||
--
|
||||
|
||||
if has_dnsmasq then
|
||||
m2 = Map("dhcp", "", "")
|
||||
function m2.on_parse()
|
||||
local has_section = false
|
||||
|
@ -592,5 +603,6 @@ for i, n in ipairs(s.children) do
|
|||
n:depends("ignore", "")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return m, m2
|
||||
|
|
|
@ -12,6 +12,7 @@ You may obtain a copy of the License at
|
|||
$Id$
|
||||
]]--
|
||||
|
||||
local fs = require "nixio.fs"
|
||||
local nw = require "luci.model.network"
|
||||
local fw = require "luci.model.firewall"
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
|
@ -19,6 +20,8 @@ local http = require "luci.http"
|
|||
|
||||
local iw = luci.sys.wifi.getiwinfo(http.formvalue("device"))
|
||||
|
||||
local has_firewall = fs.access("/etc/config/firewall")
|
||||
|
||||
if not iw then
|
||||
luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
|
||||
return
|
||||
|
@ -89,19 +92,23 @@ newnet = m:field(Value, "_netname_new", translate("Name of the new network"),
|
|||
newnet.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wwan"
|
||||
newnet.datatype = "uciname"
|
||||
|
||||
if has_firewall then
|
||||
fwzone = m:field(Value, "_fwzone",
|
||||
translate("Create / Assign firewall-zone"),
|
||||
translate("Choose the firewall zone you want to assign to this interface. Select <em>unspecified</em> to remove the interface from the associated zone or fill out the <em>create</em> field to define a new zone and attach the interface to it."))
|
||||
|
||||
fwzone.template = "cbi/firewall_zonelist"
|
||||
fwzone.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wan"
|
||||
end
|
||||
|
||||
function newnet.parse(self, section)
|
||||
local net, zone
|
||||
local value = self:formvalue(section)
|
||||
local zval = fwzone:formvalue(section)
|
||||
|
||||
local value = self:formvalue(section)
|
||||
net = nw:add_network(value, { proto = "dhcp" })
|
||||
|
||||
if has_firewall then
|
||||
local zval = fwzone:formvalue(section)
|
||||
zone = fw:get_zone(zval)
|
||||
|
||||
if not zone and zval == '-' then
|
||||
|
@ -110,6 +117,7 @@ function newnet.parse(self, section)
|
|||
zone = fw:add_zone(zval)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not net then
|
||||
self.error = { [section] = "missing" }
|
||||
|
@ -165,10 +173,12 @@ function newnet.parse(self, section)
|
|||
end
|
||||
end
|
||||
|
||||
if has_firewall then
|
||||
function fwzone.cfgvalue(self, section)
|
||||
self.iface = section
|
||||
local z = fw:get_zone_by_network(section)
|
||||
return z and z:name()
|
||||
end
|
||||
end
|
||||
|
||||
return m
|
||||
|
|
Loading…
Reference in a new issue