Annotate

plugins/mod_motd.lua @ 4723:198b11ed196a

net.http.codes: Add missing 418 status code
author Matthew Wild <mwild1@gmail.com>
date Fri, 27 Apr 2012 18:54:51 +0100
parent 4654:0975505f5a54
child 5014:b2006c1cfa85
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
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
21 module:hook("presence/bare", function (event)
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
22 local session, stanza = event.origin, event.stanza;
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
23 if not session.presence and not stanza.attr.type then
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
24 local motd_stanza =
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
25 st.message({ to = session.full_jid, from = motd_jid })
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
26 :tag("body"):text(motd_text);
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 core_route_stanza(hosts[host], motd_stanza);
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
28 module:log("debug", "MOTD send to user %s", session.full_jid);
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
29 end
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
30 end, 1);