#!/usr/bin/lua
-local nixio = require "nixio"
+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 = client:getsockname()
+ local srv = remapipv6(client:getsockname())
client:read(1024)
- client:writeall("HTTP/1.0 302 Found\r\nLocation: http://" .. srv ..
- (arg[2] or "/luci/splash") .. "\r\n\r\n")
+ 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