page4.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. -- This test checks the Lua functions:
  2. -- get_var, get_cookie, md5, url_encode
  3. now = os.time()
  4. cookie_name = "civetweb-test-page4"
  5. if mg.request_info.http_headers.Cookie then
  6. cookie_value = tonumber(mg.get_cookie(mg.request_info.http_headers.Cookie, cookie_name))
  7. end
  8. mg.write("HTTP/1.0 200 OK\r\n")
  9. mg.write("Connection: close\r\n")
  10. mg.write("Content-Type: text/html; charset=utf-8\r\n")
  11. if not cookie_value then
  12. mg.write("Set-Cookie: " .. cookie_name .. "=" .. tostring(now) .. "\r\n")
  13. end
  14. mg.write("\r\n")
  15. mg.write("<html>\r\n<head><title>Civetweb Lua script test page 4</title></head>\r\n<body>\r\n")
  16. mg.write("<p>Test of Civetweb Lua Functions:</p>\r\n");
  17. mg.write("<pre>\r\n");
  18. -- get_var of query_string
  19. mg.write("get_var test (check query string):\r\n")
  20. if not mg.request_info.query_string then
  21. mg.write(" No query string. You may try <a href='?a=a1&amp;junk&amp;b=b2&amp;cc=cNotSet&amp;d=a, b and d should be set&amp;z=z'>this example</a>.\r\n")
  22. else
  23. for _,var in ipairs({'a','b','c','d'}) do
  24. value = mg.get_var(mg.request_info.query_string, var);
  25. if value then
  26. mg.write(" Variable " .. var .. ": value " .. value .. "\r\n");
  27. else
  28. mg.write(" Variable " .. var .. " not set\r\n");
  29. end
  30. end
  31. end
  32. mg.write("\r\n")
  33. -- md5
  34. mg.write("MD5 test:\r\n")
  35. test_string = "abcd\0efgh"
  36. mg.write(" String with embedded 0, length " .. string.len(test_string))
  37. test_md5 = mg.md5(test_string)
  38. mg.write(", MD5 " .. test_md5 .. "\r\n")
  39. if mg.md5("") == "d41d8cd98f00b204e9800998ecf8427e" then
  40. mg.write(" MD5 of empty string OK\r\n")
  41. else
  42. mg.write(" Error: MD5 of empty string NOT OK\r\n")
  43. end
  44. if mg.md5("The quick brown fox jumps over the lazy dog.") == "e4d909c290d0fb1ca068ffaddf22cbd0" then
  45. mg.write(" MD5 of test string OK\r\n")
  46. else
  47. mg.write(" Error: MD5 of test string NOT OK\r\n")
  48. end
  49. mg.write("\r\n")
  50. -- get_cookie
  51. mg.write("Cookie test:\r\n")
  52. if not cookie_value then
  53. mg.write(" Cookie not set yet. Please reload the page.\r\n")
  54. else
  55. mg.write(" Cookie set to " .. cookie_value .. "\r\n")
  56. mg.write(" You visited this page " .. os.difftime(now, cookie_value) .. " seconds before.\r\n")
  57. end
  58. mg.write("\r\n")
  59. -- test 'require' of other Lua scripts
  60. mg.write("require test\r\n")
  61. script_path = mg.request_info.script_name:match("(.*)page%d*.lua")
  62. if type(script_path)=='string' then
  63. package.path = script_path .. "?.lua;" .. package.path
  64. mg.write(" Lua search path: " .. package.path .. "\r\n")
  65. require "html_esc"
  66. if htmlEscape then
  67. for i=0,15 do
  68. mg.write(" ")
  69. for j=0,15 do
  70. mg.write(tostring(htmlEscape[16*i+j]))
  71. end
  72. mg.write("\r\n")
  73. end
  74. else
  75. mg.write(" 'require' test failed\r\n")
  76. end
  77. else
  78. mg.write(" name match failed\r\n")
  79. end
  80. mg.write("\r\n")
  81. -- url_encode
  82. mg.write("URL encode/decode test:\r\n")
  83. if mg.url_encode("") == "" then
  84. mg.write(" url_encode of empty string OK\r\n")
  85. else
  86. mg.write(" Error: url_encode of empty string NOT OK\r\n")
  87. end
  88. raw_string = [[ !"#$%&'()*+,-./0123456789:;<=>?@]]
  89. mg.write(" original string: " .. htmlEscape(raw_string) .. "\r\n")
  90. url_string = mg.url_encode(raw_string):upper()
  91. 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
  92. mg.write(" mg-url: " .. htmlEscape(url_string) .. "\r\n")
  93. mg.write(" reference url: " .. htmlEscape(ref_string) .. "\r\n")
  94. dec_url_string = mg.url_decode(url_string)
  95. dec_ref_string = mg.url_decode(ref_string)
  96. mg.write(" decoded mg-url: " .. htmlEscape(dec_url_string) .. "\r\n")
  97. mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n")
  98. dec_url_string = mg.url_decode(url_string, false)
  99. dec_ref_string = mg.url_decode(ref_string, false)
  100. mg.write(" decoded mg-url: " .. htmlEscape(dec_url_string) .. "\r\n")
  101. mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n")
  102. dec_url_string = mg.url_decode(url_string, true)
  103. dec_ref_string = mg.url_decode(ref_string, true)
  104. mg.write(" decoded mg-url: " .. htmlEscape(dec_url_string) .. "\r\n")
  105. mg.write(" decoded reference url: " .. htmlEscape(dec_ref_string) .. "\r\n")
  106. mg.write("\r\n")
  107. -- end of page
  108. mg.write("</pre>\r\n</body>\r\n</html>\r\n")