]> git.ipfire.org Git - people/amarx/ipfire-2.x.git/blobdiff - html/cgi-bin/ovpnmain.cgi
CCD 0.2
[people/amarx/ipfire-2.x.git] / html / cgi-bin / ovpnmain.cgi
index 1b1069b7425220dde13e79010300d33a6d10c291..4e0c0f011a79690c6b1108bea3b4942a165f3abd 100755 (executable)
@@ -40,6 +40,7 @@ use warnings;
 use CGI::Carp 'fatalsToBrowser';
 #workaround to suppress a warning when a variable is used only once
 my @dummy = ( ${Header::colourgreen} );
+my @dummy = ( ${Header::colourblue} );
 undef (@dummy);
 
 my %color = ();
@@ -3214,8 +3215,17 @@ if ($confighash{$cgiparams{'KEY'}}) {
        my %ccdroute2hash=();
        my $val=0;
        my $i=1;
-       if ($cgiparams{'IFROUTE'} ne ''){
-               &General::readhasharray("${General::swroot}/ovpn/ccdroute2", \%ccdroute2hash);
+       
+       &General::readhasharray("${General::swroot}/ovpn/ccdroute2", \%ccdroute2hash);
+       if($cgiparams{'IFROUTE'} eq $Lang::tr{'ccd none'} || $cgiparams{'IFROUTE'} eq '') { 
+                       undef $cgiparams{'IFROUTE'};
+                       foreach my $key (keys %ccdroute2hash){
+                               if ($ccdroute2hash{$key}[0] eq $cgiparams{'NAME'}) {
+                                       delete $ccdroute2hash{$key};
+                               }
+                       }
+                       &General::writehasharray("${General::swroot}/ovpn/ccdroute2", \%ccdroute2hash);
+       }else{
                #find key to use
                foreach my $key (keys %ccdroute2hash) {
                        if ($ccdroute2hash{$key}[0] eq $cgiparams{'NAME'}) {
@@ -3226,7 +3236,7 @@ if ($confighash{$cgiparams{'KEY'}}) {
                        }
                }
                $ccdroute2hash{$keypoint}[0]=$cgiparams{'NAME'};
-               @temp = split("\n",$cgiparams{'IFROUTE'});
+               @temp = split(/\|/,$cgiparams{'IFROUTE'});
                foreach $val (@temp){
                        chomp($val);
                        $val=~s/\s*$//g; 
@@ -3264,10 +3274,7 @@ if ($confighash{$cgiparams{'KEY'}}) {
                        goto VPNCONF_ERROR;
        }
        if ($cgiparams{'CCD_DNS2'} ne ''){
-               
        }
-       
-       
        if ($cgiparams{'CCD_WINS'} ne '' &&  ! &General::validip($cgiparams{'CCD_WINS'})) {
                        $errormessage=$errormessage."<br>".$Lang::tr{'invalid input for dhcp wins'};
                        goto VPNCONF_ERROR;
@@ -4088,68 +4095,77 @@ END
                print"</td></tr>";
        }
        print "</table><br><br>";
-print <<END
-<table border='0' width='100%'>
-<tr><td colspan='4'><hr><br><b>$Lang::tr{'ccd client options'}</td></tr>
-<tr><td colspan='4' height='20'></td></tr>
-<tr><td width='20%'>Redirect Gateway:</td><td colspan='3'><input type='checkbox' name='RG' $checked{'RG'}{'on'} /></td></tr>
-<tr><td colspan='4'>&nbsp</td></tr>
-<tr><td valign='top'>$Lang::tr{'ccd iroute'}<br>$Lang::tr{'ccd iroute2'}</td><td align='left' width='30%'><textarea name='IR' cols='26' rows='6' wrap='off'>
+       
+
+       
+       print <<END
+       <table border='0' width='100%'>
+       <tr><td colspan='4'><hr><br><b>$Lang::tr{'ccd client options'}</td></tr>
+       <tr><td colspan='4' height='20'></td></tr>
+       <tr><td width='20%'>Redirect Gateway:</td><td colspan='3'><input type='checkbox' name='RG' $checked{'RG'}{'on'} /></td></tr>
+       <tr><td colspan='4'>&nbsp</td></tr>
+       <tr><td valign='top'>$Lang::tr{'ccd iroute'}<br>$Lang::tr{'ccd iroute2'}</td><td align='left' width='30%'><textarea name='IR' cols='26' rows='6' wrap='off'>
 END
 ;
-
-if ($cgiparams{'IR'} ne ''){
-       print $cgiparams{'IR'};
-}else{
-       &General::readhasharray ("${General::swroot}/ovpn/ccdroute", \%ccdroutehash);
-       foreach my $key (keys %ccdroutehash) {
-               if( $cgiparams{'NAME'} eq $ccdroutehash{$key}[0]){
-                       foreach my $i (1 .. $#{$ccdroutehash{$key}}) {
-                                       $ccdroutehash{$key}[$i].="\n";
-                                       print $ccdroutehash{$key}[$i];
-                                       $cgiparams{'IR'} .= $ccdroutehash{$key}[$i];
+       
+       if ($cgiparams{'IR'} ne ''){
+               print $cgiparams{'IR'};
+       }else{
+               &General::readhasharray ("${General::swroot}/ovpn/ccdroute", \%ccdroutehash);
+               foreach my $key (keys %ccdroutehash) {
+                       if( $cgiparams{'NAME'} eq $ccdroutehash{$key}[0]){
+                               foreach my $i (1 .. $#{$ccdroutehash{$key}}) {
+                                               $ccdroutehash{$key}[$i].="\n";
+                                               print $ccdroutehash{$key}[$i];
+                                               $cgiparams{'IR'} .= $ccdroutehash{$key}[$i];
+                               }
                        }
                }
        }
-}
-print <<END
-</textarea></td><td valign='top' colspan='2'>$Lang::tr{'ccd iroutehint'}</td></tr>
-<tr><td colspan='4'><br></td></tr>
-<tr><td valign='top' rowspan='3'>$Lang::tr{'ccd iroute'}<br>$Lang::tr{'ccd iroute3'}</td><td align='left' width='30%' rowspan='3'><textarea name='IFROUTE' cols='26' rows='6' wrap='off'>
+        
+       print <<END
+       </textarea></td><td valign='top' colspan='2'>$Lang::tr{'ccd iroutehint'}</td></tr>
+       <tr><td colspan='4'><br></td></tr>
+       <tr><td valign='top' rowspan='3'>$Lang::tr{'ccd iroute'}<br>$Lang::tr{'ccd iroute3'}</td><td align='left' valign='top' rowspan='3'><select name='IFROUTE' style="width: 205px"; multiple>
 END
 ;
-if ($cgiparams{'IFROUTE'} ne ''){
-       print $cgiparams{'IFROUTE'};
-}else{
-       &General::readhasharray ("${General::swroot}/ovpn/ccdroute2", \%ccdroute2hash);
-       foreach my $key (keys %ccdroute2hash) {
-               if( $cgiparams{'NAME'} eq $ccdroute2hash{$key}[0]){
-                       foreach my $i (1 .. $#{$ccdroute2hash{$key}}) {
-                                       $ccdroute2hash{$key}[$i].="\n";
-                                       print $ccdroute2hash{$key}[$i];
-                                       $cgiparams{'IFROUTE'} .= $ccdroutehash{$key}[$i];
+       our @current = ();
+               open(FILE, "${General::swroot}/main/routing") ;
+           @current = <FILE>;
+           close (FILE);
+               &General::readhasharray ("${General::swroot}/ovpn/ccdroute2", \%ccdroute2hash);
+               my $set=0;
+               print"<option>$Lang::tr{'ccd none'}</option>";
+               foreach my $line (@current) {
+                       chomp($line);                           # remove newline
+                       my @temp=split(/\,/,$line);
+                       $temp[1] ='' unless defined $temp[1]; # not always populated
+                       $temp[1]=&General::iporsubtodec($temp[1]);
+                       foreach my $key (keys %ccdroute2hash) {
+                               if($ccdroute2hash{$key}[0] eq $cgiparams{'NAME'}){
+                                       foreach my $i (1 .. $#{$ccdroute2hash{$key}}) {
+                                                       if($ccdroute2hash{$key}[$i] eq &General::iporsubtodec($temp[1])){
+                                                               $set=1;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if ($set == '1'){ print"<option selected>$temp[1]</option>";$set=0;}else{print"<option>$temp[1]</option>";}
                        }
-               }
-       }
-}
-
-
-print<<END
-</textarea></td><td valign='top'>DNS1:</td><td valign='top'><input type='TEXT' name='CCD_DNS1' value='$cgiparams{'CCD_DNS1'}' size='30' /></td></tr>
-<tr valign='top'><td>DNS2:</td><td><input type='TEXT' name='CCD_DNS2' value='$cgiparams{'CCD_DNS2'}' size='30' /></td></tr>
-<tr valign='top'><td valign='top'>WINS:</td><td><input type='TEXT' name='CCD_WINS' value='$cgiparams{'CCD_WINS'}' size='30' /></td></tr>
-
-</table><br><hr>
-
-
+               
+       
+       
+       print<<END
+       </select></td><td valign='top'>DNS1:</td><td valign='top'><input type='TEXT' name='CCD_DNS1' value='$cgiparams{'CCD_DNS1'}' size='30' /></td></tr>
+       <tr valign='top'><td>DNS2:</td><td><input type='TEXT' name='CCD_DNS2' value='$cgiparams{'CCD_DNS2'}' size='30' /></td></tr>
+       <tr valign='top'><td valign='top'>WINS:</td><td><input type='TEXT' name='CCD_WINS' value='$cgiparams{'CCD_WINS'}' size='30' /></td></tr></table><br><hr>
+       
 END
 ;
-
-   
 #CCD End
 #########      
-         
+    
          
          }     
 #          if ($cgiparams{'KEY'}) {