summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-splash
diff options
context:
space:
mode:
authorManuel Munz <freifunk@somakoma.de>2013-08-18 20:37:35 +0000
committerManuel Munz <freifunk@somakoma.de>2013-08-18 20:37:35 +0000
commit15088f5dd4f53cb25e71a871dd4ed25440ec7eb5 (patch)
tree87e29264d4e21b200a44db35b0646d3c5f842a75 /applications/luci-splash
parent54da15fc7f96af3a8674eef81403dc014a5f39a7 (diff)
applications/luci-splash: Always allow clients to connect to the community homepage, make description of allowed hosts/subnets more clear, #595
Diffstat (limited to 'applications/luci-splash')
-rw-r--r--applications/luci-splash/luasrc/model/cbi/splash/splash.lua4
-rwxr-xr-xapplications/luci-splash/root/etc/init.d/luci_splash8
-rwxr-xr-xapplications/luci-splash/root/usr/sbin/luci-splash8
3 files changed, 15 insertions, 5 deletions
diff --git a/applications/luci-splash/luasrc/model/cbi/splash/splash.lua b/applications/luci-splash/luasrc/model/cbi/splash/splash.lua
index 47d7695d2..206ef7053 100644
--- a/applications/luci-splash/luasrc/model/cbi/splash/splash.lua
+++ b/applications/luci-splash/luasrc/model/cbi/splash/splash.lua
@@ -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
diff --git a/applications/luci-splash/root/etc/init.d/luci_splash b/applications/luci-splash/root/etc/init.d/luci_splash
index 360773218..4f36252e6 100755
--- a/applications/luci-splash/root/etc/init.d/luci_splash
+++ b/applications/luci-splash/root/etc/init.d/luci_splash
@@ -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=""
diff --git a/applications/luci-splash/root/usr/sbin/luci-splash b/applications/luci-splash/root/usr/sbin/luci-splash
index e1f8d4162..a34eecae9 100755
--- a/applications/luci-splash/root/usr/sbin/luci-splash
+++ b/applications/luci-splash/root/usr/sbin/luci-splash
@@ -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