-- This test checks the Lua functions: -- get_var, get_cookie, md5, url_encode now = os.time() cookie_name = "civetweb-test-page4" if mg.request_info.http_headers.Cookie then cookie_value = tonumber(mg.get_cookie(mg.request_info.http_headers.Cookie, cookie_name)) end mg.write("HTTP/1.0 200 OK\r\n") mg.write("Connection: close\r\n") mg.write("Content-Type: text/html; charset=utf-8\r\n") mg.write("Cache-Control: max-age=0, must-revalidate\r\n") if not cookie_value then mg.write("Set-Cookie: " .. cookie_name .. "=" .. tostring(now) .. "\r\n") end mg.write("\r\n") mg.write("\r\n
Test of Civetweb Lua Functions:
\r\n"); mg.write("\r\n"); -- get_var of query_string mg.write("get_var test (check query string):\r\n") if not mg.request_info.query_string then mg.write(" No query string. You may try this example.\r\n") else for _,var in ipairs({'a','b','c','d'}) do value = mg.get_var(mg.request_info.query_string, var); if value then mg.write(" Variable " .. var .. ": value " .. value .. "\r\n"); else mg.write(" Variable " .. var .. " not set\r\n"); end end end mg.write("\r\n") -- md5 mg.write("MD5 test:\r\n") test_string = "abcd\0efgh" mg.write(" String with embedded 0, length " .. string.len(test_string)) test_md5 = mg.md5(test_string) mg.write(", MD5 " .. test_md5 .. "\r\n") if mg.md5("") == "d41d8cd98f00b204e9800998ecf8427e" then mg.write(" MD5 of empty string OK\r\n") else mg.write(" Error: MD5 of empty string NOT OK\r\n") end if mg.md5("The quick brown fox jumps over the lazy dog.") == "e4d909c290d0fb1ca068ffaddf22cbd0" then mg.write(" MD5 of test string OK\r\n") else mg.write(" Error: MD5 of test string NOT OK\r\n") end mg.write("\r\n") -- get_cookie mg.write("Cookie test:\r\n") if not cookie_value then mg.write(" Cookie not set yet. Please reload the page.\r\n") else mg.write(" Cookie set to " .. cookie_value .. "\r\n") mg.write(" You visited this page " .. os.difftime(now, cookie_value) .. " seconds before.\r\n") end mg.write("\r\n") -- test 'require' of other Lua scripts mg.write("require test\r\n") script_path = mg.script_name:match("(.*)page%d*.lua") if type(script_path)=='string' then package.path = script_path .. "?.lua;" .. package.path mg.write(" Lua search path: " .. package.path .. "\r\n") require "html_esc" require "require_test" if htmlEscape then for i=0,15 do mg.write(" ") for j=0,15 do mg.write(tostring(htmlEscape[16*i+j])) end mg.write("\r\n") end else mg.write(" 'require' test failed (htmlEscape)\r\n") end if HugeText then mg.write("\r\n") local ht = HugeText(os.date("%a %b. %d")) for i=1,#ht do mg.write(" " .. ht[i] .. "\r\n") end else mg.write(" 'require' test failed (HugeText)\r\n") end else mg.write(" name match failed\r\n") end mg.write("\r\n") -- test get_response_code_text mg.write("HTTP helper methods test:\r\n") if (htmlEscape("") == "<a b & c d>") then mg.write(" htmlEscape test OK\r\n") else mg.write(" Error: htmlEscape test NOT OK\r\n") end if (mg.get_response_code_text(200) == "OK") then mg.write(" get_response_code_text test OK\r\n") else mg.write(" Error: get_response_code_text test NOT OK\r\n") end mg.write("\r\n") -- url_encode mg.write("URL encode/decode test:\r\n") if mg.url_encode("") == "" then mg.write(" url_encode of empty string OK\r\n") else mg.write(" Error: url_encode of empty string NOT OK\r\n") end raw_string = [[ !"#$%&'()*+,-./0123456789:;<=>?@]] mg.write(" original string: " .. htmlEscape(raw_string) .. "\r\n") mg_string = mg.url_encode(raw_string):upper() ref_string = "%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40" -- from http://www.w3schools.com/tags/ref_urlencode.asp mg.write(" mg-url: " .. htmlEscape(mg_string) .. "\r\n") mg.write(" reference url: " .. htmlEscape(ref_string) .. "\r\n") dec_mg_string = mg.url_decode(mg_string) dec_ref_string = mg.url_decode(ref_string) mg.write(" decoded mg-url: " .. htmlEscape(dec_mg_string) .. "\r\n") mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n") dec_mg_string = mg.url_decode(mg_string, false) dec_ref_string = mg.url_decode(ref_string, false) mg.write(" decoded mg-url: " .. htmlEscape(dec_mg_string) .. "\r\n") mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n") dec_mg_string = mg.url_decode(mg_string, true) dec_ref_string = mg.url_decode(ref_string, true) mg.write(" decoded mg-url: " .. htmlEscape(dec_mg_string) .. "\r\n") mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n") mg.write("\r\n") -- base64_encode mg.write("BASE64 encode/decode test:\r\n") raw_string = [[ !"#$%&'()*+,-./0123456789:;<=>?@]] mg.write(" original string: " .. htmlEscape(raw_string) .. "\r\n") mg_string = mg.base64_encode(raw_string) ref_string = "ICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A" -- from http://www.base64encode.org/ mg.write(" mg-base64: " .. htmlEscape(mg_string) .. "\r\n") mg.write(" reference base64: " .. htmlEscape(ref_string) .. "\r\n") dec_mg_string = mg.base64_decode(mg_string) dec_ref_string = mg.base64_decode(ref_string) mg.write(" decoded mg-base64: " .. htmlEscape(dec_mg_string) .. "\r\n") mg.write(" decoded reference base64: " .. htmlEscape(dec_ref_string) .. "\r\n") mg.write("\r\n") raw_string = [[> -?-]] mg.write(" original string: " .. htmlEscape(raw_string) .. "\r\n") mg_string = mg.base64_encode(raw_string) ref_string = "PD8+IC0/LQ==" -- from http://www.base64encode.org/ mg.write(" mg-base64: " .. htmlEscape(mg_string) .. "\r\n") mg.write(" reference base64: " .. htmlEscape(ref_string) .. "\r\n") dec_mg_string = mg.base64_decode(mg_string) dec_ref_string = mg.base64_decode(ref_string) mg.write(" decoded mg-base64: " .. htmlEscape(dec_mg_string) .. "\r\n") mg.write(" decoded reference base64: " .. htmlEscape(dec_ref_string) .. "\r\n") mg.write("\r\n") -- random mg.write("Random numbers:\r\n") for i=1,10 do mg.write(string.format("%18u\r\n", mg.random())) end mg.write("\r\n") -- uuid if mg.uuid then mg.write("UUIDs:\r\n") for i=1,10 do mg.write(string.format("%40s\r\n", mg.uuid())) end mg.write("\r\n") end -- end of page mg.write("\r\n\r\n\r\n")