Handle hostnames with upper-case letters
[webmin.git] / samba / save_group.cgi
1 #!/usr/local/bin/perl
2 # save_group.cgi
3 # Update or delete a Samba group
4
5 require './samba-lib.pl';
6
7 $access{'maint_groups'} || &error($text{'groups_ecannot'});
8 &ReadParse();
9 @groups = &list_groups();
10 $group = $groups[$in{'idx'}] if (!$in{'new'});
11 $oldname = $group->{'name'} || $in{'name'};
12
13 if ($in{'delete'}) {
14         # Just remove this group
15         &delete_group($group);
16         }
17 else {
18         # Validate inputs
19         &error_setup($text{'gsave_err'});
20         if ($in{'new'}) {
21                 $in{'name'} =~ /\S/ || &error($text{'gsave_ename'});
22                 $group->{'name'} = $in{'name'};
23                 }
24         $group->{'type'} = $in{'type'};
25         if ($in{'unix_def'}) {
26                 $group->{'unix'} = -1;
27                 }
28         else {
29                 getgrnam($in{'unix'}) || $in{'unix'} =~ /^\-?\d+$/ ||
30                         &error($text{'gsave_eunix'});
31                 $group->{'unix'} = $in{'unix'};
32                 }
33         $group->{'desc'} = $in{'desc'};
34         if ($in{'new'} && !$in{'priv_def'}) {
35                 $in{'priv'} =~ /\S/ || &error($text{'gsave_epriv'});
36                 $in{'type'} eq 'l' || &error($text{'gsave_elocal'});
37                 $group->{'priv'} = $in{'priv'};
38                 }
39
40         # Update or create the group
41         if ($in{'new'}) {
42                 &create_group($group);
43                 }
44         else {
45                 &modify_group($group);
46                 }
47         }
48 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
49             "group", $oldname, \%group);
50 &redirect("list_groups.cgi");
51