plugins/mod_motd.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 21 Apr 2012 21:16:53 +0100
changeset 4649 e07ce18c503e
parent 4390 5e84fb3c4ba0
child 4654 0975505f5a54
permissions -rw-r--r--
mod_motd: Send only to resource coming online, not the user's bare JID (fixes #282)
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
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
     5
-- 
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
4649
e07ce18c503e mod_motd: Send only to resource coming online, not the user's bare JID (fixes #282)
Matthew Wild <mwild1@gmail.com>
parents: 4390
diff changeset
    16
local jid_join = require "util.jid".join;
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    17
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
    18
4083
4d0599e85411 mod_motd: Process value to strip any indentation from the config
Matthew Wild <mwild1@gmail.com>
parents: 3170
diff changeset
    19
motd_text = motd_text:gsub("^%s*(.-)%s*$", "%1"):gsub("\n%s+", "\n"); -- Strip indentation from the config
4d0599e85411 mod_motd: Process value to strip any indentation from the config
Matthew Wild <mwild1@gmail.com>
parents: 3170
diff changeset
    20
4649
e07ce18c503e mod_motd: Send only to resource coming online, not the user's bare JID (fixes #282)
Matthew Wild <mwild1@gmail.com>
parents: 4390
diff changeset
    21
module:hook("resource-bind", function (event)
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    22
		local session = event.session;
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    23
		local motd_stanza =
4649
e07ce18c503e mod_motd: Send only to resource coming online, not the user's bare JID (fixes #282)
Matthew Wild <mwild1@gmail.com>
parents: 4390
diff changeset
    24
			st.message({ to = jid_join(session.username, session.host, session.resource), from = motd_jid })
3169
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    25
				:tag("body"):text(motd_text);
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    26
		core_route_stanza(hosts[host], motd_stanza);
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    27
		module:log("debug", "MOTD send to user %s@%s", session.username, session.host);
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    28
e37e83660114 Add motd plugin, giving text to a user on each login.
Jeff Mitchell <jeff@jefferai.org>
parents:
diff changeset
    29
end);