Software /
code /
prosody-modules
Annotate
mod_groups_migration/mod_groups_migration.lua @ 5173:460f78654864
mod_muc_rtbl: also filter messages
This was a bit tricky because we don't want to run the JIDs
through SHA256 on each message. Took a while to come up with this
simple plan of just caching the SHA256 of the JIDs on the
occupants.
This will leave some dirt in the occupants after unloading the
module, but that should be ok; once they cycle the room, the
hashes will be gone.
This is direly needed, otherwise, there is a tight race between
the moderation activities and the actors joining the room.
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Tue, 21 Feb 2023 21:37:27 +0100 |
parent | 4416:dd3bfe8f182e |
rev | line source |
---|---|
4387
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
1 local host = module.host; |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
2 local usermanager = require"core.usermanager"; |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
3 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
4 local mod_groups = module:depends("groups_internal"); |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
5 local default_group_id = module:get_option("group_default_id", "default"); |
4416
dd3bfe8f182e
mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents:
4391
diff
changeset
|
6 local default_group_name = module:get_option("group_default_name", "default"); |
4387
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
7 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
8 local function trigger_migration() |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
9 if mod_groups.exists(default_group_id) then |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
10 module:log("debug", "skipping migration, group exists already") |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
11 return |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
12 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
13 module:log("info", "migrating to mod_groups!") |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
14 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
15 local group_id = default_group_id; |
4416
dd3bfe8f182e
mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents:
4391
diff
changeset
|
16 local ok, err = mod_groups.create({name=default_group_name}, true, group_id); |
4387
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
17 if not ok then |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
18 module:log("error", "failed to create group: %s", err) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
19 return |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
20 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
21 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
22 for user in usermanager.users(host) do |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
23 mod_groups.add_member(group_id, user, true); |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
24 module:log("debug", "added %s to %s", user, group_id) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
25 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
26 module:log("debug", "synchronising group %s", group_id) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
27 mod_groups.sync(group_id) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
28 module:log("info", "added all users to group %s", group_id) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
29 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
30 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
31 module:hook_global("server-started", trigger_migration, -100) |