Mercurial > prosody-modules
annotate mod_groups_migration/mod_groups_migration.lua @ 5296:0f5657db1cfc
mod_isolate_host: handle server-generated stanzas
The hook for setting the no_host_isolation is only called for c2s
sessions. This does not work for stanzas generated by the server,
such as PEP notifications or presence probe answers.
To handle that, we do per-stanza checks for the case that the origin
is local.
| author | Jonas Schäfer <jonas@wielicki.name> |
|---|---|
| date | Sat, 01 Apr 2023 12:03:08 +0200 |
| parents | dd3bfe8f182e |
| children |
| 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) |
