Fix LuCI-Frickel-Splashd
authorSteven Barth <steven@midlink.org>
Mon, 25 May 2009 10:31:02 +0000 (10:31 +0000)
committerSteven Barth <steven@midlink.org>
Mon, 25 May 2009 10:31:02 +0000 (10:31 +0000)
applications/luci-splash/root/usr/bin/luci-splashd

index 6152daa524f51810af7e671bd9212a9121c793eb..a4f11c3bf2cba6f2b80e0d5196b93725f1a28011 100755 (executable)
@@ -1,20 +1,29 @@
 #!/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