Handle hostnames with upper-case letters
[webmin.git] / quota / copy_group.cgi
1 #!/usr/local/bin/perl
2 # copy_group.cgi
3 # Copy some group's quota to a number of others
4
5 require './quota-lib.pl';
6 &ReadParse();
7 $whatfailed = $text{'cgroup_efail'};
8 $access{'filesys'} eq "*" ||
9         &error($text{'cgroup_ecannot'});
10 &can_edit_group($in{'group'}) ||
11         &error($text{'cgroup_egallow'});
12 $access{'ro'} && &error($text{'cgroup_egallow'});
13
14 if ($in{'dest'} == 0) {
15         # Copy to all groups
16         setgrent();
17         while(@ginfo = getgrent()) { push(@copyto, $ginfo[0]); }
18         endgrent() if ($gconfig{'os_type'} ne 'hpux');
19         }
20 elsif ($in{'dest'} == 1) {
21         # Copy to selected groups
22         @copyto = split(/\s+/, $in{'groups'});
23         }
24 elsif ($in{'dest'} == 2) {
25         # Copy to groups containing users
26         foreach $u (split(/\s+/, $in{'users'})) {
27                 @uinfo = getpwnam($u);
28                 @ginfo = getgrgid($uinfo[3]);
29                 push(@copyto, $ginfo[0]);
30                 $user{$u}++;
31                 }
32         setgrent();
33         while(@ginfo = getgrent()) {
34                 foreach $m (split(/\s+/, $ginfo[3])) {
35                         if ($user{$m}) {
36                                 push(@copyto, $ginfo[0]);
37                                 last;
38                                 }
39                         }
40                 }
41         endgrent() if ($gconfig{'os_type'} ne 'hpux');
42         }
43 @copyto = &unique(@copyto);
44 @copyto = grep { $_ ne $in{'group'} } @copyto;
45 if (!@copyto) { &error($text{'cgroup_enogroup'}); }
46 foreach $c (@copyto) {
47         &can_edit_group($c) ||
48                 &error(&text('cgroup_eallowto', $c));
49         }
50
51 # Do the copy
52 &copy_group_quota($in{'group'}, @copyto);
53 &webmin_log("copy", "group", $in{'group'}, \%in);
54 &redirect("group_filesys.cgi?group=$in{'group'}");
55