6.0.0-git
2024-03-19
Last Modified 2019-03-01 by Guest

Migrating an existing horde installation's group from SQL to LDAP

Manually

I strongly suggest you don't play around in production!

Basics

- Configure a separate vhost each for the db-based and the sql-based setup
- create conf-{sqlvhost}.host.com.php and conf-{ldapvhost}.host.com.php each containing only the php tag and all $conf['group'] stuff.
- use the docs on how to setup horde for ldap groups.
- ensure both are basically working (create some bogus group and add some user in each backend)
- Now open https://{host}/horde/admin/groups.php or https://{host}/admin/groups.php in each site.
- Create all the missing groups in the ldap backend. add all the missing users.

Permissions

(assuming SQL backend) select * from horde_perms where perm_data like "%groups%";

Each permission assigned to a group by numeric group id must be cloned to be used by the ldap group backend.
Best use the group admin screen.

Do not attempt to edit the perms using an sql statement.

Shares

(assuming sharesng sql backend is used)
Find any apps using sharesng shares
mysql> show tables like "%sharesng_groups%";

For each found table,

For each group_uid which is numeric, look up the group name
and build a query to create a corresponding entry with the same perms.

KRONOLITH

select DISTINCT CONCAT(
"INSERT INTO kronolith_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
", ",
perm_1024,
");"
)
as query from kronolith_sharesng_groups, horde_groups
WHERE kronolith_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND kronolith_sharesng_groups.group_uid=horde_groups.group_uid;

NAG

select DISTINCT CONCAT(
"INSERT INTO nag_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from nag_sharesng_groups, horde_groups
WHERE nag_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND nag_sharesng_groups.group_uid=horde_groups.group_uid;

ansel

select DISTINCT CONCAT(
"INSERT INTO ansel_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from ansel_sharesng_groups, horde_groups
WHERE ansel_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND ansel_sharesng_groups.group_uid=horde_groups.group_uid;

gollem

select DISTINCT CONCAT(
"INSERT INTO gollem_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from gollem_sharesng_groups, horde_groups
WHERE gollem_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND gollem_sharesng_groups.group_uid=horde_groups.group_uid;

ingo

select DISTINCT CONCAT(
"INSERT INTO ingo_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from ingo_sharesng_groups, horde_groups
WHERE ingo_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND ingo_sharesng_groups.group_uid=horde_groups.group_uid;

mnemo

select DISTINCT CONCAT(
"INSERT INTO mnemo_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from mnemo_sharesng_groups, horde_groups
WHERE mnemo_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND mnemo_sharesng_groups.group_uid=horde_groups.group_uid;

turba

select DISTINCT CONCAT(
"INSERT INTO turba_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from turba_sharesng_groups, horde_groups
WHERE turba_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND turba_sharesng_groups.group_uid=horde_groups.group_uid;

whups

select DISTINCT CONCAT(
"INSERT INTO whups_sharesng_groups VALUES(",
share_id,
", \"cn=",
horde_groups.group_name,
",ou=hordegroups,dc=domain,dc=com\"",
", ",
perm_2,
", ",
perm_4,
", ",
perm_8,
", ",
perm_16,
");"
)
as query from whups_sharesng_groups, horde_groups
WHERE whups_sharesng_groups.group_uid REGEXP "^^[0-9]+$"
AND whups_sharesng_groups.group_uid=horde_groups.group_uid;

Cache

Clear horde group cache and horde shares cache once you're done.

By script

TBD