--Load the socket library require("socket") require("copas") --What port do we work out, should be 80 really PORT = 80 --Webroot dir name ROOTPATH = "htdocs" --Define some vars connections = 0 function printparadiso(text) print("Paradiso: "..text) end function ClientHandler(client) client = copas.wrap(client) connections = connections + 1 local request = client:receive("*l") local _,start = string.find(request, 'GET ') local final,_ = string.find(request, ' HTTP', start) local path = string.sub(request, start+1, final-1); client:send("HTTP/1.x 200 OK\r\n") client:send("Server: Paradiso\r\n") client:send("Content-Type: text/html\r\n") client:send("Connection: close\r\n\r\n") if path == "/" or path == "" then local file = io.open(ROOTPATH.."/index.html", "r") if file ~= nil then local response = file:read("*a") client:send(response) file:close() else local file = io.open("errors/404.html", "r") local response = file:read("*a") client:send(response.."1"..path) file:close() end elseif string.find(path,".") == nil then if string.sub(path,string.len(path)) == "/" then local file = io.open(ROOTPATH.."/"..path.."index.html", "r") else local file = io.open(ROOTPATH.."/"..path.."/index.html", "r") end if file ~= nil then local response = file:read("*a") client:send(response) file:close() else local file = io.open("errors/404.html", "r") local response = file:read("*a") client:send(response.."2"..path) file:close() end else local file = io.open(ROOTPATH.."/"..path, "r") if file ~= nil then local response = file:read("*a") client:send(response) file:close() else local file = io.open("errors/404.html", "r") local response = file:read("*a") client:send(response.."3"..path) file:close() end end connections = connections - 1 end copas.addserver(socket.bind("*", PORT), ClientHandler) copas.loop()