Annotate

plugins/mod_motd.lua @ 12579:ca6a43fe0231 0.12

util.jsonschema: Fix validation to not assume presence of "type" field MattJ reported a curious issue where validation did not work as expected. Primarily that the "type" field was expected to be mandatory, and thus leaving it out would result in no checks being performed. This was likely caused by misreading during initial development. Spent some time testing against https://github.com/json-schema-org/JSON-Schema-Test-Suite.git and discovered a multitude of issues, far too many to bother splitting into separate commits. More than half of them fail. Many because of features not implemented, which have been marked NYI. For example, some require deep comparisons e.g. when objects or arrays are present in enums fields. Some because of quirks with how Lua differs from JavaScript, e.g. no distinct array or object types. Tests involving fractional floating point numbers. We're definitely not going to follow references to remote resources. Or deal with UTF-16 sillyness. One test asserted that 1.0 is an integer, where Lua 5.3+ will disagree.
author Kim Alvefur <zash@zash.se>
date Fri, 08 Jul 2022 14:38:23 +0200
parent 9791:ca0473cadd1c
child 12977:74b9e05af71e
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
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
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);