mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
56 lines
1.4 KiB
Perl
Executable File
56 lines
1.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# copy_group.cgi
|
|
# Copy some group's quota to a number of others
|
|
|
|
require './quota-lib.pl';
|
|
&ReadParse();
|
|
$whatfailed = $text{'cgroup_efail'};
|
|
$access{'filesys'} eq "*" ||
|
|
&error($text{'cgroup_ecannot'});
|
|
&can_edit_group($in{'group'}) ||
|
|
&error($text{'cgroup_egallow'});
|
|
$access{'ro'} && &error($text{'cgroup_egallow'});
|
|
|
|
if ($in{'dest'} == 0) {
|
|
# Copy to all groups
|
|
setgrent();
|
|
while(@ginfo = getgrent()) { push(@copyto, $ginfo[0]); }
|
|
endgrent() if ($gconfig{'os_type'} ne 'hpux');
|
|
}
|
|
elsif ($in{'dest'} == 1) {
|
|
# Copy to selected groups
|
|
@copyto = split(/\s+/, $in{'groups'});
|
|
}
|
|
elsif ($in{'dest'} == 2) {
|
|
# Copy to groups containing users
|
|
foreach $u (split(/\s+/, $in{'users'})) {
|
|
@uinfo = getpwnam($u);
|
|
@ginfo = getgrgid($uinfo[3]);
|
|
push(@copyto, $ginfo[0]);
|
|
$user{$u}++;
|
|
}
|
|
setgrent();
|
|
while(@ginfo = getgrent()) {
|
|
foreach $m (split(/\s+/, $ginfo[3])) {
|
|
if ($user{$m}) {
|
|
push(@copyto, $ginfo[0]);
|
|
last;
|
|
}
|
|
}
|
|
}
|
|
endgrent() if ($gconfig{'os_type'} ne 'hpux');
|
|
}
|
|
@copyto = &unique(@copyto);
|
|
@copyto = grep { $_ ne $in{'group'} } @copyto;
|
|
if (!@copyto) { &error($text{'cgroup_enogroup'}); }
|
|
foreach $c (@copyto) {
|
|
&can_edit_group($c) ||
|
|
&error(&text('cgroup_eallowto', $c));
|
|
}
|
|
|
|
# Do the copy
|
|
©_group_quota($in{'group'}, @copyto);
|
|
&webmin_log("copy", "group", $in{'group'}, \%in);
|
|
&redirect("group_filesys.cgi?group=$in{'group'}");
|
|
|