]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
Merge remote-tracking branch 'amarx/10538' into next
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 5 Jul 2014 20:42:32 +0000 (22:42 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 5 Jul 2014 20:42:32 +0000 (22:42 +0200)
config/cfgroot/general-functions.pl
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/routing.cgi

index 6fabf1c0583a0c9c2e5fa90f4966028671dffae0..1ef014a66cf67d303f8a32cf8dd2da5786542d5a 100644 (file)
@@ -598,6 +598,19 @@ sub checksubnets
        if (($ownnet{'RED_NETADDRESS'}          ne '' && $ownnet{'RED_NETADDRESS'}              ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;}
 }
 
+sub check_net_internal{
+       my $network=shift;
+       my ($ip,$cidr)=split(/\//,$network);
+       my %ownnet=();
+       my $errormessage;
+       $cidr=&iporsubtocidr($cidr);
+       #check if we use one of ipfire's networks (green,orange,blue)
+       &readhash("${General::swroot}/ethernet/settings", \%ownnet);
+       if (($ownnet{'GREEN_NETADDRESS'}        ne '' && $ownnet{'GREEN_NETADDRESS'}    ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;}
+       if (($ownnet{'ORANGE_NETADDRESS'}       ne '' && $ownnet{'ORANGE_NETADDRESS'}   ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;}
+       if (($ownnet{'BLUE_NETADDRESS'}         ne '' && $ownnet{'BLUE_NETADDRESS'}     ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;}
+       if (($ownnet{'RED_NETADDRESS'}          ne '' && $ownnet{'RED_NETADDRESS'}              ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;}
+}
 
 sub validport
 {
index b2ce05e97ac8f1b75ca6d972eecb39725dbe96a9..0cb41696fb58db26c1f61368ee5595c0d8ac52b7 100644 (file)
@@ -5041,7 +5041,7 @@ END
        my $id = 0;
        my $gif;
        my $col1="";
-       foreach my $key (sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
+       foreach my $key (sort { ncmp ($confighash{$a}[3],$confighash{$b}[3]) } sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
        if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; }
        if ($id % 2) {
                print "<tr>";
index 5798fb89689172ccf8a8903ac1295da809616b4f..c460a74e7ca1ab56d4d2dd44f8ecc9d69f9df6c2 100644 (file)
@@ -134,6 +134,27 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
        $errormessage = $Lang::tr{'invalid ip'}. " - ".$Lang::tr{'gateway ip'};
        }
 
+       #set networkip if not already correctly defined
+       my($ip,$cidr) = split(/\//,$settings{'IP'});
+       my $netip=&General::getnetworkip($ip,$cidr);
+       $settings{'IP'} = "$netip/$cidr";
+
+       #Check for already existing routing entry
+       foreach my $line (@current) {
+               chomp($line);                           # remove newline
+               my @temp=split(/\,/,$line);
+               $temp[2] ='' unless defined $temp[2]; # not always populated
+               $temp[3] ='' unless defined $temp[2]; # not always populated
+               #Same ip already used?
+               if($temp[1] eq $settings{'IP'}){
+                       $errormessage = $Lang::tr{'ccd err irouteexist'};
+                       last;
+               }
+               #Is the network part of an internal network?
+               $errormessage .= &General::check_net_internal($settings{'IP'});
+               last;
+       }
+
     unless ($errormessage) {
        if ($settings{'KEY1'} eq '') { #add or edit ?
            unshift (@current, "$settings{'EN'},$settings{'IP'},$settings{'GATEWAY'},$settings{'REMARK'}\n");