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;
+ }
}