]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/test/page2.lua
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / 3rdparty / civetweb / test / page2.lua
CommitLineData
1e59de90
TL
1mg.write("HTTP/1.0 200 OK\r\n")\r
2mg.write("Content-Type: text/html\r\n")\r
3mg.write("\r\n")\r
4mg.write([[<html>\r
5<head>\r
6<title>CivetWeb Lua test page2</title>\r
7<style>\r
8table, th, td {\r
9 border: 1px solid black;\r
10}\r
11</style>\r
12</head>\r
13<body>\r
14<p>This is Lua script example 2, served by the\r
15<a href="https://github.com/civetweb/civetweb">CivetWeb web server</a>,\r
16version ]] .. mg.version .. [[.\r
17</p><p>\r
18The following features are available:\r
19<ul>\r
20]])\r
21\r
22demo_data_for_xml = {}\r
23demo_data_for_json = {}\r
24\r
25function print_if_available(tab, name)\r
26 if tab then\r
27 mg.write("<li>" .. name .. " available</li>\n")\r
28 if type(tab)=="table" then\r
29 demo_data_for_xml[name] = {}\r
30 demo_data_for_xml[name][0] = name\r
31 demo_data_for_json[name] = {}\r
32 for nname,nval in pairs(tab) do\r
33 demo_data_for_xml[name][nname] = type(nval)\r
34 demo_data_for_json[name][nname] = type(nval)\r
35 end\r
36 else\r
37 demo_data_for_xml[name] = type(tab)\r
38 demo_data_for_json[name] = type(tab)\r
39 end\r
40 else\r
41 mg.write("<li>" .. name .. " not available</li>\n")\r
42 end\r
43end\r
44\r
45function recurse(tab, excl)\r
46 excl = excl or {}\r
47 mg.write("<ul>\n")\r
48 for k,v in pairs(tab) do\r
49 if type(v) == "table" then\r
50 mg.write("<li>" .. tostring(k) .. ":</li>\n")\r
51 if excl[v] then\r
52 -- cyclic\r
53 else\r
54 excl[v] = true\r
55 recurse(v, excl)\r
56 excl[v] = false\r
57 end\r
58 else\r
59 mg.write("<li>" .. tostring(k) .. " = " .. tostring(v) .. "</li>\n")\r
60 end\r
61 end\r
62 mg.write("</ul>\n")\r
63end\r
64\r
65-- Print Lua version and available libraries\r
66mg.write("<li>" .. _VERSION .. " with the following standard libraries</li>\n")\r
67mg.write("<ul>\n")\r
68libs = {"string", "math", "table", "io", "os", "bit32", "utf8", "package", "coroutine", "debug"};\r
69for _,n in ipairs(libs) do\r
70 print_if_available(_G[n], n);\r
71end\r
72mg.write("</ul>\n")\r
73print_if_available(sqlite3, "SQLite3 binding (sqlite3)")\r
74print_if_available(lfs, "LuaFileSystem (lfs)")\r
75print_if_available(json, "JSON binding (json)")\r
76print_if_available(xml, "LuaXML (xml)")\r
77print_if_available(shared, "Lua shared data (shared)")\r
78\r
79\r
80--recurse(_G)\r
81\r
82-- Print mg library\r
83libname = "mg"\r
84print_if_available(_G[libname], libname .. " library")\r
85recurse(_G[libname])\r
86\r
87-- Print connect function\r
88print_if_available(connect, "connect function")\r
89\r
90-- Get all server options\r
91mg.write("<li>server options</li>\n")\r
92recurse(mg.get_option())\r
93\r
94-- Print some data from random generators\r
95if mg.uuid then\r
96 mg.write("<li>random data</li>\n")\r
97 local t = {GUID = mg.uuid(), random = mg.random()}\r
98 recurse(t)\r
99end\r
100\r
101-- Print loaded packages known to Lua\r
102if package and (type(package.loaded)=="table") then\r
103 if #package.loaded > 0 then\r
104 mg.write("<li>loaded packages</li>\n")\r
105 recurse(package.loaded)\r
106 else\r
107 mg.write("<li>loaded packages: none</li>\n")\r
108 end\r
109end\r
110\r
111-- Load path\r
112mg.write("<li>Package search path: " .. package.path .. "</li>\n");\r
113\r
114-- End of list\r
115mg.write("</ul></p>\n");\r
116\r
117\r
118-- Current date/time\r
119mg.write("\n<hr/>\n")\r
120mg.write("<p>Today is " .. os.date("%A") .. "</p>\n");\r
121\r
122-- Request content\r
123mg.write("\n<hr/>\n")\r
124l = mg.request_info.content_length\r
125if l then\r
126 mg.write("<p>Content-Length = "..l..":<br>\n<pre>\n")\r
127 mg.write(mg.read())\r
128 mg.write("\n</pre>\n</p>\n")\r
129else\r
130 mg.write("<p>no request content available for " .. mg.request_info.request_method .. " method</p>\n")\r
131end\r
132\r
133-- Directory listing\r
134mg.write("\n<hr/>\n")\r
135mg.write("<p>\n");\r
136if not lfs then\r
137 mg.write("lfs not available\n")\r
138else\r
139 mg.write("Files in " .. lfs.currentdir())\r
140 mg.write("\n<ul>\n")\r
141 local cnt = 0\r
142 for f in lfs.dir(".") do\r
143 cnt = cnt + 1\r
144 if (cnt < 6) then\r
145 local mime = mg.get_mime_type(f)\r
146 mg.write("<li>" .. f .. " (" .. mime .. ")</li>\n")\r
147 local at = lfs.attributes(f);\r
148 recurse(at)\r
149 end\r
150 end\r
151 mg.write("</ul>\n")\r
152 mg.write(string.format("<ul>%u files total</ul>\n", cnt))\r
153end\r
154mg.write("</p>\n")\r
155\r
156\r
157function htmlEsc(txt)\r
158 s = txt:gsub("%&", "&amp;")\r
159 s = s:gsub("%<", "&lt;")\r
160 s = s:gsub("%>", "&gt;")\r
161 return (s)\r
162end\r
163\r
164\r
165function printTable(tab, indent)\r
166 indent = indent or 0\r
167 for k,v in pairs(tab) do\r
168 if (type(v)=="table") then\r
169 mg.write(string.rep(" ", indent) .. tostring(k) .. ":\n")\r
170 printTable(v, indent + 1)\r
171 else\r
172 mg.write(string.rep(" ", indent) .. tostring(k) .. "\t" .. tostring(v) .. "\n")\r
173 end\r
174 end\r
175end\r
176\r
177\r
178-- xml test\r
179if (xml) then\r
180mg.write("\n<hr/>\n")\r
181mg.write("<p>xml2lua:<br>\n<pre>\n");\r
182xmlstr = [[<obj attr="a"><sub1 attr="suba">sub1val</sub1><sub2 attr="suba2" /><sub3></sub3><sub4><subsub>subsubval</subsub></sub4></obj>]]\r
183xmlev = xml.eval(xmlstr)\r
184mg.write(htmlEsc(xmlstr))\r
185mg.write("\n-->\n")\r
186mg.write(type(xmlev) .. ":\n")\r
187mg.write(printTable(xmlev, 1))\r
188mg.write("</pre>\n</p>\n")\r
189\r
190mg.write("<p>lua2xml:<br>\n<pre>\n");\r
191mg.write(htmlEsc(xml.str(xmlev, 1, "xml")))\r
192mg.write("</pre>\n</p>\n")\r
193\r
194mg.write("<p>lua2xml:<br>\n<pre>\n");\r
195mg.write(htmlEsc(xml.str(demo_data_for_xml, 1, "xml")))\r
196mg.write("</pre>\n</p>\n")\r
197end\r
198\r
199\r
200-- json test\r
201current_script_path = mg.script_name:match("(.*[%/%\\]).*%.lua")\r
202script_search_path = current_script_path .. "?.lua"\r
203package.path = script_search_path .. ";" .. package.path\r
204json = require "json"\r
205mg.write("\n<hr/>\n")\r
206mg.write("<p>json2lua:<br>\n<pre>\n");\r
207-- JSON example from https://en.wikipedia.org/wiki/JSON#Example\r
208jsonstr = [[{\r
209 "firstName": "John",\r
210 "lastName": "Smith",\r
211 "isAlive": true,\r
212 "age": 27,\r
213 "address": {\r
214 "streetAddress": "21 2nd Street",\r
215 "city": "New York",\r
216 "state": "NY",\r
217 "postalCode": "10021-3100"\r
218 },\r
219 "phoneNumbers": [\r
220 {\r
221 "type": "home",\r
222 "number": "212 555-1234"\r
223 },\r
224 {\r
225 "type": "office",\r
226 "number": "646 555-4567"\r
227 },\r
228 {\r
229 "type": "mobile",\r
230 "number": "123 456-7890"\r
231 }\r
232 ],\r
233 "children": [],\r
234 "spouse": null\r
235}]]\r
236jsonev = json.decode(jsonstr)\r
237mg.write(htmlEsc(jsonstr))\r
238mg.write("\n-->\n")\r
239mg.write(type(jsonev) .. ":\n")\r
240mg.write(printTable(jsonev, 1))\r
241mg.write("</pre>\n</p>\n")\r
242\r
243mg.write("<p>lua2json:<br>\n<pre>\n");\r
244mg.write(htmlEsc(json.encode(jsonev)))\r
245mg.write("</pre>\n</p>\n")\r
246\r
247mg.write("<p>lua2json:<br>\n<pre>\n");\r
248mg.write(htmlEsc(json.encode(demo_data_for_json)))\r
249mg.write("</pre>\n</p>\n")\r
250\r
251\r
252if mg.request_info.query_string then\r
253 qtab = mg.split_form_data(mg.request_info.query_string)\r
254 mg.write("<p>\nSplit form test:<br/>\n");\r
255 mg.write("<table>\n");\r
256 mg.write("<tr>\n");\r
257 mg.write("<th>#</th>\n");\r
258 mg.write("<th>name</th>\n");\r
259 mg.write("<th>value</th>\n");\r
260 mg.write("</tr>\n");\r
261 for n,t in pairs(qtab) do\r
262 mg.write("<tr>\n");\r
263 mg.write("<td>" .. n .. "</td>\n");\r
264 mg.write("<td>" .. tostring(t.name) .. "</td>\n");\r
265 mg.write("<td>" .. tostring(t.value) .. "</td>\n");\r
266 mg.write("</tr>\n");\r
267 end\r
268 mg.write("</table>\n");\r
269 mg.write("</p>\n");\r
270end\r
271\r
272\r
273-- Test timer from Lua background script\r
274mg.write("\n<hr/>\n")\r
275\r
276mg.write("<p>\nLua shared.timer ");\r
277if (shared and shared.timer) then\r
278 mg.write(tostring(shared.timer))\r
279 mg.write([[ <button onClick="window.location.reload();">Refresh Page</button>]])\r
280else\r
281 mg.write("not available")\r
282end\r
283mg.write("\n</p>\n")\r
284\r
285-- Next section ...\r
286mg.write("\n<hr/>\n")\r
287\r
288mg.write([[\r
289</body></html>\r
290]])\r