Handle hostnames with upper-case letters
[webmin.git] / pptp-server / save_secret.cgi
1 #!/usr/local/bin/perl
2 # save_secret.cgi
3 # Update the secrets file to add or change a secret
4
5 require './pptp-server-lib.pl';
6 $access{'secrets'} || &error($text{'secrets_ecannot'});
7 &ReadParse();
8 &error_setup($text{'save_secret_esave'});
9
10 &lock_file($config{'pap_file'});
11 if (defined($in{'idx'})) {
12         $host = &get_ppp_hostname();
13         @seclist = grep { $_->{'server'} eq $host } &list_secrets();
14         %sec = %{$seclist[$in{'idx'}]};
15         if ($in{'delete'}) {
16                 &delete_secret(\%sec);
17                 &unlock_file($config{'pap_file'});
18                 &webmin_log("delete", "secret", $sec{'client'}, \%sec);
19                 &redirect("list_secrets.cgi");
20                 exit;
21                 }
22         }
23
24 if ($in{'client_def'}) { $sec{'client'} = ""; }
25 else { $sec{'client'} = $in{'client'}; }
26
27 $sec{'server'} = &get_ppp_hostname();
28
29 if ($in{'pass_mode'} == 0) { $sec{'secret'} = ""; }
30 elsif ($in{'pass_mode'} == 1) { $sec{'secret'} = "\@$in{'pass_file'}"; }
31 elsif ($in{'pass_mode'} == 3) { $sec{'secret'} = &opt_crypt($in{'pass_text'}); }
32
33 if ($in{'ips_mode'} == 0) { $sec{'ips'} = [ "*" ]; }
34 elsif ($in{'ips_mode'} == 1) { $sec{'ips'} = [ "-" ]; }
35 elsif ($in{'ips_mode'} == 2) {
36         @ips = split(/\s+/, $in{'ips'});
37         foreach $ip (@ips) {
38                 if (!&to_ipaddress($ip)) {
39                         &error(&text('save_secret_enoip', $ip));
40                         }
41                 }
42         $sec{'ips'} = \@ips;
43         }
44
45 if (defined($in{'idx'})) { &change_secret(\%sec); }
46 else { &create_secret(\%sec); }
47 &unlock_file($config{'pap_file'});
48 delete($sec{'secret'});
49 &webmin_log(defined($in{'idx'}) ? "modify" : "create",
50             "secret", $sec{'client'}, \%sec);
51 &redirect("list_secrets.cgi");
52