Software /
code /
prosody
Annotate
plugins/mod_motd.lua @ 13134:638f627e707f
util.datamanager: Add O(1) list indexing with on-disk index
Index file contains offsets and lengths of each item() which allows
seeking directly to each item and reading it without parsing the entire
file.
Also allows tricks like binary search, assuming items have some defined
order.
We take advantage of the 1-based indexing in tables to store a magic
header in the 0 position, so that table index 1 ends up at file index 1.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 11 May 2021 02:09:56 +0200 |
parent | 12977:74b9e05af71e |
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 |
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 |
12977
74b9e05af71e
plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
9791
diff
changeset
|
16 local st = require "prosody.util.stanza"; |
3169
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 |
8135
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) |
9791
ca0473cadd1c
mod_motd: Remove unused variable [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9789
diff
changeset
|
21 local session = event.origin; |
9789
abd32bc33a9c
mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents:
8135
diff
changeset
|
22 local motd_stanza = |
abd32bc33a9c
mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents:
8135
diff
changeset
|
23 st.message({ to = session.full_jid, from = motd_jid }) |
abd32bc33a9c
mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents:
8135
diff
changeset
|
24 :tag("body"):text(motd_text); |
abd32bc33a9c
mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents:
8135
diff
changeset
|
25 module:send(motd_stanza); |
abd32bc33a9c
mod_motd: Remove redundant conditions
Kim Alvefur <zash@zash.se>
parents:
8135
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); |