summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xapplications/luci-splash/htdocs/cgi-bin/luci-splash4
-rw-r--r--applications/luci-splash/htdocs/luci/splash/index.html (renamed from applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html)6
-rw-r--r--applications/luci-splash/luasrc/controller/splash/splash.lua25
-rwxr-xr-xapplications/luci-splash/root/etc/init.d/luci_splash4
-rw-r--r--applications/luci-splash/root/etc/luci_splash_httpd.conf1
-rwxr-xr-xapplications/luci-splash/root/usr/bin/luci-splashd20
-rwxr-xr-xapplications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi53
-rw-r--r--contrib/package/luci/Makefile2
-rwxr-xr-xlibs/sgi-cgi/htdocs/cgi-bin/index.cgi3
-rw-r--r--libs/sgi-cgi/htdocs/index.html6
-rw-r--r--libs/web/luasrc/dispatcher.lua7
11 files changed, 42 insertions, 89 deletions
diff --git a/applications/luci-splash/htdocs/cgi-bin/luci-splash b/applications/luci-splash/htdocs/cgi-bin/luci-splash
deleted file mode 100755
index c75593fbe1..0000000000
--- a/applications/luci-splash/htdocs/cgi-bin/luci-splash
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-echo "Status: 302 Found"
-echo "Location: /cgi-bin/luci/splash/splash$PATH_INFO"
-echo \ No newline at end of file
diff --git a/applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html b/applications/luci-splash/htdocs/luci/splash/index.html
index 39ba558dfb..486409a2ef 100644
--- a/applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html
+++ b/applications/luci-splash/htdocs/luci/splash/index.html
@@ -2,9 +2,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
-<meta http-equiv="refresh" content="0; URL=/cgi-bin/index.cgi" />
+<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/splash" />
</head>
<body style="background-color: black">
-<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">LuCI - Lua Configuration Interface</a>
+<a style="color: white; text-decoration: none" href="/cgi-bin/luci/splash">LuCI - Lua Configuration Interface</a>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/applications/luci-splash/luasrc/controller/splash/splash.lua b/applications/luci-splash/luasrc/controller/splash/splash.lua
index 617e0f877c..6512ee5b19 100644
--- a/applications/luci-splash/luasrc/controller/splash/splash.lua
+++ b/applications/luci-splash/luasrc/controller/splash/splash.lua
@@ -1,16 +1,23 @@
module("luci.controller.splash.splash", package.seeall)
function index()
- local page = node("admin", "services", "splash")
- page.target = cbi("splash/splash")
- page.title = "Client-Splash"
+ entry({"admin", "services", "splash"}, cbi("splash/splash"), "Client-Splash")
+ node("splash").target = call("action_dispatch")
node("splash", "splash", "activate").target = call("action_activate")
- node("splash", "splash", "allowed").target = call("action_allowed")
- node("splash", "splash", "unknown").target = call("action_unknown")
node("splash", "splash", "splash").target = template("splash_splash/splash")
end
+function action_dispatch()
+ local mac = luci.sys.net.ip4mac(luci.http.getenv("REMOTE_ADDR"))
+ local status = luci.sys.execl("luci-splash status "..mac)[1]
+ if status == "whitelisted" or status == "lease" then
+ luci.http.redirect(luci.dispatcher.build_url())
+ else
+ luci.http.redirect(luci.dispatcher.build_url("splash", "splash", "splash"))
+ end
+end
+
function action_activate()
local mac = luci.sys.net.ip4mac(luci.http.getenv("REMOTE_ADDR"))
if mac and luci.http.formvalue("accept") then
@@ -19,12 +26,4 @@ function action_activate()
else
luci.http.redirect(luci.dispatcher.build_url())
end
-end
-
-function action_allowed()
- luci.http.redirect(luci.dispatcher.build_url())
-end
-
-function action_unknown()
- luci.http.redirect(luci.dispatcher.build_url())
end \ No newline at end of file
diff --git a/applications/luci-splash/root/etc/init.d/luci_splash b/applications/luci-splash/root/etc/init.d/luci_splash
index 20f7865fd4..eb006e9b0d 100755
--- a/applications/luci-splash/root/etc/init.d/luci_splash
+++ b/applications/luci-splash/root/etc/init.d/luci_splash
@@ -62,8 +62,8 @@ start() {
iptables -t nat -A luci_splash_leases -j DROP
### Start the splash httpd
- httpd -c /etc/luci_splash_httpd.conf -p 8082 -h /usr/lib/luci-splash/htdocs
-
+ start-stop-daemon -S -b -q -x /usr/bin/luci-splashd
+
### Hook in the chain
iptables -t nat -A prerouting_rule -j luci_splash
}
diff --git a/applications/luci-splash/root/etc/luci_splash_httpd.conf b/applications/luci-splash/root/etc/luci_splash_httpd.conf
deleted file mode 100644
index 6007e80dba..0000000000
--- a/applications/luci-splash/root/etc/luci_splash_httpd.conf
+++ /dev/null
@@ -1 +0,0 @@
-E404:index.html \ No newline at end of file
diff --git a/applications/luci-splash/root/usr/bin/luci-splashd b/applications/luci-splash/root/usr/bin/luci-splashd
new file mode 100755
index 0000000000..33391cc5bb
--- /dev/null
+++ b/applications/luci-splash/root/usr/bin/luci-splashd
@@ -0,0 +1,20 @@
+#!/usr/bin/lua
+require("socket")
+
+local server = socket.bind("0.0.0.0", arg[1] or 8082)
+server:settimeout(0, "t")
+
+while true do
+ local client = server:accept()
+
+ if client then
+ client:settimeout(1)
+ local srv = client:getsockname()
+ client:receive()
+ client:send("HTTP/1.0 302 Found\r\nLocation: http://" .. srv ..
+ (arg[2] or "/luci/splash") .. "\r\n\r\n")
+ client:close()
+ else
+ socket.sleep(0.1)
+ end
+end
diff --git a/applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi b/applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi
deleted file mode 100755
index 29679a21cf..0000000000
--- a/applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/lua
-
-require("luci.sys")
-require("luci.model.uci")
-
-luci.model.uci.set_savedir(luci.model.uci.savedir_state)
-
-local srv
-local net
-local ip = os.getenv("REMOTE_ADDR")
-luci.model.uci.foreach("network", "interface",
- function (section)
- if section.ipaddr then
- local p = luci.sys.net.mask4prefix(section.netmask)
- if luci.sys.net.belongs(ip, section.ipaddr, p) then
- net = section[".name"]
- srv = section.ipaddr
- return
- end
- end
- end)
-
-local stat = false
-luci.model.uci.foreach("luci_splash", "iface",
- function (section)
- if section.network == net then
- stat = true
- end
- end)
-
-if not srv then
- print("Content-Type: text/plain\n")
- print("Unable to detect network settings!")
-elseif not stat then
- print("Status: 302 Found")
- print("Location: http://" .. srv)
-else
- local action = "splash"
-
- local mac = luci.sys.net.ip4mac(ip)
- if not mac then
- action = "unknown"
- end
-
- local status = luci.sys.execl("luci-splash status "..mac)[1]
-
- if status == "whitelisted" or status == "lease" then
- action = "allowed"
- end
-
- print("Status: 302 Found")
- print("Location: http://" .. srv .. "/cgi-bin/luci-splash/" .. action)
-end
diff --git a/contrib/package/luci/Makefile b/contrib/package/luci/Makefile
index 54cb7fbf42..68bcc99003 100644
--- a/contrib/package/luci/Makefile
+++ b/contrib/package/luci/Makefile
@@ -334,7 +334,7 @@ endef
define Package/luci-app-splash
$(call Package/luci/fftemplate)
- DEPENDS+=+iptables-mod-nat +iptables-mod-ipopt
+ DEPENDS+=+luasocket +iptables-mod-nat +iptables-mod-ipopt
TITLE:=Freifunk DHCP-Splash application
endef
diff --git a/libs/sgi-cgi/htdocs/cgi-bin/index.cgi b/libs/sgi-cgi/htdocs/cgi-bin/index.cgi
deleted file mode 100755
index fc1148de62..0000000000
--- a/libs/sgi-cgi/htdocs/cgi-bin/index.cgi
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/lua
-print("Status: 302 Found")
-print("Location: luci\n")
diff --git a/libs/sgi-cgi/htdocs/index.html b/libs/sgi-cgi/htdocs/index.html
index 39ba558dfb..0a7238b556 100644
--- a/libs/sgi-cgi/htdocs/index.html
+++ b/libs/sgi-cgi/htdocs/index.html
@@ -2,9 +2,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
-<meta http-equiv="refresh" content="0; URL=/cgi-bin/index.cgi" />
+<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci" />
</head>
<body style="background-color: black">
-<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">LuCI - Lua Configuration Interface</a>
+<a style="color: white; text-decoration: none" href="/cgi-bin/luci">LuCI - Lua Configuration Interface</a>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 426dd66bd0..7c28f6a78e 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -314,7 +314,7 @@ end
-- Shortcut for creating a dispatching node
function entry(path, target, title, order)
- local c = node(path)
+ local c = node(unpack(path))
c.target = target
c.title = title
@@ -328,11 +328,6 @@ end
function node(...)
local c = context.tree
arg.n = nil
- if arg[1] then
- if type(arg[1]) == "table" then
- arg = arg[1]
- end
- end
for k,v in ipairs(arg) do
if not c.nodes[v] then