File

mod_sasl_ssdp/mod_sasl_ssdp.lua @ 5997:d3812826c1cd

mod_csi_muc_priorities: Allow setting the default priority for mucs to low Move the priority checking after the mention check so that if there is a mention we return true. Add an option to the form to set the default priority to low. Return `nil` in cases where we determite that the priority should be high, as with `mod_csi_simple` this causes normal MUC messages to be marked important while allowing mod_csi_grace_period and unneeded messages to be queued.
author aereaux <aidan@jmad.org>
date Sun, 22 Sep 2024 08:13:09 -0700 (6 months ago)
parent 5842:bb51cf204dd4
child 6137:4cb1cad2badd
line wrap: on
line source
local array = require "util.array";
local hashes = require "util.hashes";
local it = require "util.iterators";
local base64_enc = require "util.encodings".base64.encode;

local hash_functions = {
	["SCRAM-SHA-1"] = hashes.sha1;
	["SCRAM-SHA-1-PLUS"] = hashes.sha1;
	["SCRAM-SHA-256"] = hashes.sha256;
	["SCRAM-SHA-256-PLUS"] = hashes.sha256;
};

function add_ssdp_info(event)
	local sasl_handler = event.session.sasl_handler;
	local hash = hash_functions[sasl_handler.selected];
	if not hash then
		module:log("debug", "Not enabling SSDP for unsupported mechanism: %s", sasl_handler.selected);
		return;
	end
	local mechanism_list = array.collect(it.keys(sasl_handler:mechanisms())):sort();
	local cb = sasl_handler.profile.cb;
	local cb_list = cb and array.collect(it.keys(cb)):sort();
	local ssdp_string;
	if cb_list then
		ssdp_string = mechanism_list:concat(",").."|"..cb_list:concat(",");
	else
		ssdp_string = mechanism_list:concat(",");
	end
	module:log("debug", "Calculated SSDP string: %s", ssdp_string);
	event.message = event.message..",d="..base64_enc(hash(ssdp_string));
	sasl_handler.state.server_first_message = event.message;
end

module:hook("sasl/c2s/challenge", add_ssdp_info, 1);
module:hook("sasl2/c2s/challenge", add_ssdp_info, 1);