annotate mod_s2sout_override/mod_s2sout_override.lua @ 5536:96dec7681af8

mod_firewall: Update user marks to store instantly via map store The original approach was to keep marks in memory only, and persist them at shutdown. That saves I/O, at the cost of potentially losing marks on an unclean shutdown. This change persists marks instantly, which may have some performance overhead but should be more "correct". It also splits the marking/unmarking into an event which may be watched or even fired by other modules.
author Matthew Wild <mwild1@gmail.com>
date Thu, 08 Jun 2023 16:20:42 +0100
parents 6cf2f32dbf40
children b87a23b45725
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5486
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 --% requires: s2sout-pre-connect-event
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local url = require"socket.url";
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local basic_resolver = require "net.resolvers.basic";
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local override_for = module:get_option(module.name, {}); -- map of host to "tcp://example.com:5269"
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 module:hook("s2sout-pre-connect", function(event)
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 local override = override_for[event.session.to_host];
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 if type(override) == "string" then
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 override = url.parse(override);
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 end
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 if type(override) == "table" and override.scheme == "tcp" and type(override.host) == "string" then
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 event.resolver = basic_resolver.new(override.host, tonumber(override.port) or 5269, override.scheme, {});
5487
6cf2f32dbf40 mod_s2sout_override: Add support for Direct TLS
Kim Alvefur <zash@zash.se>
parents: 5486
diff changeset
15 elseif type(override) == "table" and override.scheme == "tls" and type(override.host) == "string" then
6cf2f32dbf40 mod_s2sout_override: Add support for Direct TLS
Kim Alvefur <zash@zash.se>
parents: 5486
diff changeset
16 event.resolver = basic_resolver.new(override.host, tonumber(override.port) or 5270, "tcp",
6cf2f32dbf40 mod_s2sout_override: Add support for Direct TLS
Kim Alvefur <zash@zash.se>
parents: 5486
diff changeset
17 { servername = event.session.to_host; sslctx = event.session.ssl_ctx });
5486
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 end
71243bedb2b0 mod_s2sout_override: New module for overriding s2s connections
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 end);