1
2use strict;
3use warnings;
4require 'acl-lib.pl';
5our ($config_directory);
6
7# Rename the .acl files for any groups to .gacl files
8sub module_install
9{
10# Fix up .acl files
11my @mods = &get_all_module_infos();
12my %isuser = map { $_->{'name'}, 1 } &list_users();
13foreach my $g (&list_groups()) {
14	next if ($isuser{$g->{'name'}});
15	next if ($g->{'proto'});
16	foreach my $m (@mods) {
17		if (-r "$config_directory/$m->{'dir'}/$g->{'name'}.acl") {
18			rename("$config_directory/$m->{'dir'}/$g->{'name'}.acl",
19			     "$config_directory/$m->{'dir'}/$g->{'name'}.gacl");
20			}
21		}
22	}
23
24# Update sub-groups in webmin.groups file to use @ names
25foreach my $g (&list_groups()) {
26	my (@newmembers, $any);
27	foreach my $u (@{$g->{'members'}}) {
28		if ($u !~ /^\@/ && !$isuser{$u}) {
29			push(@newmembers, '@'.$u);
30			$any = 1;
31			}
32		else {
33			push(@newmembers, $u);
34			}
35		}
36	$g->{'members'} = \@newmembers;
37	if ($any) {
38		&modify_group($g->{'name'}, $g);
39		}
40	}
41}
42
43