Author: toad
Date: 2008-09-03 22:07:53 +0000 (Wed, 03 Sep 2008)
New Revision: 22389

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeCryptoConfig.java
Log:
Turn off alwaysAllowLocalIPs on darknet when friends security level is set to 
HIGH. Turn it on when friends security level is set from HIGH to something 
lower.


Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-09-03 22:02:57 UTC (rev 
22388)
+++ trunk/freenet/src/freenet/node/Node.java    2008-09-03 22:07:53 UTC (rev 
22389)
@@ -1025,7 +1025,7 @@
                // @see #191
                if(oldConfig != null && 
"-1".equals(oldConfig.get("node.listenPort")))
                        throw new 
NodeInitException(NodeInitException.EXIT_COULD_NOT_BIND_USM, "Your freenet.ini 
file is corrupted! 'listenPort=-1'");
-               NodeCryptoConfig darknetConfig = new 
NodeCryptoConfig(nodeConfig, sortOrder++, false, false);
+               NodeCryptoConfig darknetConfig = new 
NodeCryptoConfig(nodeConfig, sortOrder++, false, false, securityLevels);
                sortOrder += NodeCryptoConfig.OPTION_COUNT;

                darknetCrypto = new NodeCrypto(this, false, darknetConfig, 
startupTime, enableARKs);
@@ -1283,7 +1283,7 @@
                        maxOpennetPeers = 20;
                }

-               opennetCryptoConfig = new NodeCryptoConfig(opennetConfig, 2 /* 
0 = enabled */, true, true);
+               opennetCryptoConfig = new NodeCryptoConfig(opennetConfig, 2 /* 
0 = enabled */, true, true, securityLevels);

                if(opennetEnabled) {
                        opennet = new OpennetManager(this, opennetCryptoConfig, 
System.currentTimeMillis(), isAllowedToConnectToSeednodes);

Modified: trunk/freenet/src/freenet/node/NodeCryptoConfig.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeCryptoConfig.java        2008-09-03 
22:02:57 UTC (rev 22388)
+++ trunk/freenet/src/freenet/node/NodeCryptoConfig.java        2008-09-03 
22:07:53 UTC (rev 22389)
@@ -8,6 +8,7 @@
 import freenet.config.InvalidConfigValueException;
 import freenet.config.SubConfig;
 import freenet.io.comm.FreenetInetAddress;
+import freenet.node.SecurityLevels.FRIENDS_THREAT_LEVEL;
 import freenet.support.Logger;
 import freenet.support.api.BooleanCallback;
 import freenet.support.api.IntCallback;
@@ -49,7 +50,7 @@
         * aggressive handshakes (every 10-30 seconds). */
        private boolean assumeNATed;

-       NodeCryptoConfig(SubConfig config, int sortOrder, boolean onePerIP, 
boolean isOpennet) throws NodeInitException {
+       NodeCryptoConfig(SubConfig config, int sortOrder, boolean onePerIP, 
boolean isOpennet, SecurityLevels securityLevels) throws NodeInitException {
                this.isOpennet = isOpennet;

                config.register("listenPort", -1 /* means random */, 
sortOrder++, true, true, "Node.port", "Node.portLong",     new IntCallback() {
@@ -157,6 +158,19 @@
                });
                alwaysAllowLocalAddresses = 
config.getBoolean("alwaysAllowLocalAddresses");

+               if(!isOpennet) {
+                       securityLevels.addFriendsThreatLevelListener(new 
SecurityLevelListener<FRIENDS_THREAT_LEVEL>() {
+
+                               public void onChange(FRIENDS_THREAT_LEVEL 
oldLevel, FRIENDS_THREAT_LEVEL newLevel) {
+                                       if(newLevel == 
FRIENDS_THREAT_LEVEL.HIGH)
+                                               alwaysAllowLocalAddresses = 
false;
+                                       if(oldLevel == 
FRIENDS_THREAT_LEVEL.HIGH)
+                                               alwaysAllowLocalAddresses = 
false;
+                               }
+                               
+                       });
+               }
+               
                config.register("assumeNATed", true, sortOrder++, true, true, 
"Node.assumeNATed", "Node.assumeNATedLong", new BooleanCallback() {

                        public Boolean get() {


Reply via email to