mod_groups_migration/mod_groups_migration.lua
author Matthew Wild <mwild1@gmail.com>
Tue, 27 Sep 2022 18:23:42 +0100
changeset 5064 bc491065c221
parent 4420 dd3bfe8f182e
permissions -rw-r--r--
mod_sasl2_bind2, mod_sasl2_sm: Remove bind2 <features/> wrapper element This was dropped from the spec. It's more consistent with SASL2.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4391
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");
4420
dd3bfe8f182e mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents: 4395
diff changeset
     6
local default_group_name = module:get_option("group_default_name", "default");
4391
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;
4420
dd3bfe8f182e mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents: 4395
diff changeset
    16
	local ok, err = mod_groups.create({name=default_group_name}, true, group_id);
4391
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)