| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | -- Set keep_alive. The return value specifies if this is possible at all.canKeepAlive = mg.keep_alive(true)now = os.date("!%a, %d %b %Y %H:%M:%S")-- First send the http headersmg.write("HTTP/1.1 200 OK\r\n")mg.write("Content-Type: text/html\r\n")mg.write("Date: " .. now .. " GMT\r\n")mg.write("Cache-Control: no-cache\r\n")mg.write("Last-Modified: " .. now .. " GMT\r\n")if not canKeepAlive then    mg.write("Connection: close\r\n")    mg.write("\r\n")    mg.write("<html><body>Keep alive not possible!</body></html>")    returnendif mg.request_info.http_version ~= "1.1" then    -- wget will use HTTP/1.0 and Connection: keep-alive, so chunked transfer is not possible    mg.write("Connection: close\r\n")    mg.write("\r\n")    mg.write("<html><body>Chunked transfer is only possible for HTTP/1.1 requests!</body></html>")    mg.keep_alive(false)    returnend-- use chunked encoding (http://www.jmarshall.com/easy/http/#http1.1c2)mg.write("Cache-Control: max-age=0, must-revalidate\r\n")--mg.write("Cache-Control: no-cache\r\n")--mg.write("Cache-Control: no-store\r\n")mg.write("Connection: keep-alive\r\n")mg.write("Transfer-Encoding: chunked\r\n")mg.write("\r\n")-- function to send a chunkfunction send(str)    local len = string.len(str)    mg.write(string.format("%x\r\n", len))    mg.write(str.."\r\n")end-- send the chunkssend("<html>")send("<head><title>Civetweb Lua script chunked transfer test page</title></head>")send("<body>\n")fileCnt = 0if lfs then    send("Files in " .. lfs.currentdir())    send('\n<table border="1">\n')    send('<tr><th>name</th><th>type</th><th>size</th></tr>\n')    for f in lfs.dir(".") do        local at = lfs.attributes(f);        if at then          send('<tr><td>' .. f .. '</td><td>' .. at.mode .. '</td><td>' .. at.size .. '</td></tr>\n')        end        fileCnt = fileCnt + 1    end    send("</table>\n")endsend(fileCnt .. " entries (" .. now .. " GMT)\n")send("</body>")send("</html>")-- endsend("")
 |