modules/admin-full: Added support for interface aliases

This commit is contained in:
Steven Barth 2008-08-07 20:21:38 +00:00
parent e72a526984
commit fbae92e522
8 changed files with 97 additions and 20 deletions

View file

@ -11,13 +11,24 @@ s.template = "cbi/tblsection"
s.addremove = true s.addremove = true
s.anonymous = true s.anonymous = true
iface = s:option(ListValue, "zone", "Firewallzone") zone = s:option(ListValue, "zone", "Firewallzone")
luci.model.uci.foreach("firewall", "zone", luci.model.uci.foreach("firewall", "zone",
function (section) function (section)
iface:value(section.name) zone:value(section.name)
end) end)
gateway = s:option(Value, "gateway", "Gateway") iface = s:option(ListValue, "network", "Netzwerk")
luci.model.uci.foreach("network", "interface",
function (section)
if section[".name"] ~= "loopback" then
iface:value(section[".name"])
end
end)
luci.model.uci.foreach("network", "alias",
function (section)
iface:value(section[".name"])
end)
s = m:section(TypedSection, "whitelist", "Automatische Freigabe") s = m:section(TypedSection, "whitelist", "Automatische Freigabe")
s.template = "cbi/tblsection" s.template = "cbi/tblsection"

View file

@ -7,15 +7,20 @@ iface_add() {
config_get zone "$cfg" zone config_get zone "$cfg" zone
[ -n "$zone" ] || return 0 [ -n "$zone" ] || return 0
config_get gw "$cfg" gateway config_get net "$cfg" network
[ -n "$gw" ] || return 0 [ -n "$net" ] || return 0
iptables -t nat -A zone_${zone}_prerouting -j luci_splash_portal config_get ipaddr "$net" ipaddr
[ -n "$ipaddr" ] || return 0
for i in $gw config_get netmask "$net" netmask
do [ -n "$netmask" ] || return 0
iptables -t nat -A luci_splash_portal -d "$i" -p tcp -m multiport --dports 22,80,443 -j RETURN
done eval "$(ipcalc.sh $ipaddr $netmask)"
iptables -t nat -A zone_${zone}_prerouting -s "$NETWORK/$PREFIX" -p ! tcp -j luci_splash_portal
iptables -t nat -A zone_${zone}_prerouting -s "$NETWORK/$PREFIX" -d ! "$ipaddr" -j luci_splash_portal
iptables -t nat -A zone_${zone}_prerouting -s "$NETWORK/$PREFIX" -d "$ipaddr" -p tcp -m multiport ! --dport 22,80,443 -j luci_splash_portal
} }
blacklist_add() { blacklist_add() {

View file

@ -5,6 +5,7 @@ administration = "Administration"
apply = "Apply" apply = "Apply"
basicsettings = "Basic Settings" basicsettings = "Basic Settings"
broadcast = "Broadcast"
changes = "Changes" changes = "Changes"
channel = "Channel" channel = "Channel"

View file

@ -5,6 +5,7 @@ administration = "Administration"
apply = "Anwenden" apply = "Anwenden"
basicsettings = "Grundeinstellungen" basicsettings = "Grundeinstellungen"
broadcast = "Broadcast"
changes = "Änderungen" changes = "Änderungen"
channel = "Kanal" channel = "Kanal"

View file

@ -487,7 +487,7 @@ end
-- Verifies scope of sections -- Verifies scope of sections
function TypedSection.checkscope(self, section) function TypedSection.checkscope(self, section)
-- Check if we are not excluded -- Check if we are not excluded
if self.filter and not self.filter(section) then if self.filter and not self:filter(section) then
return nil return nil
end end

View file

@ -38,7 +38,8 @@ function index()
function (section) function (section)
local ifc = section[".name"] local ifc = section[".name"]
if ifc ~= "loopback" then if ifc ~= "loopback" then
entry({"admin", "network", "ifaces", ifc}, page.target, ifc) entry({"admin", "network", "ifaces", ifc},
page.target, ifc:upper())
end end
end end
) )

View file

@ -31,6 +31,12 @@ luci.model.uci.foreach("network", "interface",
end end
end) end)
luci.model.uci.foreach("network", "alias",
function (section)
iface:value(section[".name"])
s:depends("interface", section[".name"])
end)
s:option(Value, "start", translate("start")).rmempty = true s:option(Value, "start", translate("start")).rmempty = true
s:option(Value, "limit", translate("limit")).rmempty = true s:option(Value, "limit", translate("limit")).rmempty = true

View file

@ -13,13 +13,13 @@ $Id$
]]-- ]]--
m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) m = Map("network", translate("interfaces"), translate("a_n_ifaces1"))
s = m:section(TypedSection, "interface", "") s = m:section(TypedSection, "interface", translate("interfaces"))
function s.filter(section) function s.filter(self, section)
return section ~= "loopback" and (not arg or #arg == 0 or return section ~= "loopback" and
luci.util.contains(arg, section)) (not arg or not arg[1] or arg[1] == section)
end end
if not arg or #arg == 0 then if not arg or not arg[1] then
s.addremove = true s.addremove = true
end end
s:depends("proto", "static") s:depends("proto", "static")
@ -42,6 +42,7 @@ for i,d in ipairs(luci.sys.net.devices()) do
end end
end end
ipaddr = s:option(Value, "ipaddr", translate("ipaddress")) ipaddr = s:option(Value, "ipaddr", translate("ipaddress"))
ipaddr.rmempty = true ipaddr.rmempty = true
ipaddr:depends("proto", "static") ipaddr:depends("proto", "static")
@ -57,13 +58,17 @@ gw = s:option(Value, "gateway", translate("gateway"))
gw:depends("proto", "static") gw:depends("proto", "static")
gw.rmempty = true gw.rmempty = true
bcast = s:option(Value, "bcast", translate("broadcast"))
bcast:depends("proto", "static")
bcast.optional = true
ip6addr = s:option(Value, "ip6addr", translate("ip6address"), translate("cidr6")) ip6addr = s:option(Value, "ip6addr", translate("ip6address"), translate("cidr6"))
ip6addr.rmempty = true ip6addr.optional = true
ip6addr:depends("proto", "static") ip6addr:depends("proto", "static")
ip6gw = s:option(Value, "ip6gw", translate("gateway6")) ip6gw = s:option(Value, "ip6gw", translate("gateway6"))
ip6gw:depends("proto", "static") ip6gw:depends("proto", "static")
ip6gw.rmempty = true ip6gw.optional = true
dns = s:option(Value, "dns", translate("dnsserver")) dns = s:option(Value, "dns", translate("dnsserver"))
dns:depends("proto", "static") dns:depends("proto", "static")
@ -76,4 +81,51 @@ mtu.isinteger = true
mac = s:option(Value, "macaddr", translate("macaddress")) mac = s:option(Value, "macaddr", translate("macaddress"))
mac.optional = true mac.optional = true
s2 = m:section(TypedSection, "alias", translate("aliases"))
s2.addremove = true
if arg and arg[1] and luci.model.uci.get("network", arg[1]) then
s2:depends("interface", arg[1])
s2.defaults.interface = arg[1]
else
parent = s2:option(ListValue, "interface", translate("interface"))
luci.model.uci.foreach("network", "interface",
function (section)
if section[".name"] ~= "loopback" then
parent:value(section[".name"])
end
end
)
end
s2.defaults.proto = "static"
ipaddr = s2:option(Value, "ipaddr", translate("ipaddress"))
ipaddr.rmempty = true
nm = s2:option(Value, "netmask", translate("netmask"))
nm.rmempty = true
nm:value("255.255.255.0")
nm:value("255.255.0.0")
nm:value("255.0.0.0")
gw = s2:option(Value, "gateway", translate("gateway"))
gw.rmempty = true
bcast = s2:option(Value, "bcast", translate("broadcast"))
bcast.optional = true
ip6addr = s2:option(Value, "ip6addr", translate("ip6address"), translate("cidr6"))
ip6addr.optional = true
ip6gw = s2:option(Value, "ip6gw", translate("gateway6"))
ip6gw.optional = true
dns = s2:option(Value, "dns", translate("dnsserver"))
dns.optional = true
return m return m