summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-splash/luasrc/model
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-splash/luasrc/model')
-rw-r--r--applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua87
-rw-r--r--applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua66
2 files changed, 153 insertions, 0 deletions
diff --git a/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua b/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua
new file mode 100644
index 000000000..206ef7053
--- /dev/null
+++ b/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua
@@ -0,0 +1,87 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+require("luci.model.uci")
+
+m = Map("luci_splash", translate("Client-Splash"), translate("Client-Splash is a hotspot authentification system for wireless mesh networks."))
+
+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)"))
+
+s:option(DummyValue, "_tmp", "",
+ translate("Bandwidth limit for clients is only activated when both up- and download limit are set. " ..
+ "Use a value of 0 here to completely disable this limitation. Whitelisted clients are not limited."))
+
+s = m:section(TypedSection, "iface", translate("Interfaces"), translate("Interfaces that are used for Splash."))
+
+s.template = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+
+local uci = luci.model.uci.cursor()
+
+zone = s:option(ListValue, "zone", translate("Firewall zone"),
+ translate("Splash rules are integrated in this firewall zone"))
+
+uci:foreach("firewall", "zone",
+ function (section)
+ zone:value(section.name)
+ end)
+
+iface = s:option(ListValue, "network", translate("Network"),
+ translate("Intercept client traffic on this Interface"))
+
+uci:foreach("network", "interface",
+ function (section)
+ if section[".name"] ~= "loopback" then
+ iface:value(section[".name"])
+ end
+ end)
+
+uci:foreach("network", "alias",
+ function (section)
+ iface:value(section[".name"])
+ end)
+
+
+s = m:section(TypedSection, "whitelist", translate("Whitelist"),
+ translate("MAC addresses of whitelisted clients. These do not need to accept the splash and are not bandwidth limited."))
+
+s.template = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+s:option(Value, "mac", translate ("MAC Address"))
+
+
+s = m:section(TypedSection, "blacklist", translate("Blacklist"),
+ translate("MAC addresses in this list are blocked."))
+
+s.template = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+s:option(Value, "mac", translate ("MAC Address"))
+
+s = m:section(TypedSection, "subnet", translate("Allowed hosts/subnets"),
+ translate("Destination hosts and networks that are excluded from splashing, i.e. they are always allowed."))
+
+s.template = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+s:option(Value, "ipaddr", translate("IP Address"))
+s:option(Value, "netmask", translate("Netmask"), translate("optional when using host addresses")).rmempty = true
+
+return m
diff --git a/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua b/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua
new file mode 100644
index 000000000..00c5aba94
--- /dev/null
+++ b/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua
@@ -0,0 +1,66 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
+Copyright 2010 Manuel Munz <freifunk@somakoma.de>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local fs = require "nixio.fs"
+
+local splashtextfile = "/usr/lib/luci-splash/splashtext.html"
+local splashtextinclude = "/usr/lib/luci-splash/splashtextinclude.html"
+
+
+f = SimpleForm("splashtext", translate("Edit the complete splash text"),
+ translate("You can enter your own text that is displayed to clients here.<br />" ..
+ "It is possible to use the following markers: " ..
+ "###COMMUNITY###, ###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###."))
+
+t = f:field(TextValue, "text")
+t.rmempty = true
+t.rows = 30
+function t.cfgvalue()
+ return fs.readfile(splashtextfile) or ""
+end
+
+function f.handle(self, state, data)
+ if state == FORM_VALID then
+ if data.text then
+ fs.writefile(splashtextfile, data.text:gsub("\r\n", "\n"))
+ else
+ fs.unlink(splashtextfile)
+ end
+ end
+ return true
+end
+
+g = SimpleForm("splashtextinclude", translate("Include your own text in the default splash"),
+ translate("As an alternative to editing the complete splash text you can also just include some custom text in the default splash page by entering it here."))
+
+t = g:field(TextValue, "text")
+t.rmempty = true
+t.rows = 30
+function t.cfgvalue()
+ return fs.readfile(splashtextinclude) or ""
+end
+
+function g.handle(self, state, data)
+ if state == FORM_VALID then
+ if data.text then
+ fs.writefile(splashtextinclude, data.text:gsub("\r\n", "\n"))
+ else
+ fs.unlink(splashtextinclude)
+ end
+ end
+ return true
+end
+
+
+return f, g