view plugins/mod_motd.lua @ 13966:e7c52d0b0e0d

util.sql: Add API to start an explicit write transaction This will be used in SQLite3 to BEGIN IMMEDIATE, which attempts to acquire write locks immediately instead of when the first write statement is started. Thus it would fail faster if the write lock is already taken. Normally that should not occur but e.g. prosodyctl could take it. Investigating whether something similar is sensible in PostgreSQL, MySQL is a future task.
author Kim Alvefur <zash@zash.se>
date Mon, 19 Aug 2024 00:06:45 +0200
parents 74b9e05af71e
children
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
-- Copyright (C) 2010 Jeff Mitchell
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local host = module:get_host();
local motd_text = module:get_option_string("motd_text");
local motd_jid = module:get_option_string("motd_jid", host);

if not motd_text then return; end

local st = require "prosody.util.stanza";

motd_text = motd_text:gsub("^%s*(.-)%s*$", "%1"):gsub("\n[ \t]+", "\n"); -- Strip indentation from the config

module:hook("presence/initial", function (event)
	local session = event.origin;
	local motd_stanza =
		st.message({ to = session.full_jid, from = motd_jid })
			:tag("body"):text(motd_text);
	module:send(motd_stanza);
	module:log("debug", "MOTD send to user %s", session.full_jid);
end, 1);