plugins/mod_motd.lua
author Matthew Wild <mwild1@gmail.com>
Mon, 20 Feb 2023 18:10:15 +0000
branch0.12
changeset 12898 0598d822614f
parent 9795 ca0473cadd1c
child 12981 74b9e05af71e
permissions -rw-r--r--
mod_websocket: Fire pre-session-close event (fixes #1800) This event was added in a7c183bb4e64 and is required to make mod_smacks know that a session was intentionally closed and shouldn't be hibernated (see fcea4d9e7502). Because this was missing from mod_websocket's session.close(), mod_smacks would always attempt to hibernate websocket sessions even if they closed cleanly. That mod_websocket has its own copy of session.close() is something to fix another day (probably not in the stable branch). So for now this commit makes the minimal change to get things working again. Thanks to Damian and the Jitsi team for reporting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     1
-- Prosody IM
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     4
-- Copyright (C) 2010 Jeff Mitchell
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5371
diff changeset
     5
--
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     6
-- This project is MIT/X11 licensed. Please see the
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     7
-- COPYING file in the source package for more information.
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     8
--
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     9
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    10
local host = module:get_host();
4390
5e84fb3c4ba0 mod_motd: Update to use module:get_option_string
Matthew Wild <mwild1@gmail.com>
parents: 4389
diff changeset
    11
local motd_text = module:get_option_string("motd_text");
5e84fb3c4ba0 mod_motd: Update to use module:get_option_string
Matthew Wild <mwild1@gmail.com>
parents: 4389
diff changeset
    12
local motd_jid = module:get_option_string("motd_jid", host);
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    13
4389
886eebf10802 mod_motd: Send no message (instead of 'blank') if no message is set in the config (thanks medics)
Matthew Wild <mwild1@gmail.com>
parents: 4083
diff changeset
    14
if not motd_text then return; end
886eebf10802 mod_motd: Send no message (instead of 'blank') if no message is set in the config (thanks medics)
Matthew Wild <mwild1@gmail.com>
parents: 4083
diff changeset
    15
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    16
local st = require "util.stanza";
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    17
6009
1579b53351e2 mod_motd: Strip indentation only, leave multiple newlines
Kim Alvefur <zash@zash.se>
parents: 5371
diff changeset
    18
motd_text = motd_text:gsub("^%s*(.-)%s*$", "%1"):gsub("\n[ \t]+", "\n"); -- Strip indentation from the config
4083
4d0599e85411 mod_motd: Process value to strip any indentation from the config
Matthew Wild <mwild1@gmail.com>
parents: 3170
diff changeset
    19
8138
e20c27e04ecc mod_motd: Use initial presence event (saves some checking)
Kim Alvefur <zash@zash.se>
parents: 6010
diff changeset
    20
module:hook("presence/initial", function (event)
9795
ca0473cadd1c mod_motd: Remove unused variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 9793
diff changeset
    21
	local session = event.origin;
9793
abd32bc33a9c mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents: 8138
diff changeset
    22
	local motd_stanza =
abd32bc33a9c mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents: 8138
diff changeset
    23
		st.message({ to = session.full_jid, from = motd_jid })
abd32bc33a9c mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents: 8138
diff changeset
    24
			:tag("body"):text(motd_text);
abd32bc33a9c mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents: 8138
diff changeset
    25
	module:send(motd_stanza);
abd32bc33a9c mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents: 8138
diff changeset
    26
	module:log("debug", "MOTD send to user %s", session.full_jid);
4654
0975505f5a54 mod_motd: Use presence/bare to catch a client's initial presence and send the MOTD then (fixes #282)
Matthew Wild <mwild1@gmail.com>
parents: 4649
diff changeset
    27
end, 1);