applications/luci-splash: Always allow clients to connect to the community homepage, make description of allowed hosts/subnets more clear, #595

This commit is contained in:
Manuel Munz 2013-08-18 20:37:35 +00:00
parent 54da15fc7f
commit 15088f5dd4
3 changed files with 15 additions and 5 deletions

View file

@ -16,6 +16,8 @@ s = m:section(NamedSection, "general", "core", translate("General"))
s.addremove = false
s:option(Value, "leasetime", translate("Clearance time"), translate("Clients that have accepted the splash are allowed to use the network for that many hours."))
local redir = s:option(Value, "redirect_url", translate("Redirect target"), translate("Clients are redirected to this page after they have accepted the splash. If this is left empty they are redirected to the page they had requested."))
redir.rmempty = true
s:option(Value, "limit_up", translate("Upload limit"), translate("Clients upload speed is limited to this value (kbyte/s)"))
s:option(Value, "limit_down", translate("Download limit"), translate("Clients download speed is limited to this value (kbyte/s)"))
@ -74,7 +76,7 @@ s.anonymous = true
s:option(Value, "mac", translate ("MAC Address"))
s = m:section(TypedSection, "subnet", translate("Allowed hosts/subnets"),
translate("Hosts and Networks that are listed here are excluded from splashing, i.e. they are always allowed."))
translate("Destination hosts and networks that are excluded from splashing, i.e. they are always allowed."))
s.template = "cbi/tblsection"
s.addremove = true

View file

@ -270,6 +270,14 @@ start() {
config_foreach iface_add iface
config_foreach subnet_add subnet
### Add the community homepage to the list of allowed destination subnets
hp=$(uci -q get freifunk.community.homepage) && {
chp=${hp#http*://}
chp=${chp%%/*}
$IPT -t nat -I luci_splash_prerouting -d "${chp}/32" -j RETURN
$IPT -t filter -I luci_splash_forwarding -d "${chp}/32" -j RETURN
}
### Find active mac addresses
MACS=""

View file

@ -66,14 +66,14 @@ end
function get_filter_handle(parent, direction, device)
function get_filter_handle(parent, direction, device, mac)
local input = utl.split(sys.exec('/usr/sbin/tc filter show dev ' .. device .. ' parent ' .. parent) or {})
local tbl = {}
local handle
for k, v in pairs(input) do
handle = v:match('filter protocol ip pref %d+ u32 fh (%d*:%d*:%d*) order')
if handle then
local mac1, mac2, mac3, mac4, mac5, mac6
local mac, mac1, mac2, mac3, mac4, mac5, mac6
if direction == 'src' then
mac1, mac2, mac3, mac4 = input[k+1]:match('match ([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])/ffffffff')
mac5, mac6 = input[k+2]:match('match ([%a%d][%a%d])([%a%d][%a%d])0000/ffff0000')
@ -87,8 +87,8 @@ function get_filter_handle(parent, direction, device)
end
end
end
if tbl[mac:lower()] then
handle = tbl[mac:lower()]
if tbl[mac] then
handle = tbl[mac]
end
return handle
end