]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/test/page_keep_alive_chunked.lua
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / 3rdparty / civetweb / test / page_keep_alive_chunked.lua
diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/test/page_keep_alive_chunked.lua b/ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/test/page_keep_alive_chunked.lua
new file mode 100644 (file)
index 0000000..28ac7d1
--- /dev/null
@@ -0,0 +1,66 @@
+-- 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 headers
+mg.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>")
+    return
+end
+if 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)
+    return
+end
+
+-- 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 chunk
+function send(str)
+    local len = string.len(str)
+    mg.write(string.format("%x\r\n", len))
+    mg.write(str.."\r\n")
+end
+
+-- send the chunks
+send("<html>")
+send("<head><title>Civetweb Lua script chunked transfer test page</title></head>")
+send("<body>\n")
+
+fileCnt = 0
+if 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")
+end
+
+send(fileCnt .. " entries (" .. now .. " GMT)\n")
+send("</body>")
+send("</html>")
+
+-- end
+send("")