#!/usr/local/bin/perl # edit.cgi # Display a form for editing tunnel details require './pptp-client-lib.pl'; &ReadParse(); if ($in{'new'}) { &ui_print_header(undef, $text{'edit_title1'}, ""); } else { &ui_print_header(undef, $text{'edit_title2'}, ""); ($tunnel) = grep { $_->{'name'} eq $in{'tunnel'} } &list_tunnels(); &parse_comments($tunnel); $login = &find("name", $tunnel->{'opts'}); $sn = $login ? $login->{'value'} : &get_system_hostname(1); @secs = &list_secrets(); ($sec) = grep { $_->{'client'} eq $sn } @secs; } print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'edit_header'}
\n"; print "\n"; printf "\n", $tunnel->{'name'}; print "\n"; printf "\n", $tunnel->{'server'}; print "\n"; printf "\n", $login->{'value'}; print "\n"; printf "\n", $sec->{'secret'}; $remote = &find("remotename", $tunnel->{'opts'}); print "\n"; printf "\n", $remote->{'value'}; print "\n"; # Show PPP include file $file = &find("file", $tunnel->{'opts'}); $fmode = $in{'new'} ? 1 : !$file ? 0 : $file->{'value'} eq $config{'pptp_options'} ? 1 : 2; print "\n", $fmode == 2 ? $file->{'value'} : "", &file_chooser_button("file"); print "\n"; # Parse all route comments foreach $r (@{$tunnel->{'routes'}}) { if ($r =~ /^\s*add\s+-net\s+(\S+)\s+netmask\s+(\S+)\s+gw\s+(\S+)\s*$/) { # Net route to specific gateway push(@kroutes, [ 1, $1, $2, $3 ]); } elsif ($r =~ /^\s*add\s+-net\s+(\S+)\s+gw\s+(\S+)\s+netmask\s+(\S+)\s*$/) { # Net route to specific gateway push(@kroutes, [ 1, $1, $3, $2 ]); } elsif ($r =~ /^\s*add\s+-net\s+(\S+)\s+netmask\s+(\S+)\s+dev\s+(TUNNEL_DEV)\s*$/) { # Net route to other end push(@kroutes, [ 1, $1, $2, 'GW' ]); } elsif ($r =~ /^\s*add\s+-net\s+(\S+)\s+dev\s+(TUNNEL_DEV)\s+netmask\s+(\S+)\s*$/) { # Net route to other end push(@kroutes, [ 1, $1, $3, 'GW' ]); } elsif ($r =~ /^\s*add\s+-host\s+(\S+)\s+gw\s+(\S+)\s*$/) { # Host route to specific gateway push(@kroutes, [ 2, $1, undef, $2 ]); } elsif ($r =~ /^\s*add\s+-host\s+(\S+)\s+dev\s+(TUNNEL_DEV)\s*$/) { # Host route to specific gateway push(@kroutes, [ 2, $1, undef, 'GW' ]); } elsif ($r =~ /^\s*add\s+default\s+gw\s+(\S+)\s*$/) { # Default route to specific gateway $adddef = $1; } elsif ($r =~ /^\s*add\s+default\s+dev\s+(TUNNEL_DEV)\s*$/) { # Default route to other end $adddef = 'GW'; } elsif ($r =~ /^\s*delete\s+default\s*$/) { # Deleting old default route $deldef = 1; } else { push(@uroutes, $r); } } # Show default route options print "\n"; print "\n"; printf "\n", $deldef ? "" : "checked", $text{'no'}; # Show editable routes print "\n"; print "\n"; # Show other route commands print "\n"; print "\n"; print "\n"; # Show MPPE options print "\n"; &mppe_options_form($tunnel->{'opts'}); print "
$text{'edit_name'}$text{'edit_server'}
$text{'edit_login'} %s\n", $login ? "" : "checked", $text{'edit_same'}; printf "\n", $login ? "checked" : ""; printf "$text{'edit_pass'}
$text{'edit_remote'} %s\n", $remote ? "" : "checked", $text{'edit_auto'}; printf "\n", $remote ? "checked" : ""; printf "
$text{'edit_file'} \n"; printf " %s\n", $fmode == 0 ? "checked" : "", $text{'edit_none'}; printf " %s\n", $fmode == 1 ? "checked" : "", $text{'edit_global'}; printf " %s\n", $fmode == 2 ? "checked" : "", $text{'edit_ofile'}; printf " %s

$text{'edit_adddef'} \n"; printf " %s\n", $adddef eq "GW" ? "checked" : "", $text{'edit_def1'}; printf " %s\n", $adddef && $adddef ne "GW" ? "checked" : "", $text{'edit_def2'}; printf "\n", $adddef eq "GW" ? "" : $adddef; printf " %s\n", $adddef ? "" : "checked", $text{'no'}; print "
$text{'edit_deldef'} %s\n", $deldef ? "checked" : "", $text{'yes'}; printf " %s
$text{'edit_routes'}\n"; print " ", " ", " ", "\n"; $i = 0; foreach $r (@kroutes, [ 0, undef, undef, 'GW' ]) { print "\n"; print "\n"; print "\n"; print "\n"; printf "\n", $r->[3] eq 'GW' ? "" : $r->[3]; print "\n"; $i++; } print "
$text{'edit_type'}$text{'edit_net'}$text{'edit_mask'}$text{'edit_gw'}
%s\n", $r->[3] eq 'GW' ? "checked" : "", $text{'edit_gw_def'}; printf "\n", $r->[3] eq 'GW' ? "" : "checked"; printf "
$text{'edit_unknown'}

$text{'opts_msdesc'}
\n"; print "\n"; if ($in{'new'}) { print "\n"; } else { print "\n"; print "\n"; } print "
\n"; &ui_print_footer("", $text{'index_return'});