Revision: 2812
          http://ipcop.svn.sourceforge.net/ipcop/?rev=2812&view=rev
Author:   dotzball
Date:     2009-05-08 19:38:42 +0000 (Fri, 08 May 2009)

Log Message:
-----------
Check if an address is used as destination/in portforwarding and handle 
it accortingly.

Modified Paths:
--------------
    ipcop/trunk/html/cgi-bin/addresses.cgi
    ipcop/trunk/src/libs/DataAccess.pl

Modified: ipcop/trunk/html/cgi-bin/addresses.cgi
===================================================================
--- ipcop/trunk/html/cgi-bin/addresses.cgi      2009-05-08 18:03:56 UTC (rev 
2811)
+++ ipcop/trunk/html/cgi-bin/addresses.cgi      2009-05-08 19:38:42 UTC (rev 
2812)
@@ -428,9 +428,7 @@
         return;
     }
 
-    #
-    # TODO: Check if an address is used in Portforwarding, if yes no subnets 
are allowed
-    #
+    my $usedAsDest = &DATA::isUsedAsDestAdr($cgiparams{'ADR_NAME'});
 
     if ($cgiparams{'ADDRESS_TYPE'} eq 'ip') {
         unless (&General::validip($cgiparams{'ADDRESS_TXT'})) {
@@ -445,6 +443,14 @@
         unless (&General::validmask($cgiparams{'NETMASK'})) {
             $errormessage .= "$Lang::tr{'subnet is invalid'} <br />";
         }
+
+        # check if it is used in portforwardiing
+        if($usedAsDest == 2) {
+            if($cgiparams{'NETMASK'} ne '32' && $cgiparams{'NETMASK'} ne 
'255.255.255.255') {
+                $errormessage .= "$Lang::tr{'adr is used in portfw'}:<br />";
+                $errormessage .= "$Lang::tr{'only host ip adr allowed in 
portfw'}<br />";
+            }
+        }
     }
     elsif ($cgiparams{'ADDRESS_TYPE'} eq 'mac') {
 
@@ -455,6 +461,12 @@
             $errormessage .= "$Lang::tr{'invalid mac'} <br />";
         }
 
+        # check if it is used as destination
+        if($usedAsDest == 1) {
+           $errormessage .= "$Lang::tr{'adr is used as dest'}:<br />";
+           $errormessage .= "$Lang::tr{'mac adr not as dest'}<br />";
+        }
+
         # we don't need a mask when MAC is selected
         $cgiparams{'NETMASK'} = '';
     }

Modified: ipcop/trunk/src/libs/DataAccess.pl
===================================================================
--- ipcop/trunk/src/libs/DataAccess.pl  2009-05-08 18:03:56 UTC (rev 2811)
+++ ipcop/trunk/src/libs/DataAccess.pl  2009-05-08 19:38:42 UTC (rev 2812)
@@ -978,6 +978,45 @@
     return 0;
 }
 
+#######################################################
+# Check if an address is used as destination
+# Returns
+#       2 - if used as destination in portforwarding
+#       1 - if used as destionation (not portforwarding)
+#       0 - if not used as destination
+#######################################################
+sub isUsedAsDestAdr
+{
+    my $adr = shift;
+
+    my %ruleConfig = ();
+    &DATA::readRuleConfig(\%ruleConfig);
+
+    my $usedAsDest = 0;
+    my $usedInPfw = 0;
+    foreach my $type (keys %ruleConfig) {
+        foreach my $rule (@{$ruleConfig{$type}}) {
+
+            if($rule->{'DST_IP_TYPE'} eq 'custDestIP' && $rule->{'DST_IP'} eq 
$adr) {
+                $usedAsDest = 1;
+                if($type eq 'PORTFW') {
+                    $usedInPfw = 2;
+                }
+            }
+        }
+    }
+
+    if($usedInPfw == 2) {
+        return 2;
+    }
+    elsif( $usedAsDest == 1) {
+        return 1;
+    }
+
+    # not used as dest
+    return 0;
+}
+
 #EOF
 
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Ipcop-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ipcop-svn

Reply via email to