From: Alexander Marx Date: Mon, 26 Nov 2012 04:45:07 +0000 (+0100) Subject: OpenVPN ccd: try to adapt changes to latest next branch. X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=5068ac3822ac9afbee841ac417963b2c1343d809 OpenVPN ccd: try to adapt changes to latest next branch. --- diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index 9dd901138..3c090b080 100755 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -2579,6 +2579,8 @@ END if ($cgiparams{'ACTION'} eq 'editsave'){ my ($a,$b) =split (/\|/,$cgiparams{'ccdname'}); if ( $a ne $b){ &modccdnet($a,$b);} + $cgiparams{'ccdname'}=''; + $cgiparams{'ccdsubnet'}=''; } if ($cgiparams{'ACTION'} eq $Lang::tr{'ccd add'}) { @@ -2633,6 +2635,11 @@ END &Header::closebox(); } &Header::openbox('100%', 'LEFT',$Lang::tr{'ccd net'} ); + if ( -e "/var/run/openvpn.pid"){ + print "$Lang::tr{'attention'}:
"; + print "$Lang::tr{'ccd noaddnet'}

"; + } + print < @@ -3303,6 +3310,8 @@ if ($cgiparams{'TYPE'} eq 'host') { my @temp=(); my %ccdroutehash=(); my $keypoint=0; + my $ip; + my $cidr; if ($cgiparams{'IR'} ne ''){ @temp = split("\n",$cgiparams{'IR'}); &General::readhasharray("${General::swroot}/ovpn/ccdroute", \%ccdroutehash); @@ -3321,19 +3330,32 @@ if ($cgiparams{'TYPE'} eq 'host') { foreach $val (@temp){ chomp($val); $val=~s/\s*$//g; - my($ip,$cidr) = split(/\//,$val); - $ip=&General::getnetworkip($ip,&General::iporsubtocidr($cidr)); - $cidr=&General::iporsubtodec($cidr); - - #check if iroute exists in ccdroute + #check if iroute exists in ccdroute or if new iroute is part of an existing one foreach my $key (keys %ccdroutehash) { foreach my $oldiroute ( 1 .. $#{$ccdroutehash{$key}}){ - if ($ccdroutehash{$key}[$oldiroute] eq "$ip/$cidr") { - $errormessage=$Lang::tr{'ccd err irouteexist'}; - goto VPNCONF_ERROR; - } + if ($ccdroutehash{$key}[$oldiroute] eq "$val") { + $errormessage=$errormessage.$Lang::tr{'ccd err irouteexist'}; + goto VPNCONF_ERROR; + } + my ($ip1,$cidr1) = split (/\//, $val); + my ($ip2,$cidr2) = split (/\//, $ccdroutehash{$key}[$oldiroute]); + if (&General::IpInSubnet ($ip1,$ip2,$cidr2)){ + $errormessage=$errormessage.$Lang::tr{'ccd err irouteexist'}; + goto VPNCONF_ERROR; + } + } } + if (!&General::validipandmask($val)){ + $errormessage=$errormessage."Route ".$Lang::tr{'ccd invalid'}." ($val)"; + goto VPNCONF_ERROR; + }else{ + ($ip,$cidr) = split(/\//,$val); + $ip=&General::getnetworkip($ip,&General::iporsubtocidr($cidr)); + $cidr=&General::iporsubtodec($cidr); + $ccdroutehash{$keypoint}[$i] = $ip."/".$cidr; + + } #check for existing network IP's if (&General::IpInSubnet ($ip,$netsettings{GREEN_NETADDRESS},$netsettings{GREEN_NETMASK}) && $netsettings{GREEN_NETADDRESS} ne '0.0.0.0') diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 7fe336c13..1c32fb628 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -488,6 +488,7 @@ 'ccd modify' => 'Netzwerk ändern', 'ccd name' => 'Name', 'ccd net' => 'Statische IP-Adressen-Pools', +'ccd noaddnet' => 'Neue statische Netze können erst erstellt werden, wenn der openVPN Server gestoppt wurde.', 'ccd none' => 'Keine', 'ccd routes' => 'Routen:', 'ccd subnet' => 'Subnetz', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 4a2f73eef..0a3875050 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -506,6 +506,7 @@ 'ccd modify' => 'Change network', 'ccd name' => 'Name', 'ccd net' => 'Static IP address pools', +'ccd noaddnet' => 'You can only add new static networks when OpenVPN server is stopped.', 'ccd none' => 'None', 'ccd routes' => 'Routing:', 'ccd subnet' => 'Subnet',