Handle hostnames with upper-case letters
[webmin.git] / usermin / save_ipkey.cgi
1 #!/usr/local/bin/perl
2 # Save, create or delete an IP-specific SSL key
3
4 require './usermin-lib.pl';
5 &ReadParse();
6 &get_usermin_miniserv_config(\%miniserv);
7 @ipkeys = &webmin::get_ipkeys(\%miniserv);
8 if (!$in{'new'}) {
9         $ipkey = $ipkeys[$in{'idx'}];
10         }
11 else {
12         $ipkey = { };
13         }
14
15 if ($in{'delete'}) {
16         # Just remove this entry
17         splice(@ipkeys, $in{'idx'}, 1);
18         }
19 else {
20         # Validate inputs
21         &error_setup($text{'ipkey_err'});
22         @ips = split(/\s+/, $in{'ips'});
23         foreach $i (@ips) {
24                 &check_ipaddress($i) ||
25                         &error(&text('ipkey_eip', $i));
26                 }
27         @ips || &error(&text('ipkey_eips'));
28         $ipkey->{'ips'} = \@ips;
29         &webmin::validate_key_cert($in{'key'}, $in{'cert_def'} ? undef : $in{'cert'});
30         $ipkey->{'key'} = $in{'key'};
31         $ipkey->{'cert'} = $in{'cert_def'} ? undef : $in{'cert'};
32         if ($in{'extracas_mode'} == 0) {
33                 delete($ipkey->{'extracas'});
34                 }
35         elsif ($in{'extracas_mode'} == 2) {
36                 $ipkey->{'extracas'} = 'none';
37                 }
38         else {
39                 @files = split(/\s+/, $in{'extracas'});
40                 @files || &error($text{'ipkey_eextracas'});
41                 foreach $f (@files) {
42                         -r $f || &error(&text('ipkey_eextraca', $f));
43                         }
44                 $ipkey->{'extracas'} = join(' ', @files);
45                 }
46
47         # Save or add
48         if ($in{'new'}) {
49                 push(@ipkeys, $ipkey);
50                 }
51         }
52
53 &webmin::save_ipkeys(\%miniserv, \@ipkeys);
54 &lock_file($usermin_miniserv_config);
55 &put_usermin_miniserv_config(\%miniserv);
56 &unlock_file($usermin_miniserv_config);
57 &restart_usermin_miniserv();
58 &webmin_log("ipkey");
59 &redirect("edit_ssl.cgi?mode=ips");
60