Handle hostnames with upper-case letters
[webmin.git] / samba / save_sec.cgi
1 #!/usr/local/bin/perl
2 # save_sec.cgi
3 # Save secuirty options for a share
4
5 require './samba-lib.pl';
6 &ReadParse();
7 &lock_file($config{'smb_conf'});
8 &get_share($in{old_name});
9
10 # check acls
11
12 &error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
13 &error("$text{'eacl_np'} $text{'eacl_pusec'}")
14                 unless &can('rwsS', \%access, $in{old_name});
15 # save                          
16 &error_setup($text{'savesec_fail'});
17 &delval("read only");
18 &setval("writeable", $in{writeable});
19 if ($in{guest} == 0) {
20         &delval("public"); &delval("guest only");
21         }
22 elsif ($in{guest} == 1) {
23         &setval("public", "yes"); &delval("guest only");
24         }
25 else {
26         &setval("public", "yes"); &setval("guest only", "yes");
27         }
28 &setval("valid users",
29         join(',', &split_input($in{'valid_users_u'}),
30                   &split_input($in{'valid_users_g'}, '@')));
31 &setval("invalid users",
32         join(',', &split_input($in{'invalid_users_u'}),
33                   &split_input($in{'invalid_users_g'}, '@')));
34 &setval("user",
35         join(',', &split_input($in{'user_u'}),
36                   &split_input($in{'user_g'}, '@')));
37 &setval("read list",
38         join(',', &split_input($in{'read_list_u'}),
39                   &split_input($in{'read_list_g'}, '@')));
40 &setval("write list",
41         join(',', &split_input($in{'write_list_u'}),
42                   &split_input($in{'write_list_g'}, '@')));
43 if (!$in{allow_hosts_all} && $in{allow_hosts} =~ /\S/) {
44         &setval("allow hosts", $in{allow_hosts});
45         }
46 else { &delval("allow hosts"); }
47 if (!$in{deny_hosts_all} && $in{deny_hosts} =~ /\S/) {
48         &setval("deny hosts", $in{deny_hosts});
49         }
50 else { &delval("deny hosts"); }
51 &setval("guest account", $in{guest_account});
52 &setval("only user", $in{only_user});
53 &setval("revalidate", $in{revalidate});
54
55 &modify_share($in{old_name}, $in{old_name});
56 &unlock_file($config{'smb_conf'});
57 &webmin_log("save", "sec", $in{old_name}, \%in);
58 if (&istrue("printable") || $in{'printer'})
59         { &redirect("edit_pshare.cgi?share=".&urlize($in{old_name})); }
60 else
61         { &redirect("edit_fshare.cgi?share=".&urlize($in{old_name})); }
62
63 # split_input(string, [prepend])
64 sub split_input
65 {
66 local @rv;
67 local $str = $_[0];
68 while($str =~ /^\s*(\S*"[^"]+"\S*)(.*)$/ || $str =~ /^\s*(\S+)(.*)$/) {
69         push(@rv, $_[1].$1);
70         $str = $2;
71         }
72 return @rv;
73 }
74