Handle hostnames with upper-case letters
[webmin.git] / ipsec / save_config.cgi
1 #!/usr/local/bin/perl
2 # save_config.cgi
3 # Update or create the config section
4
5 require './ipsec-lib.pl';
6 &ReadParse();
7 &error_setup($text{'config_err'});
8 @conf = &get_config();
9 ($config) = grep { $_->{'name'} eq 'config' } @conf;
10 if (!$config) {
11         $config = { 'name' => 'config',
12                     'value' => 'setup',
13                     'values' => { } };
14         }
15
16 # Validate and store inputs
17 if ($in{'ifaces_mode'} == 0) {
18         delete($config->{'values'}->{'interfaces'});
19         }
20 elsif ($in{'ifaces_mode'} == 1) {
21         $config->{'values'}->{'interfaces'} = '%none';
22         }
23 elsif ($in{'ifaces_mode'} == 2) {
24         $config->{'values'}->{'interfaces'} = '%defaultroute';
25         }
26 else {
27         for($n=0; defined($ri = $in{"ri_$n"}); $n++) {
28                 next if (!$ri);
29                 $ii = $in{"ii_$n"};
30                 $done{$ri}++ && &error(&text('config_eri', $ri));
31                 push(@ifaces, "$ii=$ri");
32                 }
33         @ifaces || &error($text{'config_enone'});
34         $config->{'values'}->{'interfaces'} = join(" ", @ifaces);
35         }
36
37 if ($in{'syslog_def'}) {
38         delete($config->{'values'}->{'syslog'});
39         }
40 else {
41         $config->{'values'}->{'syslog'} = $in{'fac'}.".".$in{'pri'};
42         }
43
44 if ($in{'fwd'} eq 'yes' || $config->{'values'}->{'forwardcontrol'}) {
45         $config->{'values'}->{'forwardcontrol'} = $in{'fwd'};
46         }
47 else {
48         delete($config->{'values'}->{'forwardcontrol'});
49         }
50
51 if ($in{'fwd'} eq 'yes' || $config->{'values'}->{'forwardcontrol'}) {
52         $config->{'values'}->{'forwardcontrol'} = $in{'fwd'};
53         }
54 else {
55         delete($config->{'values'}->{'forwardcontrol'});
56         }
57
58 if ($in{'nat'} eq 'yes' || $config->{'values'}->{'nat_traversal'}) {
59         $config->{'values'}->{'nat_traversal'} = $in{'nat'};
60         }
61 else {
62         delete($config->{'values'}->{'nat_traversal'});
63         }
64
65 # Create or update the section
66 $file = $config->{'file'} || $config{'file'};
67 &lock_file($file);
68 if ($config->{'file'}) {
69         &modify_conn($config);
70         }
71 else {
72         &create_conn($config);
73         }
74 &unlock_file($file);
75 &webmin_log("config");
76 &redirect("");
77