Handle hostnames with upper-case letters
[webmin.git] / pptp-server / save_options.cgi
1 #!/usr/local/bin/perl
2 # save_options.cgi
3 # Save PPP server options
4
5 require './pptp-server-lib.pl';
6 $access{'options'} || &error($text{'options_ecannot'});
7 &error_setup($text{'options_err'});
8 &ReadParse();
9
10 $conf = &get_config();
11 $option = &find_conf("option", $conf);
12 $option ||= $config{'ppp_options'};
13 &lock_file($option);
14 @opts = &parse_ppp_options($option);
15
16 # Validate inputs
17 $in{'mtu_def'} || $in{'mtu'} =~ /^\d+$/ || &error($text{'options_emtu'});
18 $in{'mru_def'} || $in{'mru'} =~ /^\d+$/ || &error($text{'options_emru'});
19 $in{'name_def'} || $in{'name'} =~ /^[A-Za-z0-9\.\-]+$/ ||
20         &error($text{'options_ename'});
21
22 # Save options
23 &save_ppp_option(\@opts, $option, "proxyarp",
24                  $in{'proxyarp'} ? { 'name' => 'proxyarp' } : undef);
25 &save_ppp_option(\@opts, $option, "lock",
26                  $in{'lock'} ? { 'name' => 'lock' } : undef);
27 &save_ppp_option(\@opts, $option, "mtu",
28                  $in{'mtu_def'} ? undef : { 'name' => 'mtu',
29                                             'value' => $in{'mtu'} });
30 &save_ppp_option(\@opts, $option, "mru",
31                  $in{'mru_def'} ? undef : { 'name' => 'mru',
32                                             'value' => $in{'mru'} });
33
34 if ($in{'auth'} == 0) {
35         &save_ppp_option(\@opts, $option, "auth", undef);
36         &save_ppp_option(\@opts, $option, "noauth", undef);
37         }
38 elsif ($in{'auth'} == 1) {
39         &save_ppp_option(\@opts, $option, "auth", undef);
40         &save_ppp_option(\@opts, $option, "noauth", { 'name' => 'noauth' });
41         }
42 else {
43         &save_ppp_option(\@opts, $option, "noauth", undef);
44         &save_ppp_option(\@opts, $option, "auth", { 'name' => 'auth' });
45         }
46 &parse_auth("pap");
47 &parse_auth("chap");
48 &save_ppp_option(\@opts, $option, "login",
49                  $in{'login'} ? { 'name' => 'login' } : undef);
50 &save_ppp_option(\@opts, $option, "name",
51                 $in{'name_def'} ? undef : { 'name' => 'name',
52                                             'value' => $in{'name'} });
53
54 &foreign_require("pptp-client", "pptp-client-lib.pl");
55 &pptp_client::parse_mppe_options(\@opts, $option);
56
57 if (&pptp_client::mppe_support() == 1) {
58         &parse_auth("mschap");
59         &parse_auth("mschap-v2");
60         }
61 else {
62         &parse_auth("chapms");
63         &parse_auth("chapms-v2");
64         }
65
66 # All done
67 &flush_file_lines();
68 &unlock_file($option);
69 &webmin_log("options", undef, undef, \%in);
70 &redirect("");
71
72 # parse_auth(name)
73 sub parse_auth
74 {
75 local $a = $_[0];
76 if ($in{$a} == 2) {
77         &save_ppp_option(\@opts, $option, "require-$a",
78                          { 'name' => "require-$a" });
79         &save_ppp_option(\@opts, $option, "refuse-$a", undef);
80         }
81 elsif ($in{$a} == 1) {
82         &save_ppp_option(\@opts, $option, "require-$a", undef);
83         &save_ppp_option(\@opts, $option, "refuse-$a", undef);
84         }
85 else {
86         &save_ppp_option(\@opts, $option, "require-$a", undef);
87         &save_ppp_option(\@opts, $option, "refuse-$a",
88                          { 'name' => "refuse-$a" });
89         }
90 }