mod_track_muc_joins/README.markdown
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:25:46 +0100
changeset 5062 39c2824c2880
parent 2415 e327b06b9a1b
permissions -rw-r--r--
mod_cloud_notify: README overhaul
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2085
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
---
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
summary: Keep track of joined chat rooms
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
...
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
2413
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
     5
# Introduction
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
     6
2085
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
This module attempts to keep track of what MUC chat rooms users have
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
joined. It's not very useful on its own, but can be used by other
73096d8d924c mod_track_muc_joins: Module to keep track of joined MUC rooms
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
modules to influence decisions.
2413
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    10
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    11
# Usage
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    12
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    13
Rooms joined and the associated nickname is kept in a table field
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    14
`rooms_joined` on the users session.
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    15
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    16
An example:
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    17
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    18
``` lua
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    19
local jid_bare = require"util.jid".bare;
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    20
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    21
module:hook("message/full", function (event)
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    22
    local stanza = event.stanza;
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    23
    local session = prosody.full_sessions[stanza.attr.to];
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    24
    if not session then
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    25
        return -- No such session
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    26
    end
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    27
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    28
    local joined_rooms = session.joined_rooms;
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    29
    if not joined_rooms then
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    30
        return -- This session hasn't joined any rooms at all
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    31
    end
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    32
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    33
    -- joined_rooms is a map of room JID -> room nickname
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    34
    local nickname = joined_rooms[jid_bare(stanza.attr.from)];
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    35
    if nickname then
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    36
        session.log("info", "Got a MUC message from %s", stanza.attr.from);
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    37
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    38
        local body = stanza:get_child_text("body");
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    39
        if body and body:find(nickname, 1, true) then
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    40
            session.log("info", "The message contains my nickname!");
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    41
        end
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    42
    end
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    43
end);
b426f1d46938 mod_track_muc_joins/README: Add some example code
Kim Alvefur <zash@zash.se>
parents: 2085
diff changeset
    44
```
2415
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    45
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    46
# Known issues
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    47
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    48
[XEP 45 ยง 7.2.3 Presence Broadcast][enter-pres] has the following text:
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    49
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    50
> In particular, if roomnicks are locked down then the service MUST do
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    51
> one of the following.
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    52
>
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    53
> \[...\]
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    54
>
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    55
> If the user has connected using a MUC client (...), then the service
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    56
> MUST allow the client to enter the room, modify the nick in accordance
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    57
> with the lockdown policy, and **include a status code of "210"** in
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    58
> the presence broadcast that it sends to the new occupant.
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    59
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    60
This case is not yet handled.
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    61
e327b06b9a1b mod_track_muc_joins/README: Mention how the 210 status code for when the room rewrites the users nickname is not yet handled
Kim Alvefur <zash@zash.se>
parents: 2413
diff changeset
    62
[enter-pres]: http://xmpp.org/extensions/xep-0045.html#enter-pres