Author: toad
Date: 2008-09-03 21:50:56 +0000 (Wed, 03 Sep 2008)
New Revision: 22386

Modified:
   trunk/freenet/src/freenet/node/Node.java
Log:
Enable FOAF on changing seclevel unless the network level disables opennet and 
the friends threat level is HIGH.


Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-09-03 21:43:44 UTC (rev 
22385)
+++ trunk/freenet/src/freenet/node/Node.java    2008-09-03 21:50:56 UTC (rev 
22386)
@@ -75,6 +75,7 @@
 import freenet.keys.SSKVerifyException;
 import freenet.l10n.L10n;
 import freenet.node.NodeDispatcher.NodeDispatcherCallback;
+import freenet.node.SecurityLevels.FRIENDS_THREAT_LEVEL;
 import freenet.node.SecurityLevels.NETWORK_THREAT_LEVEL;
 import freenet.node.updater.NodeUpdateManager;
 import freenet.node.useralerts.AbstractUserAlert;
@@ -963,6 +964,39 @@
                });
                routeAccordingToOurPeersLocation = 
nodeConfig.getBoolean("routeAccordingToOurPeersLocation");

+               securityLevels.addNetworkThreatLevelListener(new 
SecurityLevelListener<NETWORK_THREAT_LEVEL>() {
+
+                       public void onChange(NETWORK_THREAT_LEVEL oldLevel, 
NETWORK_THREAT_LEVEL newLevel) {
+                               synchronized(Node.this) {
+                                       boolean wantFOAF = true;
+                                       if(newLevel == 
NETWORK_THREAT_LEVEL.MAXIMUM || newLevel == NETWORK_THREAT_LEVEL.HIGH) {
+                                               // Opennet is disabled.
+                                               
if(securityLevels.friendsThreatLevel == FRIENDS_THREAT_LEVEL.HIGH)
+                                                       wantFOAF = false;
+                                       }
+                                       routeAccordingToOurPeersLocation = 
wantFOAF;
+                               }
+                       }
+                       
+               });
+               
+               securityLevels.addFriendsThreatLevelListener(new 
SecurityLevelListener<FRIENDS_THREAT_LEVEL>() {
+
+                       public void onChange(FRIENDS_THREAT_LEVEL oldLevel, 
FRIENDS_THREAT_LEVEL newLevel) {
+                               synchronized(Node.this) {
+                                       boolean wantFOAF = true;
+                                       NETWORK_THREAT_LEVEL networkLevel = 
securityLevels.networkThreatLevel;
+                                       if(networkLevel == 
NETWORK_THREAT_LEVEL.MAXIMUM || networkLevel == NETWORK_THREAT_LEVEL.HIGH) {
+                                               // Opennet is disabled.
+                                               if(newLevel == 
FRIENDS_THREAT_LEVEL.HIGH)
+                                                       wantFOAF = false;
+                                       }
+                                       routeAccordingToOurPeersLocation = 
wantFOAF;
+                               }
+                       }
+                       
+               });
+               
                nodeConfig.register("enableSwapQueueing", true, sortOrder++, 
true, false, "Node.enableSwapQueueing", "Node.enableSwapQueueingLong", new 
BooleanCallback() {
                        public Boolean get() {
                                return enableSwapQueueing;


Reply via email to