Software / code / prosody
Annotate
util/envload.lua @ 13289:38c95544b7ee
mod_saslauth, mod_c2s: Disable tls-server-end-point channel binding by default
This channel binding method is now enabled when a hash is manually set in the
config, or it attempts to discover the hash automatically if the value is the
special string "auto".
A related change to mod_c2s prevents complicated certificate lookups in the
client connection hot path - this work now happens only when this channel
binding method is used. I'm not aware of anything else that uses ssl_cfg (vs
ssl_ctx).
Rationale for disabling by default:
- Minor performance impact in automatic cert detection
- This method is weak against a leaked/stolen private key (other methods such
as 'tls-exporter' would not be compromised in such a case)
Rationale for keeping the implementation:
- For some deployments, this may be the only method available (e.g. due to
TLS offloading in another process/server).
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 26 Oct 2023 15:14:39 +0100 |
| parent | 12576:d1aacc6a81ac |
| rev | line source |
|---|---|
|
5020
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
1 -- Prosody IM |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2011 Florian Zeitz |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
3 -- |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
4 -- This project is MIT/X11 licensed. Please see the |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
5 -- COPYING file in the source package for more information. |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
6 -- |
|
8416
bc9cb23b604a
util.envload: Ignore "undefined variable" warning for loadstring [luacheck with strict 5.2 or 5.3 checks]
Kim Alvefur <zash@zash.se>
parents:
7930
diff
changeset
|
7 -- luacheck: ignore 113/setfenv 113/loadstring |
|
5020
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
8 |
|
12576
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
9 local load = load; |
|
7924
8487fe9fc335
util.envload: Open file here instead of letting loadfile do it so that all return values from io.open can be collected
Kim Alvefur <zash@zash.se>
parents:
7728
diff
changeset
|
10 local io_open = io.open; |
|
5020
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
11 |
|
12576
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
12 local function envload(code, source, env) |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
13 return load(code, source, nil, env); |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
14 end |
|
5020
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
15 |
|
12576
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
16 local function envloadfile(file, env) |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
17 local fh, err, errno = io_open(file); |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
18 if not fh then return fh, err, errno; end |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
19 local f, err = load(fh:lines(2048), "@" .. file, nil, env); |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
20 fh:close(); |
|
d1aacc6a81ac
util.envload: Remove Lua 5.1 method
Kim Alvefur <zash@zash.se>
parents:
8416
diff
changeset
|
21 return f, err; |
|
5020
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
22 end |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
23 |
|
ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
24 return { envload = envload, envloadfile = envloadfile }; |