Current File : //proc/thread-self/root/usr/share/webmin/samba/save_group.cgi |
#!/usr/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");