Author: nextgens
Date: 2008-08-12 13:02:23 +0000 (Tue, 12 Aug 2008)
New Revision: 21757

Modified:
   trunk/freenet/src/freenet/node/NodeClientCore.java
   
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
Log:
Make that config option changeable on the fly... refactoring

Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java  2008-08-12 12:49:34 UTC 
(rev 21756)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java  2008-08-12 13:02:23 UTC 
(rev 21757)
@@ -83,15 +83,13 @@
        private File[] uploadAllowedDirs;
        private boolean uploadAllowedEverywhere;
        final FilenameGenerator tempFilenameGenerator;
-       private boolean encryptTempBucketFactory;
-       /** Might not be encrypted depending on @see encryptTempBucketFactory */
-       public final BucketFactory tempBucketFactory;
+       public final PaddedEphemerallyEncryptedBucketFactory tempBucketFactory;
+       public final PersistentTempBucketFactory persistentTempBucketFactory;
+       public final PersistentEncryptedTempBucketFactory 
persistentEncryptedTempBucketFactory;
        public final Node node;
        final NodeStats nodeStats;
        public final RandomSource random;
        final File tempDir;     // Persistent temporary buckets
-       public final PersistentTempBucketFactory persistentTempBucketFactory;
-       public final PersistentEncryptedTempBucketFactory 
persistentEncryptedTempBucketFactory;
        public final UserAlertManager alerts;
        final TextModeClientInterfaceServer tmci;
        TextModeClientInterface directTMCI;
@@ -200,16 +198,16 @@
                nodeConfig.register("encryptTempBuckets", true, sortOrder++, 
true, false, "NodeClientCore.encryptTempBuckets", 
"NodeClientCore.encryptTempBucketsLong", new BooleanCallback() {

                        public boolean get() {
-                               return encryptTempBucketFactory;
+                               return (tempBucketFactory == null ? true : 
tempBucketFactory.isEncrypting());
                        }

                        public void set(boolean val) throws 
InvalidConfigValueException {
-                               throw new UnsupportedOperationException("Can't 
be changed on the fly!");
+                               if((val == get()) || (tempBucketFactory == 
null)) return;
+                               tempBucketFactory.setEncryption(val);
                        }
                });
                BucketFactory _tempBucketFactory = new 
TempBucketFactory(tempFilenameGenerator);
-               encryptTempBucketFactory = 
nodeConfig.getBoolean("encryptTempBuckets");
-               tempBucketFactory = (encryptTempBucketFactory ? new 
PaddedEphemerallyEncryptedBucketFactory(_tempBucketFactory, random, 
node.fastWeakRandom, 1024) : _tempBucketFactory);
+               tempBucketFactory = new 
PaddedEphemerallyEncryptedBucketFactory(_tempBucketFactory, random, 
node.fastWeakRandom, 1024, nodeConfig.getBoolean("encryptTempBuckets"));

                // Downloads directory


Modified: 
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
===================================================================
--- 
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
   2008-08-12 12:49:34 UTC (rev 21756)
+++ 
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
   2008-08-12 13:02:23 UTC (rev 21757)
@@ -17,15 +17,29 @@
        final RandomSource strongPRNG;
        final Random weakPRNG;
        final int minSize;
+       private volatile boolean reallyEncrypt;

-       public PaddedEphemerallyEncryptedBucketFactory(BucketFactory factory, 
RandomSource strongPRNG, Random weakPRNG, int minSize) {
+       public PaddedEphemerallyEncryptedBucketFactory(BucketFactory factory, 
RandomSource strongPRNG, Random weakPRNG, int minSize, boolean reallyEncrypt) {
                baseFactory = factory;
                this.minSize = minSize;
                this.strongPRNG = strongPRNG;
                this.weakPRNG = weakPRNG;
+               this.reallyEncrypt = reallyEncrypt;
        }

        public Bucket makeBucket(long size) throws IOException {
-               return new 
PaddedEphemerallyEncryptedBucket(baseFactory.makeBucket(size), minSize, 
strongPRNG, weakPRNG);
+               Bucket realBucket = baseFactory.makeBucket(size);
+               if(!reallyEncrypt)
+                       return realBucket;
+               else
+                       return new PaddedEphemerallyEncryptedBucket(realBucket, 
minSize, strongPRNG, weakPRNG);
        }
+       
+       public void setEncryption(boolean value) {
+               reallyEncrypt = value;
+       }
+       
+       public boolean isEncrypting() {
+               return reallyEncrypt;
+       }
 }


Reply via email to