Annotate

tools/generate_format_spec.lua @ 12187:94253e02d47d

mod_http: Limit unencrypted http port (5280) to loopback by default Since accessing this port directly over the wider Internet is unlikely to intentional anymore. Most uses will likely be by reverse proxies, by mistake or because of trouble configuring HTTPS. Blocking mistaken uses is just a good thing, letting users send potentially private things unencrypted tends to be Strongly Discouraged these days. Many reverse proxy setups operate over loopback, so listening there instead of all interfaces is a net improvement. Improved automatic certificate location and SNI support has mostly eliminated the need for manual certificate configuration so HTTPS should Just Work once certificates have been provided. For local testing during development, connecting over loopback is likely fine as well. When really needed, `http_interfaces` can still be set. Suggested by Link Mauve
author Kim Alvefur <zash@zash.se>
date Sat, 15 Jan 2022 15:13:41 +0100
parent 12039:e0a8c5b1ab4f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local format = require"util.format".format;
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
2 local dump = require"util.serialization".new("oneline")
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local types = {
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 "nil";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 "boolean";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 "number";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 "string";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 "function";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 -- "userdata";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 "thread";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 "table";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local example_values = {
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 ["nil"] = { n = 1; nil };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 ["boolean"] = { true; false };
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
16 ["number"] = { 97; -12345; 1.5; 73786976294838206464; math.huge; 2147483647 };
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
17 ["string"] = { "hello"; "foo \1\2\3 bar"; "nödåtgärd"; string.sub("nödåtgärd", 1, -4) };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 ["function"] = { function() end };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 -- ["userdata"] = {};
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 ["thread"] = { coroutine.create(function() end) };
12039
e0a8c5b1ab4f util.format: Ensure metatable __tostring results are also sanitized
Kim Alvefur <zash@zash.se>
parents: 12037
diff changeset
21 ["table"] = { {}, setmetatable({},{__tostring=function ()return "foo \1\2\3 bar"end}) };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 local example_strings = setmetatable({
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 ["nil"] = { "nil" };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 ["function"] = { "function() end" };
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
26 ["number"] = { "97"; "-12345"; "1.5"; "73786976294838206464"; "math.huge"; "2147483647" };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 ["thread"] = { "coroutine.create(function() end)" };
12039
e0a8c5b1ab4f util.format: Ensure metatable __tostring results are also sanitized
Kim Alvefur <zash@zash.se>
parents: 12037
diff changeset
28 ["table"] = { "{ }", "setmetatable({},{__tostring=function ()return \"foo \\1\\2\\3 bar\"end})" }
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 }, { __index = function() return {} end });
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 for _, lua_type in ipairs(types) do
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 print(string.format("\t\tdescribe(\"%s\", function ()", lua_type));
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 local examples = example_values[lua_type];
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 for fmt in ("cdiouxXaAeEfgGqs"):gmatch(".") do
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 print(string.format("\t\t\tdescribe(\"to %%%s\", function ()", fmt));
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 print("\t\t\t\tit(\"works\", function ()");
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
36 for i = 1, examples.n or #examples do
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 local example = examples[i];
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 if not tostring(example):match("%w+: 0[xX]%x+") then
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
39 print(string.format("\t\t\t\t\tassert.equal(%q, format(%q, %s))", format("%" .. fmt, example), "%" .. fmt,
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
40 example_strings[lua_type][i] or dump(example)));
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 else
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
42 print(string.format("\t\t\t\t\tassert.matches(\"[%s: 0[xX]%%x+]\", format(%q, %s))", lua_type, "%" .. fmt,
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
43 example_strings[lua_type][i] or dump(example)));
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 print("\t\t\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 print("\t\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 print()
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 print("\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 print()
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end