modules/admin-full: Added support for interface aliases
This commit is contained in:
parent
e72a526984
commit
fbae92e522
8 changed files with 97 additions and 20 deletions
|
@ -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"
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -5,6 +5,7 @@ administration = "Administration"
|
||||||
apply = "Anwenden"
|
apply = "Anwenden"
|
||||||
|
|
||||||
basicsettings = "Grundeinstellungen"
|
basicsettings = "Grundeinstellungen"
|
||||||
|
broadcast = "Broadcast"
|
||||||
|
|
||||||
changes = "Änderungen"
|
changes = "Änderungen"
|
||||||
channel = "Kanal"
|
channel = "Kanal"
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
return m
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in a new issue