summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-splash/root/usr/bin/luci-splashd
blob: a4f11c3bf2cba6f2b80e0d5196b93725f1a28011 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/lua

local nixio = require "nixio", require "nixio.util"
local server = nixio.bind(nil, arg[1] or 8082)
local stat = server:listen(32)

local function remapipv6(adr)
	local map = "::ffff:"
	if adr:sub(1, #map) == map then
		return adr:sub(#map+1)
	else
		return adr
	end 
end

while stat do
	local client = server:accept()
	
	if client then
		client:setopt("socket", "rcvtimeo", 1)
		client:setopt("socket", "sndtimeo", 1)
		local srv = remapipv6(client:getsockname())

		client:read(1024)
		client:writeall("HTTP/1.1 302 Found\r\nLocation: http://" .. srv ..
		 (arg[2] or "/luci/splash") .. "\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")
		client:close() 
	end
end