Software / code / prosody
Comparison
plugins/mod_c2s.lua @ 13280:cf8a6710c91c
mod_c2s: Add session.ssl_cfg/ssl_ctx for direct TLS connections
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 07 Sep 2022 11:29:00 +0100 |
| parent | 13230:26c30844cac6 |
| child | 13289:38c95544b7ee |
comparison
equal
deleted
inserted
replaced
| 13279:140f7926946b | 13280:cf8a6710c91c |
|---|---|
| 9 module:set_global(); | 9 module:set_global(); |
| 10 | 10 |
| 11 local add_task = require "prosody.util.timer".add_task; | 11 local add_task = require "prosody.util.timer".add_task; |
| 12 local new_xmpp_stream = require "prosody.util.xmppstream".new; | 12 local new_xmpp_stream = require "prosody.util.xmppstream".new; |
| 13 local nameprep = require "prosody.util.encodings".stringprep.nameprep; | 13 local nameprep = require "prosody.util.encodings".stringprep.nameprep; |
| 14 local certmanager = require "prosody.core.certmanager"; | |
| 14 local sessionmanager = require "prosody.core.sessionmanager"; | 15 local sessionmanager = require "prosody.core.sessionmanager"; |
| 15 local statsmanager = require "prosody.core.statsmanager"; | 16 local statsmanager = require "prosody.core.statsmanager"; |
| 16 local st = require "prosody.util.stanza"; | 17 local st = require "prosody.util.stanza"; |
| 18 local pm_get_tls_config_at = require "core.portmanager".get_tls_config_at; | |
| 17 local sm_new_session, sm_destroy_session = sessionmanager.new_session, sessionmanager.destroy_session; | 19 local sm_new_session, sm_destroy_session = sessionmanager.new_session, sessionmanager.destroy_session; |
| 18 local uuid_generate = require "prosody.util.uuid".generate; | 20 local uuid_generate = require "prosody.util.uuid".generate; |
| 19 local async = require "prosody.util.async"; | 21 local async = require "prosody.util.async"; |
| 20 local runner = async.runner; | 22 local runner = async.runner; |
| 21 | 23 |
| 306 -- Client is using Direct TLS or legacy SSL (otherwise mod_tls sets this flag) | 308 -- Client is using Direct TLS or legacy SSL (otherwise mod_tls sets this flag) |
| 307 if conn:ssl() then | 309 if conn:ssl() then |
| 308 session.secure = true; | 310 session.secure = true; |
| 309 session.encrypted = true; | 311 session.encrypted = true; |
| 310 | 312 |
| 313 local server = conn:server(); | |
| 314 local tls_config = pm_get_tls_config_at(server:ip(), server:serverport()); | |
| 315 local autocert = certmanager.find_host_cert(session.conn:socket():getsniname()); | |
| 316 session.ssl_cfg = autocert or tls_config; | |
| 317 session.ssl_ctx = conn:sslctx(); | |
| 318 | |
| 311 -- Check if TLS compression is used | 319 -- Check if TLS compression is used |
| 312 local info = conn:ssl_info(); | 320 local info = conn:ssl_info(); |
| 313 if type(info) == "table" then | 321 if type(info) == "table" then |
| 314 (session.log or log)("info", "Stream encrypted (%s with %s)", info.protocol, info.cipher); | 322 (session.log or log)("info", "Stream encrypted (%s with %s)", info.protocol, info.cipher); |
| 315 session.compressed = info.compression; | 323 session.compressed = info.compression; |