mirror of
https://github.com/webmin/webmin.git
synced 2025-07-21 23:40:34 +00:00
52 lines
1.2 KiB
Perl
Executable File
52 lines
1.2 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_group.cgi
|
|
# Update or delete a Samba group
|
|
|
|
require './samba-lib.pl';
|
|
|
|
$access{'maint_groups'} || &error($text{'groups_ecannot'});
|
|
&ReadParse();
|
|
@groups = &list_groups();
|
|
$group = $groups[$in{'idx'}] if (!$in{'new'});
|
|
$oldname = $group->{'name'} || $in{'name'};
|
|
|
|
if ($in{'delete'}) {
|
|
# Just remove this group
|
|
&delete_group($group);
|
|
}
|
|
else {
|
|
# Validate inputs
|
|
&error_setup($text{'gsave_err'});
|
|
if ($in{'new'}) {
|
|
$in{'name'} =~ /\S/ || &error($text{'gsave_ename'});
|
|
$group->{'name'} = $in{'name'};
|
|
}
|
|
$group->{'type'} = $in{'type'};
|
|
if ($in{'unix_def'}) {
|
|
$group->{'unix'} = -1;
|
|
}
|
|
else {
|
|
getgrnam($in{'unix'}) || $in{'unix'} =~ /^\-?\d+$/ ||
|
|
&error($text{'gsave_eunix'});
|
|
$group->{'unix'} = $in{'unix'};
|
|
}
|
|
$group->{'desc'} = $in{'desc'};
|
|
if ($in{'new'} && !$in{'priv_def'}) {
|
|
$in{'priv'} =~ /\S/ || &error($text{'gsave_epriv'});
|
|
$in{'type'} eq 'l' || &error($text{'gsave_elocal'});
|
|
$group->{'priv'} = $in{'priv'};
|
|
}
|
|
|
|
# Update or create the group
|
|
if ($in{'new'}) {
|
|
&create_group($group);
|
|
}
|
|
else {
|
|
&modify_group($group);
|
|
}
|
|
}
|
|
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
|
|
"group", $oldname, \%group);
|
|
&redirect("list_groups.cgi");
|
|
|