mirror of
https://github.com/webmin/webmin.git
synced 2025-07-23 00:30:33 +00:00
54 lines
1.3 KiB
Perl
Executable File
54 lines
1.3 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Create, update or delete a group
|
|
|
|
require './htaccess-lib.pl';
|
|
&ReadParse();
|
|
&error_setup($text{'gsave_err'});
|
|
@dirs = &list_directories();
|
|
($dir) = grep { $_->[0] eq $in{'dir'} } @dirs;
|
|
&can_access_dir($dir->[0]) || &error($text{'dir_ecannot'});
|
|
&lock_file($dir->[1]);
|
|
|
|
&switch_user();
|
|
$groups = &list_groups($dir->[4]);
|
|
if (!$in{'new'}) {
|
|
$group = $groups->[$in{'idx'}];
|
|
$loggroup = $group->{'group'};
|
|
}
|
|
else {
|
|
$loggroup = $in{'group'};
|
|
}
|
|
|
|
if ($in{'delete'}) {
|
|
# Just delete this group
|
|
&delete_group($group);
|
|
}
|
|
else {
|
|
# Validate inputs
|
|
$in{'group'} || &error($text{'gsave_egroup1'});
|
|
$in{'group'} =~ /:/ && &error($text{'gsave_egroup2'});
|
|
$in{'group'} =~ /^\S+$/ || &error($text{'gsave_egroup2'});
|
|
if ($in{'new'} || $group->{'group'} ne $in{'group'}) {
|
|
($clash) = grep { $_->{'group'} eq $in{'group'} } @$groups;
|
|
$clash && &error($text{'gsave_eclash'});
|
|
}
|
|
|
|
# Actually save
|
|
$group->{'group'} = $in{'group'};
|
|
$group->{'enabled'} = $in{'enabled'};
|
|
$group->{'members'} = [ split(/\s+/, $in{'members'}) ];
|
|
if ($in{'new'}) {
|
|
&create_group($group, $dir->[4]);
|
|
}
|
|
else {
|
|
&modify_group($group);
|
|
}
|
|
}
|
|
&switch_back();
|
|
|
|
&unlock_file($dir->[1]);
|
|
&webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify",
|
|
"group", $loggroup, $group);
|
|
&redirect("");
|
|
|