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.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.")) 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_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)")) 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:option(Value, "mac", translate ("MAC Address"))
s = m:section(TypedSection, "subnet", translate("Allowed hosts/subnets"), 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.template = "cbi/tblsection"
s.addremove = true s.addremove = true

View file

@ -270,6 +270,14 @@ start() {
config_foreach iface_add iface config_foreach iface_add iface
config_foreach subnet_add subnet 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 ### Find active mac addresses
MACS="" 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 input = utl.split(sys.exec('/usr/sbin/tc filter show dev ' .. device .. ' parent ' .. parent) or {})
local tbl = {} local tbl = {}
local handle local handle
for k, v in pairs(input) do for k, v in pairs(input) do
handle = v:match('filter protocol ip pref %d+ u32 fh (%d*:%d*:%d*) order') handle = v:match('filter protocol ip pref %d+ u32 fh (%d*:%d*:%d*) order')
if handle then if handle then
local mac1, mac2, mac3, mac4, mac5, mac6 local mac, mac1, mac2, mac3, mac4, mac5, mac6
if direction == 'src' then 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') 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') 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 end
end end
if tbl[mac:lower()] then if tbl[mac] then
handle = tbl[mac:lower()] handle = tbl[mac]
end end
return handle return handle
end end