Author: j16sdiz
Date: 2008-09-02 15:13:36 +0000 (Tue, 02 Sep 2008)
New Revision: 22349
Added:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginL10n.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginThemed.java
Modified:
branches/saltedhashstore/freenet/.settings/org.eclipse.core.resources.prefs
branches/saltedhashstore/freenet/src/freenet/client/ArchiveContext.java
branches/saltedhashstore/freenet/src/freenet/client/ArchiveManager.java
branches/saltedhashstore/freenet/src/freenet/client/DefaultMIMETypes.java
branches/saltedhashstore/freenet/src/freenet/client/FailureCodeTracker.java
branches/saltedhashstore/freenet/src/freenet/client/FetchContext.java
branches/saltedhashstore/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
branches/saltedhashstore/freenet/src/freenet/client/async/ClientGetter.java
branches/saltedhashstore/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/saltedhashstore/freenet/src/freenet/client/async/OfferedKeysList.java
branches/saltedhashstore/freenet/src/freenet/client/async/SimpleManifestPutter.java
branches/saltedhashstore/freenet/src/freenet/client/async/USKFetcher.java
branches/saltedhashstore/freenet/src/freenet/client/async/USKRetriever.java
branches/saltedhashstore/freenet/src/freenet/clients/http/ConfigToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/ConnectionsToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/FProxyToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/PageMaker.java
branches/saltedhashstore/freenet/src/freenet/clients/http/PproxyToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/QueueToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/SimpleToadletServer.java
branches/saltedhashstore/freenet/src/freenet/clients/http/StatisticsToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/ToadletContainer.java
branches/saltedhashstore/freenet/src/freenet/clients/http/TranslationToadlet.java
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/GIFFilter.java
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/JPEGFilter.java
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/PNGFilter.java
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
branches/saltedhashstore/freenet/src/freenet/config/NodeNeedRestartException.java
branches/saltedhashstore/freenet/src/freenet/crypt/SSL.java
branches/saltedhashstore/freenet/src/freenet/io/comm/UdpSocketHandler.java
branches/saltedhashstore/freenet/src/freenet/keys/FreenetURI.java
branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.de.properties
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fi.properties
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fr.properties
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.it.properties
branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
branches/saltedhashstore/freenet/src/freenet/node/DarknetPeerNode.java
branches/saltedhashstore/freenet/src/freenet/node/KeyTracker.java
branches/saltedhashstore/freenet/src/freenet/node/LocationManager.java
branches/saltedhashstore/freenet/src/freenet/node/Node.java
branches/saltedhashstore/freenet/src/freenet/node/NodeClientCore.java
branches/saltedhashstore/freenet/src/freenet/node/NodeCrypto.java
branches/saltedhashstore/freenet/src/freenet/node/NodeStarter.java
branches/saltedhashstore/freenet/src/freenet/node/NodeStats.java
branches/saltedhashstore/freenet/src/freenet/node/PeerManager.java
branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
branches/saltedhashstore/freenet/src/freenet/node/PeerNodeStatus.java
branches/saltedhashstore/freenet/src/freenet/node/SimpleSendableInsert.java
branches/saltedhashstore/freenet/src/freenet/node/TestnetHandler.java
branches/saltedhashstore/freenet/src/freenet/node/TextModeClientInterfaceServer.java
branches/saltedhashstore/freenet/src/freenet/node/UptimeEstimator.java
branches/saltedhashstore/freenet/src/freenet/node/Version.java
branches/saltedhashstore/freenet/src/freenet/node/fcp/FCPServer.java
branches/saltedhashstore/freenet/src/freenet/node/fcp/NodeHelloMessage.java
branches/saltedhashstore/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginDownLoaderOfficial.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginHandler.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginManager.java
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginRespirator.java
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
branches/saltedhashstore/freenet/src/freenet/support/Fields.java
branches/saltedhashstore/freenet/src/freenet/support/FileLoggerHook.java
branches/saltedhashstore/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
branches/saltedhashstore/freenet/src/freenet/support/Logger.java
branches/saltedhashstore/freenet/src/freenet/support/LoggerHook.java
branches/saltedhashstore/freenet/src/freenet/support/NumberedRecentItems.java
branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
branches/saltedhashstore/freenet/src/freenet/support/SimpleIntNumberedItemComparator.java
branches/saltedhashstore/freenet/src/freenet/support/SortedVectorByNumber.java
branches/saltedhashstore/freenet/src/freenet/support/compress/GzipCompressor.java
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucket.java
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucketFactory.java
branches/saltedhashstore/freenet/src/freenet/support/io/BaseFileBucket.java
branches/saltedhashstore/freenet/src/freenet/support/io/BucketTools.java
branches/saltedhashstore/freenet/src/freenet/support/io/FileUtil.java
branches/saltedhashstore/freenet/src/freenet/support/io/LineReadingInputStream.java
branches/saltedhashstore/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
branches/saltedhashstore/freenet/src/freenet/support/io/TempBucketFactory.java
branches/saltedhashstore/freenet/test/freenet/clients/http/filter/ContentFilterTest.java
branches/saltedhashstore/freenet/test/freenet/support/HTMLNodeTest.java
branches/saltedhashstore/freenet/test/freenet/support/LRUHashtableTest.java
branches/saltedhashstore/freenet/test/freenet/support/MultiValueTableTest.java
branches/saltedhashstore/freenet/test/freenet/support/compress/GzipCompressorTest.java
Log:
Merge trunk r22339 (build 1160)
Modified:
branches/saltedhashstore/freenet/.settings/org.eclipse.core.resources.prefs
===================================================================
--- branches/saltedhashstore/freenet/.settings/org.eclipse.core.resources.prefs
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/.settings/org.eclipse.core.resources.prefs
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1,9 +1,10 @@
-#Thu Jan 24 19:11:26 GMT 2008
+#Fri Aug 22 17:35:28 BST 2008
eclipse.preferences.version=1
encoding//src/freenet/l10n/freenet.l10n.da.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.de.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.en.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.es.properties=UTF-8
+encoding//src/freenet/l10n/freenet.l10n.fi.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.fr.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.it.properties=UTF-8
encoding//src/freenet/l10n/freenet.l10n.no.properties=UTF-8
Modified:
branches/saltedhashstore/freenet/src/freenet/client/ArchiveContext.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/ArchiveContext.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/ArchiveContext.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -17,9 +17,11 @@
HashSet soFar = new HashSet();
final int maxArchiveLevels;
+ final long maxArchiveSize;
- public ArchiveContext(int max) {
+ public ArchiveContext(long maxArchiveSize, int max) {
this.maxArchiveLevels = max;
+ this.maxArchiveSize = maxArchiveSize;
}
/**
Modified:
branches/saltedhashstore/freenet/src/freenet/client/ArchiveManager.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/ArchiveManager.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/ArchiveManager.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -34,8 +34,6 @@
public static final String METADATA_NAME = ".metadata";
private static boolean logMINOR;
- private long maxArchiveSize;
-
final long maxArchivedFileSize;
// ArchiveHandler's
@@ -69,13 +67,12 @@
* @param random A cryptographicaly secure random source
* @param weakRandom A weak and cheap random source
*/
- public ArchiveManager(int maxHandlers, long maxCachedData, long
maxArchiveSize, long maxArchivedFileSize, int maxCachedElements, BucketFactory
tempBucketFactory) {
+ public ArchiveManager(int maxHandlers, long maxCachedData, long
maxArchivedFileSize, int maxCachedElements, BucketFactory tempBucketFactory) {
maxArchiveHandlers = maxHandlers;
archiveHandlers = new LRUHashtable();
this.maxCachedElements = maxCachedElements;
this.maxCachedData = maxCachedData;
storedData = new LRUHashtable();
- this.maxArchiveSize = maxArchiveSize;
this.maxArchivedFileSize = maxArchivedFileSize;
this.tempBucketFactory = tempBucketFactory;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
@@ -199,8 +196,8 @@
throwAtExit = true;
ctx.setLastHash(realHash);
}
- if(data.size() > maxArchiveSize)
- throw new ArchiveFailureException("Archive too big
("+data.size()+" > "+maxArchiveSize+")!");
+ if(data.size() > archiveContext.maxArchiveSize)
+ throw new ArchiveFailureException("Archive too big
("+data.size()+" > "+archiveContext.maxArchiveSize+")!");
if(archiveType != Metadata.ARCHIVE_ZIP)
throw new ArchiveFailureException("Unknown or
unsupported archive algorithm "+archiveType);
@@ -472,12 +469,4 @@
return Metadata.ARCHIVE_ZIP;
else throw new IllegalArgumentException();
}
-
- public synchronized long getMaxArchiveSize() {
- return maxArchiveSize;
- }
-
- public synchronized void setMaxArchiveSize(long maxArchiveSize) {
- this.maxArchiveSize = maxArchiveSize;
- }
}
Modified:
branches/saltedhashstore/freenet/src/freenet/client/DefaultMIMETypes.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/DefaultMIMETypes.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/DefaultMIMETypes.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -49,7 +49,7 @@
mimeTypesByNumber.add(number, null);
}
mimeTypesByNumber.set(number, type);
- mimeTypesByName.put(type, new Short(number));
+ mimeTypesByName.put(type, number);
}
/**
@@ -763,15 +763,14 @@
public synchronized static String getExtension(String type) {
short typeNumber = byName(type);
if(typeNumber < 0) return null;
- return (String) primaryExtensionByMimeNumber.get(new
Short(typeNumber));
+ return (String) primaryExtensionByMimeNumber.get(typeNumber);
}
public synchronized static boolean isValidExt(String expectedMimeType,
String oldExt) {
short typeNumber = byName(expectedMimeType);
if(typeNumber < 0) return false;
- Short s = new Short(typeNumber);
- String[] extensions = (String[])
allExtensionsByMimeNumber.get(s);
+ String[] extensions = (String[])
allExtensionsByMimeNumber.get(typeNumber);
if(extensions == null) return false;
for(int i=0;i<extensions.length;i++)
if(oldExt.equals(extensions[i])) return true;
Modified:
branches/saltedhashstore/freenet/src/freenet/client/FailureCodeTracker.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/FailureCodeTracker.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/FailureCodeTracker.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -58,10 +58,9 @@
final HashMap map = new HashMap();
public synchronized void inc(int k) {
- Integer key = new Integer(k);
- Item i = (Item) map.get(key);
+ Item i = (Item) map.get(k);
if(i == null)
- map.put(key, i = new Item());
+ map.put(k, i = new Item());
i.x++;
total++;
}
Modified: branches/saltedhashstore/freenet/src/freenet/client/FetchContext.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/FetchContext.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/FetchContext.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -197,6 +197,7 @@
}
/** Make public, but just call parent for a field for field copy */
+ @Override
public Object clone() {
try {
return super.clone();
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -14,16 +14,16 @@
public class BackgroundBlockEncoder implements PrioRunnable {
// Minimize memory usage at the cost of having to encode from the end
- private final ArrayList queue;
+ private final ArrayList<SoftReference<SingleBlockInserter>> queue;
public BackgroundBlockEncoder() {
- queue = new ArrayList();
+ queue = new ArrayList<SoftReference<SingleBlockInserter>>();
}
public void queue(SingleBlockInserter sbi) {
if(sbi.isCancelled()) return;
if(sbi.resultingURI != null) return;
- SoftReference ref = new SoftReference(sbi);
+ SoftReference<SingleBlockInserter> ref = new
SoftReference<SingleBlockInserter>(sbi);
synchronized(this) {
queue.add(ref);
Logger.minor(this, "Queueing encode of "+sbi);
@@ -39,7 +39,7 @@
if(inserter.isCancelled()) continue;
if(inserter.resultingURI != null) continue;
Logger.minor(this, "Queueing encode of
"+inserter);
- SoftReference ref = new SoftReference(inserter);
+ SoftReference<SingleBlockInserter> ref = new
SoftReference<SingleBlockInserter>(inserter);
queue.add(ref);
}
notifyAll();
@@ -59,8 +59,8 @@
}
}
while(!queue.isEmpty()) {
- SoftReference ref = (SoftReference)
queue.remove(queue.size()-1);
- sbi = (SingleBlockInserter) ref.get();
+ SoftReference<SingleBlockInserter> ref
= queue.remove(queue.size()-1);
+ sbi = ref.get();
if(sbi != null) break;
}
}
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/ClientGetter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/async/ClientGetter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/async/ClientGetter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -68,7 +68,7 @@
this.uri = uri;
this.ctx = ctx;
this.finished = false;
- this.actx = new ArchiveContext(ctx.maxArchiveLevels);
+ this.actx = new ArchiveContext(ctx.maxTempLength,
ctx.maxArchiveLevels);
this.binaryBlobBucket = binaryBlobBucket;
if(binaryBlobBucket != null) {
binaryBlobKeysAddedAlready = new HashSet();
@@ -217,6 +217,7 @@
}
}
+ @Override
public void cancel() {
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Cancelling "+this);
@@ -273,6 +274,7 @@
return start(true, redirect);
}
+ @Override
public String toString() {
return super.toString()+ ':' +uri;
}
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -92,16 +92,16 @@
final boolean isInsertScheduler;
final boolean isSSKScheduler;
final RandomSource random;
- private final HashMap allRequestsByClientRequest;
+ private final HashMap<ClientRequester, HashSet<SendableRequest>>
allRequestsByClientRequest;
private final RequestStarter starter;
private final Node node;
public final String name;
- private final LinkedList /* <WeakReference <RandomGrabArray> > */
recentSuccesses = new LinkedList();
+ private final LinkedList<WeakReference<RandomGrabArray>>
recentSuccesses = new LinkedList<WeakReference<RandomGrabArray>>();
private final RequestCooldownQueue cooldownQueue;
/** All pending gets by key. Used to automatically satisfy pending
requests when either the key is fetched by
* an overlapping request, or it is fetched by a request from another
node. Operations on this are synchronized on
* itself. */
- private final HashMap /* <Key, SendableGet[]> */ pendingKeys;
+ private final HashMap<Key, Object> pendingKeys;
public static final String PRIORITY_NONE = "NONE";
public static final String PRIORITY_SOFT = "SOFT";
@@ -167,11 +167,11 @@
this.isInsertScheduler = forInserts;
this.isSSKScheduler = forSSKs;
priorities = new
SortedVectorByNumber[RequestStarter.NUMBER_OF_PRIORITY_CLASSES];
- allRequestsByClientRequest = new HashMap();
+ allRequestsByClientRequest = new HashMap<ClientRequester,
HashSet<SendableRequest>>();
if(forInserts)
pendingKeys = null;
else
- pendingKeys = new HashMap();
+ pendingKeys = new HashMap<Key, Object>();
this.name = name;
sc.register(name+"_priority_policy", PRIORITY_HARD,
name.hashCode(), true, false,
@@ -303,9 +303,9 @@
private synchronized void innerRegister(SendableRequest req) {
if(logMINOR) Logger.minor(this, "Still registering "+req+" at
prio "+req.getPriorityClass()+" retry "+req.getRetryCount()+" for
"+req.getClientRequest());
addToGrabArray(req.getPriorityClass(), req.getRetryCount(),
req.getClient(), req.getClientRequest(), req);
- HashSet v = (HashSet)
allRequestsByClientRequest.get(req.getClientRequest());
+ HashSet<SendableRequest> v =
allRequestsByClientRequest.get(req.getClientRequest());
if(v == null) {
- v = new HashSet();
+ v = new HashSet<SendableRequest>();
allRequestsByClientRequest.put(req.getClientRequest(),
v);
}
v.add(req);
@@ -455,8 +455,8 @@
synchronized(this) {
if(!recentSuccesses.isEmpty()) {
if(random.nextBoolean()) {
- WeakReference
ref = (WeakReference) (recentSuccesses.removeLast());
- altRGA =
(RandomGrabArray) ref.get();
+
WeakReference<RandomGrabArray> ref = recentSuccesses.removeLast();
+ altRGA =
ref.get();
}
}
}
@@ -472,7 +472,7 @@
} else {
if(altReq != null) {
synchronized(this) {
-
recentSuccesses.addLast(new WeakReference(altRGA));
+
recentSuccesses.addLast(new WeakReference<RandomGrabArray>(altRGA));
}
if(logMINOR)
Logger.minor(this, "Chosen req "+req+" is better, reregistering recently
succeeded "+altReq);
@@ -486,7 +486,7 @@
ClientRequester cr =
req.getClientRequest();
if(req.canRemove()) {
synchronized(this) {
- HashSet v = (HashSet)
allRequestsByClientRequest.get(cr);
+
HashSet<SendableRequest> v = allRequestsByClientRequest.get(cr);
if(v == null) {
Logger.error(this, "No HashSet registered for "+cr);
} else {
@@ -594,9 +594,9 @@
public void reregisterAll(ClientRequester request) {
SendableRequest[] reqs;
synchronized(this) {
- HashSet h = (HashSet)
allRequestsByClientRequest.get(request);
+ HashSet<SendableRequest> h =
allRequestsByClientRequest.get(request);
if(h == null) return;
- reqs = (SendableRequest[]) h.toArray(new
SendableRequest[h.size()]);
+ reqs = h.toArray(new SendableRequest[h.size()]);
}
for(int i=0;i<reqs.length;i++) {
@@ -617,7 +617,7 @@
synchronized(this) {
if(logMINOR)
Logger.minor(this, "Recording successful fetch
from "+parentGrabArray);
- recentSuccesses.addFirst(new
WeakReference(parentGrabArray));
+ recentSuccesses.addFirst(new
WeakReference<RandomGrabArray>(parentGrabArray));
while(recentSuccesses.size() > 8)
recentSuccesses.removeLast();
}
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/OfferedKeysList.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/client/async/OfferedKeysList.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/client/async/OfferedKeysList.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -31,23 +31,23 @@
*/
public class OfferedKeysList extends BaseSendableGet {
- private final HashSet keys;
- private final Vector keysList; // O(1) remove random element the way we
use it, see chooseKey().
+ private final HashSet<Key> keys;
+ private final Vector<Key> keysList; // O(1) remove random element the
way we use it, see chooseKey().
private static boolean logMINOR;
private final RandomSource random;
private final short priorityClass;
private final NodeClientCore core;
OfferedKeysList(NodeClientCore core, RandomSource random, short
priorityClass) {
- this.keys = new HashSet();
- this.keysList = new Vector();
+ this.keys = new HashSet<Key>();
+ this.keysList = new Vector<Key>();
this.random = random;
this.priorityClass = priorityClass;
this.core = core;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
}
- /** Called when a key is found, when it no longer belogns to this list
etc. */
+ /** Called when a key is found, when it no longer belongs to this list
etc. */
public synchronized void remove(Key key) {
assert(keysList.size() == keys.size());
logMINOR = Logger.shouldLog(Logger.MINOR, this);
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/client/async/SimpleManifestPutter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/client/async/SimpleManifestPutter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -68,7 +68,14 @@
private final Bucket data;
public void start() throws InsertException {
- if((origSFI == null) && (metadata != null)) return;
+ if (origSFI == null) {
+ Logger.error(this, "origSFI is null on start(),
should be impossible", new Exception("debug"));
+ return;
+ }
+ if (metadata != null) {
+ Logger.error(this, "metadata=" + metadata + "
on start(), should be impossible", new Exception("debug"));
+ return;
+ }
origSFI.start(null);
origSFI = null;
}
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/async/USKFetcher.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/async/USKFetcher.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -71,7 +71,7 @@
private final USK origUSK;
/** Callbacks */
- private final LinkedList callbacks;
+ private final LinkedList<USKFetcherCallback> callbacks;
/** Fetcher context */
final FetchContext ctx;
@@ -175,7 +175,7 @@
}
}
- private final Vector runningAttempts;
+ private final Vector<USKAttempt> runningAttempts;
private long lastFetchedEdition;
private long lastAddedEdition;
@@ -219,9 +219,9 @@
this.origUSK = origUSK;
this.uskManager = manager;
this.minFailures = this.origMinFailures = minFailures;
- runningAttempts = new Vector();
- callbacks = new LinkedList();
- subscribers = new HashSet();
+ runningAttempts = new Vector<USKAttempt>();
+ callbacks = new LinkedList<USKFetcherCallback>();
+ subscribers = new HashSet<USKCallback>();
lastFetchedEdition = -1;
lastAddedEdition = -1;
this.ctx = ctx;
@@ -284,16 +284,21 @@
USKFetcherCallback[] cb;
synchronized(this) {
completed = true;
- cb = (USKFetcherCallback[])
callbacks.toArray(new USKFetcherCallback[callbacks.size()]);
+ cb = callbacks.toArray(new
USKFetcherCallback[callbacks.size()]);
}
- for(int i=0;i<cb.length;i++)
- cb[i].onFoundEdition(ed, origUSK.copy(ed));
+ for(int i=0;i<cb.length;i++) {
+ try {
+ cb[i].onFoundEdition(ed,
origUSK.copy(ed));
+ } catch (Exception e) {
+ Logger.error(this, "An exception
occured while dealing with a callback:"+cb[i].toString()+"\n"+e.getMessage(),e);
+ }
+ }
}
}
void onSuccess(USKAttempt att, boolean dontUpdate, ClientSSKBlock
block) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
- LinkedList l = null;
+ LinkedList<USKAttempt> l = null;
final long lastEd = uskManager.lookup(origUSK);
long curLatest;
boolean decode = false;
@@ -308,7 +313,7 @@
long addFrom = Math.max(lastAddedEdition + 1, curLatest
+ 1);
if(logMINOR) Logger.minor(this, "Adding from
"+addFrom+" to "+addTo+" for "+origUSK);
if(addTo >= addFrom) {
- l = new LinkedList();
+ l = new LinkedList<USKAttempt>();
for(long i=addFrom;i<=addTo;i++) {
if(logMINOR) Logger.minor(this, "Adding
checker for edition "+i+" for "+origUSK);
l.add(add(i));
@@ -324,6 +329,7 @@
data = null;
} catch (IOException e) {
data = null;
+ Logger.error(this, "An IOE occured while
decoding: "+e.getMessage(),e);
}
}
synchronized(this) {
@@ -339,16 +345,16 @@
if(!dontUpdate)
uskManager.update(origUSK, curLatest);
if(l == null) return;
- final LinkedList toSched = l;
+ final LinkedList<USKAttempt> toSched = l;
// If we schedule them here, we don't get icky recursion
problems.
if(!cancelled) {
ctx.executor.execute(new Runnable() {
public void run() {
long last = lastEd;
- for(Iterator
i=toSched.iterator();i.hasNext();) {
+ for(Iterator<USKAttempt>
i=toSched.iterator();i.hasNext();) {
// We may be called recursively
through onSuccess().
// So don't start obsolete
requests.
- USKAttempt a = (USKAttempt)
i.next();
+ USKAttempt a = i.next();
last =
uskManager.lookup(origUSK);
if((last <= a.number) &&
!a.cancelled)
a.schedule();
@@ -377,7 +383,7 @@
USKFetcherCallback[] cb;
synchronized(this) {
completed = true;
- cb = (USKFetcherCallback[]) callbacks.toArray(new
USKFetcherCallback[callbacks.size()]);
+ cb = callbacks.toArray(new
USKFetcherCallback[callbacks.size()]);
}
for(int i=0;i<cb.length;i++)
cb[i].onCancelled();
@@ -392,13 +398,13 @@
}
private void cancelBefore(long curLatest) {
- Vector v = null;
+ Vector<USKAttempt> v = null;
int count = 0;
synchronized(this) {
- for(Iterator i=runningAttempts.iterator();i.hasNext();)
{
- USKAttempt att = (USKAttempt) (i.next());
+ for(Iterator<USKAttempt>
i=runningAttempts.iterator();i.hasNext();) {
+ USKAttempt att = i.next();
if(att.number < curLatest) {
- if(v == null) v = new
Vector(runningAttempts.size()-count);
+ if(v == null) v = new
Vector<USKAttempt>(runningAttempts.size()-count);
v.add(att);
i.remove();
}
@@ -407,7 +413,7 @@
}
if(v != null) {
for(int i=0;i<v.size();i++) {
- USKAttempt att = (USKAttempt) v.get(i);
+ USKAttempt att = v.get(i);
att.cancel();
}
}
@@ -421,7 +427,7 @@
if(cancelled) return null;
if(logMINOR) Logger.minor(this, "Adding USKAttempt for "+i+"
for "+origUSK.getURI());
if(!runningAttempts.isEmpty()) {
- USKAttempt last = (USKAttempt)
runningAttempts.lastElement();
+ USKAttempt last = runningAttempts.lastElement();
if(last.number >= i) {
if(logMINOR) Logger.minor(this, "Returning
because last.number="+i+" for "+origUSK.getURI());
return null;
@@ -469,7 +475,7 @@
long startPoint = Math.max(origUSK.suggestedEdition,
valueAtSchedule);
for(long i=startPoint;i<startPoint+minFailures;i++)
add(i);
- attempts = (USKAttempt[]) runningAttempts.toArray(new
USKAttempt[runningAttempts.size()]);
+ attempts = runningAttempts.toArray(new
USKAttempt[runningAttempts.size()]);
started = true;
}
if(!cancelled) {
@@ -493,7 +499,7 @@
USKAttempt[] attempts;
synchronized(this) {
cancelled = true;
- attempts = (USKAttempt[]) runningAttempts.toArray(new
USKAttempt[runningAttempts.size()]);
+ attempts = runningAttempts.toArray(new
USKAttempt[runningAttempts.size()]);
}
for(int i=0;i<attempts.length;i++)
attempts[i].cancel();
@@ -505,7 +511,7 @@
* an alternative to a refcount. This could be replaced with a
* Bloom filter or whatever, we only need .exists and .count.
*/
- final HashSet subscribers;
+ final HashSet<USKCallback> subscribers;
public void addSubscriber(USKCallback cb) {
synchronized(this) {
@@ -520,18 +526,18 @@
// take locks...
short normalPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
short progressPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
- USKCallback[] callbacks;
+ USKCallback[] localCallbacks;
synchronized(this) {
- callbacks = (USKCallback[]) subscribers.toArray(new
USKCallback[subscribers.size()]);
+ localCallbacks = subscribers.toArray(new
USKCallback[subscribers.size()]);
}
- if(callbacks.length == 0) {
+ if(localCallbacks.length == 0) {
normalPollPriority = DEFAULT_NORMAL_POLL_PRIORITY;
progressPollPriority = DEFAULT_PROGRESS_POLL_PRIORITY;
return;
}
- for(int i=0;i<callbacks.length;i++) {
- USKCallback cb = callbacks[i];
+ for(int i=0;i<localCallbacks.length;i++) {
+ USKCallback cb = localCallbacks[i];
short prio = cb.getPollingPriorityNormal();
if(prio < normalPrio) normalPrio = prio;
prio = cb.getPollingPriorityProgress();
@@ -546,13 +552,10 @@
}
public void removeSubscriber(USKCallback cb) {
- boolean kill = false;
synchronized(this) {
subscribers.remove(cb);
- if(!(subscribers.isEmpty() && killOnLoseSubscribers))
kill = true;
}
updatePriorities();
- if(kill) cancel();
}
public synchronized boolean hasLastData() {
Modified:
branches/saltedhashstore/freenet/src/freenet/client/async/USKRetriever.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/client/async/USKRetriever.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/client/async/USKRetriever.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -42,7 +42,7 @@
FreenetURI uri = key.getSSK(l).getURI();
try {
SingleFileFetcher getter =
- (SingleFileFetcher)
SingleFileFetcher.create(this, this, new ClientMetadata(), uri, ctx, new
ArchiveContext(ctx.maxArchiveLevels),
+ (SingleFileFetcher)
SingleFileFetcher.create(this, this, new ClientMetadata(), uri, ctx, new
ArchiveContext(ctx.maxTempLength, ctx.maxArchiveLevels),
ctx.maxNonSplitfileRetries, 0,
true, l, true, null, false);
getter.schedule();
} catch (MalformedURLException e) {
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/ConfigToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/ConfigToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/ConfigToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -236,7 +236,7 @@
if(mode >= PageMaker.MODE_ADVANCED){
HTMLNode navigationBar =
ctx.getPageMaker().getInfobox("navbar", l10n("configNavTitle"));
HTMLNode navigationContent =
ctx.getPageMaker().getContentNode(navigationBar).addChild("ul");
-
if(!L10n.getSelectedLanguage().equals(L10n.FALLBACK_DEFAULT))
+
if(!L10n.getSelectedLanguage().equals(L10n.LANGUAGE.getDefault()))
navigationContent.addChild("a", "href",
TranslationToadlet.TOADLET_URL, l10n("contributeTranslation"));
HTMLNode navigationTable =
navigationContent.addChild("table", "class", "config_navigation");
HTMLNode navigationTableRow =
navigationTable.addChild("tr");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/ConnectionsToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/ConnectionsToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/ConnectionsToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -121,7 +121,7 @@
return compareLongs(total1, total2);
}else if(sortBy.equals("selection_percentage")){
long sinceWhen = System.currentTimeMillis() -
PeerNode.SELECTION_SAMPLING_PERIOD;
- return
compareInts(firstNode.getNumberOfSelections().headSet(sinceWhen).size(),
secondNode.getNumberOfSelections().headSet(sinceWhen).size());
+ return
Double.compare(firstNode.getSelectionRate(), secondNode.getSelectionRate());
}else if(sortBy.equals("time_delta")){
return compareLongs(firstNode.getClockDelta(),
secondNode.getClockDelta());
}else if(sortBy.equals(("uptime"))){
@@ -418,11 +418,14 @@
header.addChild("span", new
String[] { "title", "style" }, new String[] {
L10n.getString(col.getExplanationKey()), "border-bottom: 1px dotted; cursor:
help;" }, L10n.getString(col.getTitleKey()));
}
}
-
- int numberOfSelectionSamples =
peers.getNumberOfSelectionSamples().tailSet(now -
PeerNode.SELECTION_SAMPLING_PERIOD).size();
+
+ double totalSelectionRate = 0.0;
+ for(PeerNodeStatus status : peerNodeStatuses) {
+ totalSelectionRate +=
status.getSelectionRate();
+ }
for (int peerIndex = 0, peerCount =
peerNodeStatuses.length; peerIndex < peerCount; peerIndex++) {
PeerNodeStatus peerNodeStatus =
peerNodeStatuses[peerIndex];
- drawRow(peerTable, peerNodeStatus, mode
>= PageMaker.MODE_ADVANCED, fProxyJavascriptEnabled, now, path,
enablePeerActions, endCols, drawMessageTypes, numberOfSelectionSamples);
+ drawRow(peerTable, peerNodeStatus, mode
>= PageMaker.MODE_ADVANCED, fProxyJavascriptEnabled, now, path,
enablePeerActions, endCols, drawMessageTypes, totalSelectionRate);
}
@@ -693,9 +696,11 @@
abstract protected SimpleFieldSet getNoderef();
- private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus,
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String
path, boolean enablePeerActions, SimpleColumn[] endCols, boolean
drawMessageTypes, int numberOfSelectionSamples) {
- int peerSelectionCount =
peerNodeStatus.getNumberOfSelections().tailSet(now -
PeerNode.SELECTION_SAMPLING_PERIOD).size();
- int peerSelectionPercentage = (numberOfSelectionSamples > 0 ?
(peerSelectionCount*100/numberOfSelectionSamples) : 0);
+ private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus,
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String
path, boolean enablePeerActions, SimpleColumn[] endCols, boolean
drawMessageTypes, double totalSelectionRate) {
+ double selectionRate = peerNodeStatus.getSelectionRate();
+ int peerSelectionPercentage = 0;
+ if(totalSelectionRate > 0)
+ peerSelectionPercentage = (int) (selectionRate * 100 /
totalSelectionRate);
HTMLNode peerRow = peerTable.addChild("tr", "class",
"darknet_connections_"+(peerSelectionPercentage >
PeerNode.SELECTION_PERCENTAGE_WARNING ? "warning" : "normal"));
if(enablePeerActions) {
@@ -777,7 +782,7 @@
// percent of time connected column
peerRow.addChild("td", "class", "peer-idle" /* FIXME
*/).addChild("#",
fix1.format(peerNodeStatus.getPercentTimeRoutableConnection()));
// selection stats
- peerRow.addChild("td", "class", "peer-idle" /* FIXME
*/).addChild("#", (numberOfSelectionSamples > 0 ? (peerSelectionPercentage+"%")
: "N/A"));
+ peerRow.addChild("td", "class", "peer-idle" /* FIXME
*/).addChild("#", (totalSelectionRate > 0 ? (peerSelectionPercentage+"%") :
"N/A"));
// total traffic column
peerRow.addChild("td", "class", "peer-idle" /* FIXME
*/).addChild("#", SizeUtil.formatSize(peerNodeStatus.getTotalInputBytes())+" /
"+SizeUtil.formatSize(peerNodeStatus.getTotalOutputBytes())+"/"+SizeUtil.formatSize(peerNodeStatus.getResendBytesSent()));
// congestion control
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/FProxyToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/FProxyToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -234,7 +234,6 @@
L10n.addL10nSubstitution(option,
"FProxyToadlet.openForceDisk", new String[] { "link", "/link" }, new String[] {
"<a href=\""+basePath+key.toString()+"?forcedownload"+extras+"\">", "</a>" });
if(!(mimeType.equals("application/octet-stream") ||
mimeType.equals("application/x-msdownload"))) {
option = optionList.addChild("li");
-
L10n.addL10nSubstitution(option,
"FProxyToadlet.openForce", new String[] { "link", "/link", "mime" }, new
String[] { "<a href=\""+basePath + key.toString() + "?force=" +
getForceValue(key, now)+extras+"\">", "</a>", HTMLEncoder.encode(mimeType)});
}
if(referrer != null) {
@@ -516,6 +515,12 @@
infoboxContent = infobox.addChild("div",
"class", "infobox-content");
HTMLNode optionList =
infoboxContent.addChild("ul");
+
+ if((e.mode == FetchException.NOT_IN_ARCHIVE) &&
(core.node.pluginManager.isPluginLoaded("plugins.KeyExplorer.KeyExplorer"))) {
+ option = optionList.addChild("li");
+ L10n.addL10nSubstitution(option,
"FProxyToadlet.openWithKeyExplorer", new String[] { "link", "/link" }, new
String[] { "<a href=\"/plugins/plugins.KeyExplorer.KeyExplorer/?key=" +
key.toString() + "\">", "</a>" });
+ }
+
if(!e.isFatal() && ctx.isAllowedFullAccess()) {
option = optionList.addChild("li");
HTMLNode optionForm =
ctx.addFormChild(option, "/queue/", "dnfQueueForm");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/PageMaker.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/clients/http/PageMaker.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/clients/http/PageMaker.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -2,21 +2,16 @@
import java.io.File;
import java.io.IOException;
-import java.net.JarURLConnection;
import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLDecoder;
import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
import freenet.l10n.L10n;
import freenet.node.NodeClientCore;
+import freenet.pluginmanager.FredPluginL10n;
import freenet.support.HTMLNode;
import freenet.support.Logger;
import freenet.support.api.HTTPRequest;
@@ -26,10 +21,48 @@
*/
public final class PageMaker {
- public static final String DEFAULT_THEME = "clean";
+ public enum THEME {
+ BOXED("boxed", "Boxed", ""),
+ CLEAN("clean", "Clean", "Mr. Proper"),
+ GRAYANDBLUE("grayandblue", "Gray And Blue", ""),
+ SKY("sky", "Sky", "");
+
+ public static final String[] possibleValues = {
+ BOXED.code,
+ CLEAN.code,
+ GRAYANDBLUE.code,
+ SKY.code
+ };
+
+ public final String code; // the internal name
+ public final String name; // the name in "human form"
+ public final String description; // description
+
+ private THEME(String code, String name, String description) {
+ this.code = code;
+ this.name = name;
+ this.description = description;
+ }
+
+ public static THEME themeFromName(String cssName) {
+ for(THEME t : THEME.values()) {
+ if(t.code.equalsIgnoreCase(cssName) ||
+ t.name.equalsIgnoreCase(cssName))
+ {
+ return t;
+ }
+ }
+ return getDefault();
+ }
+
+ public static THEME getDefault() {
+ return THEME.CLEAN;
+ }
+ }
+
public static final int MODE_SIMPLE = 1;
public static final int MODE_ADVANCED = 2;
- private String theme;
+ private THEME theme;
private File override;
private final List navigationLinkTexts = new ArrayList();
private final List navigationLinkTextsNonFull = new ArrayList();
@@ -39,30 +72,43 @@
private final Map/*<HTMLNode, HTMLNode>*/ headNodes = new HashMap();
private final Map /* <String, LinkEnabledCallback> */
navigationLinkCallbacks = new HashMap();
- /** Cache for themes read from the JAR file. */
- private List jarThemesCache = null;
+ private final FredPluginL10n plugin;
+ private final boolean pluginMode;
- public PageMaker(String t) {
+ public PageMaker(FredPluginL10n plug, THEME t) {
setTheme(t);
+ plugin = plug;
+ pluginMode = true;
}
+ protected PageMaker(THEME t) {
+ setTheme(t);
+ plugin = null;
+ pluginMode = false;
+ }
+
void setOverride(File f) {
this.override = f;
}
- void setTheme(String theme) {
- if (theme == null) {
- this.theme = DEFAULT_THEME;
+ public void setTheme(THEME theme2) {
+ if (theme2 == null) {
+ this.theme = THEME.getDefault();
} else {
- URL themeurl =
getClass().getResource("staticfiles/themes/" + theme + "/theme.css");
+ URL themeurl =
getClass().getResource("staticfiles/themes/" + theme2.code + "/theme.css");
if (themeurl == null)
- this.theme = DEFAULT_THEME;
+ this.theme = THEME.getDefault();
else
- this.theme = theme;
+ this.theme = theme2;
}
}
public void addNavigationLink(String path, String name, String title,
boolean fullOnly, LinkEnabledCallback cb) {
+ if (pluginMode && (plugin == null)) {
+ // FIXME invent a check on compile time
+ // log only
+ Logger.error(this, "Deprecated way to use Pagemaker
from plugin, your plugin need to implement FredPluginL10n to do so", new
Error("FIXME"));
+ }
navigationLinkTexts.add(name);
if(!fullOnly)
navigationLinkTextsNonFull.add(name);
@@ -94,17 +140,16 @@
public HTMLNode getPageNode(String title, boolean
renderNavigationLinks, ToadletContext ctx) {
boolean fullAccess = ctx == null ? false :
ctx.isAllowedFullAccess();
HTMLNode pageNode = new HTMLNode.HTMLDoctype("html",
"-//W3C//DTD XHTML 1.1//EN");
- HTMLNode htmlNode = pageNode.addChild("html", "xml:lang",
L10n.getSelectedLanguage());
+ HTMLNode htmlNode = pageNode.addChild("html", "xml:lang",
L10n.getSelectedLanguage().isoCode);
HTMLNode headNode = htmlNode.addChild("head");
headNode.addChild("meta", new String[] { "http-equiv",
"content" }, new String[] { "Content-Type", "text/html; charset=utf-8" });
headNode.addChild("title", title + " - Freenet");
if(override == null)
- headNode.addChild("link", new String[] { "rel", "href",
"type", "title" }, new String[] { "stylesheet", "/static/themes/" + theme +
"/theme.css", "text/css", theme });
+ headNode.addChild("link", new String[] { "rel", "href",
"type", "title" }, new String[] { "stylesheet", "/static/themes/" + theme.code
+ "/theme.css", "text/css", theme.code });
else
headNode.addChild(getOverrideContent());
- List themes = getThemes();
- for (Iterator themesIterator = themes.iterator();
themesIterator.hasNext();) {
- String themeName = (String) themesIterator.next();
+ for (THEME t: THEME.values()) {
+ String themeName = t.code;
headNode.addChild("link", new String[] { "rel", "href",
"type", "media", "title" }, new String[] { "alternate stylesheet",
"/static/themes/" + themeName + "/theme.css", "text/css", "screen", themeName
});
}
@@ -122,7 +167,10 @@
String navigationTitle = (String)
navigationLinkTitles.get(navigationLink);
String navigationPath = (String)
navigationLinks.get(navigationLink);
HTMLNode listItem = navbarUl.addChild("li");
- listItem.addChild("a", new String[] { "href",
"title" }, new String[] { navigationPath, L10n.getString(navigationTitle) },
L10n.getString(navigationLink));
+ if (plugin != null)
+ listItem.addChild("a", new String[] {
"href", "title" }, new String[] { navigationPath,
plugin.getString(navigationTitle) }, plugin.getString(navigationLink));
+ else
+ listItem.addChild("a", new String[] {
"href", "title" }, new String[] { navigationPath,
L10n.getString(navigationTitle) }, L10n.getString(navigationLink));
}
}
HTMLNode contentDiv = pageDiv.addChild("div", "id", "content");
@@ -194,63 +242,6 @@
return infobox;
}
- /**
- * Returns an {@link ArrayList} containing the names of all available
- * themes. If Freenet was started from a JAR file the list is cached
- * (because the JAR file only changes between invocations), otherwise
the
- * filesystem is read on every page access.
- *
- * @return An {@link ArrayList} containing the names of all available
themes
- */
- public List<String> getThemes() {
- if (jarThemesCache != null) {
- return jarThemesCache;
- }
- List<String> themes = new ArrayList<String>();
- try {
- URL url = getClass().getResource("staticfiles/themes/");
- URLConnection urlConnection = url.openConnection();
- if (url.getProtocol().equals("file")) {
- File themesDirectory = new
File(URLDecoder.decode(url.getPath(), "ISO-8859-1").replaceAll("\\|", ":"));
- File[] themeDirectories =
themesDirectory.listFiles();
- for (int themeIndex = 0; (themeDirectories !=
null) && (themeIndex < themeDirectories.length); themeIndex++) {
- File themeDirectory =
themeDirectories[themeIndex];
- if (themeDirectory.isDirectory() &&
!themeDirectory.getName().startsWith(".")) {
-
themes.add(themeDirectory.getName());
- }
- }
- } else if (urlConnection instanceof JarURLConnection) {
- JarURLConnection jarUrlConnection =
(JarURLConnection) urlConnection;
- JarFile jarFile = jarUrlConnection.getJarFile();
- Enumeration entries = jarFile.entries();
- while (entries.hasMoreElements()) {
- JarEntry entry = (JarEntry)
entries.nextElement();
- String name = entry.getName();
- if
(name.startsWith("freenet/clients/http/staticfiles/themes/")) {
- name =
name.substring("freenet/clients/http/staticfiles/themes/".length());
- if (name.indexOf('/') != -1) {
- String themeName =
name.substring(0, name.indexOf('/'));
- if
(!themes.contains(themeName)) {
-
themes.add(themeName);
- }
- }
- }
- }
- jarThemesCache = themes;
- }
- } catch (IOException ioe1) {
- Logger.error(this, "error creating list of themes",
ioe1);
- } catch (NullPointerException npe) {
- Logger.error(this, "error creating list of themes (if
you're using the gnu-classpath, it's \"normal\")", npe);
- themes.add("clean");
- } finally {
- if (!themes.contains("clean")) {
- themes.add("clean");
- }
- }
- return themes;
- }
-
private HTMLNode getOverrideContent() {
HTMLNode result = new HTMLNode("style", "type", "text/css");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/PproxyToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/PproxyToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/PproxyToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -2,7 +2,6 @@
import java.io.IOException;
import java.net.URI;
-import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/clients/http/QueueToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/clients/http/QueueToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1351,10 +1351,6 @@
return;
}
long size = ((ClientPut)req).getDataSize();
- if(uri == null) {
- Logger.error(this, "uri is null for "+req+" for
"+identifier);
- return;
- }
String name = uri.getPreferredFilename();
String title = l10n("uploadSucceededTitle", "filename",
name);
HTMLNode text = new HTMLNode("div");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/SimpleToadletServer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/SimpleToadletServer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -23,6 +23,7 @@
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
+import freenet.clients.http.PageMaker.THEME;
import freenet.clients.http.bookmark.BookmarkManager;
import freenet.config.EnumerableOptionCallback;
import freenet.config.InvalidConfigValueException;
@@ -63,7 +64,7 @@
BucketFactory bf;
NetworkInterface networkInterface;
private final LinkedList toadlets;
- private String cssName;
+ private THEME cssTheme;
private File cssOverride;
private Thread myThread;
private boolean advancedModeEnabled;
@@ -86,7 +87,8 @@
return ssl;
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
if(!SSL.available()) {
throw new InvalidConfigValueException("Enable
SSL support before use ssl with Fproxy");
}
@@ -106,7 +108,8 @@
}
public void set(Long val) throws InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
FProxyToadlet.MAX_LENGTH = val;
}
}
@@ -165,14 +168,16 @@
class FProxyCSSNameCallback extends StringCallback implements
EnumerableOptionCallback {
public String get() {
- return cssName;
+ return cssTheme.code;
}
public void set(String CSSName) throws
InvalidConfigValueException {
if((CSSName.indexOf(':') != -1) ||
(CSSName.indexOf('/') != -1))
throw new
InvalidConfigValueException(l10n("illegalCSSName"));
- cssName = CSSName;
- pageMaker.setTheme(cssName);
+ cssTheme = THEME.themeFromName(CSSName);
+ pageMaker.setTheme(cssTheme);
+ if (core.node.pluginManager != null)
+
core.node.pluginManager.setFProxyTheme(cssTheme);
}
public void setPossibleValues(String[] val) {
@@ -180,7 +185,7 @@
}
public String[] getPossibleValues() {
- return pageMaker.getThemes().toArray(new String[0]);
+ return THEME.possibleValues;
}
}
@@ -214,7 +219,8 @@
}
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
synchronized(SimpleToadletServer.this) {
if(val) {
// Start it
@@ -261,7 +267,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
ts.enableAdvancedMode(val);
}
}
@@ -279,7 +286,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
ts.enableFProxyJavascript(val);
}
}
@@ -448,10 +456,11 @@
this.bf = bucketFactory;
port = fproxyConfig.getInt("port");
bindTo = fproxyConfig.getString("bindTo");
- cssName = fproxyConfig.getString("css");
+ String cssName = fproxyConfig.getString("css");
if((cssName.indexOf(':') != -1) || (cssName.indexOf('/') != -1))
throw new InvalidConfigValueException("CSS name must
not contain slashes or colons!");
- pageMaker = new PageMaker(cssName);
+ cssTheme = THEME.themeFromName(cssName);
+ pageMaker = new PageMaker(cssTheme);
if(!fproxyConfig.getOption("CSSOverride").isDefault()) {
cssOverride = new
File(fproxyConfig.getString("CSSOverride"));
@@ -625,12 +634,12 @@
}
- public String getCSSName() {
- return this.cssName;
+ public THEME getTheme() {
+ return this.cssTheme;
}
- public void setCSSName(String name) {
- this.cssName = name;
+ public void setCSSName(THEME theme) {
+ this.cssTheme = theme;
}
public synchronized boolean isAdvancedModeEnabled() {
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/StatisticsToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/StatisticsToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1033,6 +1033,8 @@
name = name.substring(0, name.indexOf(" for "));
if(name.indexOf("@") != -1)
name = name.substring(0, name.indexOf("@"));
+ if (name.indexOf("(") != -1)
+ name = name.substring(0, name.indexOf("("));
ThreadBunch bunch = (ThreadBunch) map.get(name);
if(bunch != null) {
bunch.count++;
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/ToadletContainer.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/ToadletContainer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/ToadletContainer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -7,6 +7,7 @@
import java.net.URI;
import java.net.URISyntaxException;
+import freenet.clients.http.PageMaker.THEME;
import freenet.support.HTMLNode;
import freenet.support.api.BucketFactory;
@@ -31,7 +32,7 @@
/**
* Get the name of the theme to be used by all the Toadlets
*/
- public String getCSSName();
+ public THEME getTheme();
/**
* Get the form password
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/TranslationToadlet.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/TranslationToadlet.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/TranslationToadlet.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -32,6 +32,7 @@
this.core = core;
}
+ @Override
public void handleGet(URI uri, HTTPRequest request, ToadletContext ctx)
throws ToadletContextClosedException, IOException {
if(!ctx.isAllowedFullAccess()) {
super.sendErrorPage(ctx, 403, "Unauthorized",
L10n.getString("Toadlet.unauthorized"));
@@ -40,6 +41,7 @@
boolean showEverything =
!request.isParameterSet("toTranslateOnly");
+
if (request.isParameterSet("getOverrideTranlationFile")) {
SimpleFieldSet sfs =
L10n.getOverrideForCurrentLanguageTranslation();
if(sfs == null) {
@@ -48,7 +50,7 @@
}
byte[] data = sfs.toOrderedString().getBytes("UTF-8");
MultiValueTable head = new MultiValueTable();
- head.put("Content-Disposition", "attachment;
filename=\"" + L10n.PREFIX +L10n.getSelectedLanguage()+ L10n.OVERRIDE_SUFFIX +
'"');
+ head.put("Content-Disposition", "attachment;
filename=\"" + L10n.getSelectedLanguage().l10nOverrideFilename+ '"');
ctx.sendReplyHeaders(200, "Found", head, "text/plain;
charset=utf-8", data.length);
ctx.writeData(data);
return;
@@ -86,6 +88,7 @@
this.writeHTMLReply(ctx, 200, "OK",
pageNode.generate());
return;
} else if (request.isParameterSet("translate")) {
+ boolean gotoNext = request.isParameterSet("gotoNext");
String key = request.getParam("translate");
HTMLNode pageNode =
ctx.getPageMaker().getPageNode(l10n("translationUpdateTitle"), true, ctx);
HTMLNode contentNode =
ctx.getPageMaker().getContentNode(pageNode);
@@ -122,6 +125,7 @@
new String[] { "type", "name", "value"
},
new String[] { "submit",
"translation_update", l10n("updateTranslationCommand")
});
+ updateForm.addChild("input", new String[] { "type",
"name" , (gotoNext ? "checked" : "unchecked") } , new String[] { "checkbox",
"gotoNext", ""}, l10n("gotoNext"));
if(!showEverything)
updateForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "toTranslateOnly", key });
@@ -154,7 +158,7 @@
HTMLNode translationNode = contentNode.addChild("div", "class",
"translation");
HTMLNode translationHeaderNode = translationNode.addChild("p");
- translationHeaderNode.addChild("#",
l10n("contributingToLabelWithLang", "lang", L10n.getSelectedLanguage()));
+ translationHeaderNode.addChild("#",
l10n("contributingToLabelWithLang", "lang",
L10n.getSelectedLanguage().fullName));
translationHeaderNode.addChild("a", "href",
TOADLET_URL+"?getOverrideTranlationFile").addChild("#",
l10n("downloadTranslationsFile"));
translationHeaderNode.addChild("#", " ");
if(showEverything)
@@ -191,6 +195,7 @@
this.writeHTMLReply(ctx, 200, "OK", pageNode.generate());
}
+ @Override
public void handlePost(URI uri, HTTPRequest request, ToadletContext
ctx) throws ToadletContextClosedException, IOException {
if(!ctx.isAllowedFullAccess()) {
super.sendErrorPage(ctx, 403, "Unauthorized",
L10n.getString("Toadlet.unauthorized"));
@@ -206,17 +211,33 @@
return;
}
+ boolean toTranslateOnly = request.isPartSet("toTranslateOnly");
+
if(request.getPartAsString("translation_update", 32).length() >
0){
String key = request.getPartAsString("key", 256);
L10n.setOverride(key, new
String(BucketTools.toByteArray(request.getPart("trans")), "UTF-8").trim());
- redirectTo(ctx,
TOADLET_URL+"?translation_updated="+key+ (request.isPartSet("toTranslateOnly")
? "&toTranslateOnly" : ""));
+
if("on".equalsIgnoreCase(request.getPartAsString("gotoNext", 7))) {
+ KeyIterator it =
DEFAULT_TRANSLATION.keyIterator("");
+
+ while(it.hasNext()) {
+ String newKey = it.nextKey();
+ boolean isOverriden =
L10n.isOverridden(newKey);
+ System.out.println("newkey:"+newKey);
+ if(isOverriden ||
(L10n.getString(newKey, true) != null))
+ continue;
+ redirectTo(ctx,
TOADLET_URL+"?gotoNext&translate="+newKey+ (toTranslateOnly ?
"&toTranslateOnly" : ""));
+ return;
+ }
+ }
+
+ redirectTo(ctx,
TOADLET_URL+"?translation_updated="+key+ (toTranslateOnly ? "&toTranslateOnly"
: ""));
return;
} else if(request.getPartAsString("remove_confirmed",
32).length() > 0) {
String key = request.getPartAsString("remove_confirm",
256).trim();
L10n.setOverride(key, "");
- redirectTo(ctx,
TOADLET_URL+"?translation_updated="+key+ (request.isPartSet("toTranslateOnly")
? "&toTranslateOnly" : ""));
+ redirectTo(ctx,
TOADLET_URL+"?translation_updated="+key+ (toTranslateOnly ? "&toTranslateOnly"
: ""));
return;
}else // Shouldn't reach that point!
redirectTo(ctx, "/");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/GIFFilter.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/GIFFilter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/GIFFilter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -41,7 +41,7 @@
try {
// Check the header
byte[] headerCheck = new byte[HEADER_SIZE];
- dis.read(headerCheck);
+ dis.readFully(headerCheck);
if((!Arrays.equals(headerCheck, gif87aHeader)) &&
(!Arrays.equals(headerCheck, gif89aHeader))) {
throwHeaderError(l10n("invalidHeaderTitle"),
l10n("invalidHeader"));
}
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/JPEGFilter.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/JPEGFilter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/JPEGFilter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -420,7 +420,7 @@
private void assertHeader(DataInputStream dis, byte[] expected) throws
IOException {
byte[] read = new byte[expected.length];
- dis.read(read);
+ dis.readFully(read);
if(!Arrays.equals(read, expected))
throwError("Invalid header", "The file does not start
with a valid JPEG (JFIF) header.");
}
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/PNGFilter.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/PNGFilter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/filter/PNGFilter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -4,11 +4,19 @@
package freenet.clients.http.filter;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.zip.CRC32;
import freenet.l10n.L10n;
import freenet.support.HTMLNode;
@@ -21,14 +29,6 @@
import freenet.support.io.BucketTools;
import freenet.support.io.Closer;
import freenet.support.io.FileBucket;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.OutputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.zip.CRC32;
/**
* Content filter for PNG's. Only allows valid chunks (valid CRC, known chunk
type).
@@ -110,7 +110,7 @@
dis = new DataInputStream(bis);
// Check the header
byte[] headerCheck = new byte[pngHeader.length];
- dis.read(headerCheck);
+ dis.readFully(headerCheck);
if(!Arrays.equals(headerCheck, pngHeader)) {
// Throw an exception
String message = l10n("invalidHeader");
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-09-02 15:13:36 UTC (rev 22349)
@@ -7,19 +7,19 @@
BookmarkCategory0.Content.Bookmark0.Name=The Ultimate FreeNet Index
BookmarkCategory0.Content.Bookmark0.Description=A new one-page index with a
menu including categories
BookmarkCategory0.Content.Bookmark0.hasAnActivelink=true
-BookmarkCategory0.Content.Bookmark0.URI=USK at
0I8gctpUE32CM0iQhXaYpCMvtPPGfT4pjXm01oid5Zc,3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/28/
+BookmarkCategory0.Content.Bookmark0.URI=USK at
0I8gctpUE32CM0iQhXaYpCMvtPPGfT4pjXm01oid5Zc,3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/31/
BookmarkCategory0.Content.Bookmark3.Name=Index des sites Fran?ais
BookmarkCategory0.Content.Bookmark3.Description=A small French index with
descriptions
BookmarkCategory0.Content.Bookmark3.hasAnActivelink=true
-BookmarkCategory0.Content.Bookmark3.URI=USK at
RJnh1EnvOSPwOWVRS2nyhC4eIQkKoNE5hcTv7~yY-sM,pOloLxnKWM~AL24iDMHOAvTvCqMlB-p2BO9zK96TOZA,AQACAAE/index_fr/61/
+BookmarkCategory0.Content.Bookmark3.URI=USK at
RJnh1EnvOSPwOWVRS2nyhC4eIQkKoNE5hcTv7~yY-sM,pOloLxnKWM~AL24iDMHOAvTvCqMlB-p2BO9zK96TOZA,AQACAAE/index_fr/63/
BookmarkCategory0.Content.Bookmark2.Name=Freenet Activelink Index (SLOW:
graphical index, preloads all the sites, so takes *ages* to load)
BookmarkCategory0.Content.Bookmark2.hasAnActivelink=true
BookmarkCategory0.Content.Bookmark2.Description=A graphical freenet index
(this will take a long time to load as it preloads the sites)
-BookmarkCategory0.Content.Bookmark2.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/78/
+BookmarkCategory0.Content.Bookmark2.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/81/
BookmarkCategory0.Content.Bookmark1.Name=Freenet Activelink Index Text Version
(a quick-loading non-graphical index site, no porn)
BookmarkCategory0.Content.Bookmark1.hasAnActivelink=true
BookmarkCategory0.Content.Bookmark1.Description=Text version of the Activelink
Index
-BookmarkCategory0.Content.Bookmark1.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/39/
+BookmarkCategory0.Content.Bookmark1.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/42/
BookmarkCategory1.Name=Freenet devel's flogs
BookmarkCategory1.Content.BookmarkCategory=0
BookmarkCategory1.Content.Bookmark=5
@@ -49,7 +49,7 @@
BookmarkCategory2.Content.Bookmark0.Name=Freenet Message System
BookmarkCategory2.Content.Bookmark0.Description=The official freesite of FMS,
a spam resistant message board system for Freenet
BookmarkCategory2.Content.Bookmark0.hasAnActivelink=true
-BookmarkCategory2.Content.Bookmark0.URI=USK at
0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/78/
+BookmarkCategory2.Content.Bookmark0.URI=USK at
0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/80/
BookmarkCategory2.Content.Bookmark1.Name=Freemail
BookmarkCategory2.Content.Bookmark1.Description=The official site for Freemail
- email over Freenet
BookmarkCategory2.Content.Bookmark1.hasAnActivelink=true
Modified:
branches/saltedhashstore/freenet/src/freenet/config/NodeNeedRestartException.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/config/NodeNeedRestartException.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/config/NodeNeedRestartException.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -4,11 +4,9 @@
package freenet.config;
/**
- * Thrown when the node refuses to set a config variable to a particular
- * value because it is invalid. Just because this is not thrown does not
- * necessarily mean that there are no problems with the value defined,
- * it merely means that there are no immediately detectable problems with
- * it.
+ * Thrown when the node must be restarted for a config setting to be applied.
+ * The thrower must ensure that the value reaches the config file, even though
+ * it cannot be immediately used.
*/
public class NodeNeedRestartException extends ConfigException {
Modified: branches/saltedhashstore/freenet/src/freenet/crypt/SSL.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/crypt/SSL.java 2008-09-02
15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/crypt/SSL.java 2008-09-02
15:13:36 UTC (rev 22349)
@@ -19,9 +19,12 @@
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.security.Key;
import java.security.KeyStore;
+import java.security.PrivateKey;
import java.security.cert.Certificate;
import javax.net.ServerSocketFactory;
@@ -69,7 +72,7 @@
}
public void set(Boolean newValue) throws
InvalidConfigValueException {
- if(newValue != get()) {
+ if (!get().equals(newValue)) {
enable = newValue;
if(enable)
try {
@@ -215,24 +218,36 @@
fis = new FileInputStream(keyStore);
keystore.load(fis, keyStorePass.toCharArray());
} catch(FileNotFoundException fnfe) {
- throw new UnsupportedOperationException("Not
implemented yet!");
-// //If keystore not exist, create keystore and
server certificat
-// keystore.load(null, keyStorePass.toCharArray());
-// CertAndKeyGen keypair = new
CertAndKeyGen("DSA", "SHA1WithDSA");
-// X500Name x500Name = new X500Name(
-// "Freenet",
-// "Freenet",
-// "Freenet",
-// "",
-// "",
-// "");
-// keypair.generate(1024);
-// PrivateKey privKey = keypair.getPrivateKey();
-// X509Certificate[] chain = new
X509Certificate[1];
-// chain[0] = keypair.getSelfCertificate(x500Name,
1L * 365 * 24 * 60 * 60);
-// keystore.setKeyEntry("freenet", privKey,
keyPass.toCharArray(), chain);
-// storeKeyStore();
-// createSSLContext();
+ // If keystore not exist, create keystore and
server certificate
+ keystore.load(null, keyStorePass.toCharArray());
+ try {
+ Class certAndKeyGenClazz =
Class.forName("sun.security.x509.CertAndKeyGen");
+ Constructor certAndKeyGenCtor =
certAndKeyGenClazz.getConstructor(String.class, String.class);
+ Object keypair =
certAndKeyGenCtor.newInstance("DSA", "SHA1WithDSA");
+
+ Class x500NameClazz =
Class.forName("sun.security.x509.X500Name");
+ Constructor x500NameCtor =
x500NameClazz.getConstructor(String.class, String.class, String.class,
+ String.class, String.class,
String.class);
+ Object x500Name =
x500NameCtor.newInstance("Freenet", "Freenet", "Freenet", "", "", "");
+
+ Method certAndKeyGenGenerate =
certAndKeyGenClazz.getMethod("generate", int.class);
+ certAndKeyGenGenerate.invoke(keypair,
1024);
+
+ Method certAndKeyGetPrivateKey =
certAndKeyGenClazz.getMethod("getPrivateKey");
+ PrivateKey privKey = (PrivateKey)
certAndKeyGetPrivateKey.invoke(keypair);
+
+ Certificate[] chain = new
Certificate[1];
+ Method certAndKeyGenGetSelfCertificate
= certAndKeyGenClazz.getMethod("getSelfCertificate",
+ x500NameClazz, long.class);
+ chain[0] = (Certificate)
certAndKeyGenGetSelfCertificate.invoke(keypair, x500Name, 1L * 365 * 24
+ * 60 * 60);
+
+ keystore.setKeyEntry("freenet",
privKey, keyPass.toCharArray(), chain);
+ storeKeyStore();
+ createSSLContext();
+ } catch (NoSuchMethodException nsme) {
+ throw new
UnsupportedOperationException("The JVM you are using is not supported!", nsme);
+ }
} finally {
Closer.close(fis);
}
Modified:
branches/saltedhashstore/freenet/src/freenet/io/comm/UdpSocketHandler.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/io/comm/UdpSocketHandler.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/io/comm/UdpSocketHandler.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -73,7 +73,7 @@
// Only used for debugging, no need to seed from Yarrow
dropRandom = node.fastWeakRandom;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
- logDEBUG = Logger.shouldLog(Logger.MINOR, this);
+ logDEBUG = Logger.shouldLog(Logger.DEBUG, this);
tracker = AddressTracker.create(node.lastBootID,
node.getNodeDir(), listenPort);
tracker.startSend(startupTime);
}
@@ -192,7 +192,7 @@
Logger.error(this, "Caught " + t + " from "
+ lowLevelFilter, t);
}
- } else if(logDEBUG) Logger.minor(this, "No packet received");
+ } else if(logDEBUG) Logger.debug(this, "No packet received");
}
private static final int MAX_RECEIVE_SIZE = 1500;
@@ -303,7 +303,7 @@
}
node.executor.execute(this, "UdpSocketHandler for port
"+listenPort);
if(!disableHangChecker) {
- node.executor.execute(new USMChecker(),
"UdpSockerHandler watchdog");
+ node.executor.execute(new USMChecker(),
"UdpSocketHandler watchdog");
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/keys/FreenetURI.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/keys/FreenetURI.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/keys/FreenetURI.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -11,11 +11,12 @@
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
-import java.util.Vector;
+import freenet.client.InsertException;
import freenet.support.Base64;
import freenet.support.Fields;
import freenet.support.HexUtil;
@@ -25,7 +26,6 @@
import freenet.support.URLEncodedFormatException;
import freenet.support.URLEncoder;
import freenet.support.io.FileUtil;
-import freenet.client.InsertException;
/**
* Note that the metadata pairs below are not presently supported. They are
supported
@@ -267,9 +267,9 @@
throw new MalformedURLException("Invalid key type: " +
keyType);
// decode metaString
- Vector sv = null;
+ ArrayList<String> sv = null;
int slash2;
- sv = new Vector();
+ sv = new ArrayList<String>();
while((slash2 = URI.lastIndexOf("/")) != -1) {
String s;
try {
@@ -280,7 +280,7 @@
throw ue;
}
if(s != null)
- sv.addElement(s);
+ sv.add(s);
URI = URI.substring(0, slash2);
}
@@ -295,12 +295,12 @@
if(sv.isEmpty())
throw new MalformedURLException("No docname for
" + keyType);
- docName = (String) sv.remove(sv.size() - 1);
+ docName = sv.remove(sv.size() - 1);
if(isUSK) {
if(sv.isEmpty())
throw new MalformedURLException("No
suggested edition number for USK");
try {
- suggestedEdition =
Long.parseLong((String) sv.remove(sv.size() - 1));
+ suggestedEdition =
Long.parseLong(sv.remove(sv.size() - 1));
} catch(NumberFormatException e) {
MalformedURLException e1 = new
MalformedURLException("Invalid suggested edition: " + e);
e1.initCause(e);
@@ -321,7 +321,7 @@
if(!sv.isEmpty()) {
metaStr = new String[sv.size()];
for(int i = 0; i < metaStr.length; i++) {
- metaStr[i] = ((String)
sv.elementAt(metaStr.length - 1 - i)).intern();
+ metaStr[i] = sv.get(metaStr.length - 1 -
i).intern();
if(metaStr[i] == null)
throw new NullPointerException();
}
@@ -442,10 +442,12 @@
*/
public FreenetURI popMetaString() {
String[] newMetaStr = null;
- final int metaStrLength = metaStr.length;
- if((metaStr != null) && (metaStrLength > 1)) {
- newMetaStr = new String[metaStrLength - 1];
- System.arraycopy(metaStr, 1, newMetaStr, 0,
newMetaStr.length);
+ if (metaStr != null) {
+ final int metaStrLength = metaStr.length;
+ if (metaStrLength > 1) {
+ newMetaStr = new String[metaStrLength - 1];
+ System.arraycopy(metaStr, 1, newMetaStr, 0,
newMetaStr.length);
+ }
}
return setMetaString(newMetaStr);
}
@@ -499,8 +501,8 @@
}
}
- public FreenetURI addMetaStrings(LinkedList metaStrings) {
- return addMetaStrings((String[]) metaStrings.toArray(new
String[metaStrings.size()]));
+ public FreenetURI addMetaStrings(LinkedList<String> metaStrings) {
+ return addMetaStrings(metaStrings.toArray(new
String[metaStrings.size()]));
}
/**
@@ -538,11 +540,11 @@
}
public String toString(boolean prefix, boolean pureAscii) {
- StringBuffer b;
+ StringBuilder b;
if(prefix)
- b = new StringBuffer("freenet:");
+ b = new StringBuilder("freenet:");
else
- b = new StringBuffer();
+ b = new StringBuilder();
b.append(keyType).append('@');
@@ -602,8 +604,8 @@
return extra;
}
- public LinkedList listMetaStrings() {
- LinkedList l = new LinkedList();
+ public LinkedList<String> listMetaStrings() {
+ LinkedList<String> l = new LinkedList<String>();
if(metaStr != null)
for(int i = 0; i < metaStr.length; i++)
l.addLast(metaStr[i]);
@@ -739,7 +741,7 @@
public String getPreferredFilename() {
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
Logger.minor(this, "Getting preferred filename for " + this);
- Vector names = new Vector();
+ ArrayList<String> names = new ArrayList<String>();
if(keyType != null && (keyType.equals("KSK") ||
keyType.equals("SSK") || keyType.equals("USK"))) {
if(logMINOR)
Logger.minor(this, "Adding docName: " +
docName);
@@ -753,9 +755,9 @@
Logger.minor(this, "Adding metaString "
+ i + ": " + metaStr[i]);
names.add(metaStr[i]);
}
- StringBuffer out = new StringBuffer();
+ StringBuilder out = new StringBuilder();
for(int i = 0; i < names.size(); i++) {
- String s = (String) names.get(i);
+ String s = names.get(i);
if(logMINOR)
Logger.minor(this, "name " + i + " = " + s);
s = FileUtil.sanitize(s);
Modified: branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java 2008-09-02
15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java 2008-09-02
15:13:36 UTC (rev 22349)
@@ -27,29 +27,74 @@
*/
public class L10n {
public static final String CLASS_NAME = "L10n";
- public static final String PREFIX = "freenet.l10n.";
- public static final String SUFFIX = ".properties";
- public static final String OVERRIDE_SUFFIX = ".override" + SUFFIX;
- public static final String FALLBACK_DEFAULT = "en";
/** @see http://www.omniglot.com/language/names.htm */
- public static final String[][] AVAILABLE_LANGUAGES = {
- new String[] { "en", "English", "eng" },
- new String[] { "es", "Espa?ol", "spa" },
- new String[] { "da", "Dansk", "dan" },
- new String[] { "de", "Deutsch", "deu" },
- new String[] { "fi", "Suomi", "fin" },
- new String[] { "fr", "Fran?ais", "fra" },
- new String[] { "it", "Italiano", "ita" },
- new String[] { "no", "Norsk", "nor" },
- new String[] { "pl", "Polski", "pol" },
- new String[] { "se", "Svenska", "svk" },
- new String[] { "zh-cn", "??(??)", "chn" },
- new String[] { "zh-tw", "??(??)", "zh-tw" },
- new String[] { "unlisted", "unlisted", "unlisted"},
- };
- private final String selectedLanguage;
+ public enum LANGUAGE {
+ ENGLISH("en", "English", "eng"),
+ SPANISH("es", "Espa?ol", "spa"),
+ DANISH("da", "Dansk", "dan"),
+ GERMAN("de", "Deutsch", "deu"),
+ FINNISH("fi", "Suomi", "fin"),
+ FRENCH("fr", "Fran?ais", "fra"),
+ ITALIAN("it", "Italiano", "ita"),
+ NORWEGIAN("no", "Norsk", "nor"),
+ POLISH("pl", "Polski", "pol"),
+ SWEDISH("se", "Svenska", "svk"),
+ CHINESE("zh-cn", "??(??)", "chn"),
+ CHINESE_TAIWAN("zh-tw", "??(??)", "zh-tw"),
+ UNLISTED("unlisted", "unlisted", "unlisted");
+
+ /** The identifier we use internally : MUST BE UNIQUE! */
+ public final String shortCode;
+ /** The identifier shown to the user */
+ public final String fullName;
+ /** The mapping with the installer's l10n (@see bug #2424);
MUST BE UNIQUE! */
+ public final String isoCode;
+
+ public final String l10nFilename;
+ public final String l10nOverrideFilename;
+
+ private LANGUAGE(String shortCode, String fullName, String
isoCode) {
+ this.shortCode = shortCode;
+ this.fullName = fullName;
+ this.isoCode = isoCode;
+ this.l10nFilename =
"freenet/l10n/freenet.l10n."+shortCode+".properties";
+ this.l10nOverrideFilename =
"freenet.l10n."+shortCode+".override.properties";
+ }
+
+ LANGUAGE(LANGUAGE l) {
+ this(l.shortCode, l.fullName, l.isoCode);
+ }
+
+ public static LANGUAGE mapToLanguage(String whatever) {
+ for(LANGUAGE currentLanguage : LANGUAGE.values()) {
+
if(currentLanguage.shortCode.equalsIgnoreCase(whatever) ||
+
currentLanguage.fullName.equalsIgnoreCase(whatever) ||
+
currentLanguage.isoCode.equalsIgnoreCase(whatever) ||
+
currentLanguage.toString().equalsIgnoreCase(whatever))
+ {
+ return currentLanguage;
+ }
+ }
+ return null;
+ }
+
+ public static String[] valuesWithFullNames() {
+ LANGUAGE[] allValues = values();
+ String[] result = new String[allValues.length];
+ for(int i=0; i<allValues.length; i++)
+ result[i] = allValues[i].fullName;
+
+ return result;
+ }
+
+ public static LANGUAGE getDefault() {
+ return ENGLISH;
+ }
+ }
+ private final LANGUAGE selectedLanguage;
+
private static SimpleFieldSet currentTranslation = null;
private static SimpleFieldSet fallbackTranslation = null;
private static L10n currentClass = null;
@@ -57,11 +102,10 @@
private static SimpleFieldSet translationOverride;
private static final Object sync = new Object();
- L10n(String selected) {
- selectedLanguage = mapLanguageNameToShortCode(selected);
- File tmpFile = new File(L10n.PREFIX + selectedLanguage +
L10n.OVERRIDE_SUFFIX);
-
+ L10n(LANGUAGE selected) {
+ selectedLanguage = selected;
try {
+ File tmpFile = new File(selected.l10nOverrideFilename);
if(tmpFile.exists() && tmpFile.canRead() &&
tmpFile.length() > 0) {
Logger.normal(this, "Override file detected :
let's try to load it");
translationOverride =
SimpleFieldSet.readFrom(tmpFile, false, false);
@@ -94,15 +138,17 @@
* @throws MissingResourceException
*/
public static void setLanguage(String selectedLanguage) throws
MissingResourceException {
- selectedLanguage = mapLanguageNameToLongName(selectedLanguage);
synchronized (sync) {
Logger.normal(CLASS_NAME, "Changing the current
language to : " + selectedLanguage);
- currentClass = new L10n(selectedLanguage);
- if(currentClass == null) {
- currentClass = new L10n(FALLBACK_DEFAULT);
+ L10n oldClass = currentClass;
+ LANGUAGE lang =
LANGUAGE.mapToLanguage(selectedLanguage);
+ if(lang == null) {
+ currentClass = (oldClass != null ? oldClass :
new L10n(LANGUAGE.getDefault()));
Logger.error(CLASS_NAME, "The requested
translation is not available!" + selectedLanguage);
throw new MissingResourceException("The
requested translation (" + selectedLanguage + ") hasn't been found!",
CLASS_NAME, selectedLanguage);
- }
+ } else
+ currentClass = new L10n(lang);
+
}
}
@@ -123,7 +169,7 @@
// Set the value of the override
translationOverride.putOverwrite(key, value);
- Logger.normal("L10n", "Got a new translation
key: set the Override!");
+ Logger.normal(CLASS_NAME, "Got a new
translation key: set the Override!");
}
// Save the file to disk
@@ -133,20 +179,21 @@
private static void _saveTranslationFile() {
FileOutputStream fos = null;
- File finalFile = new File(L10n.PREFIX +
L10n.getSelectedLanguage() + L10n.OVERRIDE_SUFFIX);
+ File finalFile = new
File(getSelectedLanguage().l10nOverrideFilename);
try {
// We don't set deleteOnExit on it : if the save
operation fails, we want a backup
+ // FIXME: REDFLAG: not symlink-race proof!
File tempFile = new File(finalFile.getParentFile(),
finalFile.getName()+".bak");
- Logger.minor("L10n", "The temporary filename is : " +
tempFile);
+ Logger.minor(CLASS_NAME, "The temporary filename is : "
+ tempFile);
fos = new FileOutputStream(tempFile);
L10n.translationOverride.writeTo(fos);
FileUtil.renameTo(tempFile, finalFile);
- Logger.normal("L10n", "Override file saved
successfully!");
+ Logger.normal(CLASS_NAME, "Override file saved
successfully!");
} catch (IOException e) {
- Logger.error("L10n", "Error while saving the
translation override: "+ e.getMessage(), e);
+ Logger.error(CLASS_NAME, "Error while saving the
translation override: "+ e.getMessage(), e);
} finally {
Closer.close(fos);
}
@@ -182,7 +229,7 @@
public static SimpleFieldSet getDefaultLanguageTranslation() {
synchronized (sync) {
if(fallbackTranslation == null)
- fallbackTranslation =
loadTranslation(FALLBACK_DEFAULT);
+ fallbackTranslation =
loadTranslation(LANGUAGE.getDefault());
return new SimpleFieldSet(fallbackTranslation);
}
@@ -254,7 +301,7 @@
// We instanciate it only if necessary
synchronized (sync) {
if(fallbackTranslation == null)
- fallbackTranslation =
loadTranslation(FALLBACK_DEFAULT);
+ fallbackTranslation =
loadTranslation(LANGUAGE.getDefault());
result = fallbackTranslation.get(key);
}
@@ -270,7 +317,7 @@
/**
* Allows things like :
- * L10n.getString("testing.test", new String[]{ "test1", "test2" }, new
String[] { "a", "b" })
+ * L10n.getString("testing.test", new String[]{ "test1", "test2" }, "a",
"b" })
*
* @param key
* @param patterns : a list of patterns wich are matchable from the
translation
@@ -311,10 +358,10 @@
*
* @return String
*/
- public static String getSelectedLanguage() {
+ public static LANGUAGE getSelectedLanguage() {
synchronized (sync) {
if((currentClass == null) ||
(currentClass.selectedLanguage == null))
- return FALLBACK_DEFAULT;
+ return LANGUAGE.getDefault();
else
return currentClass.selectedLanguage;
}
@@ -326,26 +373,18 @@
* @param name
* @return the Properties object or null if not found
*/
- public static SimpleFieldSet loadTranslation(String name) {
- String shortCountryCode = mapLanguageNameToShortCode(name);
- if(shortCountryCode == null) {
- Logger.error("L10n", "Can't map "+name+" to a country
code!");
- return null;
- } else
- name = shortCountryCode;
- name = PREFIX.replace ('.',
'/').concat(PREFIX.concat(name.concat(SUFFIX)));
-
+ public static SimpleFieldSet loadTranslation(LANGUAGE lang) {
SimpleFieldSet result = null;
InputStream in = null;
try {
ClassLoader loader = ClassLoader.getSystemClassLoader();
// Returns null on lookup failures:
- in = loader.getResourceAsStream(name);
+ in = loader.getResourceAsStream(lang.l10nFilename);
if(in != null)
result = SimpleFieldSet.readFrom(in, false,
false);
} catch (Exception e) {
- Logger.error("L10n", "Error while loading the l10n file
from " + name + " :" + e.getMessage(), e);
+ Logger.error(CLASS_NAME, "Error while loading the l10n
file from " + lang.l10nFilename + " :" + e.getMessage(), e);
result = null;
} finally {
Closer.close(in);
@@ -353,43 +392,7 @@
return result;
}
-
- /**
- * Map a full string language name to the corresponding country short
code
- *
- * @param The name to look for
- * @return The two letters short code OR null if not found
- */
- public static String mapLanguageNameToShortCode(String name) {
- for(int i=0; i<AVAILABLE_LANGUAGES.length; i++) {
- String currentShortCode = AVAILABLE_LANGUAGES[i][0];
- String currentLongName = AVAILABLE_LANGUAGES[i][1];
- String currentCountryCodeName =
AVAILABLE_LANGUAGES[i][2];
-
- if(currentShortCode.equalsIgnoreCase(name) ||
currentLongName.equalsIgnoreCase(name) ||
currentCountryCodeName.equalsIgnoreCase(name))
- return currentShortCode;
- }
- return null;
- }
- /**
- * Map a language identifier to its corresponding long name
- *
- * @param The name to look for
- * @return The full text language name OR null if not found
- */
- public static String mapLanguageNameToLongName(String name) {
- for(int i=0; i<AVAILABLE_LANGUAGES.length; i++) {
- String currentShortCode = AVAILABLE_LANGUAGES[i][0];
- String currentLongName = AVAILABLE_LANGUAGES[i][1];
- String currentCountryCodeName =
AVAILABLE_LANGUAGES[i][2];
-
- if(currentShortCode.equalsIgnoreCase(name) ||
currentLongName.equalsIgnoreCase(name) ||
currentCountryCodeName.equalsIgnoreCase(name))
- return currentLongName;
- }
- return null;
- }
-
public static boolean isOverridden(String key) {
synchronized(sync) {
if(translationOverride == null) return false;
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.de.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.de.properties
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.de.properties
2008-09-02 15:13:36 UTC (rev 22349)
@@ -731,6 +731,8 @@
NodeClientCore.fileForClientStatsLong=Datei in der die Drosselungs-Statistiken
gespeichert werden (wird ben?tigt um herauszufinden wie oft Anfragen gesendet
werden sollen).
NodeClientCore.lazyResume=Vervollst?ndige das Laden persistenter Anfragen beim
Start? (Braucht mehr Speicher)
NodeClientCore.lazyResumeLong=Der Knoten kann persistente (dauerhafte)
anstehende Anfragen beim Starten laden, oder er kann die Daten in den Speicher
einlesen und dann die Anfragen nachdem der Knoten vollst?ndig gestartet ist
komplettieren. K?rzere Start-Zeiten, braucht aber mehr Speicher.
+NodeClientCore.maxArchiveSize=Maximale Gr??e eines Archivs
+NodeClientCore.maxArchiveSizeLong=Maximale Gr??e eines Archivs
NodeClientCore.maxRAMBucketSize=Maximale Gr??e eines RAMBuckets
NodeClientCore.maxRAMBucketSizeLong=Maximale Gr??e eines RAMBuckets (gr??ere
Buckets werden als Dateien auf der Festplatte gespeichert)
NodeClientCore.maxUSKFetchers=Maximal erlaubte Anzahl von USK-Abrufern
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
2008-09-02 15:13:36 UTC (rev 22349)
@@ -341,6 +341,7 @@
FProxyToadlet.openRSSForce=${link}Click here${/link} to open the file as
${mime} (this ${bold}may be dangerous${/bold} on IE7 or FF2).
FProxyToadlet.opennet=manage untrusted connections
FProxyToadlet.opennetTitle=Strangers
+FProxyToadlet.openWithKeyExplorer=${link}Click here${/link} to open the
freenet uri with key explorer.
FProxyToadlet.options=Your options are:
FProxyToadlet.pathNotFound=The specified path does not exist.
FProxyToadlet.pathNotFoundTitle=Path Not Found
@@ -1196,6 +1197,7 @@
TranslationToadlet.contributingToLabelWithLang=You are currently contributing
to the ${lang} translation:
TranslationToadlet.currentTranslationLabel=Current translation
TranslationToadlet.downloadTranslationsFile=Download your translations file
+TranslationToadlet.gotoNext=Go to next untranslated String?
TranslationToadlet.hideAlreadyTranslated=Hide already translated strings
TranslationToadlet.noCustomTranslations=There is no custom translation
available.
TranslationToadlet.originalVersionLabel=Original (English version)
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fi.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fi.properties
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fi.properties
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1 +1,417 @@
+BookmarkEditorToadlet.addBookmark=Lis?? kirjanmerkki
+BookmarkEditorToadlet.addCategory=Lis?? kategoria
+BookmarkEditorToadlet.addNewBookmark=Lis?? uusi kirjanmerkki
+BookmarkEditorToadlet.addNewCategory=Lis?? uusi kategoria
+BookmarkEditorToadlet.addedNewBookmark=Uusi kirjanmerkki on lis?tty
onnistuneesti
+BookmarkEditorToadlet.addedNewBookmarkTitle=Uusi kirjanmerkki lis?tty
+BookmarkEditorToadlet.bookmarkDoesNotExist=Kirjanmerkki? "${bookmark}" ei ole
olemassa
+BookmarkEditorToadlet.cancelCut=Peruuta leikkaus
+BookmarkEditorToadlet.changesSaved=Muutokset ovat tallennettu onnistuneesti
+BookmarkEditorToadlet.changesSavedTitle=Muutokset tallennettu
+BookmarkEditorToadlet.confirmDelete=Poista
+BookmarkEditorToadlet.addDefaultBookmarks=Uudelleenlis?? alkuper?iset
kirjanmerkit
+BookmarkEditorToadlet.cut=Leikkaa
+BookmarkEditorToadlet.delete=Poista
+BookmarkEditorToadlet.deleteBookmark=Poista kirjanmerkki
+BookmarkEditorToadlet.deleteBookmarkConfirm=Haluatko varmasti poistaa
kirjanmerkin ${bookmark}?
+BookmarkEditorToadlet.deleteCategory=Poista kategoria
+BookmarkEditorToadlet.deleteCategoryConfirm=Haluatko varmasti poistaa
kategorian ${bookmark} ja kaikki sen lapset?
+BookmarkEditorToadlet.deleteSucceeded=Kirjanmerkki on poistettu onnistuneesti.
+BookmarkEditorToadlet.deleteSucceededTitle=Poisto onnistui
+BookmarkEditorToadlet.descLabel=Kirjanmerkin kuvaus:
+BookmarkEditorToadlet.edit=Muokkaa
+BookmarkEditorToadlet.editBookmarkTitle=Muokkaa kirjanmerkki?
+BookmarkEditorToadlet.editCategoryTitle=Muokkaa kategoriaa
+BookmarkEditorToadlet.error=Virhe
+BookmarkEditorToadlet.hasAnActivelinkLabel=Onko ?vapaasivulla?
activelink-kuvaa?
+BookmarkEditorToadlet.invalidKeyTitle=Ep?kelpo avain
+BookmarkEditorToadlet.invalidKeyWithReason=Ep?kelpo freenet-avain
+BookmarkEditorToadlet.invalidKey=Freenet-avain on ep?kelpo.
+BookmarkEditorToadlet.keyLabel=Avain:
+BookmarkEditorToadlet.moveDown=Alas
+BookmarkEditorToadlet.moveUp=Yl?s
+BookmarkEditorToadlet.myBookmarksTitle=Kirjanmerkkini
+BookmarkEditorToadlet.nameLabel=Nimi:
+BookmarkEditorToadlet.paste=Liit?
+BookmarkEditorToadlet.pasteOrCancel=Klikkaa liitt??ksesi kuvakkeen tai
peruaksesi.
+BookmarkEditorToadlet.pasteTitle=Leikkaa/Liit?
+BookmarkEditorToadlet.save=Tallenna
+BookmarkEditorToadlet.title=Kirjanmerkkieditori
+BookmarkEditorToadlet.urlDecodeError=URL-dekoodausvirhe
+BookmarkItem.bookmarkUpdated=Sivusto ${name} on p?ivittynyt uudempaan
versioon, ${edition}.
+BookmarkItem.bookmarkUpdatedTitle=Kirjanmerkki p?ivitetty: ${name}
+BookmarkItem.bookmarkUpdatedWithLink=Sivusto ${link}${name}${/link} on
p?ivittynyt uudempaan versioon, ${edition}.
+BookmarkItem.deleteBookmarkUpdateNotification=Poista huomautus
+BookmarkItem.unnamedBookmark=Smarnimetty kirjanmerkki
+BookmarkManager.list=Kirjanmerkkilista
+BookmarkManager.listLong=merkittyjen ?vapaasivujen? lista
+BookmarkManager.malformedBookmark=V??r?nlainen kirjanmerkki
+BooleanOption.parseError=Tunnistamaton totuusarvo ${val} - kokeile arvoa true
tai false
+BuildOldAgeUserAlert.tooOldTitle=Liian vanha versio
+ClockProblemDetectedUserAlert.text=Freenet on huomannut, ett? tietokoneesi
kello (sek? kello ett? p?iv?m??r?) ei ole ajassa. Freenet ei toimi kunnolla,
ennen kuin korjaat aika-asetuksesi ja uudelleenk?ynnist?t solmun.
+ClockProblemDetectedUserAlert.title=Tietokoneesi kello ei ole ajassa.
+CSSTokenizerFilter.deletedDisallowedString=Vaarallinen rivi poistettu
+CSSTokenizerFilter.deletedUnmatchedChar=t?sm??m?t?n merkki ohitettu:
+CSSTokenizerFilter.deletedUnofficialIdent=Ep?virallinen tunniste poistettu
+CSSTokenizerFilter.deletedUnofficialIdentWithURL=Ep?virallinen
tunniste(URL:ll?) poistettu
+CSSTokenizerFilter.invalidURLContents=Ep?kelpoa sis?lt?? kohdassa url()
+CSSTokenizerFilter.supplementalCharsNotSupported=UCS-4 MERKIT KOHDAN 0xFFFF
YL?PUOLELLA EI TUETTU!
+CSSTokenizerFilter.unknownAtIdentifierLabel=Tuntematon @identifier:
+ConfigToadlet.appliedFailureExceptions=Asetuksesi hyv?ksyttiin seuraavilla
poikkeuksilla:
+ConfigToadlet.appliedFailureTitle=Asetuksiasi ei hyv?ksytty.
+ConfigToadlet.appliedSuccess=Asetusmuutokset tallennettu onnistuneesti.
+ConfigToadlet.appliedTitle=Asetukset hyv?ksytty
+ConfigToadlet.apply=Hyv?ksy
+ConfigToadlet.configNavTitle=Asetusvalikko
+ConfigToadlet.console=konsoli
+ConfigToadlet.contributeTranslation=Osallistu k??nt?miseen
+ConfigToadlet.defaultIs=Vakioasetus t?lle asetukselle on: '${default}'.
+ConfigToadlet.false=ep?tosi
+ConfigToadlet.fullTitle=Freenet-solmun asetukset ${name}:lle
+ConfigToadlet.logger=logger
+ConfigToadlet.node=node
+ConfigToadlet.node.load=node.load
+ConfigToadlet.node.opennet=node.opennet
+ConfigToadlet.node.scheduler=node.scheduler
+ConfigToadlet.node.testnet=node.testnet
+ConfigToadlet.node.updater=node.updater
+ConfigToadlet.pluginmanager=pluginmanager
+ConfigToadlet.pluginmanager2=pluginmanager2
+ConfigToadlet.reset=Nollaa
+ConfigToadlet.returnToNodeConfig=Palaa solmun asetuksiin
+ConfigToadlet.shortTitle=Asetukset
+ConfigToadlet.ssl=SSL (ei vaikuta k?ynniss? oleviin servereihin, tarvitsee
uudelleenk?ynnistyksen)
+ConfigToadlet.title=Freenet-solmun asetukset
+ConfigToadlet.toadletsymlinker=toadletsymlinker
+ConfigToadlet.true=tosi
+ConfigurablePersister.doesNotExistCannotCreate=Tiedostoa ei ole olemassa, eik?
sit? voida luoda
+ConfigurablePersister.existsCannotReadWrite=Tiedosto on olemassa, mutta siihen
ei voida kirjoittaa
+ConnectivityToadlet.addressTitle=Osoite
+ConnectivityToadlet.sentReceivedTitle=L?hetetyt/Vastaanotetut paketit
+ConnectivityToadlet.local=PAIKALLINEN
+ConnectivityToadlet.remote=ET?
+ConnectivityToadlet.noreply=EI VASTAUSTA
+ConnectivityToadlet.summaryTitle=Yhdistett?vyys
+ConnectionsToadlet.nodeStatus.CONNECTED=YHDISTETTY
+ConnectionsToadlet.nodeStatus.BACKED OFF=SAAVUTTAMATTOMISSA
+ConnectionsToadlet.nodeStatus.TOO NEW=LIIAN UUSI
+ConnectionsToadlet.nodeStatus.TOO OLD=LIIAN VANHA
+ConnectionsToadlet.nodeStatus.DISCONNECTED=KATKENNUT
+ConnectionsToadlet.nodeStatus.NEVER CONNECTED=EI IKIN? YHDISTETTY
+ConnectionsToadlet.nodeStatus.DISABLED=POIS K?YT?ST?
+ConnectionsToadlet.nodeStatus.LISTEN ONLY=VAIN KUUNNELTAVA
+ConnectionsToadlet.nodeStatus.LISTENING=KUUNTELEE
+ConnectionsToadlet.nodeStatus.BURSTING=HALKEILEE
+ConnectionsToadlet.nodeStatus.CLOCK PROBLEM=KELLO-ONGELMA
+ConnectionsToadlet.nodeStatus.CONNECTION ERROR=YHTEYSVIRHE
+ConnectionsToadlet.nodeStatus.DISCONNECTING=SULKEE YHTEYTT?
+ConnectionsToadlet.nodeStatus.UNKNOWN STATUS=TUNTEMATON TILA
+ConnectionsToadlet.nodeStatus.BUSY=VARATTU
+ConnectionsToadlet.nodeStatus.ROUTING DISABLED=EI REITIT? LIIKENNETT?
+ContentDataFilter.unknownCharsetTitle=Tuntematon merkist?!
+ContentDataFilter.warningUnknownCharsetTitle=Varoitus: Tuntematon merkist?
(${charset})
+ContentFilter.applicationPdfReadAdvice=Adobe(R) PDF-dokumentti - Eritt?in
vaarallinen!
+ContentFilter.applicationPdfWriteAdvice=Adobe(R) PDF-dokumentti - Eritt?in
vaarallinen!
+ContentFilter.imageGifReadAdvice=GIF-kuva - mahdollisesti ei vaarallinen
+ContentFilter.imageGifWriteAdvice=GIF-kuva - mahdollisesti ei vaarallinen,
mutta sinun kannattaa tuhota kaikki kommentit
+ContentFilter.imageIcoReadAdvice=Ikonitiedosto - mahdollisesti ei vaarallinen
+ContentFilter.imageIcoWriteAdvice=Ikonitiedosto - mahdollisesti ei vaarallinen
(mutta voi sis?lt?? muuta tietoa johtuen tasoitteesta?)
+ContentFilter.imageJpegReadAdvice=JPEG-kuva - mahdollisesti ei vaarallinen
+ContentFilter.imageJpegWriteAdvice=JPEG-kuva - mahdollisesti ei vaarallinen,
mutta voi sis?lt?? EXIF-tietoa
+ContentFilter.imagePngReadAdvice=PNG-kuva - mahdollisesti ei vaarallinen
+ContentFilter.imagePngWriteAdvice=PNG-kuva - mahdollisesti ei vaarallinen,
mutta sinun kannattaa tuhota kaikki kommentit tai tekstikent?t
+ContentFilter.textCssReadAdvice=CSS (cascading style sheet, usein k?ytetty
HTML:n kanssa) - mahdollisesti ei vaarallinen jos suodatettu, mutta suodatin ei
perustu hyv?ksyttyjen elementtien listaan
+ContentFilter.textCssWriteAdvice=CSS (cascading style sheet, usein k?ytetty
HTML:n kanssa) - t?m? voi sis?lt?? metadataa, varmista se k?sin
+ContentFilter.textHtmlReadAdvice=HTML - ei vaarallinen, jos suodatettu
+ContentFilter.textHtmlWriteAdvice=HTML - voi sis?lt?? metadataa jne.; tarkista
k?sin
+ContentFilter.textPlainReadAdvice=Tekstitiedosto - ei vaarallinen, ellei
selaimesi ole tyhm? (e.g Internet Explorer)
+ContentFilter.textPlainWriteAdvice=Tekstitiedosto - ei vaarallinen, ellet
lis?? tiivistetty? tietoa
+DarknetConnectionsToadlet.activityTitle=T?m?nhetkinen aktiviteetti
+DarknetConnectionsToadlet.add=Lis??
+DarknetConnectionsToadlet.addPeerTitle=Lis?? toinen vertainen
+DarknetConnectionsToadlet.alreadyInReferences=Meill? on jo annettu referenssi.
+DarknetConnectionsToadlet.backedOff=Yhdistetty mutta saavuttamattomissa:
N?ihin vertaisiin on yhteys, mutta he ovat saavuttamattomissa, joten solmu ei
ohjaa pyynt?j? heille.
+DarknetConnectionsToadlet.backedOffShort=Saavuttamattomissa
+DarknetConnectionsToadlet.confirmRemoveNodeWarningTitle=Solmun poisto
+DarknetConnectionsToadlet.connectedShort=Yhdistetty
+DarknetConnectionsToadlet.disabledShort=Poissa k?yt?st?
+DarknetConnectionsToadlet.enterDescription=Sy?t? kuvaus:
+DarknetConnectionsToadlet.connError=Yhteys ep?onnistui(buginen solmu?)
+DarknetConnectionsToadlet.connErrorShort=Yhteysongelma
+DarknetConnectionsToadlet.failedToAddNodeTitle=Solmun lis?ys ep?onnistui
+DarknetConnectionsToadlet.forceRemove=Pakota poisto
+DarknetConnectionsToadlet.go=Mene
+DarknetConnectionsToadlet.idleTimeTitle=Yhdistetty / Lep??
+DarknetConnectionsToadlet.ipAddress=Solmun verkko-osoite muodossa IP:Port
+DarknetConnectionsToadlet.ipAddressTitle=Osoite
+DarknetConnectionsToadlet.listenOnlyShort=Vain kuunneltava
+DarknetConnectionsToadlet.nameTitle=Nimi
+DarknetConnectionsToadlet.neverConnectedShort=Ei ikin? yhdistetty
+DarknetConnectionsToadlet.nodePortsTitle=Solmun k?ytt?m?t portit
+DarknetConnectionsToadlet.notConnectedShort=Katkennut
+DarknetConnectionsToadlet.privateNoteTitle=Yksityismerkint?
+DarknetConnectionsToadlet.remove=Poista se!
+DarknetConnectionsToadlet.removePeers=Poista valitut vertaiset
+DarknetConnectionsToadlet.seedServers=Solmut, joita k?yt?mme l?hdesolmuina
+DarknetConnectionsToadlet.seedServersShort=L?hdesolmut
+DarknetConnectionsToadlet.seedClients=Solmut, joille me olemme l?hdesolmuna
+DarknetConnectionsToadlet.seedClientsShort=Seeding for
+DarknetConnectionsToadlet.selectAction=-- Valitse toiminto --
+DarknetConnectionsToadlet.sendMessageTitle=L?het? Solmulta Solmulle(N2NTM)
-viesti
+DarknetConnectionsToadlet.sendMessageToPeers=L?het? N2NTM valituille
vertaisille.
+DarknetConnectionsToadlet.separator=-- -- --
+DarknetConnectionsToadlet.statusTitle=Tila
+DarknetConnectionsToadlet.tooNewShort=Liian uusi
+DarknetConnectionsToadlet.unknownAddress=(tuntematon osoite)
+DarknetConnectionsToadlet.updateChangedPrivnotes=P?ivit? muutetut
yksityismerkinn?t
+DarknetConnectionsToadlet.versionTitle=Versio
+ExtOldAgeUserAlert.extTooOldTitle=Freenet-ext on liian vanha
+FirstTimeWizardToadlet.homepageTitle=Freenetin ensimm?isen kerran velho
+FirstTimeWizardToadlet.chooseNodeName=Solmun nimi on pakollinen!
+FirstTimeWizardToadlet.connectToStrangers=Yhdist? tuntemattomiin?
+FirstTimeWizardToadlet.enableOpennet=Tunnetko ket??n, joka k?ytt?? freenetti??
+FirstTimeWizardToadlet.warningTitle=Varoitus!
+FirstTimeWizardToadlet.welcomeInfoboxTitle=Tervetuloa Freenetin ensimm?isen
kerran velhoon!
+FirstTimeWizardToadlet.bandwidthLimit=Nopeusrajoitukset
+FirstTimeWizardToadlet.clickContinue=Klikkaa t?st? jatkaaksesi
+FirstTimeWizardToadlet.continue=Jatka
+FirstTimeWizardToadlet.continueEnd=Klikkaa t?st? aloittaaksesi Freenetin
k?yt?n!
+FirstTimeWizardToadlet.datastoreSize=Datavaraston koko
+FirstTimeWizardToadlet.isNetworkTrusted=Onko paikallinen verkkosi luotettava?
+FirstTimeWizardToadlet.congratz=Tervetuloa laivaan!
+FirstTimeWizardToadlet.step1Title=Freenetin ensimm?isen kerran velho! -
Yst?v?t ja muukalaiset
+FirstTimeWizardToadlet.step2Title=Freenetin ensimm?isen kerran velho! -
Valitse solmun nimi
+FirstTimeWizardToadlet.step3Title=Freenetin ensimm?isen kerran velho! -
Nopeusrajoitukset
+FirstTimeWizardToadlet.step4Title=Freenetin ensimm?isen kerran velho! -
Datavaraston koko
+FirstTimeWizardToadlet.step5Title=Freenetin ensimm?isen kerran velho! - Verkon
asetukset
+FirstTimeWizardToadlet.step6Title=Freenetin ensimm?isen kerran velho! -
Onnitteluni, solmusi on nyt konfiguroitu!
+FirstTimeWizardToadlet.skipWizard=En ole ensikertalainen, haluan j?tt?? velhon
v?liin!
+FProxyToadlet.abortToHomepage=Peru ja siirry FProxyn etusivulle.
+FProxyToadlet.cantBindPort=FProxya ei voida sitoa tuohon porttiin.
+FProxyToadlet.config=konfiguroi solmusi
+FProxyToadlet.configTitle=Asetukset
+FProxyToadlet.dangerousContentTitle=Mahdollisesti vaarallista sis?lt??
+FProxyToadlet.dangerousRSSSubtitle=RSS-sy?te voi olla vaarallinen
+FProxyToadlet.dangerousRSSTitle=Mahdollisesti vaarallista sis?lt??! (RSS)
+FProxyToadlet.errorWithReason=Virhe: ${error}
+FProxyToadlet.expectedKeyButGot=Odotettiin Freenet-avainta, mutta saatiin:
+FProxyToadlet.expectedMimeType=Odotettu MIME-tyyppi: ${mime}
+FProxyToadlet.explanationTitle=Selitys
+FProxyToadlet.fileInformationTitle=Tiedoston tiedot
+FProxyToadlet.filenameLabel=Tiedoston nimi:
+FProxyToadlet.friends=hallitse f2f-yhteyksi?
+FProxyToadlet.friendsTitle=Yst?v?t
+FProxyToadlet.goBack=Mene takaisin
+FProxyToadlet.goBackToPrev=Takaisin edelliselle sivulle
+FProxyToadlet.invalidKeyTitle=Ep?kelpo avain
+FProxyToadlet.invalidKeyWithReason=Ep?kelpo avain: ${reason}
+FProxyToadlet.largeFile=Suuri tiedosto
+FProxyToadlet.mayChange= (voi vaihtua)
+FProxyToadlet.mimeType=MIME-tyyppi: ${mime}
+FProxyToadlet.notEnoughMetaStrings=Ei tarpeeksi metatietoa
+FProxyToadlet.notFoundTitle=Ei l?ydetty
+FProxyToadlet.opennet=Hallitse ep?luotettavia yhteyksi?
+FProxyToadlet.opennetTitle=Muukalaiset
+FProxyToadlet.options=Asetuksesi ovat:
+FProxyToadlet.pathNotFound=M??ritelty? polkua ei ole olemassa
+FProxyToadlet.pathNotFoundTitle=Polkua ei l?ytynyt
+FProxyToadlet.plugins=konfiguroi ja hallitse liit?nn?isi?
+FProxyToadlet.pluginsTitle=Liit?nn?iset
+FProxyToadlet.queue=hallitse jonossa olevia pyynt?j?
+FProxyToadlet.queueTitle=Jono
+FProxyToadlet.retryNow=Yrit? uudelleen heti
+FProxyToadlet.sizeLabel=Koko:
+FProxyToadlet.sizeUnknown=Koko: tuntematon
+FProxyToadlet.stats=Katsontatilastot
+FProxyToadlet.statsTitle=Tilastot
+FProxyToadlet.unableToRetrieve=Freenet ei onnistunut hankkimaan t?t? tiedostoa
+FProxyToadlet.unknownMIMEType=MIME-tyyppi: tuntematon
+FProxyToadlet.welcome=kotisivu
+FProxyToadlet.welcomeTitle=Koti
+FcpServer.allowedHosts=Sallitut is?nn?t (lue varoitus!)
+FetchException.longError.10=Tiedosto ei ole arkistossa
+FetchException.longError.13=Sis?lt?? ei l?ydetty
+FetchException.longError.17=Sis?inen virhe, luultavasti bugi
+FetchException.longError.18=Tiedosto l?ydetty, mutta se menetettiin sit?
hakiessa
+FetchException.longError.20=Ep?kelpo URI
+FetchException.longError.21=Liian suuri
+FetchException.longError.22=Metatieto liian suuri
+FetchException.longError.23=Liian monta lohkoa / segmentti
+FetchException.longError.25=Peruutettu
+FetchException.longError.26=Arkisto uudelleenk?ynnistetty
+FetchException.longError.4=Metatiedon parsinta ep?onnistui
+FetchException.longError.6=Lohkon purku ep?onnistui
+FetchException.shortError.10=Ei ole arkistossa
+FetchException.shortError.11=Liian monta polkukomponenttia
+FileOffer.askUserTitle=Suora tiedostonsiirto
+FileOffer.offeredFileHeader=Solmu ${name} tarjosi tiedostoa:
+FileOffer.fileLabel=Tiedosto:
+FileOffer.senderLabel=L?hett?j?:
+FileOffer.commentLabel=Kommentti:
+FileOffer.mimeLabel=MIME-tyyppi:
+FileOffer.sizeLabel=Koko:
+FileOffer.acceptTransferButton=Hyv?ksy siirto
+FileOffer.rejectTransferButton=Hylk?? siirto
+FileOffer.failedReceiveHeader=Tiedoston ${filename} siirto solmulta ${node}
ep?onnistui.
+FileOffer.failedReceiveTitle=Tiedoston vastaanotto ep?onnistui
+FileOffer.succeededReceiveTitle=Tiedoston vastaanotto onnistui
+FileOffer.succeededReceiveHeader=Tiedoston ${filename} siirto solmulta ${node}
onnistui.
+GIFFilter.invalidHeader=Tiedostolla ei ole kelvollista GIF-otsikkotietoa.
+GIFFilter.invalidHeaderTitle=Ep?kelpo otsikkotieto
+GIFFilter.tooShortTitle=Liian lyhyt
+HTMLFilter.deletedUnknownStyle=tuntematon tyyli poistettu
+JPEGFilter.tooShort=Tiedosto on liian lyhyt ollakseen JPEG.
+JPEGFilter.tooShortTitle=Liian lyhyt
+LocalFileInsertToadlet.fileHeader=Tiedosto
+LocalFileInsertToadlet.insert=Lis??
+LocalFileInsertToadlet.sizeHeader=Koko
+N2NTMToadlet.delayedTitle=Viiv?stetty
+N2NTMToadlet.failedTitle=Ep?onnistui
+N2NTMToadlet.friends=Yst?v?t
+N2NTMToadlet.peerName=Vertaisen nimi
+N2NTMToadlet.peerNotFoundTitle=Vertaista ei l?ytynyt
+N2NTMToadlet.queuedTitle=Jonossa
+N2NTMToadlet.returnToFriends=Palaa yst?v?listalle
+N2NTMToadlet.sendMessageShort=L?het? viesti
+N2NTMToadlet.sent=Viesti l?hetetty vertaiselle
+N2NTMToadlet.sentTitle=L?hetetty
+N2NTMToadlet.tooLong=N2NTM-viestit ovat rajoitettu 1024:n merkkiin
+N2NTMToadlet.tooLongTitle=Liian pitk?
+N2NTMUserAlert.delete=Poista
+N2NTMUserAlert.reply=Vastaa
+Node.storeSize=Varaston koko tavuissa
+Node.storeSizeLong=Varaston koko tavuissa
+NodeIPDectector.inclLocalAddress=Sis?llyt? paikalliset osoitteet
solmuviitteeseen
+NodeIPDectector.inclLocalAddressLong=M??ritt??, sis?llytet??nk? paikalliset
osoitteet(LAN ja localhost) solmun viitteisiin. T?m? ei ole hy?dyllist?,
elleiv?t molemmat puolet aseta kohtaa allowLocalAddresses=true toistensa
referensseihin.
+NodeIPDectector.ipOverride=IP-osoitteen korvaus
+NodeIPDectector.ipOverrideLong=IP-osoitteen korvaus (yleens? turha) - aseta
t?m?, jos sinulla on *staattinen* IP-osoite tai domain-nimi (esim. dyndns:n
kautta) ja olet palomuurin takana.
+NodeIPDectector.tempAddressHint=V?liaikainen IP-osoitteen vihje
+NodeIPDectector.tempAddressHintLong=V?liaikainen vihje omasta IP:st?;
poistetaan k?yt?n j?lkeen
+PluginToadlet.addPluginTitle=Lis?? liit?nn?inen
+PluginToadlet.failedToLoadPlugin=Liit?nn?isen lis?ys ep?onnistui.
+PluginToadlet.failedToLoadPluginTitle=Liit?nn?isen lataus ep?onnistui
+PluginToadlet.internalNameTitle=Sis?inen nimi
+PluginToadlet.loadPluginCommand=Lataa liit?nn?inen
+PluginToadlet.noWebInterfaceTitle=Liit?nn?isell? ei ole web-liittym??
+PluginToadlet.pluginList=Liit?nn?islista
+PluginToadlet.pluginListTitle=Lista liit?nn?isist?
+PluginToadlet.pluginNameTitle=Liit?nn?isen nimi
+PluginToadlet.pluginNotFoundTitle=Liit?nn?ist? ei l?ytynyt
+PluginToadlet.visit=Vieraile
+PproxyToadlet.changeReloadOnStartup=Muuta
+PproxyToadlet.classNameTitle=Luokan nimi
+PproxyToadlet.Error=Virhe
+PproxyToadlet.internalIDTitle=Sis?inen ID
+PproxyToadlet.Load=Lataa
+PproxyToadlet.loadOfficialPlugin=Lis?? virallinen liit?nn?inen
+PproxyToadlet.loadOfficialPluginLabel=Lataa virallinen liit?nn?inen
+PproxyToadlet.loadOtherPlugin=Lis?? ep?virallinen liit?nn?inen
+PproxyToadlet.loadOtherURLLabel=Liit?nn?isen URL
+PproxyToadlet.noPlugins=Ei liit?nn?isi? ladattu
+PproxyToadlet.pluginUnloaded=Liit?nn?inen poistettu k?yt?st?
+PproxyToadlet.plugins=Liit?nn?iset
+PproxyToadlet.startingPluginName=Liit?nn?isen nimi
+PproxyToadlet.startingPluginStatus=Nykyinen tila
+PproxyToadlet.startingPluginStatus.downloading=luodaan paikallista kopiota...
+PproxyToadlet.startingPluginStatus.starting=k?ynnistet??n
+PproxyToadlet.startingPluginTime=Aikaa tuhlattu
+PproxyToadlet.pluginStopping=Liit?nn?ist? pys?ytet??n...
+PproxyToadlet.unload=Poista k?yt?st?
+PproxyToadlet.unloadPluginTitle=Poista liit?nn?inen k?yt?st??
+PproxyToadlet.unloadPurge=Poista liit?nn?inen v?limuistista?
+QueueToadlet.DUinProgress=Aktiiviset kansion l?hetykset
+QueueToadlet.DinProgress=Aktiiviset lataukset
+QueueToadlet.UinProgress=Aktiiviset l?hetykset
+QueueToadlet.change=Vaihda
+QueueToadlet.completedDU=Onnistuneet kansion l?hetykset
+QueueToadlet.completedDtoDisk=Onnistuneet lataukset levylle
+QueueToadlet.completedDtoTemp=Onnistuneet lataukset v?limuistiin
+QueueToadlet.completedU=Onnistuneet: L?hetykset (${size})
+QueueToadlet.completedUDirectory=Onnistuneet: Kansion l?hetykset (${size})
+QueueToadlet.download=Lataa
+QueueToadlet.errorAccessDenied=Virhe: Ei oikeuksia!
+QueueToadlet.errorDToDisk=Ei voida ladata levylle
+QueueToadlet.errorDownloadNotCompleted=Lataus ei valmis
+QueueToadlet.errorDownloadNotFound=Latausta ei l?ydetty
+QueueToadlet.errorInvalidURI=Ep?kelpo URI
+QueueToadlet.errorNoFileSelected=Ei tiedostoa valittuna
+QueueToadlet.errorNoFileSelectedU=Et valinnut tiedostoa l?hetett?v?ksi.
+QueueToadlet.errorNoKey=Ei avainta annettu ladattavaksi
+QueueToadlet.errorNoKeyToD=Et m??ritt?nyt ladattavaa avainta
+QueueToadlet.failedD=Ep?onnistuneet lataukset
+QueueToadlet.failedD=Ep?onnistunut: Lataukset (${size})
+QueueToadlet.failedDU=Ep?onnistuneet hakemiston l?hetykset
+QueueToadlet.failedDU=Ep?onnistunut: Hakemiston l?hetykset (${size})
+QueueToadlet.failedU=Ep?onnistuneet l?hetykset
+QueueToadlet.failedU=Ep?onnistunut: L?hetykset (${size})
+QueueToadlet.fcpIsMissing=FCP-serveri puuttuu
+QueueToadlet.fileName=Tiedostonimi
+QueueToadlet.files=Tiedostoja
+QueueToadlet.follow=Seuraa uudelleenohjausta
+QueueToadlet.globalQueueIsEmpty=Globaali jono on tyhj?
+QueueToadlet.identifier=Tunniste
+QueueToadlet.insertFile=Sy?t? tiedosto
+QueueToadlet.insertFileLabel=Tiedosto
+QueueToadlet.insertFileCompressLabel=Pakkaa
+QueueToadlet.insertFileInsertFileLabel=Sy?t? tiedosto
+QueueToadlet.insertFileBrowseLabel=Selaa
+QueueToadlet.insertFileResetForm=Nollaa lomake
+QueueToadlet.key=Avain
+QueueToadlet.mimeType=MIME-tyyppi
+QueueToadlet.none=tyhj?
+QueueToadlet.panicButton=Paniikkinappula
+QueueToadlet.persistence=Itsep?isyys
+QueueToadlet.persistenceForever=loppumaton
+QueueToadlet.persistenceNone=olematon
+QueueToadlet.persistenceReboot=uudelleenk?ynnist?
+QueueToadlet.priority0=h?t?tapaus
+QueueToadlet.priority1=eritt?in suuri
+QueueToadlet.priority2=korkea
+QueueToadlet.priority3=keskitaso
+QueueToadlet.priority4=matala
+QueueToadlet.priority5=eritt?in matala
+QueueToadlet.priority6=ei tule valmistumaan
+QueueToadlet.priority=Prioriteetti
+QueueToadlet.progress=Edistyminen
+QueueToadlet.reason=Syy
+QueueToadlet.remove=Poista
+QueueToadlet.requestNavigation=Request Navigation
+QueueToadlet.restart=Uudelleenk?ynnist?
+QueueToadlet.size=Koko
+QueueToadlet.starting=K?YNNISTET??N
+QueueToadlet.totalSize=Kokonaiskoko
+QueueToadlet.unknown=Tuntematon
+QueueToadlet.warningUnsafeContent=Mahdollisesti turvatonta sis?lt??
+SimpleToadletServer.advancedMode=K?yt? edistynytt? tilaa?
+StatisticsToadlet.bandwidthTitle=Kaistanleveys
+StatisticsToadlet.cpus=K?ytett?viss? olevat prosessorit: ${count}
+StatisticsToadlet.fullTitle=Tilastot ${name}:lle
+StatisticsToadlet.getLogs=Nappaa edellisen solmun lokitiedosto
+TestnetHandler.port=Testnetin portti
+TextModeClientInterfaceServer.enabled=Salli TCMI
+TextModeClientInterfaceServer.enabledLong=M??ritt??, halutaanko TCMI sallia
+Toadlet.yes=Kyll?
+Toadlet.no=Ei
+Toadlet.cancel=Peruuta
+Toadlet.clickHere=Napsauta t?h?n
+Toadlet.internalErrorPleaseReport=Sis?inen virhe: raportoi siit?, kiitoksia
+Toadlet.internalErrorTitle=Sis?inen virhe
+Toadlet.nodeHomepage=Solmun kotisivu
+Toadlet.notSupportedTitle=Ei tuettu
+Toadlet.homepage=Kotisivu
+TranslationToadlet.currentTranslationLabel=Nykyinen k??nn?s
+TranslationToadlet.downloadTranslationsFile=Lataa nykyinen k??nn?stiedosto
+TranslationToadlet.hideAlreadyTranslated=Piilota jo k??nnetyt rivit
+TranslationToadlet.reEdit=Muokkaa k??nn?st? uudelleen
+TranslationToadlet.remove=Poista
+TranslationToadlet.returnToTranslations=Palaa k??nn?ssivulle
+TranslationToadlet.showEverything=N?yt? kaikki, mukaanlukien k??nnetyt rivit
+TranslationToadlet.translationKeyLabel=K??nn?ksen avain
+UpdatedVersionAvailableUserAlert.title=Uusi vakaa versio Freenetist? on
julkaista, sinun kannattaisi p?ivitt?? mahdollisimman nopeasti
+UpdatedVersionAvailableUserAlert.updateASAPButton=P?ivit? mahdollisimman
nopeasti
+UpdatedVersionAvailableUserAlert.updateASAPQuestion=Haluaisitko solmun
k?ynnist?v?n itsens? uudelleen heti kun se on ladannut uusimman version?
+UpdatedVersionAvailableUserAlert.updateNowButton=P?ivit? nyt!
+UserAlert.apply=Hyv?ksy
+UserAlert.hide=Piilota
+UserAlert.reset=Nollaa
End
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fr.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fr.properties
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.fr.properties
2008-09-02 15:13:36 UTC (rev 22349)
@@ -90,11 +90,15 @@
ConfigToadlet.modeAdvancedTooltip=Options de configuration utiles uniquement
aux utilisateurs exp?riment?s et aux d?veloppeurs
ConfigToadlet.modeSimple=Options de configuration simple
ConfigToadlet.modeSimpleTooltip=Options de configuration utiles ? tous les
utilisateurs
+ConfigToadlet.needRestart=L'activation d'un param?tre n?cessite un
red?marrage, veuillez red?marrer Freenet imm?diatement.
+ConfigToadlet.needRestartShort=L'activation d'un param?tre n?cessite un
red?marrage, veuillez red?marrer Freenet imm?diatement.
+ConfigToadlet.needRestartTitle=Red?marrage de Freenet n?cessaire
ConfigToadlet.node=noeud
ConfigToadlet.pluginmanager=gestionnaire de plugins
ConfigToadlet.pluginmanager2=gestionnaire de plugins 2
ConfigToadlet.possibilitiesTitle=Continuer
ConfigToadlet.reset=R?initialiser
+ConfigToadlet.restartNode=Red?marrer maintenant
ConfigToadlet.returnToNodeConfig=Retourner ? la page de configuration
ConfigToadlet.shortTitle=Configuration
ConfigToadlet.ssl=SSL (red?marrage n?cessaire)
@@ -429,12 +433,12 @@
FirstTimeWizardToadlet.congratz=Bienvenue ? bord !
FirstTimeWizardToadlet.congratzLong=F?licitations, la configuration de votre
noeud est termin?e. Vous pouvez modifier cette configuration ? tout moment en
cliquant sur le lien "Configuration" dans le menu de gauche. Notez que Freenet
sera lent au d?but et acc?l?rera par la suite. Vous pouvez commencer en
visitant les marque-pages pr?sents sur la prochaine page. Bienvenue sur Freenet.
FirstTimeWizardToadlet.connectToStrangers=Se connecter aux Inconnus ?
-FirstTimeWizardToadlet.connectToStrangersLong=Id?alement, les utilisateurs de
Freenet ne devraient se connecter qu'? des gens qu'ils connaissent. C'est
beaucoup plus s?r car il devient tr?s difficile de savoir que vous utilisez
Freenet. Cependant, si vous ne connaissez pas au moins 5 personnes utilisant
Freenet, vous pouvez choisir de vous connecter ? des inconnus. Notez que vous
pourrez toujours d?sactiver ?a par la suite.
+FirstTimeWizardToadlet.connectToStrangersLong=Pour utiliser Freenet, vous
devez vous connecter au moins ? 5 autres personnes. Id?alement, il faudrait que
ce soit des gens que vous connaisse et en qui vous avez confiance. Si vous
n'avez pas assez d'amis qui utilisent Freenet, vous pouvez choisir de vous
connecter ? des inconnus. Cependant, vous connecter ? des inconnus permet ?
d'autres de savoir que vous utilisez Freenet et vous expose ? des risques de
s?curit? suppl?mentaires. Si vous avez besoin de cacher le fait que vous
utilisez Freenet, cel? pourrait vous attirer des ennuis.Id?alement, les
utilisateurs de Freenet ne devraient se connecter qu'? des gens qu'ils
connaissent. C'est beaucoup plus s?r car il devient tr?s difficile de savoir
que vous utilisez Freenet. Cependant, si vous ne connaissez pas au moins 5
personnes utilisant Freenet, vous pouvez choisir de vous connecter ? des
inconnus. Notez que vous pourrez toujours d?sactiver ?a par la suite.
FirstTimeWizardToadlet.continue=Continuer
FirstTimeWizardToadlet.continueEnd=Cliquez ici pour commencer ? utiliser
Freenet !
FirstTimeWizardToadlet.datastoreSize=Taille du store
FirstTimeWizardToadlet.datastoreSizeLong=Veuillez sp?cifier la taille de votre
datastore. Le datastore agit comme un cache ; stocker les donn?es du r?seau
am?liorera les performances quand vous t?l?chargerez des fichiers populaires.
Plus vous stockez de donn?es, plus vous aidez la communaut? et plus votre noeud
sera rapide (surtout les t?l?chargements).
-FirstTimeWizardToadlet.enableOpennet=Connaissez-vous des gens qui utilisent
Freenet ?
+FirstTimeWizardToadlet.enableOpennet=Il est possible de d?sactiver la
connexion aux ?trangers par la suite, quand vous aurez assez de connexions avec
des amis, mais vous aurez r?v?l? des informations l'intervale. Freenet est
toujours exp?rimental, et nous ne garantissons pas la s?curit?.
FirstTimeWizardToadlet.fivePercentDisk=(= 5% de l'espace libre)
FirstTimeWizardToadlet.homepageTitle=Assistant de d?marrage Freenet !
FirstTimeWizardToadlet.iDoTrust=Faites-vous confiance aux personnes connect?s
par ${interface} (${ip}) ?
@@ -444,9 +448,9 @@
FirstTimeWizardToadlet.memoryLimitLong=Combien de m?moire voulez-vous laisser
Freenet utiliser ? Si vous avez beaucoup de t?l?chargements ou insertions en
cours, Freenet aura besoin de plus de m?moire. Nous sugg?rons de ne pas
descendre en dessous de 128Mo ? moins que vous ayez tr?s peu de m?moire. Si
vous avez 1Go ou plus, vous devriez mettre au moins 256Mo. Ca prendra effet
apr?s le red?marrage de Freenet.
FirstTimeWizardToadlet.noNetworkIF=Pas d'autre carte r?seau trouv?e
FirstTimeWizardToadlet.noNetworkIFLong=Freenet n'a pas trouv? d'autre carte
r?seau. Il consid?rera que vous vous y connectez seulement depuis votre
ordinateur.
-FirstTimeWizardToadlet.opennetNo=Oui, j'ai au moins 5 amis qui utilisent
Freenet et je vais les ajouter manuellement sur la page Amis.
+FirstTimeWizardToadlet.opennetNo=J'ai au moins 5 amis qui utilisent Freenet et
je vais les ajouter manuellement sur la page Amis.
FirstTimeWizardToadlet.opennetWarning=Freenet est peut-?tre ill?gal dans votre
pays, car il permet une libert? d'expression sans restrictions. Si c'est le
cas, et que vous utilisez la connexion automatique ? des inconnus, votre
gouvernement pourra savoir facilement que vous utilisez Freenet; vous ne
devriez donc pas activer ce mode et ne devriez vous connecter qu'? des gens que
vous connaissez (et en qui vous avez confiance). Freenet est toujours
exp?rimental, nous ne garantissons pas qu'il est exempt de bugs, et par
cons?quent, ne pouvons garantir votre anonymat/s?curit?. Il faut faire
particuli?rement attention aux gens avec qui vous vous connectez: ils occupent
la meilleure place pour espionner vos requ?tes.
-FirstTimeWizardToadlet.opennetYes=Non, je veux que le n?ud trouve
automatiquement des gens ? qui se connecter.
+FirstTimeWizardToadlet.opennetYes=Je veux que le n?ud trouve automatiquement
des gens ? qui se connecter.
FirstTimeWizardToadlet.skipWizard=Je ne suis pas un d?butant, passer
l'assistant !
FirstTimeWizardToadlet.step1Title=Assistant de d?marrage Freenet ! - Amis et
Inconnus
FirstTimeWizardToadlet.step2Title=Assistant de d?marrage Freenet ! -
Choisissez le nom de votre noeud
@@ -727,16 +731,26 @@
NodeClientCore.downloadAllowedDirsLong=Liste de dossiers (s?par?s par des ';')
o? le t?l?chargement est autoris?. "downloads" correspond au dossier de
t?l?chargement, laissez-la vide pour n'autoriser aucun t?l?chargement sur le
disque dur, "all" autorise les t?l?chargements partout !
NodeClientCore.downloadDir=R?peroire de t?l?chargement
NodeClientCore.downloadDirLong=Dossier o? sauvegarder les fichiers t?l?charg?s
par d?faut
+NodeClientCore.encryptPersistentTempBuckets=Chiffrer les fichiers temporaires
persistants ? NE PAS TOUCHER !
+NodeClientCore.encryptPersistentTempBucketsLong=Chiffre les fichiers
temporaires persistants ? Dans certains cas (si votre disque et votre swap sont
chiffr?s), ce n'est peut-?tre pas n?cessaire. NE PAS TOUCHER, SAUF SI VOUS
SAVEZ CE QUE VOUS FAITES !
+NodeClientCore.encryptTempBuckets=Chiffrer les fichiers temporaires ? NE PAS
TOUCHER !
+NodeClientCore.encryptTempBucketsLong=Chiffrer les fichiers temporaires ? Dans
certains cas (si votre disque et votre swap sont chiffr?s), ce n'est peut-?tre
pas n?cessaire. NE PAS TOUCHER, SAUF SI VOUS SAVEZ CE QUE VOUS FAITES !
NodeClientCore.fileForClientStats=Fichier o? stocker les statistiques des
clients
NodeClientCore.fileForClientStatsLong=Fichier o? stocker les statistiques de
transfert (utilis?es pour d?cider ? quelle fr?quence envoyer les requ?tes)
NodeClientCore.lazyResume=Terminer le chargement des requ?tes persistantes
apr?s le d?marrage ? (Utilise plus de m?moire)
NodeClientCore.lazyResumeLong=Le noeud peut charger les requ?tes persistantes
en attente pendant le d?marrage, ou il peut lire les infos en m?moire et
relancer les requ?tes apr?s le d?marrage. Le d?marrage est plus rapide mais
cela consomme plus de m?moire.
+NodeClientCore.maxArchiveSize=Taille maximum d'une archive
+NodeClientCore.maxArchiveSizeLong=Taille maximum d'une archive
+NodeClientCore.maxRAMBucketSize=Taille maximum d'un bloc en m?moire
+NodeClientCore.maxRAMBucketSizeLong=Taille maximale de fichier en m?moire (les
fichiers plus gros seront stock?s sur disque)
NodeClientCore.maxUSKFetchers=Nombre maximum de r?cup?rateurs d'USK
NodeClientCore.maxUSKFetchersLong=Nombre maximum de r?cup?rateurs d'USK
NodeClientCore.maxUSKFetchersMustBeGreaterThanZero=Doit ?tre sup?rieur ? z?ro
NodeClientCore.movingTempDirOnTheFlyNotSupported=D?placer le dossier
temporaire ? la vol?e n'est pas possible pour le moment
NodeClientCore.persistentTempDir=Dossier pour les fichiers temporaires
persistants
NodeClientCore.persistentTempDirLong=Dossier o? placer les fichiers
temporaires persistants
+NodeClientCore.ramBucketPoolSize=Quantit? de RAM d?di?e aux fichiers
temporaires
+NodeClientCore.ramBucketPoolSizeLong=Quantit? de RAM d?di?e aux fichiers
temporaires. Economisez de la m?moire ou des E/S.
NodeClientCore.startingUp=Veuillez laisser un peu de temps ? Freenet pour
terminer son d?marrage. En attendant, certaines choses ne marcheront pas et le
n?ud sera plus lent que la normale.
NodeClientCore.startingUpShort=Freenet est en train de d?marrer, certaines
choses peuvent ne pas marcher et le noeud peut ?tre lent.
NodeClientCore.startingUpTitle=Freenet est en train de d?marrer
@@ -1070,11 +1084,13 @@
SimpleToadletServer.illegalCSSName=Le nom du CSS ne doit contenir ni slash, ni
points !
SimpleToadletServer.panicButton=Afficher le bouton panique ?
SimpleToadletServer.panicButtonLong=Afficher un "bouton panique" sur la page
/File d'attente/ qui supprimera toutes les requ?tes sans confirmation.
+SimpleToadletServer.passthroughMaxSize=Taille maximum d'un fichier pass? par
FProxy de fa?on transparente
+SimpleToadletServer.passthroughMaxSizeLong=Taille maximum d'un fichier pass?
par FProxy de fa?on transparente
SimpleToadletServer.port=Port FProxy
SimpleToadletServer.portLong=Port TCP ?cout? par FProxy
SimpleToadletServer.ssl=Activer SSL ?
SimpleToadletServer.sslLong=Activer SSL pour FProxy
-StartupToadlet.entropyErrorContent=Il n'y a pas assez d'entropy sur votre
syst?me... Freenet ne d?marrera pas avant d'en avoir suffisament.
+StartupToadlet.entropyErrorContent=Il n'y a pas assez d'entropie sur votre
syst?me... Freenet ne d?marrera pas avant d'en avoir suffisament.
StartupToadlet.entropyErrorTitle=Pas assez d'entropie disponible !
StartupToadlet.isStartingUp=D?marrage de Freenet en cours, veuillez patienter.
StartupToadlet.title=D?marrage de Freenet
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.it.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.it.properties
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.it.properties
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1,13 +1,13 @@
-Announcer.announceAlertIntro=Il nodo sta cercando di connettersi con i
seednode ed annunciare s? stesso all' OpenNet (network di Sconosciuti). Possono
essere necessari alcuni minuti per completare l'operazione.
-Announcer.announceAlertNoSeednodes=Non e' stato trovato il file seednodes.fref
e quindi il nodo non pu? connettersi automaticamente ad Opennet. Aggiungere
alcuni nodi manualmente o scaricare il file seednodes da
http://downloads.freenetproject.org/alpha/opennet/ .
-Announcer.announceAlertShort=Il nodo sta cercando di connettersi alla rete,
nel frattempo sar? pi? lento.
+Announcer.announceAlertIntro=Il nodo sta cercando di connettersi con i
seednode ed annunciare s? stesso all' OpenNet (network di Sconosciuti). Possono
essere necessari alcuni minuti per completare l'operazione.
+Announcer.announceAlertNoSeednodes=Non e' stato trovato il file seednodes.fref
e quindi il nodo non pu? connettersi automaticamente ad Opennet. Aggiungere
alcuni nodi manualmente o scaricare il file seednodes da
http://downloads.freenetproject.org/alpha/opennet/ .
+Announcer.announceAlertShort=Il nodo sta cercando di connettersi alla rete,
nel frattempo sar? pi? lento.
Announcer.announceAlertTitle=Annuncio Nodo in corso
-Announcer.announceDetails=Il nodo ha recentemente inoltrato
${recentSentAnnouncements} annunci, ${runningAnnouncements} dei quali ancora in
corso, ed aggiunto ${addedNodes} nodi (${refusedNodes} nodi hanno rifiutato la
connessione). In questo momento il nodo ? connesso a ${connectedSeednodes}
seednode e sta cercando di connettersi ad altri ${disconnectedSeednodes}.
-Announcer.announceDisabledTooOld=Il software utilizzato dal nodo ? obsoleto ed
inadatto alla connessione con la version corrente della rete Freenet.
L'annuncio ? stato diabilitato in quanto comunque inutile. Si prega di
aggiornare il nodo appena possibile (auto-aggiornamento potrebbe essere in
attesa di input o disabilitato)
-Announcer.announceDisabledTooOldShort=Il nodo non riesce a connettersi alla
rete perch? la versione di Freenet utilizzata ? obsoleta. Si prega di eseguire
l'aggiornamento.
+Announcer.announceDetails=Il nodo ha recentemente inoltrato
${recentSentAnnouncements} annunci, ${runningAnnouncements} dei quali ancora in
corso, ed aggiunto ${addedNodes} nodi (${refusedNodes} nodi hanno rifiutato la
connessione). In questo momento il nodo ? connesso a ${connectedSeednodes}
seednode e sta cercando di connettersi ad altri ${disconnectedSeednodes}.
+Announcer.announceDisabledTooOld=Il software utilizzato dal nodo ? obsoleto ed
inadatto alla connessione con la version corrente della rete Freenet.
L'annuncio ? stato diabilitato in quanto comunque inutile. Si prega di
aggiornare il nodo appena possibile (auto-aggiornamento potrebbe essere in
attesa di input o disabilitato)
+Announcer.announceDisabledTooOldShort=Il nodo non riesce a connettersi alla
rete perch? la versione di Freenet utilizzata ? obsoleta. Si prega di eseguire
l'aggiornamento.
Announcer.announceDisabledTooOldTitle=Annuncio disabilitato (obsoleto)
Announcer.announceLoading=Il nodo sta caricando il file seednodes per
annunciarsi al resto della rete. Il completamento dell' operazione potrebbe
richiedere diversi minuti.
-Announcer.coolingOff=per i prossimi ${time} secondi, il nodo aspetter? che i
nodi che ha annunciato si connettano; se non ci saranno abbastanza nodi prover?
con un altro nodo.
+Announcer.coolingOff=per i prossimi ${time} secondi, il nodo aspetter? che i
nodi che ha annunciato si connettano; se non ci saranno abbastanza nodi prover?
con un altro nodo.
Bookmark.noName=nessun nome
BookmarkEditorToadlet.addBookmark=Aggiungi Segnalibro
BookmarkEditorToadlet.addCategory=Aggiungi Categoria
@@ -36,11 +36,11 @@
BookmarkEditorToadlet.editCategoryTitle=Modifica Categoria
BookmarkEditorToadlet.error=Errore
BookmarkEditorToadlet.hasAnActivelinkLabel=Il freesite ha un activelink?
-BookmarkEditorToadlet.invalidKey=La chiave Freenet non ? valida.
+BookmarkEditorToadlet.invalidKey=La chiave Freenet non ? valida.
BookmarkEditorToadlet.invalidKeyTitle=Chiave non valida
BookmarkEditorToadlet.invalidKeyWithReason=Chiave Freenet non valida.
BookmarkEditorToadlet.keyLabel=Chiave :
-BookmarkEditorToadlet.moveDown=Gi?
+BookmarkEditorToadlet.moveDown=Gi?
BookmarkEditorToadlet.moveUp=Su
BookmarkEditorToadlet.myBookmarksTitle=I Miei Segnalibri
BookmarkEditorToadlet.nameLabel=Nome :
@@ -50,18 +50,18 @@
BookmarkEditorToadlet.save=Salva
BookmarkEditorToadlet.title=Modifica Preferiti
BookmarkEditorToadlet.urlDecodeError=Errore nella decodifica della URL
-BookmarkItem.bookmarkUpdated=Il sito ${name} ? stato aggiornato all'edizione
${edition}.
+BookmarkItem.bookmarkUpdated=Il sito ${name} ? stato aggiornato all'edizione
${edition}.
BookmarkItem.bookmarkUpdatedShort=Freesite aggiornato: ${name}
BookmarkItem.bookmarkUpdatedTitle=${name}: link aggiornato
-BookmarkItem.bookmarkUpdatedWithLink=Il Sito ${link}${name}${/link} ? stato
aggiornato all'edizione ${edition}.
+BookmarkItem.bookmarkUpdatedWithLink=Il Sito ${link}${name}${/link} ? stato
aggiornato all'edizione ${edition}.
BookmarkItem.deleteBookmarkUpdateNotification=Elimina notifica
BookmarkItem.unnamedBookmark=Segnalibro Senza Nome
BookmarkManager.list=Segnalibri
BookmarkManager.listLong=Lista dei freesite preferiti
BookmarkManager.malformedBookmark=Segnalibro malformato
BooleanOption.parseError=Booleano non riconosciuto: ${val} - prova "vero o
falso"
-BuildOldAgeUserAlert.tooOld=Il software di questo nodo ? antecedente alla pi?
vecchia versione (Build #${lastgood}) utilizzabile dai peer aggiornati ai quali
si cerca di connettersi. E' necessario aggiornare il nodo al pi? presto
possibile; non sar? possibile connettersi ai peer etichettati "TROPPO RECENTE"
finch? il nodo non sar? stato aggiornato (il nodo va tenuto aggiornato o si
rischia di essere esclusi dalla rete Freenet)
-BuildOldAgeUserAlert.tooOldShort=Il nodo sta utilizzando una versione di
Freenet obsoleta al punto da rendere impossibile il collegamento alla rete. Si
prega di eseguire l'aggiornamento al pi? presto possibile.
+BuildOldAgeUserAlert.tooOld=Il software di questo nodo ? antecedente alla pi?
vecchia versione (Build #${lastgood}) utilizzabile dai peer aggiornati ai quali
si cerca di connettersi. E' necessario aggiornare il nodo al pi? presto
possibile; non sar? possibile connettersi ai peer etichettati "TROPPO RECENTE"
finch? il nodo non sar? stato aggiornato (il nodo va tenuto aggiornato o si
rischia di essere esclusi dalla rete Freenet)
+BuildOldAgeUserAlert.tooOldShort=Il nodo sta utilizzando una versione di
Freenet obsoleta al punto da rendere impossibile il collegamento alla rete. Si
prega di eseguire l'aggiornamento al pi? presto possibile.
BuildOldAgeUserAlert.tooOldTitle=Versione obsoleta
CSSTokenizerFilter.deletedDisallowedString=Stringa non permessa eliminata
CSSTokenizerFilter.deletedUnmatchedChar=Ignorato char non corrispondente:
@@ -70,9 +70,9 @@
CSSTokenizerFilter.invalidURLContents=Contenuto della url() non valido
CSSTokenizerFilter.supplementalCharsNotSupported=CARATTERI UCS-4 OLTRE 0xFFFF
NON SUPPORTATI!
CSSTokenizerFilter.unknownAtIdentifierLabel=@identifier sconosciuto:
-ClockProblemDetectedUserAlert.shortText=Freenet non pu? connettersi perch?
l'orologio del computer non ? sincronizzato.
-ClockProblemDetectedUserAlert.text=Freenet ha rilevato che l'orologio di
sistema (ora e data) non ? regolato correttamente. Il nodo non potr? funzionare
correttamente finch? non sar? stato riavviato dopo aver regolato l'orologio.
-ClockProblemDetectedUserAlert.title=L'orologio del computer non ? regolato
correttamente.
+ClockProblemDetectedUserAlert.shortText=Freenet non pu? connettersi perch?
l'orologio del computer non ? sincronizzato.
+ClockProblemDetectedUserAlert.text=Freenet ha rilevato che l'orologio di
sistema (ora e data) non ? regolato correttamente. Il nodo non potr? funzionare
correttamente finch? non sar? stato riavviato dopo aver regolato l'orologio.
+ClockProblemDetectedUserAlert.title=L'orologio del computer non ? regolato
correttamente.
ConfigToadlet.appliedFailureExceptions=Le modifiche alla configurazione sono
state applicate con le seguenti eccezioni:
ConfigToadlet.appliedFailureTitle=Configurazione Non Applicata!
ConfigToadlet.appliedSuccess=Le modifiche alla configurazione sono state
applicate.
@@ -81,18 +81,22 @@
ConfigToadlet.configNavTitle=Esplora Configurazione
ConfigToadlet.console=console
ConfigToadlet.contributeTranslation=Contribuisci alla traduzione
-ConfigToadlet.defaultIs=Il valore predefinito per l'opzione di configurazione
?: '${default}'.
+ConfigToadlet.defaultIs=Il valore predefinito per l'opzione di configurazione
?: '${default}'.
ConfigToadlet.false=falso
ConfigToadlet.fcp=fcp
ConfigToadlet.fproxy=fproxy
ConfigToadlet.fullTitle=Configurazione del nodo Freenet: ${name}
ConfigToadlet.homepage=Homepage del Nodo
ConfigToadlet.logger=log
+ConfigToadlet.needRestart=Per attivare dei cambiamenti nella configurazione e'
necessario il riavvio. Si prega di riavviare il nodo.
+ConfigToadlet.needRestartShort=Per attivare dei cambiamenti nella
configurazione e' necessario il riavvio. Si prega di riavviare il nodo.
+ConfigToadlet.needRestartTitle=Necessario riavvio del nodo
ConfigToadlet.node=nodo
ConfigToadlet.pluginmanager=pluginmanager
ConfigToadlet.pluginmanager2=pluginmanager2
ConfigToadlet.possibilitiesTitle=Scegli Azione:
ConfigToadlet.reset=Annulla
+ConfigToadlet.restartNode=Riavvia Adesso
ConfigToadlet.returnToNodeConfig=Torna alla configurazione del nodo
ConfigToadlet.returnToNodeHomepage=Torna alla homepage del nodo
ConfigToadlet.shortTitle=Configurazione
@@ -108,8 +112,8 @@
ConfigToadlet.node.scheduler=nodo.schedulatore
ConfigToadlet.node.testnet=nodo.testnet
ConfigToadlet.node.updater=nodo.aggiornamento
-ConfigurablePersister.doesNotExistCannotCreate=Il file non esiste e non pu?
essere creato
-ConfigurablePersister.existsCannotReadWrite=Il file esiste ma non pu? essere
letto/scritto
+ConfigurablePersister.doesNotExistCannotCreate=Il file non esiste e non pu?
essere creato
+ConfigurablePersister.existsCannotReadWrite=Il file esiste ma non pu? essere
letto/scritto
ConnectionsToadlet.nodeStatus.BACKED OFF=RESPINTO
ConnectionsToadlet.nodeStatus.BURSTING=BURST
ConnectionsToadlet.nodeStatus.BUSY=OCCUPATO
@@ -129,8 +133,8 @@
ConnectivityToadlet.addressTitle=Indirizzo
ConnectivityToadlet.byIPTitle=Pachetti per ${ip} per indirizzo IP - ${status}
(lunghezza minima tunnel ${tunnelLength})
ConnectivityToadlet.byPortTitle=Pacchetti per ${port} per porta - ${status}
(lunghezza minima tunnel ${tunnelLength})
-ConnectivityToadlet.connectivity=Connettivit? Internet
-ConnectivityToadlet.connectivityTitle=Connettivit?
+ConnectivityToadlet.connectivity=Connettivit? Internet
+ConnectivityToadlet.connectivityTitle=Connettivit?
ConnectivityToadlet.firstReceiveLeadTime=Da online a prima ricezione
ConnectivityToadlet.firstSendLeadTime=Da start a prima trasmissione
ConnectivityToadlet.local=LOCALE
@@ -138,9 +142,9 @@
ConnectivityToadlet.noreply=NESSUNA RISPOSTA
ConnectivityToadlet.remote=REMOTO
ConnectivityToadlet.sentReceivedTitle=Pacchetti ricevuti/trasmessi
-ConnectivityToadlet.summaryTitle=Connettivit?
-ConnectivityToadlet.title=Connettivit? internet di ${nodeName}
-ContentDataFilter.unknownCharset=La pagina che sta per essere visualizzata
utilizza un formato di caratteri (charset) di tipo sconosciuto. Ci? rende
impossibile filtrare la pagina, il che potrebbe a sua volta compromettere
l'anonimato dell'utente.
+ConnectivityToadlet.summaryTitle=Connettivit?
+ConnectivityToadlet.title=Connettivit? internet di ${nodeName}
+ContentDataFilter.unknownCharset=La pagina che sta per essere visualizzata
utilizza un formato di caratteri (charset) di tipo sconosciuto. Ci? rende
impossibile filtrare la pagina, il che potrebbe a sua volta compromettere
l'anonimato dell'utente.
ContentDataFilter.unknownCharsetTitle=Charset sconosciuto!
ContentDataFilter.warningUnknownCharsetTitle=Attenzione: charset sconosciuto
(${charset})
ContentFilter.applicationPdfReadAdvice=Documento Adobe(R) PDF - MOLTO
PERICOLOSO!
@@ -150,90 +154,90 @@
ContentFilter.imageIcoReadAdvice=File icona: probabilmente non pericoloso
ContentFilter.imageIcoWriteAdvice=File icona - probabilmente non pericoloso
(ma potrebbe contenere altri dati)
ContentFilter.imageJpegReadAdvice=Immagine JPEG - probabilmente non pericoloso
-ContentFilter.imageJpegWriteAdvice=Immagine JPEG - probabilmente non
pericoloso ma pu? contenere dati EXIF
+ContentFilter.imageJpegWriteAdvice=Immagine JPEG - probabilmente non
pericoloso ma pu? contenere dati EXIF
ContentFilter.imagePngReadAdvice=Immagine PNG - probabilmente non pericoloso
ContentFilter.imagePngWriteAdvice=Immagine PNG - probabilmente non pericoloso
ma sarebbe opportuno eliminare eventuali commenti e porzioni di testo
-ContentFilter.textCssReadAdvice=CSS (cascading style sheet, di solito ? usato
in combinazione con HTML) - probabilmente non pericoloso se filtrato, ma il
filtro non ? del tipo "whitelist" quindi fare attenzione
-ContentFilter.textCssWriteAdvice=CSS (cascading style sheet, solitamente usato
con HTML) - pu? contenere metadati, controllare manualmente
+ContentFilter.textCssReadAdvice=CSS (cascading style sheet, di solito ? usato
in combinazione con HTML) - probabilmente non pericoloso se filtrato, ma il
filtro non ? del tipo "whitelist" quindi fare attenzione
+ContentFilter.textCssWriteAdvice=CSS (cascading style sheet, solitamente usato
con HTML) - pu? contenere metadati, controllare manualmente
ContentFilter.textHtmlReadAdvice=HTML - Non pericoloso se filtrato
-ContentFilter.textHtmlWriteAdvice=HTML - pu? contenere metadati di tipo
pericoloso, ecc; si consiglia di controllare manualmente
-ContentFilter.textPlainReadAdvice=Formato testo semplice (plain text)- non ?
pericoloso a meno che il browser utilizzato non sia particolarmente "stupido"
(per esempio Internet Explorer)
+ContentFilter.textHtmlWriteAdvice=HTML - pu? contenere metadati di tipo
pericoloso, ecc; si consiglia di controllare manualmente
+ContentFilter.textPlainReadAdvice=Formato testo semplice (plain text)- non ?
pericoloso a meno che il browser utilizzato non sia particolarmente "stupido"
(per esempio Internet Explorer)
ContentFilter.textPlainWriteAdvice=Testo semplice (plain text) - non
pericoloso a meno che l'utente vi includa informazioni compromettenti
DarknetConnectionsToadlet.activityInserts=Inserzioni: ${totalSenders} totale
senders, ${CHKhandlers} CHK handlers, ${SSKhandlers} SSK handlers
DarknetConnectionsToadlet.activityRequests=Richieste: ${totalSenders} totale
senders, ${CHKhandlers} CHK handlers, ${SSKhandlers} SSK handlers
-DarknetConnectionsToadlet.activityTitle=Attivit? Corrente
+DarknetConnectionsToadlet.activityTitle=Attivit? Corrente
DarknetConnectionsToadlet.add=Aggiungi
DarknetConnectionsToadlet.addPeerTitle=Aggiungi un peer
-DarknetConnectionsToadlet.alreadyInReferences=La referenza data ? gi? presente
in lista.
-DarknetConnectionsToadlet.backedOff=Connesso ma respinto: Il nodo ? connesso a
questi peer ma la la connessione viene rifiutata e quindi i peer in questione
non vengono al momento utilizzati per l'instradamento delle richieste
+DarknetConnectionsToadlet.alreadyInReferences=La referenza data ? gi? presente
in lista.
+DarknetConnectionsToadlet.backedOff=Connesso ma respinto: Il nodo ? connesso a
questi peer ma la la connessione viene rifiutata e quindi i peer in questione
non vengono al momento utilizzati per l'instradamento delle richieste
DarknetConnectionsToadlet.backedOffShort=Respinti
-DarknetConnectionsToadlet.bursting=Non connesso e bursting: per un breve
periodo, il nodo sta tentando di connettersi a questi peer perch? l'utenete ha
impostato burstOnly su di essi
+DarknetConnectionsToadlet.bursting=Non connesso e bursting: per un breve
periodo, il nodo sta tentando di connettersi a questi peer perch? l'utenete ha
impostato burstOnly su di essi
DarknetConnectionsToadlet.burstingShort=Bursting
-DarknetConnectionsToadlet.busy=Occupati: Questi peer sono connessi ma ci
comunicano di essere troppo occupati per poter aggiungere le nostre richieste a
quelle gi? presenti quindi non vengono temporaneamente utilizzati per
l'instradamento.
+DarknetConnectionsToadlet.busy=Occupati: Questi peer sono connessi ma ci
comunicano di essere troppo occupati per poter aggiungere le nostre richieste a
quelle gi? presenti quindi non vengono temporaneamente utilizzati per
l'instradamento.
DarknetConnectionsToadlet.busyShort=Occupati
DarknetConnectionsToadlet.cancel=Cancella
-DarknetConnectionsToadlet.cantFetchNoderefURL=Non ? stato possibile richiamare
la referenza di un nodo da ${url}. Riprovare.
-DarknetConnectionsToadlet.cantParseTryAgain=Non ? stato possibile interpretare
it testo dato come refernza di un nodo: (${error}).
-DarknetConnectionsToadlet.cantParseWrongEnding=Non ? stato possibile
interpretare le referenza: L'ultimo rigo dovrebbe contenere solo la parola End,
esso contiene invece: ${end}
-DarknetConnectionsToadlet.clockProblem=L'orologio di sitema e l'orologio del
nodo differiscono di oltre 24 ore. Ci? potrebbe causare problemi con
l'aggiornamento e con i client. La connessione ? stata pertanto disabilitata,
+DarknetConnectionsToadlet.cantFetchNoderefURL=Non ? stato possibile richiamare
la referenza di un nodo da ${url}. Riprovare.
+DarknetConnectionsToadlet.cantParseTryAgain=Non ? stato possibile interpretare
it testo dato come refernza di un nodo: (${error}).
+DarknetConnectionsToadlet.cantParseWrongEnding=Non ? stato possibile
interpretare le referenza: L'ultimo rigo dovrebbe contenere solo la parola End,
esso contiene invece: ${end}
+DarknetConnectionsToadlet.clockProblem=L'orologio di sitema e l'orologio del
nodo differiscono di oltre 24 ore. Ci? potrebbe causare problemi con
l'aggiornamento e con i client. La connessione ? stata pertanto disabilitata,
DarknetConnectionsToadlet.clockProblemShort=Problema di sincronizzazione
orologio
-DarknetConnectionsToadlet.confirmRemoveNode=Conferma rimozione di "${name}" ?
Rimuovere un nodo che ? stato disconnesso per meno di una settimana non ?
consigliabile. L'azione pi? appropriata sarebbe di attendere ancora un po',
considerando che potrebbe trattarsi di un problema temporaneo, e che ci sono
utenti che non hanno la possibilit? lasciar girare il proprio nodo giorno e
notte.
+DarknetConnectionsToadlet.confirmRemoveNode=Conferma rimozione di "${name}" ?
Rimuovere un nodo che ? stato disconnesso per meno di una settimana non ?
consigliabile. L'azione pi? appropriata sarebbe di attendere ancora un po',
considerando che potrebbe trattarsi di un problema temporaneo, e che ci sono
utenti che non hanno la possibilit? lasciar girare il proprio nodo giorno e
notte.
DarknetConnectionsToadlet.confirmRemoveNodeTitle=Conferma
DarknetConnectionsToadlet.confirmRemoveNodeWarningTitle=Rimozione Nodo
DarknetConnectionsToadlet.connError=Connessione fallita (il nodo ha un 'bug'?)
DarknetConnectionsToadlet.connErrorShort=Errore di Connessione
-DarknetConnectionsToadlet.connected=Connesso: Il nodo ? connesso a questi peer:
+DarknetConnectionsToadlet.connected=Connesso: Il nodo ? connesso a questi peer:
DarknetConnectionsToadlet.connectedShort=Connessi
DarknetConnectionsToadlet.darknetFnpPort=Darknet FNP: ${port}/UDP (usata per
connessioni a peer affidabili. Forwardare se possibile)
DarknetConnectionsToadlet.disabled=Non connesso e disabilitato: L'utente ha
configurato il nodo in maniera da non connettersi a questo peer.
DarknetConnectionsToadlet.disabledShort=Disabilitato
-DarknetConnectionsToadlet.disconnecting=Disconnessione in corso (si sta
procedendo alla rimozione del nodo; ? necessario informare il nodo in questione
e ci? potrebbe richiedere un po' di tempo)
+DarknetConnectionsToadlet.disconnecting=Disconnessione in corso (si sta
procedendo alla rimozione del nodo; ? necessario informare il nodo in questione
e ci? potrebbe richiedere un po' di tempo)
DarknetConnectionsToadlet.disconnectingShort=Disconnessione in corso
DarknetConnectionsToadlet.enterDescription=Inserisci descrizione:
DarknetConnectionsToadlet.failedToAddNodeInternalError=Impossibile
interpretare il testo dato comereferenza di un nodo Freenet. Si prega di
riportare agli sviluppatori quanto segue:
DarknetConnectionsToadlet.failedToAddNodeInternalErrorTitle=Aggiunta nuovo
nodo fallita: Errore interno.
DarknetConnectionsToadlet.failedToAddNodeTitle=Aggiunta Nodo Fallita
-DarknetConnectionsToadlet.fcpDisabled=FCP non ? abilitato (per applicazioni
client di Freenet come Frost e Thaw)
+DarknetConnectionsToadlet.fcpDisabled=FCP non ? abilitato (per applicazioni
client di Freenet come Frost e Thaw)
DarknetConnectionsToadlet.fcpPort=FCP: ${port}/tcp (per le applicazioni client
di Freenet, per esempio Frost e Thaw)
DarknetConnectionsToadlet.fileReference=Seleziona il file contenente la
referenza:
-DarknetConnectionsToadlet.fnpPort=FNP: ${port}/udp (Comunicazione tra nodi. Di
solito questa ? l'unica porta che si potrebbe aver bisogno di forwardare)
+DarknetConnectionsToadlet.fnpPort=FNP: ${port}/udp (Comunicazione tra nodi. Di
solito questa ? l'unica porta che si potrebbe aver bisogno di forwardare)
DarknetConnectionsToadlet.forceRemove=Rimozione Forzata
-DarknetConnectionsToadlet.fproxyDisabled=FProxy non ? abilitato (questa
interfaccia web)
+DarknetConnectionsToadlet.fproxyDisabled=FProxy non ? abilitato (questa
interfaccia web)
DarknetConnectionsToadlet.fproxyPort=FProxy: ${port}/tcp (questa interfaccia
web)
DarknetConnectionsToadlet.fullTitle=${counts} Amici (peer affidabili) di
${name}
DarknetConnectionsToadlet.go=Vai
-DarknetConnectionsToadlet.idleTime=Tempo trascorso da quando il nodo ?
connesso o da quando lo ? stato per l'ultima volta
+DarknetConnectionsToadlet.idleTime=Tempo trascorso da quando il nodo ?
connesso o da quando lo ? stato per l'ultima volta
DarknetConnectionsToadlet.idleTimeTitle=Connesso / Inattivo
-DarknetConnectionsToadlet.invalidSignature=Non ? stato possibile verificare le
firma elettronica della refernza (${error}).
+DarknetConnectionsToadlet.invalidSignature=Non ? stato possibile verificare le
firma elettronica della refernza (${error}).
DarknetConnectionsToadlet.ipAddress=Indirizzo del nodo in formato IP:porta
DarknetConnectionsToadlet.ipAddressTitle=Indirizzo
-DarknetConnectionsToadlet.listenOnly=Non connesso e solo ascolto: il nodo non
cercher? di connettersi a questo peer perch? l'utente l'ha impostato su solo
ascolto (listenOnly)
+DarknetConnectionsToadlet.listenOnly=Non connesso e solo ascolto: il nodo non
cercher? di connettersi a questo peer perch? l'utente l'ha impostato su solo
ascolto (listenOnly)
DarknetConnectionsToadlet.listenOnlyShort=Solo ascolto
-DarknetConnectionsToadlet.listening=Non connesso ma in ascolto: il nodo non
cercher? spesso di connettersi con questo peer perch? l'utente l'ha impostato
su burstOnly
+DarknetConnectionsToadlet.listening=Non connesso ma in ascolto: il nodo non
cercher? spesso di connettersi con questo peer perch? l'utente l'ha impostato
su burstOnly
DarknetConnectionsToadlet.listeningShort=Ascolto
DarknetConnectionsToadlet.myFriends=I Miei Amici (peer affidabili aggiunti da
me)
DarknetConnectionsToadlet.myReferenceHeader=${linkref}Referenza del
Nodo${/linkref} (${linktext}testo${/linktext})
DarknetConnectionsToadlet.nameClickToMessage=Nome del nodo. Clicca sul nome
per mandare un messaggio a questo peer:
DarknetConnectionsToadlet.nameTitle=Nome
-DarknetConnectionsToadlet.neverConnected=Mai Connesso. Questo peer non ? mai
stato connesso al nostro nodo.
+DarknetConnectionsToadlet.neverConnected=Mai Connesso. Questo peer non ? mai
stato connesso al nostro nodo.
DarknetConnectionsToadlet.neverConnectedShort=Mai connesso
-DarknetConnectionsToadlet.noPeersFirstHalf=Freenet non pu? funzionare perch?
non sono stati ancora aggiunti dei peer ai quali connettersi.
+DarknetConnectionsToadlet.noPeersFirstHalf=Freenet non pu? funzionare perch?
non sono stati ancora aggiunti dei peer ai quali connettersi.
DarknetConnectionsToadlet.noPeersSecondHalf=Leggi l'infobox in alto per vedere
come si fa.
-DarknetConnectionsToadlet.noPeersWithHomepageLink=Freenet non pu? funzionare
perch? non sono ancora stati aggiunti dei peer ai quali collegarsi. Alla pagina
${link}node homepage${/link}, in alto, si pu? leggere come fare.
-DarknetConnectionsToadlet.noRefOrURL=Non ? stato possibile rilevare una
referenza nodo o una URL. Si prega di riprovare.
+DarknetConnectionsToadlet.noPeersWithHomepageLink=Freenet non pu? funzionare
perch? non sono ancora stati aggiunti dei peer ai quali collegarsi. Alla pagina
${link}node homepage${/link}, in alto, si pu? leggere come fare.
+DarknetConnectionsToadlet.noRefOrURL=Non ? stato possibile rilevare una
referenza nodo o una URL. Si prega di riprovare.
DarknetConnectionsToadlet.noRequests=Al momento, il nodo non sta elaborando
alcuna richiesta.
DarknetConnectionsToadlet.nodeHomepage=homepage del nodo
DarknetConnectionsToadlet.nodePortsTitle=Porte utilizzate dal Nodo
DarknetConnectionsToadlet.notConnected=Non connesso: Finora non ci sono state
connessioni ma il nodo cerca continuamente di connettersi
DarknetConnectionsToadlet.notConnectedShort=Disconnessi
-DarknetConnectionsToadlet.opennetFnpPort=Opennet FNP: ${port}/UDP (usata per
connessioni a peer non affidabili, cio? Sconosciuti. Forwardare se possibile)
-DarknetConnectionsToadlet.pasteReference=Incolla la referenza qui (il nodo
elliminer? automaticamente le parti aggiunte da chat clients, p.es. <toad_>) :
+DarknetConnectionsToadlet.opennetFnpPort=Opennet FNP: ${port}/UDP (usata per
connessioni a peer non affidabili, cio? Sconosciuti. Forwardare se possibile)
+DarknetConnectionsToadlet.pasteReference=Incolla la referenza qui (il nodo
elliminer? automaticamente le parti aggiunte da chat clients, p.es. <toad_>) :
DarknetConnectionsToadlet.privateNote=Un commento privato relativo a questo
nodo:
DarknetConnectionsToadlet.privateNoteTitle=Nota Privata
-DarknetConnectionsToadlet.referenceCopyWarning=La referenza del nodo va
copiata ${bold}SENZA VARIAZIONI${/bold}. Qualsiasi modificazione la render?
${bold}inutilizzabile${/bold}..
+DarknetConnectionsToadlet.referenceCopyWarning=La referenza del nodo va
copiata ${bold}SENZA VARIAZIONI${/bold}. Qualsiasi modificazione la render?
${bold}inutilizzabile${/bold}..
DarknetConnectionsToadlet.remove=Elimina
DarknetConnectionsToadlet.removePeers=Elimina peer selezionati
-DarknetConnectionsToadlet.routingDisabled=Non sta instradando traffico: (la
connessione tra nodo locale e remoto ? attiva ma uno dei due rifiuta di
instradare traffico)
+DarknetConnectionsToadlet.routingDisabled=Non sta instradando traffico: (la
connessione tra nodo locale e remoto ? attiva ma uno dei due rifiuta di
instradare traffico)
DarknetConnectionsToadlet.routingDisabledShort=Non instrada traffico
DarknetConnectionsToadlet.seedClients=Nodi per i quali il nodo locale sta
facendo da seednode.
DarknetConnectionsToadlet.seedClientsShort=Seeding per
@@ -244,38 +248,38 @@
DarknetConnectionsToadlet.sendMessageToPeers=Manda messaggio ai peer
selezionati
DarknetConnectionsToadlet.separator=-- -- --
DarknetConnectionsToadlet.statusTitle=Status
-DarknetConnectionsToadlet.tmciDisabled=TMCI non ? abilitato (semplice
interfaccia a comandi testuali simile a telnet)
+DarknetConnectionsToadlet.tmciDisabled=TMCI non ? abilitato (semplice
interfaccia a comandi testuali simile a telnet)
DarknetConnectionsToadlet.tmciPort=TMCI: ${port}/tcp (semplice interfaccia a
comandi testuali simile a telnet)
DarknetConnectionsToadlet.tooNew=Connesso ma troppo recente: La versione
obbligatoria minima di questo peer e' maggiore della versione che stiamo
utilizzando.
DarknetConnectionsToadlet.tooNewShort=Troppo recente
-DarknetConnectionsToadlet.tooOld=Connesso ma obsoleto: Questo peer sta usando
una versione obsoleta di Freenet. Esso non sar? utilizzato per l'instradamento
delle richieste.
+DarknetConnectionsToadlet.tooOld=Connesso ma obsoleto: Questo peer sta usando
una versione obsoleta di Freenet. Esso non sar? utilizzato per l'instradamento
delle richieste.
DarknetConnectionsToadlet.tooOldShort=Obsoleti
DarknetConnectionsToadlet.transferringRequests=Richieste trasferimento: invio
${senders}, ricezione ${receivers}
-DarknetConnectionsToadlet.triedToAddSelf=Non ? possibile aggiungere il proprio
stesso nodo ad una lista di peer remoti.
-DarknetConnectionsToadlet.unauthorized=L'accesso a questa pagina ? interedetto.
+DarknetConnectionsToadlet.triedToAddSelf=Non ? possibile aggiungere il proprio
stesso nodo ad una lista di peer remoti.
+DarknetConnectionsToadlet.unauthorized=L'accesso a questa pagina ? interedetto.
DarknetConnectionsToadlet.unknownAddress=(indirizzo sconosciuto)
DarknetConnectionsToadlet.updateChangedPrivnotes=Aggiorna commenti
DarknetConnectionsToadlet.urlReference=Inserire qui la URL della referenza:
DarknetConnectionsToadlet.versionTitle=Versione
ExtOldAgeUserAlert.extTooOld=Il file freenet-ext.jar sembra essere corrotto od
obsoleto: Per l'aggiornamento usare
http://downloads.freenetproject.org/alpha/freenet-ext.jar
-ExtOldAgeUserAlert.extTooOldShort=Il file freenet-ext.jar ? obsoleto. Si prega
di aggiornarlo.
+ExtOldAgeUserAlert.extTooOldShort=Il file freenet-ext.jar ? obsoleto. Si prega
di aggiornarlo.
ExtOldAgeUserAlert.extTooOldTitle=Freenet-ext obsoleto
FProxyToadlet.abortToHomepage=Interrompi e ritorna alla homepage di FProxy
FProxyToadlet.alerts=Messaggi dettagliati sullo stato del nodo
FProxyToadlet.alertsTitle=Avvertenze
FProxyToadlet.backToFProxy=${link}Clicca qui${/link} per andare alla homepage
di FProxy
FProxyToadlet.backToReferrer=${link}Clicca qui${/link} per tornare alla pagina
referente.
-FProxyToadlet.cantBindPort=Non ? possibile abbinare FProxy a quella porta!
+FProxyToadlet.cantBindPort=Non ? possibile abbinare FProxy a quella porta!
FProxyToadlet.config=configura il nodo
FProxyToadlet.configTitle=Configurazione
FProxyToadlet.dangerousContentTitle=Contenuto Potenzialmente Pericoloso
-FProxyToadlet.dangerousRSS=Il file richiesto potrebbe essere RSS. Questo tipo
di file non pu? essere filtrato da Freenet nel modo giusto, ed inoltre
potrebbe contenere dei difetti (web-bugs) come immagini in-line ecc, che
potrebbero esporre l'indirizzo IP del computer in uso ad eventuali
siti-trappola e pertanto mettere a serio rischio l'anonimato dell'utente.
Firefox 2.0 e Internet Explorer 7.0 aprono il file come RSS anche se la
tipologia del contentuto (content type) ? "${type}".
+FProxyToadlet.dangerousRSS=Il file richiesto potrebbe essere RSS. Questo tipo
di file non pu? essere filtrato da Freenet nel modo giusto, ed inoltre
potrebbe contenere dei difetti (web-bugs) come immagini in-line ecc, che
potrebbero esporre l'indirizzo IP del computer in uso ad eventuali
siti-trappola e pertanto mettere a serio rischio l'anonimato dell'utente.
Firefox 2.0 e Internet Explorer 7.0 aprono il file come RSS anche se la
tipologia del contentuto (content type) ? "${type}".
FProxyToadlet.dangerousRSSSubtitle=I feed RSS possono costituire un pericolo
FProxyToadlet.dangerousRSSTitle=Contentuto Potenzialmente Pericoloso (RSS)
FProxyToadlet.downloadInBackgroundToDisk=Scarica in background e conserva
nella directory dei download
-FProxyToadlet.errorIsFatal=Questo ? un errore grave (fatal error). Riprovare
probabilmente non risolver? il problema.
+FProxyToadlet.errorIsFatal=Questo ? un errore grave (fatal error). Riprovare
probabilmente non risolver? il problema.
FProxyToadlet.errorWithReason=Errore: ${error}
-FProxyToadlet.expectedKeyButGot=Invece di una chiave Freenet, ? stato ricevuto:
+FProxyToadlet.expectedKeyButGot=Invece di una chiave Freenet, ? stato ricevuto:
FProxyToadlet.expectedMimeType=MIME type che ci si aspettava: ${mime}
FProxyToadlet.explanationTitle=Spiegazione
FProxyToadlet.fetchLargeFileAnywayAndDisplay=Apri comunque e mostra il file
nel browser
@@ -292,20 +296,20 @@
FProxyToadlet.invalidKeyTitle=Chiave non valida
FProxyToadlet.invalidKeyWithReason=Chiave non valida: ${reason}
FProxyToadlet.largeFile=File di grosse dimensioni
-FProxyToadlet.largeFileExplanationAndOptions=La chiave Freenet richiesta fa
riferimento a un file di grosse dimensioni.I file cos? grandi di solito non
possono essere mandati direttamente al browser perch? il nodo avrebbe bisogno
di troppo tempo per richiamarli. Le seguenti opzioni sono disponibili:
-FProxyToadlet.mayChange=(pu? cambiare)
+FProxyToadlet.largeFileExplanationAndOptions=La chiave Freenet richiesta fa
riferimento a un file di grosse dimensioni.I file cos? grandi di solito non
possono essere mandati direttamente al browser perch? il nodo avrebbe bisogno
di troppo tempo per richiamarli. Le seguenti opzioni sono disponibili:
+FProxyToadlet.mayChange=(pu? cambiare)
FProxyToadlet.mimeType=MIME type: ${mime}
FProxyToadlet.notEnoughMetaStrings=Non ci sono abbastanza meta-strings
FProxyToadlet.notFoundTitle=Non Trovato
-FProxyToadlet.openAsText=${link}Clicca qui${/link} per aprire il file come
testo 'liscio' (plain text) . Questo non dovrebbe essere pericoloso ma la
visualizzazione pu? risultare disturbata.
+FProxyToadlet.openAsText=${link}Clicca qui${/link} per aprire il file come
testo 'liscio' (plain text) . Questo non dovrebbe essere pericoloso ma la
visualizzazione pu? risultare disturbata.
FProxyToadlet.openAsThawIndex=${link}Clicca qui${/link} per aprire un file con
il browser di indici Thaw. (leggere l'avvertenza!)
FProxyToadlet.openForce=${link}Clicca qui${/link} per aprire il file come
${mime} (leggi l'avvertenza sopra!).
FProxyToadlet.openForceDisk=${link}Clicca qui${/link} per scaricare il file su
disco.
FProxyToadlet.openPossRSSAsForceDisk=${link}Clicka qui${/link} per scaricare
il file su disco (${bold}possibile pericolo${/bold} se si sta usando Firefox
2.0.0.0; il problema dovrebbe essere stato risolto in 2.0.0.1
-FProxyToadlet.openPossRSSAsPlainText=${link}Clicca qui${/link} per aprire il
file come testo 'liscio' (plain text) (ci? ${bold}pu? rappresentare un
pericolo${/bold} se si sta usando IE7 o FF2).
-FProxyToadlet.openPossRSSForceDisk=${link}Clicca qui${/link} per cercare di
costringere il browser a scaricare il file su disco (${bold}Pu? essere
pericoloso se si sta usando Firefox 2.0.0${/bold} ; il problema dovrebbe essere
risolto in 2.0.1).
-FProxyToadlet.openRSSAsRSS=${link}Clicca qui${/link} per aprire il file come
RSS (ci? ${bold}rappresenta un pericolo${/bold} se l'autore del sito ? mal
intenzionato, perch? il filtraggio di RSS in Freenet non ? ancora stato
implementato).
-FProxyToadlet.openRSSForce=${link}Clicca qui${/link} per aprire il file come
${mime} (ci? ${bold}pu? costituire un pericolo${/bold} se si usa IE7 o FF2).
+FProxyToadlet.openPossRSSAsPlainText=${link}Clicca qui${/link} per aprire il
file come testo 'liscio' (plain text) (ci? ${bold}pu? rappresentare un
pericolo${/bold} se si sta usando IE7 o FF2).
+FProxyToadlet.openPossRSSForceDisk=${link}Clicca qui${/link} per cercare di
costringere il browser a scaricare il file su disco (${bold}Pu? essere
pericoloso se si sta usando Firefox 2.0.0${/bold} ; il problema dovrebbe essere
risolto in 2.0.1).
+FProxyToadlet.openRSSAsRSS=${link}Clicca qui${/link} per aprire il file come
RSS (ci? ${bold}rappresenta un pericolo${/bold} se l'autore del sito ? mal
intenzionato, perch? il filtraggio di RSS in Freenet non ? ancora stato
implementato).
+FProxyToadlet.openRSSForce=${link}Clicca qui${/link} per aprire il file come
${mime} (ci? ${bold}pu? costituire un pericolo${/bold} se si usa IE7 o FF2).
FProxyToadlet.opennet=gestisci connessioni non affidabili
FProxyToadlet.opennetTitle=Sconosciuti
FProxyToadlet.options=Opzioni disponibili:
@@ -322,36 +326,36 @@
FProxyToadlet.statsTitle=Statistiche
FProxyToadlet.translation=helper per tradurre l'interfaccia del nodo nella tua
lingua
FProxyToadlet.translationTitle=Traduzione
-FProxyToadlet.unableToRetrieve=Non ? stato possibile richiamare questo file.
+FProxyToadlet.unableToRetrieve=Non ? stato possibile richiamare questo file.
FProxyToadlet.unknownMIMEType=MIME type: sconosciuto
FProxyToadlet.welcome=homepage
FProxyToadlet.welcomeTitle=Home
FcpServer.allowedHosts=Host abilitati (Leggere l'avvertenza)
-FcpServer.allowedHostsFullAccess=Host ai quali ? consentito accesso pieno
+FcpServer.allowedHostsFullAccess=Host ai quali ? consentito accesso pieno
FcpServer.allowedHostsFullAccessLong=Indirizzi IP ai quali e' consentito pieno
accesso al nodo. I client su questi IP possono riavviare il nodo,
riconfigurarlo ecc. Attenzione: a *tutti* I client e' consentito di fare I/O
diretto sul disco
-FcpServer.allowedHostsLong=Indirizzi IP ai quali ? consentito connettersi al
server FCP. Pu? essere una lista di di IP singoli separati da virgole e
indirizzi IP in formato CIDR come 192.168.0.0/24. AVVERTENZA! Chiunque abbia
accesso a FCP potr? caricare su Freenet qualsiasi file al quale il nodo abbia
accesso e scaricare su disco qualsiasi file da Freenet (i file esistenti non
verranno sovrascritti)
+FcpServer.allowedHostsLong=Indirizzi IP ai quali ? consentito connettersi al
server FCP. Pu? essere una lista di di IP singoli separati da virgole e
indirizzi IP in formato CIDR come 192.168.0.0/24. AVVERTENZA! Chiunque abbia
accesso a FCP potr? caricare su Freenet qualsiasi file al quale il nodo abbia
accesso e scaricare su disco qualsiasi file da Freenet (i file esistenti non
verranno sovrascritti)
FcpServer.assumeDownloadDDAIsAllowed=Presumere che il download DDA sia
permesso?
-FcpServer.assumeDownloadDDAIsAllowedLong=Presumere che il download DDA sia
permesso? Se impostato su 'false' bisogner? fare una TestDDARequest prima di
ogni accesso DDA
+FcpServer.assumeDownloadDDAIsAllowedLong=Presumere che il download DDA sia
permesso? Se impostato su 'false' bisogner? fare una TestDDARequest prima di
ogni accesso DDA
FcpServer.assumeUploadDDAIsAllowed=Presumere che l'upload di DDA sia permesso?
-FcpServer.assumeUploadDDAIsAllowedLong=Presumere che l'upload DDA Sia
permesso? Se impostato su 'falso', bisogner? fare una TestDDARequest prima di
ogni accesso DDA.
+FcpServer.assumeUploadDDAIsAllowedLong=Presumere che l'upload DDA Sia
permesso? Se impostato su 'falso', bisogner? fare una TestDDARequest prima di
ogni accesso DDA.
FcpServer.bindTo=Indirizzo IP collegato
FcpServer.bindToLong=Indirizzo IP collegato al server FCP.
-FcpServer.cannotStartOrStopOnTheFly=Non ? possibile arrestare il server FCP
"al volo"
-FcpServer.couldNotChangeBindTo=Non ? stato possibile modificare l'indirizzo
FCP collegato: ${error}.
-FcpServer.downloadsFileCanCreateCannotReadOrWrite=Il file ? stato creato ma
non ? possibile leggerlo e scriverlo
-FcpServer.downloadsFileDoesNotExistCannotCreate=Il file non esiste e non ?
possibile crearlo
-FcpServer.downloadsFileExistsCannotReadOrWrite=Il file esiste ma non ?
possibile leggerlo e scriverlo
+FcpServer.cannotStartOrStopOnTheFly=Non ? possibile arrestare il server FCP
"al volo"
+FcpServer.couldNotChangeBindTo=Non ? stato possibile modificare l'indirizzo
FCP collegato: ${error}.
+FcpServer.downloadsFileCanCreateCannotReadOrWrite=Il file ? stato creato ma
non ? possibile leggerlo e scriverlo
+FcpServer.downloadsFileDoesNotExistCannotCreate=Il file non esiste e non ?
possibile crearlo
+FcpServer.downloadsFileExistsCannotReadOrWrite=Il file esiste ma non ?
possibile leggerlo e scriverlo
FcpServer.downloadsFileIsDirectory=Nome non valido per una lista di download:
si tratta di una directory
FcpServer.downloadsFileParentDoesNotExist=La directory superiore non esiste
-FcpServer.downloadsFileUnreadable=Il file esiste ma non ? possibile leggerlo
+FcpServer.downloadsFileUnreadable=Il file esiste ma non ? possibile leggerlo
FcpServer.enablePersistentDownload=Abilitare download persistenti?
-FcpServer.enablePersistentDownloadLong=Abilita Persistence=forever
(persistenza illimitata) per le richieste FCP. Abilitando questa opzione si
permette alle richieste di persistere attraverso il riavvio del nodo: tali
richieste devono essere scritte sul disco rigido e questo in alcuni casi
particolari pu? costituire un problema di sicurezza
+FcpServer.enablePersistentDownloadLong=Abilita Persistence=forever
(persistenza illimitata) per le richieste FCP. Abilitando questa opzione si
permette alle richieste di persistere attraverso il riavvio del nodo: tali
richieste devono essere scritte sul disco rigido e questo in alcuni casi
particolari pu? costituire un problema di sicurezza
FcpServer.filenameToStorePData=File contenente download persistenti
FcpServer.filenameToStorePDataLong=File contenente download persistenti.
FcpServer.intervalBetweenWrites=Intervallo di scrittura dei download
persistenti su disco
FcpServer.intervalBetweenWritesLong=Intervallo tra le scritture di download
persistenti su disco. (millisecondi)
-FcpServer.isEnabled=FCP server ? abilitato?
-FcpServer.isEnabledLong=FCP server ? abilitato?
+FcpServer.isEnabled=FCP server ? abilitato?
+FcpServer.isEnabledLong=FCP server ? abilitato?
FcpServer.portNumber=Numero della porta FCP
FcpServer.portNumberLong=Numero della porta FCP.
FcpServer.ssl=Abilitare ssl?
@@ -361,31 +365,31 @@
FetchException.longError.11=Troppe componenti di percorso. Prova a eliminarne
uno
FetchException.longError.12=Errore interno relativo ai file temporanei:
potrebbe trattarsi di esaurimento dello spazio libero su disco rigido o di un
problema relativo a permessi ed autorizzazioni
FetchException.longError.13=Dati non trovati
-FetchException.longError.14=Percorso non trovato: non ? stato possobile
trovare un numero di nodi sufficiente ad essere certi che i dati non esistono
-FetchException.longError.15=Un nodo ? stato sovraccaricato o ? uscito fuori
tempo massimo
+FetchException.longError.14=Percorso non trovato: non ? stato possobile
trovare un numero di nodi sufficiente ad essere certi che i dati non esistono
+FetchException.longError.15=Un nodo ? stato sovraccaricato o ? uscito fuori
tempo massimo
FetchException.longError.16=Troppi redirects - loop?
FetchException.longError.17=Errore interno, probabilmente un bug
-FetchException.longError.18=Il file ? stato trovato ma ? andato perso durante
la ricezione
+FetchException.longError.18=Il file ? stato trovato ma ? andato perso durante
la ricezione
FetchException.longError.19=Errore splitfile
FetchException.longError.2=Il nodo non sa cosa fare dello splitfile
FetchException.longError.20=URI non valida
FetchException.longError.21=Troppo grande
FetchException.longError.22=Volume dei metadati troppo grande
FetchException.longError.23=Troppi blocchi per segmento
-FetchException.longError.24=Sono necessarie pi? metastringhe (componenti di
percorso) nella URI
+FetchException.longError.24=Sono necessarie pi? metastringhe (componenti di
percorso) nella URI
FetchException.longError.25=Annullato
FetchException.longError.26=Archivio riavviato
FetchException.longError.27=Redirezione permanente: usare la nuova URI
-FetchException.longError.28=Non ? stato possibile raccogliere dati in quantit?
sufficiente; dati parziali sono stati richiamati ma il redirect potrebbe
puntare su localit? non valide
+FetchException.longError.28=Non ? stato possibile raccogliere dati in quantit?
sufficiente; dati parziali sono stati richiamati ma il redirect potrebbe
puntare su localit? non valide
FetchException.longError.29=MIME Type non valido: chiave non presente in lista
di MIME type permessi fornita dal client.
FetchException.longError.3=Metadati non utilizzabili
-FetchException.longError.30=La richiesta ? stata terminata da un nodo perch?
esso aveva da poco ricevuto un'altra richiesta per la stessa chiave e quella
richiesta non era andata a buon fine.
-FetchException.longError.4=Non ? stato possibile interpretare i metadati.
+FetchException.longError.30=La richiesta ? stata terminata da un nodo perch?
esso aveva da poco ricevuto un'altra richiesta per la stessa chiave e quella
richiesta non era andata a buon fine.
+FetchException.longError.4=Non ? stato possibile interpretare i metadati.
FetchException.longError.5=Fallimento durante l'estrazione di file da un
archivio
-FetchException.longError.6=Non ? stato possibile decodificare un blocco
+FetchException.longError.6=Non ? stato possibile decodificare un blocco
FetchException.longError.7=Metadati divisi in troppi livelli
-FetchException.longError.8=La richiesta ? stata riavviata troppe volte a causa
di cambiamenti negli archivii
-FetchException.longError.9=Troppe redirezioni (troppa ricorsivit?)
+FetchException.longError.8=La richiesta ? stata riavviata troppe volte a causa
di cambiamenti negli archivii
+FetchException.longError.9=Troppe redirezioni (troppa ricorsivit?)
FetchException.shortError.1=Recursione archivio troppo profonda
FetchException.shortError.10=Non in archivio
FetchException.shortError.11=Troppe componenti nel percorso
@@ -402,14 +406,14 @@
FetchException.shortError.21=Troppo grande
FetchException.shortError.22=Volume metadati eccessivo
FetchException.shortError.23=Troppi blocchi per segmento
-FetchException.shortError.24=Quantit? meta-strings insufficiente
+FetchException.shortError.24=Quantit? meta-strings insufficiente
FetchException.shortError.25=Annullato da caller
FetchException.shortError.26=Archivio riavviato
FetchException.shortError.27=Nuova URI
FetchException.shortError.28=Non sono stati trovati tutti i dati
FetchException.shortError.29=Errore: MIME type sbagliato
FetchException.shortError.3=Metadati sconosciuti
-FetchException.shortError.30=Non ? stato possibile trovare i dati richiesti
(fallimento recente)
+FetchException.shortError.30=Non ? stato possibile trovare i dati richiesti
(fallimento recente)
FetchException.shortError.4=Metadati non validi
FetchException.shortError.5=Fallimento archivio
FetchException.shortError.6=Errore decodifica block
@@ -419,7 +423,7 @@
FileOffer.acceptTransferButton=Accetta Trasferimento
FileOffer.askUserTitle=Trasferimento file diretto.
FileOffer.commentLabel=Commenti:
-FileOffer.failedReceiveHeader=Non ? stato possibile completare il
trasferimento del file ${filename} da ${node}.
+FileOffer.failedReceiveHeader=Non ? stato possibile completare il
trasferimento del file ${filename} da ${node}.
FileOffer.failedReceiveShort=Trasferimento di ${filename} da ${node} fallito.
FileOffer.failedReceiveTitle=Trasferimento fallito
FileOffer.fileLabel=File:
@@ -429,36 +433,36 @@
FileOffer.rejectTransferButton=Rifiuta trasferimento
FileOffer.senderLabel=Mittente:
FileOffer.sizeLabel=Dimensioni:
-FileOffer.succeededReceiveHeader=Il trasferimento del file ${filename} da
${node} ? stato completato.
-FileOffer.succeededReceiveShort=${filename} ? stato ricevuto da ${node}.
+FileOffer.succeededReceiveHeader=Il trasferimento del file ${filename} da
${node} ? stato completato.
+FileOffer.succeededReceiveShort=${filename} ? stato ricevuto da ${node}.
FileOffer.succeededReceiveTitle=Trasferimento file completato
FirstTimeWizardToadlet.bandwidthLimit=Limitazione banda
-FirstTimeWizardToadlet.bandwidthLimitLong=Scegliere il tipo di connessione e
la velocit? dal drop-down menu.
-FirstTimeWizardToadlet.bwlimitHigherSpeed=Velocit? maggiore
-FirstTimeWizardToadlet.bwlimitLowerSpeed=Velocit? minore
-FirstTimeWizardToadlet.chooseNodeName=Il nome del nodo ? obbligatorio!
-FirstTimeWizardToadlet.chooseNodeNameLong=Inserire un nome per il nodo. Il
nome sar? visibile ai peer darknet, quelli manualmente aggiunti dall'utente, e
non sar? visibile dai peer opeennet (aggiunti automaticamente) . Si consiglia
di usare il proprio nickname IRC possibilmente con un'informazione per il
conctatto in modo da essere reperibili in caso di problemi ("Mario Rossi marior
at sitodimario.com").
+FirstTimeWizardToadlet.bandwidthLimitLong=Scegliere il tipo di connessione e
la velocit? dal drop-down menu.
+FirstTimeWizardToadlet.bwlimitHigherSpeed=Velocit? maggiore
+FirstTimeWizardToadlet.bwlimitLowerSpeed=Velocit? minore
+FirstTimeWizardToadlet.chooseNodeName=Il nome del nodo ? obbligatorio!
+FirstTimeWizardToadlet.chooseNodeNameLong=Inserire un nome per il nodo. Il
nome sar? visibile ai peer darknet, quelli manualmente aggiunti dall'utente, e
non sar? visibile dai peer opeennet (aggiunti automaticamente) . Si consiglia
di usare il proprio nickname IRC possibilmente con un'informazione per il
conctatto in modo da essere reperibili in caso di problemi ("Mario Rossi marior
at sitodimario.com").
FirstTimeWizardToadlet.clickContinue=Clicca qui per continuare.
FirstTimeWizardToadlet.congratz=Benvenuto a bordo!
-FirstTimeWizardToadlet.congratzLong=Congratulazioni, la configurazione di base
del nodo Freenet ? completa. E' possibile cambiare e modificare ognuno dei
parametri appena impostati usando la pagina "configurazione" che ?
raggiungibile attraverso il menu sulla sinistra dell'interfaccia. Vi auguriamo
una piacevole esperienza con Freenet.
+FirstTimeWizardToadlet.congratzLong=Congratulazioni, la configurazione di base
del nodo Freenet ? completa. E' possibile cambiare e modificare ognuno dei
parametri appena impostati usando la pagina "configurazione" che ?
raggiungibile attraverso il menu sulla sinistra dell'interfaccia. Vi auguriamo
una piacevole esperienza con Freenet.
FirstTimeWizardToadlet.connectToStrangers=Connetti a sconosciuti?
-FirstTimeWizardToadlet.connectToStrangersLong=In un mondo ideale, ogni utente
Freenet si connetterebbe esclusivamente con nodi gestiti da persone fid?te.
Qesto ? di gran lunga il sistema pi? sicuro, che rende molto difficile per un
osservatore esterno determinare se un nodo stia o meno girando sul computer
osservato. D'altra parte, non avendo a disposizione almeno cinque amici,
parenti o conoscenti fid?ti che gi? usano Freenet, ai quali connettersi, come
soluzione alternativa ? possibile lasciare che il nodo si connetta
automaticamente a nodi gestiti da sconosciuti. Questa opzione pu? essere
disattivata in qualsiasi momento.
+FirstTimeWizardToadlet.connectToStrangersLong=In un mondo ideale, ogni utente
Freenet si connetterebbe esclusivamente con nodi gestiti da persone fid?te.
Qesto ? di gran lunga il sistema pi? sicuro, che rende molto difficile per un
osservatore esterno determinare se un nodo stia o meno girando sul computer
osservato. D'altra parte, non avendo a disposizione almeno cinque amici,
parenti o conoscenti fid?ti che gi? usano Freenet, ai quali connettersi, come
soluzione alternativa ? possibile lasciare che il nodo si connetta
automaticamente a nodi gestiti da sconosciuti. Questa opzione pu? essere
disattivata in qualsiasi momento.
FirstTimeWizardToadlet.continue=Continua
FirstTimeWizardToadlet.continueEnd=Clicca qui per cominciare ad usare Freenet!
FirstTimeWizardToadlet.datastoreSize=Dimensioni magazzino dati (datastore)
-FirstTimeWizardToadlet.datastoreSizeLong=Selezionare le dimensione desiderata
per il file di immagazzinaggio dati (datastore). Il datastore funziona come una
cache. Immagazzinare dati per il network aumenta il volume di scambio quando i
file sono molto richiesti. Pi? spazio ci si pu? permettere di dedicare a
Freenet e meglio ? per la comunit?. Un datastore di grosse dimensioni aumenta
notevolmente la velocit? del nodo.
+FirstTimeWizardToadlet.datastoreSizeLong=Selezionare le dimensione desiderata
per il file di immagazzinaggio dati (datastore). Il datastore funziona come una
cache. Immagazzinare dati per il network aumenta il volume di scambio quando i
file sono molto richiesti. Pi? spazio ci si pu? permettere di dedicare a
Freenet e meglio ? per la comunit?. Un datastore di grosse dimensioni aumenta
notevolmente la velocit? del nodo.
FirstTimeWizardToadlet.enableOpennet=Connettersi automaticamente a nodi non
affidabili gestiti da sconosciuti?
FirstTimeWizardToadlet.fivePercentDisk=(= 5% di spazio libero su disco)
FirstTimeWizardToadlet.homepageTitle=Configurazione Automatica Freenet
FirstTimeWizardToadlet.iDoTrust=Possiamo fidarci degli utenti connessi a
${interface} (${ip}) ?
-FirstTimeWizardToadlet.isNetworkTrusted=La rete locale ? affidabile?
-FirstTimeWizardToadlet.isNetworkTrustedLong=La rete locale ? affidabile?
Rispondendo di si a questa domanda, tutti i servizii forniti dal nodo Freenet
saranno pienamente accessibili da chiunque sul network suddetto. E' possibile
configurare un accesso pi? selettivo attraverso la pagina "configurazione" dopo
aver completato questo wizard.
+FirstTimeWizardToadlet.isNetworkTrusted=La rete locale ? affidabile?
+FirstTimeWizardToadlet.isNetworkTrustedLong=La rete locale ? affidabile?
Rispondendo di si a questa domanda, tutti i servizii forniti dal nodo Freenet
saranno pienamente accessibili da chiunque sul network suddetto. E' possibile
configurare un accesso pi? selettivo attraverso la pagina "configurazione" dopo
aver completato questo wizard.
FirstTimeWizardToadlet.memoryLimit=Utilizzo memoria
-FirstTimeWizardToadlet.memoryLimitLong=Specifica il valore massimo della
memoria utilizzabile da Freenet. Il nodo ha bisogno di pi? memoria se ci sono
molti file in coda per il download/upload. Si raccomanda di non impostare
questa opzione per un valore inferiore a 128MB tranne nel caso in cui la
memoria totale a disposizione sia veramente poca. Se il computer ha 1GB di
memoria RAM o pi?, si consiglia di usare almeno 256MB. Il cambiamento avr?
effetto dopo aver riavviato Freenet.
-FirstTimeWizardToadlet.noNetworkIF=Non ? stata trovata nessuna interfaccia di
rete addizionale
-FirstTimeWizardToadlet.noNetworkIFLong=Freenet non ha trovato altre interfacce
di rete, quindi dar? per scontato che l'utente si connetter? dal computer
locale e solo da quello.
-FirstTimeWizardToadlet.opennetNo=Si, ho almeno 5 amici che usano Freenet e
aggiunger? i loro dati alla pagina degli Amici.
-FirstTimeWizardToadlet.opennetWarning=In Paesi dove networking anonimo ?
illegale e/o se usa Freenet per accedere a materiale che potrebbe mettere nei
guai chi ne fosse trovato in possesso, un serio pericolo pu? risultare dal
configurare il nodo in modo da connettersi automaticamente a nodi gestiti da
sconosciuti, facilitando il il compito ad un avversario determinato. Freenet ?
ancora in fase sperimentale, gli autori non sono in grado di garatire sicurezza
assoluta.
+FirstTimeWizardToadlet.memoryLimitLong=Specifica il valore massimo della
memoria utilizzabile da Freenet. Il nodo ha bisogno di pi? memoria se ci sono
molti file in coda per il download/upload. Si raccomanda di non impostare
questa opzione per un valore inferiore a 128MB tranne nel caso in cui la
memoria totale a disposizione sia veramente poca. Se il computer ha 1GB di
memoria RAM o pi?, si consiglia di usare almeno 256MB. Il cambiamento avr?
effetto dopo aver riavviato Freenet.
+FirstTimeWizardToadlet.noNetworkIF=Non ? stata trovata nessuna interfaccia di
rete addizionale
+FirstTimeWizardToadlet.noNetworkIFLong=Freenet non ha trovato altre interfacce
di rete, quindi dar? per scontato che l'utente si connetter? dal computer
locale e solo da quello.
+FirstTimeWizardToadlet.opennetNo=Si, ho almeno 5 amici che usano Freenet e
aggiunger? i loro dati alla pagina degli Amici.
+FirstTimeWizardToadlet.opennetWarning=In Paesi dove networking anonimo ?
illegale e/o se usa Freenet per accedere a materiale che potrebbe mettere nei
guai chi ne fosse trovato in possesso, un serio pericolo pu? risultare dal
configurare il nodo in modo da connettersi automaticamente a nodi gestiti da
sconosciuti, facilitando il il compito ad un avversario determinato. Freenet ?
ancora in fase sperimentale, gli autori non sono in grado di garatire sicurezza
assoluta.
FirstTimeWizardToadlet.opennetYes=No, voglio che il nodo trovi automaticamente
degli sconosciuti ai quali connettersi.
FirstTimeWizardToadlet.selectLanguage=Lingua
FirstTimeWizardToadlet.selectLanguageLong=Selezionare una lingua dalla lista
qui sotto:
@@ -468,93 +472,93 @@
FirstTimeWizardToadlet.step3Title=Configurazione automatica di Freenet -
Limiti ampiezza di banda
FirstTimeWizardToadlet.step4Title=Freenet first time wizard! - Dimensioni
magazzino dati (datastore)
FirstTimeWizardToadlet.step5Title=Configurazione Automatica Freenet -
Configurazione rete
-FirstTimeWizardToadlet.step6Title=Configurazione Automatica Freenet -
Congratulazioni, il nodo ? ora configurato.
-FirstTimeWizardToadlet.step7Title=Configurazione Automatica Freenet -
Congratulazioni, il nodo ? ora configurato.
+FirstTimeWizardToadlet.step6Title=Configurazione Automatica Freenet -
Congratulazioni, il nodo ? ora configurato.
+FirstTimeWizardToadlet.step7Title=Configurazione Automatica Freenet -
Congratulazioni, il nodo ? ora configurato.
FirstTimeWizardToadlet.tenPercentDisk=(= 10% di spazio libero su disco)
FirstTimeWizardToadlet.warningTitle=Avvertenza!
-FirstTimeWizardToadlet.welcomeInfoboxContent1=Benvenuti nella Configurazione
Automatica Freenet, che vi permetter? di configurare Freenet e cominciare ad
usarlo velocemente e facilmente.
+FirstTimeWizardToadlet.welcomeInfoboxContent1=Benvenuti nella Configurazione
Automatica Freenet, che vi permetter? di configurare Freenet e cominciare ad
usarlo velocemente e facilmente.
FirstTimeWizardToadlet.welcomeInfoboxTitle=Benevenuti in Configurazione
Automatica Freenet
FirstTimeWizardToadlet.memory.128M=128Mb - Il minimo indispensabile
FirstTimeWizardToadlet.memory.192M=192Mb - Default ragionevole.
FirstTimeWizardToadlet.memory.256M=256Mb - Per computer con almeno 1GB di RAM
FirstTimeWizardToadlet.memory.512M=512Mb - per computer con molta memoria RAM
-FirstTimeWizardToadlet.memory.64M=64MB - Usare solo in caso di estrema
necessit?
+FirstTimeWizardToadlet.memory.64M=64MB - Usare solo in caso di estrema
necessit?
FproxyToadlet.dangerousRSSTitle=Contenuto potenzialmente pericoloso (RSS)
GIFFilter.invalidHeader=Il file non contiene un header GIF valido.
GIFFilter.invalidHeaderTitle=Header non valido
-GIFFilter.notGif=Il file che si sta cercando di richiamare non ? una GIF.
Potrebbe trattarsi di un file in un altro formato, ed il browser potrebbe fare
qualcosa di pericoloso a cause della confusione generata dalla mancata
corrispondenza; il file ? stato pertanto bloccato.
-GIFFilter.tooShort=Il file ? troppo piccolo per essere una GIF.
+GIFFilter.notGif=Il file che si sta cercando di richiamare non ? una GIF.
Potrebbe trattarsi di un file in un altro formato, ed il browser potrebbe fare
qualcosa di pericoloso a cause della confusione generata dalla mancata
corrispondenza; il file ? stato pertanto bloccato.
+GIFFilter.tooShort=Il file ? troppo piccolo per essere una GIF.
GIFFilter.tooShortTitle=Troppo corto
-GenericReadFilterCallback.couldNotParseAbsoluteFreenetURI=Non ? stato
possibile interpretare come URI Freenet assoluta.
-GenericReadFilterCallback.couldNotParseFormURIWithError=Il filtro non ?
riuscito ad interpretare ${error} dalla URI.
-GenericReadFilterCallback.couldNotParseRelativeFreenetURI=Non ? stato
possibile interpretare come Freenet URI relativa.
+GenericReadFilterCallback.couldNotParseAbsoluteFreenetURI=Non ? stato
possibile interpretare come URI Freenet assoluta.
+GenericReadFilterCallback.couldNotParseFormURIWithError=Il filtro non ?
riuscito ad interpretare ${error} dalla URI.
+GenericReadFilterCallback.couldNotParseRelativeFreenetURI=Non ? stato
possibile interpretare come Freenet URI relativa.
GenericReadFilterCallback.couldNotParseURIWithError=Il filtro ha fallito
nell'analisi della URI: ${error}
GenericReadFilterCallback.invalidFormURI=URI form non valida: punta a risorsa
esterna
GenericReadFilterCallback.invalidFormURIAttemptToEscape=Tentativo di evasione
dalla struttura delle directory
GenericReadFilterCallback.malformedAbsoluteURL=URL malformata (assoluto):
${error}
GenericReadFilterCallback.malformedRelativeURL=URL malformata (relativa):
${error}
-GenericReadFilterCallback.protocolNotEscaped=Non ? un protocollo fuggitivo:
${protocol}
-HTMLFilter.couldNotParseStyle=Non ? stato possibile abbinare lo stile
dell'input
+GenericReadFilterCallback.protocolNotEscaped=Non ? un protocollo fuggitivo:
${protocol}
+HTMLFilter.couldNotParseStyle=Non ? stato possibile abbinare lo stile
dell'input
HTMLFilter.deletedUnknownStyle=stile sconosciuto eliminato
-HTMLFilter.failedToParseLabel=Il filtro HTML non ? riuscito a interpretare la
pagina
+HTMLFilter.failedToParseLabel=Il filtro HTML non ? riuscito a interpretare la
pagina
HTMLFilter.tooManyNestedStyleOrScriptTags=Troppi tag 'style' annidati e/o
troppi tag di scripting: analisi ambigua o non valida
-HTMLFilter.tooManyNestedStyleOrScriptTagsLong=Troppi tag </style> annidati -
analisi ambigua o non valida. Non ? possibile filtrare in modo affidabile
quindi i tag interni sono stai rimossi: questo pu? causare al browser qualche
inconveniente nella visuallizzazione
+HTMLFilter.tooManyNestedStyleOrScriptTagsLong=Troppi tag </style> annidati -
analisi ambigua o non valida. Non ? possibile filtrare in modo affidabile
quindi i tag interni sono stai rimossi: questo pu? causare al browser qualche
inconveniente nella visuallizzazione
HTMLFilter.unknownTag=tag sconosciuto ${tag}
IPDetectorPluginManager.connectionProblems=Problemi di connessione:
IPDetectorPluginManager.direct=Il computer sembra essere direttamente connesso
a Internet, dovrebbe essere quindi possibile connettersi con qualunque nodo
Freenet.
IPDetectorPluginManager.directTitle=Rilevata connessione diretta a Internet
-IPDetectorPluginManager.forwardPort=Il tuo nodo sembra essere dietro qualche
tipo di NAT (vedi la pagina connettivit? per dettagli). Se possibile, dovresti
forwardare le porte UDP (not TCP) ${port} per migliorare la connettivit?. E'
possibile comunque che tu abbia gi? provveduto; Serve del tempo a Freenet per
rilevare il port forward. Leggi ${link}qui${/link} per ulteriori informazioni.
-IPDetectorPluginManager.forwardPortMaybeForwarded=Sembra che il nodo si trovi
dietro una NAT di qualche tipo (vedi pagina connettivit? per i dettaglil). Se
possibile, bigognerebbe configurare il forward per la porta ${port} UDP (non
TCP) allo scopo di migliorare la connettivit?. E' possibile comunque che ci?
sia gi? stato fatto: occorre un po' di tempo perch? Freenet rilevi il port
forward. Clicca ${link}qui${/link} per maggiori informazioni.
-IPDetectorPluginManager.forwardPortNotForwarded=Sembra che il nodo si trovi
dietro una NAT di qualche tipo (vedi pagina connettivit? per i dettaglil). Se
possibile, bigognerebbe configurare il forward per la porta ${port} UDP (non
TCP) allo scopo di migliorare la connettivit?. Sembra che ci? non sia stato
fatto, anche occorre un po' di tempo perch? Freenet rilevi il port forward.
Clicca ${link}qui${/link} per maggiori informazioni
+IPDetectorPluginManager.forwardPort=Il tuo nodo sembra essere dietro qualche
tipo di NAT (vedi la pagina connettivit? per dettagli). Se possibile, dovresti
forwardare le porte UDP (not TCP) ${port} per migliorare la connettivit?. E'
possibile comunque che tu abbia gi? provveduto; Serve del tempo a Freenet per
rilevare il port forward. Leggi ${link}qui${/link} per ulteriori informazioni.
+IPDetectorPluginManager.forwardPortMaybeForwarded=Sembra che il nodo si trovi
dietro una NAT di qualche tipo (vedi pagina connettivit? per i dettaglil). Se
possibile, bigognerebbe configurare il forward per la porta ${port} UDP (non
TCP) allo scopo di migliorare la connettivit?. E' possibile comunque che ci?
sia gi? stato fatto: occorre un po' di tempo perch? Freenet rilevi il port
forward. Clicca ${link}qui${/link} per maggiori informazioni.
+IPDetectorPluginManager.forwardPortNotForwarded=Sembra che il nodo si trovi
dietro una NAT di qualche tipo (vedi pagina connettivit? per i dettaglil). Se
possibile, bigognerebbe configurare il forward per la porta ${port} UDP (non
TCP) allo scopo di migliorare la connettivit?. Sembra che ci? non sia stato
fatto, anche occorre un po' di tempo perch? Freenet rilevi il port forward.
Clicca ${link}qui${/link} per maggiori informazioni
IPDetectorPluginManager.forwardPortShort=Per favore, forwardare la porta UDP
${port}.
-IPDetectorPluginManager.forwardPortShortMaybeForwarded=Si prega di configurare
il forward della porta ${port} UDP (questo potrebbe essere gi? stato fatto, ma
non ancora rilevato)
+IPDetectorPluginManager.forwardPortShortMaybeForwarded=Si prega di configurare
il forward della porta ${port} UDP (questo potrebbe essere gi? stato fatto, ma
non ancora rilevato)
IPDetectorPluginManager.forwardPortShortNotForwarded=Si prega di configurare
il forward per la porta ${port} UDP .
-IPDetectorPluginManager.forwardTwoPorts=Il tuo nodo sembra essere dietro
quanlche tipo di NAT (vedi la pagina connettivit? per dettagli). Se possibile,
dovresti eseguire il forward UDP (non TCP) delle porte ${port1} e ${port2} per
migliorare la connettivit?. E' possibile comunque che tu abbia gi? provveduto;
serve del tempo a Freenet per determinare l'avvenuto forward. Leggi
${link}qui${/link} per ulteriori informazioni.
-IPDetectorPluginManager.forwardTwoPortsMaybeForwarded=Sembra che il nodo si
trovi dietro una NAt di qualche tipo (vedi pagina connettivit? per i
dettaglil). Se possibile, bigognerebbe configurare il forward per la porta
${port} UDP (non TCP) allo scopo di migliorare la connettivit?. E' possibile
comunque che ci? sia gi? stato fatto: occorre un po' di tempo perch? Freenet
rilevi il port forward. Clicca ${link}qui${/link} per maggiori informazioni
-IPDetectorPluginManager.forwardTwoPortsNotForwarded=Pare che il nodo sia
dietro una NAT (controllare la pagina connettivit? per i dettagli). PSe
possibile si dovrebbe configurare il forward per le porte ${port1} e ${port2}
UDP (non TCP), allo scopo di migliorare la connettivit?. Sembra che il forward
delle porte non sia attivo, anche se Freenet non pu? determinarlo per certo.
Controllare ${link}qui${/link} per ulteriori informazioni.
+IPDetectorPluginManager.forwardTwoPorts=Il tuo nodo sembra essere dietro
quanlche tipo di NAT (vedi la pagina connettivit? per dettagli). Se possibile,
dovresti eseguire il forward UDP (non TCP) delle porte ${port1} e ${port2} per
migliorare la connettivit?. E' possibile comunque che tu abbia gi? provveduto;
serve del tempo a Freenet per determinare l'avvenuto forward. Leggi
${link}qui${/link} per ulteriori informazioni.
+IPDetectorPluginManager.forwardTwoPortsMaybeForwarded=Sembra che il nodo si
trovi dietro una NAt di qualche tipo (vedi pagina connettivit? per i
dettaglil). Se possibile, bigognerebbe configurare il forward per la porta
${port} UDP (non TCP) allo scopo di migliorare la connettivit?. E' possibile
comunque che ci? sia gi? stato fatto: occorre un po' di tempo perch? Freenet
rilevi il port forward. Clicca ${link}qui${/link} per maggiori informazioni
+IPDetectorPluginManager.forwardTwoPortsNotForwarded=Pare che il nodo sia
dietro una NAT (controllare la pagina connettivit? per i dettagli). PSe
possibile si dovrebbe configurare il forward per le porte ${port1} e ${port2}
UDP (non TCP), allo scopo di migliorare la connettivit?. Sembra che il forward
delle porte non sia attivo, anche se Freenet non pu? determinarlo per certo.
Controllare ${link}qui${/link} per ulteriori informazioni.
IPDetectorPluginManager.forwardTwoPortsShort=Per favore, forwardare le porte
UDP ${port1} e ${port2}.
-IPDetectorPluginManager.forwardTwoPortsShortMaybeForwarded=Configurare il
forward per porte ${port1} e ${port2} UDP (potrebbe essere gi? stato fatto).
+IPDetectorPluginManager.forwardTwoPortsShortMaybeForwarded=Configurare il
forward per porte ${port1} e ${port2} UDP (potrebbe essere gi? stato fatto).
IPDetectorPluginManager.forwardTwoPortsShortNotForwarded=Si prega di
configurare il forward per le porte ${port1} e ${port2} UDP.
IPDetectorPluginManager.fullCone=La connessione a Internet sembra avvenire
attraverso una "full cone" NAT. Il nodo dovrebbe riuscire connettersi con
qualunque altro nodo Freenet.
IPDetectorPluginManager.fullConeTitle=Rilevata full cone NAT
-IPDetectorPluginManager.maybeAlreadyForwarded=Potrebbe essere gi? stato fatto
(? difficile per Freenet determinarlo).
-IPDetectorPluginManager.noConnectivity=La connessione a Internet non sembra
essere provvista di supporto UDP. A meno che non si tratti di un rilevamento
erroneo, non ? probabile che Freenet possa funzionare al momento.
-IPDetectorPluginManager.noConnectivityTitle=Mancanza di connettivit? UDP
-IPDetectorPluginManager.noConnectivityshort=Gravi problemi di connessione:
Nessuna connettivit? UDP, Freenet non pu? funzionare!
+IPDetectorPluginManager.maybeAlreadyForwarded=Potrebbe essere gi? stato fatto
(? difficile per Freenet determinarlo).
+IPDetectorPluginManager.noConnectivity=La connessione a Internet non sembra
essere provvista di supporto UDP. A meno che non si tratti di un rilevamento
erroneo, non ? probabile che Freenet possa funzionare al momento.
+IPDetectorPluginManager.noConnectivityTitle=Mancanza di connettivit? UDP
+IPDetectorPluginManager.noConnectivityshort=Gravi problemi di connessione:
Nessuna connettivit? UDP, Freenet non pu? funzionare!
IPDetectorPluginManager.portForwardHelpURL=http://wiki.freenetproject.org/FirewallAndRouterIssues
-IPDetectorPluginManager.portRestricted=La connessione a Internet sembra
avvenire attraverso una NAT a porte ristrette (router). Il nodo potr?
connettersi a quasi tutti gli altri nodi ma non a quelli dietro NAT simmetrica.
+IPDetectorPluginManager.portRestricted=La connessione a Internet sembra
avvenire attraverso una NAT a porte ristrette (router). Il nodo potr?
connettersi a quasi tutti gli altri nodi ma non a quelli dietro NAT simmetrica.
IPDetectorPluginManager.portRestrictedTitle=Port restricted cone NAT rilevata
IPDetectorPluginManager.restricted=La connessione a Internet sembra avvenire
attraverso una "restricted cone" NAT (router). Dovrebbe essere comunque
possibile connettersi alla maggior parte dei nodi Freenet.
IPDetectorPluginManager.restrictedTitle=E' stata rilevata una restricted cone
NAT
IPDetectorPluginManager.seriousConnectionProblems=Gravi problemi di
connessione:
IPDetectorPluginManager.suggestForwardPort=Potrebbe essere necessario
configurare manualmente il 'port forwarding' per la porta UDP numero ${port}.
Vedi: http://wiki.freenetproject.org/FirewallAndRouterIssues (disponibile solo
in inglese, per ora).
-IPDetectorPluginManager.suggestForwardPortWithLink=Potrebbe essere necessario
${link}configurare il port forwarding${/link} (porta UDP numero ${port})
manualmente (oppure ci? ? gi? stato fatto: Freenet pu? avere delle difficolt?
in questo tipo di rilevazione).
+IPDetectorPluginManager.suggestForwardPortWithLink=Potrebbe essere necessario
${link}configurare il port forwarding${/link} (porta UDP numero ${port})
manualmente (oppure ci? ? gi? stato fatto: Freenet pu? avere delle difficolt?
in questo tipo di rilevazione).
IPDetectorPluginManager.suggestForwardTwoPorts=Sarebbe opportuno configurare
manualmente il port forward sul router per le porte ${port1} e ${port2} (UDP).
vedi http://wiki.freenetproject.org/FirewallAndRouterIssues (disponibile solo
in inglese, per ora).
-IPDetectorPluginManager.suggestForwardTwoPortsWithLink=Potrebbe essere
necessario configurare manualmente ${link}il forward delle porte${/link} Per
porte nummero ${port1} e ${port2}, UDP. (questo messaggio pu? in alcuni casi
continuare ad apparire per un po' di tempo dopo aver configurato il forward)
-IPDetectorPluginManager.symmetric=Dai rilevamenti appare che il nodo potrebbe
trovarsi dietro una NAT simmetrica o un firewall. Probabilmente, sar? possibile
connettersi ad utenti connessi direttamente a internet o dietro restricted cone
NAT
-IPDetectorPluginManager.symmetricPS=Il nodo si trova dietro una NAT
simmetrica. Queta ? una situazione particolarmente particolarmente
problematica: ? necessario configurare il forward delle porte. In caso
contrario potrebbe risultare impossibile connettersi alla maggioranza dei nodi.
+IPDetectorPluginManager.suggestForwardTwoPortsWithLink=Potrebbe essere
necessario configurare manualmente ${link}il forward delle porte${/link} Per
porte nummero ${port1} e ${port2}, UDP. (questo messaggio pu? in alcuni casi
continuare ad apparire per un po' di tempo dopo aver configurato il forward)
+IPDetectorPluginManager.symmetric=Dai rilevamenti appare che il nodo potrebbe
trovarsi dietro una NAT simmetrica o un firewall. Probabilmente, sar? possibile
connettersi ad utenti connessi direttamente a internet o dietro restricted cone
NAT
+IPDetectorPluginManager.symmetricPS=Il nodo si trova dietro una NAT
simmetrica. Queta ? una situazione particolarmente particolarmente
problematica: ? necessario configurare il forward delle porte. In caso
contrario potrebbe risultare impossibile connettersi alla maggioranza dei nodi.
IPDetectorPluginManager.symmetricTitle=Rilevato firewall simmetrico
-IPUndetectedUserAlert.detecting=Freenet sta cercando in questo momento di
rilevare l'indirizzo IP esterno. Il protrarsi della durata di questa operazione
oltre il limite di pochi minuti ? indicativo di problemi.
+IPUndetectedUserAlert.detecting=Freenet sta cercando in questo momento di
rilevare l'indirizzo IP esterno. Il protrarsi della durata di questa operazione
oltre il limite di pochi minuti ? indicativo di problemi.
IPUndetectedUserAlert.detectingShort=Indirizzo IP esterno in corso di
rilevamento.
-IPUndetectedUserAlert.detectingWithConfigLink=Freenet sta rilevando
l'indirizzo IP esterno. Se l'operazione dura pi? di qualche minuto si pu?
presumere che qualcosa non stia andando come dovrebbe e si pu? provare ad usare
il Suggerimento Temporaneo per l'Indirizzo IP ${link}parametro di
configurazione${/link}.
+IPUndetectedUserAlert.detectingWithConfigLink=Freenet sta rilevando
l'indirizzo IP esterno. Se l'operazione dura pi? di qualche minuto si pu?
presumere che qualcosa non stia andando come dovrebbe e si pu? provare ad usare
il Suggerimento Temporaneo per l'Indirizzo IP ${link}parametro di
configurazione${/link}.
IPUndetectedUserAlert.suggestForwardPort=Sarebbe opportuno configurare il port
forward sul router per le porte ${port1} e ${port2} (UDP) in modo da facilitare
le connessioni.
IPUndetectedUserAlert.suggestForwardTwoPorts=Sarebbe opportuno configurare il
port forward sul router per le porte ${port1} e ${port2} (UDP) in modo da
facilitare le connessioni.
-IPUndetectedUserAlert.unknownAddress=Non ? stato possibile rilevare
l'indirizzo IP esterno (o l'indirizzo IP del NAT box o del firewall). Si pu?
comunque scambiare refs con altri utenti, ma sar? possibile connettersi
solamente a nodi che non si trovino a loro volta dietro NAT o firewall. Non
appaena ci si sar? connessi in questo modo ad almeno un altro utente, sar?
possibile determinare l'indirizzo IP esterno. Si pu? suggerire al nodo
l'indirizzo IP esterno usando 'Suggerimento Temporaneo per l'Indirizzo IP'
${link}parametro di configurazione${/link}
-IPUndetectedUserAlert.unknownAddressShort=Non ? stato possibile rilevare
l'indirizzo IP. Potrebbero verificarsi problemi di connessione.
+IPUndetectedUserAlert.unknownAddress=Non ? stato possibile rilevare
l'indirizzo IP esterno (o l'indirizzo IP del NAT box o del firewall). Si pu?
comunque scambiare refs con altri utenti, ma sar? possibile connettersi
solamente a nodi che non si trovino a loro volta dietro NAT o firewall. Non
appaena ci si sar? connessi in questo modo ad almeno un altro utente, sar?
possibile determinare l'indirizzo IP esterno. Si pu? suggerire al nodo
l'indirizzo IP esterno usando 'Suggerimento Temporaneo per l'Indirizzo IP'
${link}parametro di configurazione${/link}
+IPUndetectedUserAlert.unknownAddressShort=Non ? stato possibile rilevare
l'indirizzo IP. Potrebbero verificarsi problemi di connessione.
IPUndetectedUserAlert.unknownAddressTitle=Indirizzo esterno sconosciuto
-IPUndetectedUserAlert.unknownAddressWithConfigLink=Freenet non ha potuto
rilevare l'indirizzo IP esterno (o l'indirizzo IP del NAT box o firewall). E'
comunque possibile scambiare referenze con altri utenti, ma la connessione
avverr? soltanto se l'altra parte non ? a sua volta dietro NAT o firewall.
Appena connesso ad almeno un utente in questo modo, Freenet riuscit? a
determinare l'indirizzo IP esterno.E' possibile suggerire al nodo l'IP esterno
usando il campo 'suggerimento provvisorio per l'indirizzo IP' ${link}parametro
di configurazione${/link}. Sarebbe inlotre auspicabile configurare il forward
UDP per la porta ${port} sul router, in modo da rendere pi? facili le
connessioni
-InsertException.longError.1=Caller ha fornito una URI che non ? possibile
utilizzare"
+IPUndetectedUserAlert.unknownAddressWithConfigLink=Freenet non ha potuto
rilevare l'indirizzo IP esterno (o l'indirizzo IP del NAT box o firewall). E'
comunque possibile scambiare referenze con altri utenti, ma la connessione
avverr? soltanto se l'altra parte non ? a sua volta dietro NAT o firewall.
Appena connesso ad almeno un utente in questo modo, Freenet riuscit? a
determinare l'indirizzo IP esterno.E' possibile suggerire al nodo l'IP esterno
usando il campo 'suggerimento provvisorio per l'indirizzo IP' ${link}parametro
di configurazione${/link}. Sarebbe inlotre auspicabile configurare il forward
UDP per la porta ${port} sul router, in modo da rendere pi? facili le
connessioni
+InsertException.longError.1=Caller ha fornito una URI che non ? possibile
utilizzare"
InsertException.longError.10=Annullato dall'utente
InsertException.longError.11=Meta string (probabilmente '/') usata nella URI
InsertException.longError.12=Errore di formattazione nel blob binario
InsertException.longError.2=Errore bucket interno: potrebbe trattarsi di
mancanza di spazio sufficiente su disco rigido o di mancanza di autorizzazione.
InsertException.longError.3=Errore interno
-InsertException.longError.4=Un nodo 'a valle' (downstream) ? andato in time
out o ? stato gravemente sovraccaricato
-InsertException.longError.5=Non ? stato possibile propagare questa inserzione
su un numero sufficiente di nodi (questo e' normale su network di piccole
dimensioni: si pu? provare a richiamare il file comunque)
+InsertException.longError.4=Un nodo 'a valle' (downstream) ? andato in time
out o ? stato gravemente sovraccaricato
+InsertException.longError.5=Non ? stato possibile propagare questa inserzione
su un numero sufficiente di nodi (questo e' normale su network di piccole
dimensioni: si pu? provare a richiamare il file comunque)
InsertException.longError.6=Errori fatali in un'inserzione di splitfiles
-InsertException.longError.7=Non ? stato possibile inserire splitfile: numero
di tentativi esaurito (errori nonfatali)
-InsertException.longError.8=Non ? stato possibile far partire l'inserzione dal
nodo locale.
-InsertException.longError.9=L' inserzione ? in conflitto con dati
pre-esistenti e differenti alla stessa chiave
+InsertException.longError.7=Non ? stato possibile inserire splitfile: numero
di tentativi esaurito (errori nonfatali)
+InsertException.longError.8=Non ? stato possibile far partire l'inserzione dal
nodo locale.
+InsertException.longError.9=L' inserzione ? in conflitto con dati
pre-esistenti e differenti alla stessa chiave
InsertException.shortError.1=URI non valida
InsertException.shortError.10=Annullato
InsertException.shortError.11=Meta string usata nella chiave
@@ -565,39 +569,39 @@
InsertException.shortError.5=Percorso non trovato
InsertException.shortError.6=Alcuni block sono falliti in modo fatale
InsertException.shortError.7=Alcuni block hanno esaurito il numero di
tentativi a disposizione
-InsertException.shortError.8=Non ? stato possibile inoltrare la richiesta
+InsertException.shortError.8=Non ? stato possibile inoltrare la richiesta
InsertException.shortError.9=Conflitto con dati esistenti
-IntOption.parseError=Il valore specificato non pu? essere interpretato come
32-bit integer : ${val}
-InvalidAddressOverrideUserAlert.unknownAddress=Freenet ha rilevato che il
valore attualmente in uso per ipAddessOverride non ? valido in quanto non
conforme alla sintassi appropriata per un hostname n? per un indirizzo IPv4 o
IPv6 (in accordo con l'implementazione corrente della funzione che controlla la
sintassi per indirizzi IPv6)
+IntOption.parseError=Il valore specificato non pu? essere interpretato come
32-bit integer : ${val}
+InvalidAddressOverrideUserAlert.unknownAddress=Freenet ha rilevato che il
valore attualmente in uso per ipAddessOverride non ? valido in quanto non
conforme alla sintassi appropriata per un hostname n? per un indirizzo IPv4 o
IPv6 (in accordo con l'implementazione corrente della funzione che controlla la
sintassi per indirizzi IPv6)
InvalidAddressOverrideUserAlert.unknownAddressShort=L' indirizzo IP impostato
manualmente (ipAddressOverride) non funziona. si prega di correggerlo.
InvalidAddressOverrideUserAlert.unknownAddressTitle=Valore Override Indirizzo
non Valido
-InvalidAddressOverrideUserAlert.unknownAddressWithConfigLink=Freenet ha
rilevato che il valore attualmente in uso per ipAddessOverride non ? valido in
quanto non conforme alla sintassi appropriata per un hostname n? per un
indirizzo IPv4 o IPv6 (in accordo con l'implementazione corrente della funzione
che controlla la sintassi per indirizzi IPv6) E' possibile correggere l'
Override indirizzo IP ${link}configuration parameter${/link}.
-JPEGFilter.notJpeg=Le dimensioni del file che si sta cercando di richiamare
sono troppo ridotte perch? possa trattarsi di un'immagine JPEG. Potrebbe essere
un file in un altro formato e il browser potrebbe fare qualcosa di sbagliato a
causa della mancata corrispondenza; il file ? stato pertanto bloccato.
+InvalidAddressOverrideUserAlert.unknownAddressWithConfigLink=Freenet ha
rilevato che il valore attualmente in uso per ipAddessOverride non ? valido in
quanto non conforme alla sintassi appropriata per un hostname n? per un
indirizzo IPv4 o IPv6 (in accordo con l'implementazione corrente della funzione
che controlla la sintassi per indirizzi IPv6) E' possibile correggere l'
Override indirizzo IP ${link}configuration parameter${/link}.
+JPEGFilter.notJpeg=Le dimensioni del file che si sta cercando di richiamare
sono troppo ridotte perch? possa trattarsi di un'immagine JPEG. Potrebbe essere
un file in un altro formato e il browser potrebbe fare qualcosa di sbagliato a
causa della mancata corrispondenza; il file ? stato pertanto bloccato.
JPEGFilter.tooShort=File troppo piccolo per un JPEG.
JPEGFilter.tooShortTitle=Troppo corto
-KnownUnsafeContentTypeException.dangerousInlines=Contenuto di questo tipo pu?
includere immagini o video che vengono caricati direttamente da internet,
esponendo l'indirizzo IP dell'utente e quindi compromettendone gravemente
l'anonimato.
+KnownUnsafeContentTypeException.dangerousInlines=Contenuto di questo tipo pu?
includere immagini o video che vengono caricati direttamente da internet,
esponendo l'indirizzo IP dell'utente e quindi compromettendone gravemente
l'anonimato.
KnownUnsafeContentTypeException.dangerousInlinesLabel=Collegamenti esterni
pericolosi:
-KnownUnsafeContentTypeException.dangerousLinks=Contenuto di questo tipo pu?
includere dei link a pagine pubblicate al di fuori di Freenet. Cliccando su
tali link (e possono essere camuffati) si espone il proprio indirizzo IP,
compromettendo l'anonimato.
+KnownUnsafeContentTypeException.dangerousLinks=Contenuto di questo tipo pu?
includere dei link a pagine pubblicate al di fuori di Freenet. Cliccando su
tali link (e possono essere camuffati) si espone il proprio indirizzo IP,
compromettendo l'anonimato.
KnownUnsafeContentTypeException.dangerousLinksLabel=Link pericolosi:
-KnownUnsafeContentTypeException.dangerousMetadata=Contenuto di questo tipo pu?
includere metadati, i quali possono essere visualizzati da alcuni browser o con
l'aiuto di altri programmi: i metadati possono contenere link o immagini
caricate direttamente da internet, che possono compromettere l'anonimato.
+KnownUnsafeContentTypeException.dangerousMetadata=Contenuto di questo tipo pu?
includere metadati, i quali possono essere visualizzati da alcuni browser o con
l'aiuto di altri programmi: i metadati possono contenere link o immagini
caricate direttamente da internet, che possono compromettere l'anonimato.
KnownUnsafeContentTypeException.dangerousMetadataLabel=Metadati pericolosi:
-KnownUnsafeContentTypeException.dangerousScripts=Contenuto di questo tipo pu?
includere script pericolosi che quando eseguiti possono compromettere
l'anonimato dell'utente connettendosi direttamente al web o compromettere la
sicurezza in altro modo.
+KnownUnsafeContentTypeException.dangerousScripts=Contenuto di questo tipo pu?
includere script pericolosi che quando eseguiti possono compromettere
l'anonimato dell'utente connettendosi direttamente al web o compromettere la
sicurezza in altro modo.
KnownUnsafeContentTypeException.dangerousScriptsLabel=Scripting pericoloso:
KnownUnsafeContentTypeException.knownUnsafe=Questo e' un MIME type
potenzialmente pericoloso. Se il nodo lo lascia passare, il browser potrebbe
fare qualcosa capace di compromettere l'anonimato dell'utente, esponendone
l'indirizzo IP in relazione a questa pagina. In particolare:
-KnownUnsafeContentTypeException.noFilter=Non ? disponibile alcun filtro per
questo tipo di dati; ? necessario quindi prendere tutte le possibili
precauzioni.
+KnownUnsafeContentTypeException.noFilter=Non ? disponibile alcun filtro per
questo tipo di dati; ? necessario quindi prendere tutte le possibili
precauzioni.
KnownUnsafeContentTypeException.title=Conosciuto come pericoloso: Tipo ${type}
LocalFileInsertToadlet.checkPathExist=Accerta l'esistenza del percorso
specificato.
LocalFileInsertToadlet.checkPathIsDir=Controlla che il percorso specificato
sia una directory
LocalFileInsertToadlet.checkPathReadable=Controlla che il percorso specificato
sia leggibile dall'utente che sta utilizzando il nodo.
-LocalFileInsertToadlet.dirAccessDenied=L'accesso a questa directory ?
interdetto
-LocalFileInsertToadlet.dirCannotBeRead=Non ? stato possibile leggere dalla
directory "${path}".
+LocalFileInsertToadlet.dirAccessDenied=L'accesso a questa directory ?
interdetto
+LocalFileInsertToadlet.dirCannotBeRead=Non ? stato possibile leggere dalla
directory "${path}".
LocalFileInsertToadlet.fileHeader=File
LocalFileInsertToadlet.insert=Inserisci
LocalFileInsertToadlet.listing=Elenco directory ${path}
LocalFileInsertToadlet.listingTitle=Listing di ${path}
LocalFileInsertToadlet.sizeHeader=Dimensioni
-LogConfigHandler.detaildPriorityThreshold=Soglie di priorit? dettagliate
-LogConfigHandler.detaildPriorityThresholdLong=Soglie di priorit? dettagliate.
Esempio: freenet:normal,freenet.node:minor
+LogConfigHandler.detaildPriorityThreshold=Soglie di priorit? dettagliate
+LogConfigHandler.detaildPriorityThresholdLong=Soglie di priorit? dettagliate.
Esempio: freenet:normal,freenet.node:minor
LogConfigHandler.dirName=Directory dei log
LogConfigHandler.dirNameLong=Directory contenente i log files
LogConfigHandler.enabled=Abilita Log
@@ -608,28 +612,28 @@
LogConfigHandler.maxCachedLinesLong=Numero massimo di righe nella RAM cache
LogConfigHandler.maxZippedLogsSize=Spazio massimo per vecchi log
LogConfigHandler.maxZippedLogsSizeLong=Spazio massimo su disco utilizzabile da
vecchi log.
-LogConfigHandler.minLoggingPriority=Priorit? minima dei messaggi da iscrivere
nei log.
-LogConfigHandler.minLoggingPriorityLong=Minima priorit? dei messaggi che
vengono iscritti nel log file. Le opzioni sono: minor, normal, error,
nell'ordine dalla meno alla pi? verbosa.
+LogConfigHandler.minLoggingPriority=Priorit? minima dei messaggi da iscrivere
nei log.
+LogConfigHandler.minLoggingPriorityLong=Minima priorit? dei messaggi che
vengono iscritti nel log file. Le opzioni sono: minor, normal, error,
nell'ordine dalla meno alla pi? verbosa.
LogConfigHandler.rotationInterval=Intervallo di rotazione dei log
LogConfigHandler.rotationIntervalLong=Intervallo di rotazione dei log -
Periodo di tempo allo scadere del quale i log vengono ruotati. Gli ultimi due
log files vengono conservati (current.log e prev.log) insieme a diversi log
file compressi fino al massimo impostato in maxZippedLogsSize
-LoggerHook.unrecognizedPriority=Nome di priorit? non riconosciuto: ${name}.
-LongOption.parseError=Il valore specificato non pu? essere interpretato come
64-bit integer : ${val}
-MeaningfulNodeNameUserAlert.noNodeNick=Non ? stato possibile trovare il
nickname da utilizzare. Usare qui un indirizzo e-mail o un nickname IRC ?
generalmente una buona idea in quanto consente ai peer di identificare il nodo.
(nota che soltanto i peer darknet elencati alla pagina Amici potranno vedere il
nome del nodo, che resta invece invisibile ai peer Opennet)
+LoggerHook.unrecognizedPriority=Nome di priorit? non riconosciuto: ${name}.
+LongOption.parseError=Il valore specificato non pu? essere interpretato come
64-bit integer : ${val}
+MeaningfulNodeNameUserAlert.noNodeNick=Non ? stato possibile trovare il
nickname da utilizzare. Usare qui un indirizzo e-mail o un nickname IRC ?
generalmente una buona idea in quanto consente ai peer di identificare il nodo.
(nota che soltanto i peer darknet elencati alla pagina Amici potranno vedere il
nome del nodo, che resta invece invisibile ai peer Opennet)
MeaningfulNodeNameUserAlert.noNodeNickShort=Nome nodo non definito.
MeaningfulNodeNameUserAlert.noNodeNickTitle=Nome nodo non definito.
N2NTMToadlet.composingMessageLabel=Messaggio N2NTM da inviare ai seguenti
nodi:
N2NTMToadlet.delayed=Il nodo interressato sta temporaneamente respingendo
richieste; il messaggio potrebbe giungere in lieve ritardo.
N2NTMToadlet.delayedTitle=Differito
-N2NTMToadlet.failed=Il peer interessato non ? connesso in questo momento: non
? stato possibile inviare il messaggio
+N2NTMToadlet.failed=Il peer interessato non ? connesso in questo momento: non
? stato possibile inviare il messaggio
N2NTMToadlet.failedTitle=Fallito
N2NTMToadlet.friends=Amici
N2NTMToadlet.homepage=Homepage
N2NTMToadlet.noSuchFileOrCannotRead=Trasferimento fallito:File inesistente o
illegibile.
N2NTMToadlet.peerName=Nome del Peer
N2NTMToadlet.peerNotFoundTitle=Peer non trovato
-N2NTMToadlet.peerNotFoundWithHash=Non ? stato possibile trovare il peer con
hash code \u201c${hash}\u201d
+N2NTMToadlet.peerNotFoundWithHash=Non ? stato possibile trovare il peer con
hash code \u201c${hash}\u201d
N2NTMToadlet.processingSend=Invio messaggio in corso
-N2NTMToadlet.queued=In attesa: Il peer interessato non ? connesso in questo
momento. Il messaggio ? stato posto in attesa e verr? spedito al pi? presto
possibile
+N2NTMToadlet.queued=In attesa: Il peer interessato non ? connesso in questo
momento. Il messaggio ? stato posto in attesa e verr? spedito al pi? presto
possibile
N2NTMToadlet.queuedTitle=Aggiunto alla Coda
N2NTMToadlet.returnToFriends=Torna alla lista degli Amici
N2NTMToadlet.returnToNodeHomepage=Torna alla homepage del nodo
@@ -640,30 +644,30 @@
N2NTMToadlet.sentTitle=Inviato
N2NTMToadlet.tooLong=I messaggi N2NTM possono contenere fino a un massimo di
1024 caratteri
N2NTMToadlet.tooLongTitle=Troppo Lungo
-N2NTMToadlet.unauthorized=L'accesso a questa pagina ? interdetto
+N2NTMToadlet.unauthorized=L'accesso a questa pagina ? interdetto
N2NTMUserAlert.delete=Elimina
N2NTMUserAlert.header=Da: ${from} (scritto ${composed} | inviato ${sent} |
ricevuto ${received})
N2NTMUserAlert.headerShort=Messaggio da ${from}
N2NTMUserAlert.reply=Rispondi
N2NTMUserAlert.title=Messaggio di testo da nodo a nodo (N2NTM) ${number} da:
${peername} (${peer})
-Node.acceptSeedConnections=Selezionando "vero" il nodo accetter? connessioni
da nodi che intendono usare la modalit? insicura (opennet) e li aiuter? a
connettersi alla rete Freenet. Ci? rende possibile la connessione a qualsiasi
nodo in possesso della referenza ma limitata dall'annuncio: le richieste di
connessione sono indirizzate solo ai nodi aggiunti tramite annuncio. Il nodo
locale potrebbe essere incluso a meno che non abbia gi? molti peer opennet
(visibili alla pagina "Sconosciuti")
+Node.acceptSeedConnections=Selezionando "vero" il nodo accetter? connessioni
da nodi che intendono usare la modalit? insicura (opennet) e li aiuter? a
connettersi alla rete Freenet. Ci? rende possibile la connessione a qualsiasi
nodo in possesso della referenza ma limitata dall'annuncio: le richieste di
connessione sono indirizzate solo ai nodi aggiunti tramite annuncio. Il nodo
locale potrebbe essere incluso a meno che non abbia gi? molti peer opennet
(visibili alla pagina "Sconosciuti")
Node.acceptSeedConnectionsShort=Abilita seednode
Node.alwaysAllowLocalAddresses=Permettere sempre la connessione a nodi via
indirizzi locali?
-Node.alwaysAllowLocalAddressesLong=Se impostato su "vero" il nodo cercher? di
connettersi ad altri nodi usando il loro indirizzo locale (localhost, LAN)
oltre al loro indirizzo IP pubblico. Se questa opzione non e' impostata, si pu?
comunque abilitarla separatamente per singoli peer darknet (ma non per i peer
opennet). Impostare questa opzione se ci si vuole connettere ad altri nodi
sulla stessa rete locale (LAN) o che girano sullo stesso computer, e non far
caso alle referenze "bogus" ("scr?use") che possono far mandare al nodo
pacchetti UDP alle macchine sulla rete locale.
+Node.alwaysAllowLocalAddressesLong=Se impostato su "vero" il nodo cercher? di
connettersi ad altri nodi usando il loro indirizzo locale (localhost, LAN)
oltre al loro indirizzo IP pubblico. Se questa opzione non e' impostata, si pu?
comunque abilitarla separatamente per singoli peer darknet (ma non per i peer
opennet). Impostare questa opzione se ci si vuole connettere ad altri nodi
sulla stessa rete locale (LAN) o che girano sullo stesso computer, e non far
caso alle referenze "bogus" ("scr?use") che possono far mandare al nodo
pacchetti UDP alle macchine sulla rete locale.
Node.assumeNATed=Presumere che la porta non sia forwardata.
-Node.assumeNATedLong=Dare per scontato che la porta sia dietro NAT e non
forwardata? In questo caso il nodo mander? handshake ogni 10-30 secondi.
+Node.assumeNATedLong=Dare per scontato che la porta sia dietro NAT e non
forwardata? In questo caso il nodo mander? handshake ogni 10-30 secondi.
Node.bandwidthLimitMustBePositiveOrMinusOne=Il valore dell'ampiezza di banda
deve essere positivo o -1
Node.bindTo=Indirizzo IP
Node.bindToLong=Indirizzo IP
-Node.buggyJVM=La JVM attualmente in uso (${version}) ? una versione
notoriamente afflitta da 'bug' che pu? produrre OutOfMemoryError anche con
molta memoria ancora a disposizione. Si raccomanda di aggiornare Java. La
versione consigliata ? Sun Java 1.6, ma ? possibile usare anche 1.4.2 o 1.5.
-Node.buggyJVMShort=Freenet sta attualmente utilizzando Java versione
${version}, che ? notoriamente afflitta da p'bug' pericolosi. Si prega di
aggiornare Java al pi? presto possibile.
+Node.buggyJVM=La JVM attualmente in uso (${version}) ? una versione
notoriamente afflitta da 'bug' che pu? produrre OutOfMemoryError anche con
molta memoria ancora a disposizione. Si raccomanda di aggiornare Java. La
versione consigliata ? Sun Java 1.6, ma ? possibile usare anche 1.4.2 o 1.5.
+Node.buggyJVMShort=Freenet sta attualmente utilizzando Java versione
${version}, che ? notoriamente afflitta da p'bug' pericolosi. Si prega di
aggiornare Java al pi? presto possibile.
Node.buggyJVMTitle=Avvertennza JVM soggetta a 'bug'
-Node.buggyJVMWithLink=La JVM in uso (${version}) ? notoriamente
${link}difettosa${/link}. Pu? produrre errori tipo OutOfMemoryError anche con
molta memoria ancora disponibile. Sarebbe auspicabile aggiornare almeno a Sun
Java 1.4.2_13, 1.5.0_10 o 1.6 (quest'ultima ? la versione consigliata).
+Node.buggyJVMWithLink=La JVM in uso (${version}) ? notoriamente
${link}difettosa${/link}. Pu? produrre errori tipo OutOfMemoryError anche con
molta memoria ancora disponibile. Sarebbe auspicabile aggiornare almeno a Sun
Java 1.4.2_13, 1.5.0_10 o 1.6 (quest'ultima ? la versione consigliata).
Node.bwlimitMustBePositive=Il limite dell'ampiezza di banda deve essere
positivo
Node.databaseMemory=Memoria massima utilizzabile dal datastore
Node.databaseMemoryLong=Uso massimo della memoria del database contenente
indici del magazzino dati (datastore). 0 significa nessun limite (non supera
comunque il 30% circa della memoria massima)
Node.deadlockTitle=Deadlocking probabilmente dovuto ad una combinazione di JVM
e kernel che da luogo a "bug".
-Node.deadlockWarning=ATTENZIONE: E' stato rilevato l'uso di Sun JVM con NPTL.
Ci? pu? produrre il "congelamento" del nodo a causa della JVM che perde un
lock. Per ovviare a tale inconveniente ? necessatio disabilitare NPTL
impostando la variabile ambientale LD_ASSUME_KERNEL=2.4.1. Le versioni pi?
recenti di Freenet installer dovrebbero gi? esserne provviste; reinstallare, o
modificare il file run.sh
(https://emu.freenetproject.org/svn/trunk/apps/installer/installclasspath/run.sh).
Su alcuni sistemi pu? essere necessario installare le pthreads libraries
perch? questo funzioni. Nota che il nodo cercherebbe di riavviarsi
automaticamente se un tale deadlock occorresse, ma questa funzione non ? ancora
pienamente affidabile, e richiede tempo.
+Node.deadlockWarning=ATTENZIONE: E' stato rilevato l'uso di Sun JVM con NPTL.
Ci? pu? produrre il "congelamento" del nodo a causa della JVM che perde un
lock. Per ovviare a tale inconveniente ? necessatio disabilitare NPTL
impostando la variabile ambientale LD_ASSUME_KERNEL=2.4.1. Le versioni pi?
recenti di Freenet installer dovrebbero gi? esserne provviste; reinstallare, o
modificare il file run.sh
(https://emu.freenetproject.org/svn/trunk/apps/installer/installclasspath/run.sh).
Su alcuni sistemi pu? essere necessario installare le pthreads libraries
perch? questo funzioni. Nota che il nodo cercherebbe di riavviarsi
automaticamente se un tale deadlock occorresse, ma questa funzione non ? ancora
pienamente affidabile, e richiede tempo.
Node.disableHangCheckers=Disabilita tutti gli hang checker
Node.disableHangCheckersLong=Disabilita tutte le funzioni hang
checkers/watchdog. Impostare per fare il profiling di Fred.
Node.disablePHTLS=Disabilita HTL probabilistico
@@ -682,17 +686,17 @@
Node.enableSwappingLong=Abilita scambio di locazione? (NON DISABILITARE! Utile
solo in alcune simulazioni).
Node.enableULPRDataPropagation=Abilita propagazione dati ULPR?
Node.enableULPRDataPropagationLong=Abilita propagazione rapida di chiavi
richieste recentemente ai nodi che le hanno richieste quando i dati sono stati
finalmente trovati? (Richieste Persistenti Ultra-Leggere)
-Node.errorApplyingConfig=Si ? verificato un errore durante l'applicazione
della nuova configurazione : ${error}
+Node.errorApplyingConfig=Si ? verificato un errore durante l'applicazione
della nuova configurazione : ${error}
Node.extraPeerDir=Directory dei dati extra peer
Node.extraPeerDirLong=Directory dove conservare dati extra
Node.forceBigShrink=Esegui immediatamente grosse riduzioni di dimensione dello
store
-Node.forceBigShrinkLong=Determina se eseguire immediatamente le riduzioni di
dimensione in misura superiore al 10% del magazzino (store), piuttosto che
aspettare il prossimo riavvio del nodo. Le riduzioni on-line non preservano i
dati utilizzati per ultimi quindi l'uso di questa opzione non ? raccomandato;
da usarsi solo nel caso in cui sia desiderabile un risultato immediato.
+Node.forceBigShrinkLong=Determina se eseguire immediatamente le riduzioni di
dimensione in misura superiore al 10% del magazzino (store), piuttosto che
aspettare il prossimo riavvio del nodo. Le riduzioni on-line non preservano i
dati utilizzati per ultimi quindi l'uso di questa opzione non ? raccomandato;
da usarsi solo nel caso in cui sia desiderabile un risultato immediato.
Node.inBWLimit=Limite ampiezza di banda in entrata (bytes per secondo)
Node.inBWLimitLong=Limite dell'ampiezza di banda in entrata (bytes/sec); il
nodo cerca di non eccedere tale limite; -1 siglifica quattro volte il limite
impostato per l'ampiezza di banda in uscita (outputBandwidthLimit)
Node.invalidStoreSize=Il datastore (magazzino dati) deve essere di dimensioni
uguali o superiori a 32MB
-Node.java14ShortText=Tra breve non sara pi? possibile operare un nodo Freenet
su Java 1.4. Si prega di aggiornare a 1.5 o 1.6
+Node.java14ShortText=Tra breve non sara pi? possibile operare un nodo Freenet
su Java 1.4. Si prega di aggiornare a 1.5 o 1.6
Node.java14Text=Freenet sta girando su una versione 1.4 di Java. Si prega di
aggiornare almeno a Java 1.5. Gli aggiornamenti automatici di Freenet sono
stati temporaneamente disabilitati in quanto versioni future potrebbero non non
girare del tutto.
-Node.java14Title=Freenet non ? pi? compatibile con Java 1.4
+Node.java14Title=Freenet non ? pi? compatibile con Java 1.4
Node.l10nLanguage=Lingua dell' interfaccia grafica
Node.l10nLanguageLong=Cambia la lingua in cui messaggi sono visualizzati.
Alcune frasi e messaggi saranno visibili in versione tradotta solo dopo il
prossimo riavvio del nodo.
Node.maxHTL=HTL massimo
@@ -706,70 +710,80 @@
Node.nodeName=Nome del nodo
Node.nodeNameLong=Nome del nodo. E' visibile solo agli Amici (darknet peer),
mentre gli Sconosciuti (opennet peer) non potranno vederlo.
Node.notUsingSunVM=E' stata rilevata una JVM ${vendor} ${version} che potrebbe
influire sul corretto funzionamento del nodo. Se possibile, installare Sun java
disponibile presso http://www.java.com/getjava
-Node.notUsingSunVMShort=Freenet sta attualmente utilizzando JVM (Java Virtual
Machine) diversa da Sun, che ? quella raccomandata. Si prega di scaricare ed
installare la versione corrente di Sun Java JRE (Java Runtime Environment)
+Node.notUsingSunVMShort=Freenet sta attualmente utilizzando JVM (Java Virtual
Machine) diversa da Sun, che ? quella raccomandata. Si prega di scaricare ed
installare la versione corrente di Sun Java JRE (Java Runtime Environment)
Node.notUsingSunVMTitle=Il nodo non sta usando una JVM della Sun
-Node.notUsingWrapper=Il nodo sta girando senza il wrapper. Ci? ? generalmente
sconsigliabile. Il nodo non potr? riavviare s? stesso e quindi l'aggiornamento
automatico non potr? funzionare. Inoltre, se la JVM se ne dovesse andare nel
"limbo" non sar? possibile riavviare automaticamente nemmeno qiuella. Non
verranno generati stack dump in alcuni posti e quindi debugging sar? pi?
difficile.
-Node.notUsingWrapperShort=Freenet sta girando senza wrapper. Questo non ?
raccomandato.
+Node.notUsingWrapper=Il nodo sta girando senza il wrapper. Ci? ? generalmente
sconsigliabile. Il nodo non potr? riavviare s? stesso e quindi l'aggiornamento
automatico non potr? funzionare. Inoltre, se la JVM se ne dovesse andare nel
"limbo" non sar? possibile riavviare automaticamente nemmeno qiuella. Non
verranno generati stack dump in alcuni posti e quindi debugging sar? pi?
difficile.
+Node.notUsingWrapperShort=Freenet sta girando senza wrapper. Questo non ?
raccomandato.
Node.notUsingWrapperTitle=Il nodo non sta usando il wrapper!
Node.oneConnectionPerIP=Limita ad una connessione per indirizzo?
-Node.oneConnectionPerIPLong=Non permettere pi? di una connessione per
indirizzo? Ci? rende leggermente pi? difficile un attacco eseguito
connettendosi al nodo pi? volte con diverse identit? in modo da dominarne il
routing (instradamento) e rendere pi? facile raccogliere dati con lo
"harvesting" (lett: "il raccolto", in agricoltura). Questa opzione impedisce
che un peer sia connesso al nodo sia su darknet che su opennet.
-Node.opennetEnabled=Abilita Modalit? Insicura (connette automaticamente a nodi
gestiti da Sconosciuti)
-Node.opennetEnabledLong=Abilita Modalit? Insicura? (detta anche Opennet)
Abilitando questa opzione il nodo scambier? automaticamente referenze on altri
nodi. Ci? rende facilmente osservabile dall'esterno il fatto che su questo
computer sta girando un nodo Freenet, facilitando attacchi di diversi tipi.
Avendone la possibilit?, l'opzione migiore ? quella di connettersi soltanto ad
utenti conosciuti ed addifabili (Darknet peer, vedi pagina Amici)
+Node.oneConnectionPerIPLong=Non permettere pi? di una connessione per
indirizzo? Ci? rende leggermente pi? difficile un attacco eseguito
connettendosi al nodo pi? volte con diverse identit? in modo da dominarne il
routing (instradamento) e rendere pi? facile raccogliere dati con lo
"harvesting" (lett: "il raccolto", in agricoltura). Questa opzione impedisce
che un peer sia connesso al nodo sia su darknet che su opennet.
+Node.opennetEnabled=Abilita Modalit? Insicura (connette automaticamente a nodi
gestiti da Sconosciuti)
+Node.opennetEnabledLong=Abilita Modalit? Insicura? (detta anche Opennet)
Abilitando questa opzione il nodo scambier? automaticamente referenze on altri
nodi. Ci? rende facilmente osservabile dall'esterno il fatto che su questo
computer sta girando un nodo Freenet, facilitando attacchi di diversi tipi.
Avendone la possibilit?, l'opzione migiore ? quella di connettersi soltanto ad
utenti conosciuti ed addifabili (Darknet peer, vedi pagina Amici)
Node.outBWLimit=Limite dell'ampiezza di banda in uscita (bytes per secondo)
Node.outBWLimitLong=Limite "duro" dell' ampiezza di banda in uscita
(bytes/sec); di solito il nodo non eccede questo limite
Node.passOpennetPeersThroughDarknet=Trasmetti referenze opennet attraverso
darknet peer
-Node.passOpennetPeersThroughDarknetLong=Se impostata su "vero" referenze
opennet verranno trasmesse attraverso peer darknet (ma MAI la referenza del
nodo locale). In questo modo un nodo (nodo locale, o i suoi peer) pu? ottenere
peer opennet dai suoi peer darknet. Questo ? utile perch? permette di
riconnettersi in caso di perdita dei peer, per esempio dopo una lunga
disconnessione, ma rende l'analisi del traffico leggermente pi? facile, quindi
chi ? paranoico dovrebbe disabilitare questa opzione.
+Node.passOpennetPeersThroughDarknetLong=Se impostata su "vero" referenze
opennet verranno trasmesse attraverso peer darknet (ma MAI la referenza del
nodo locale). In questo modo un nodo (nodo locale, o i suoi peer) pu? ottenere
peer opennet dai suoi peer darknet. Questo ? utile perch? permette di
riconnettersi in caso di perdita dei peer, per esempio dopo una lunga
disconnessione, ma rende l'analisi del traffico leggermente pi? facile, quindi
chi ? paranoico dovrebbe disabilitare questa opzione.
Node.port=Numero della porta FNP (UDP)
Node.portLong=Porta UDP per le comunicazioni da nodo a nodo (Freenet Node
Protocol)
Node.publishOurPeersLocation=Trasmettere ai peer la locazione dei nostri peer?
-Node.publishOurPeersLocationLong=Trasmettere ai peer la locazione dei nostri
peer? Ci? facilita il routing ma fornisce informazioni ad un potenziale
avversario.
+Node.publishOurPeersLocationLong=Trasmettere ai peer la locazione dei nostri
peer? Ci? facilita il routing ma fornisce informazioni ad un potenziale
avversario.
Node.routeAccordingToOurPeersLocation=Tenere conto nel routing della locazione
dei peer dei nostri peer?
-Node.routeAccordingToOurPeersLocationLong=Usare per il routing la locazione
dei peer dei nostri peer? Ci? facilita il routing ma potrebbe essere utile ad
un potenziale avversario.
+Node.routeAccordingToOurPeersLocationLong=Usare per il routing la locazione
dei peer dei nostri peer? Ci? facilita il routing ma potrebbe essere utile ad
un potenziale avversario.
Node.storeDirectory=Directory magazzino dati (store)
Node.storeDirectoryLong=Directory contenente gli store file
-Node.storeMaxMemTooHigh=Impostare un valore superiore ad 80% della memoria RAM
da destinare a BDB ? generalmente una pessima idea.
+Node.storeMaxMemTooHigh=Impostare un valore superiore ad 80% della memoria RAM
da destinare a BDB ? generalmente una pessima idea.
Node.storeSize=Dimensioni in bytes del magazzino dati (store)
Node.storeSizeLong=Dimensioni del magazzino (store) in bytes
Node.storeType=Tipo di magazzino dati (store). NON TOCCARE!!
-Node.storeTypeLong=Tipo di datastore. Attualmente pu? essere un indice bdb
(usa un BerkeleyDBFreenetStore per l'indice, e mette i dati in dei file su
disco), o ram (indice e dati in RAM). L'uso di ram ? riservato a persone
competenti, e solo se c'e' memoria sufficiente a disposizione per tutti i dati
(NOTA: in questo caso i dati NON verranno salvati all'arresto del nodo)
+Node.storeTypeLong=Tipo di datastore. Attualmente pu? essere un indice bdb
(usa un BerkeleyDBFreenetStore per l'indice, e mette i dati in dei file su
disco), o ram (indice e dati in RAM). L'uso di ram ? riservato a persone
competenti, e solo se c'e' memoria sufficiente a disposizione per tutti i dati
(NOTA: in questo caso i dati NON verranno salvati all'arresto del nodo)
Node.swapRInterval=Intervallo tra le richieste di scambio (swap) in
millisecondi
Node.swapRIntervalLong=Intervallo tra richieste di scambio (swap) in
millisecondi. Non toccare!
Node.throttleLocalTraffic=Limitazione di banda su traffico locale
-Node.throttleLocalTrafficLong=Abilita limitazione di banda su traffico locale?
Abilitando questa opzione, la limitazione di banda avr? effetto anche sulla
rete locale (LAN) e su localhost.
+Node.throttleLocalTrafficLong=Abilita limitazione di banda su traffico locale?
Abilitando questa opzione, la limitazione di banda avr? effetto anche sulla
rete locale (LAN) e su localhost.
Node.tooSmallMTU=MTU insufficiente
-Node.tooSmallMTULong=L' MTU della connessione sembra essere ${mtu} bytes.
Freenet non pu? funzionare bene con un MTU minore di ${minMTU} bytes: le
connessioni saranno inaffidabili e forse rallentate. Se possibile, si dovrebbe
provvedere a risolvere il problema.
+Node.tooSmallMTULong=L' MTU della connessione sembra essere ${mtu} bytes.
Freenet non pu? funzionare bene con un MTU minore di ${minMTU} bytes: le
connessioni saranno inaffidabili e forse rallentate. Se possibile, si dovrebbe
provvedere a risolvere il problema.
Node.tooSmallMTUShort=Problema di connessione: MTU di connessione troppo basso
per consentire a Freenet di funzionare correttamente. Potranno verificarsi dei
problemi.
Node.withAnnouncement=Permettere l'inserimento nella rete usando seednodes?
-Node.withAnnouncementLong=Permettere che il nodo si auto-inserisca nella rete
Freenet usando seednodes? Questa opzione ? abilitata di default per motivi
tecnici ma ? intrinsecamente insicura
-NodeClientCore.couldNotFindOrCreateDir=Non ? stato possibile trovare o creare
la directory
-NodeClientCore.downloadAllowedDirs=Directory dove il download ? consentito
-NodeClientCore.downloadAllowedDirsLong=Si pu? usare una lista di directory
dove dove il download e' permesso, separate da 'punto e virgola' (;).
"downloads" significa downloadsDir, vuoto (nessuna directory specificata)
significa che il download su disco non e' permesso, "all" significa download
permessi in tutte le directory AVVERTENZA; Se impostato su "all" ("tutte"),
ogni utente potr? scaricare files in qualsiasi directory.
+Node.withAnnouncementLong=Permettere che il nodo si auto-inserisca nella rete
Freenet usando seednodes? Questa opzione ? abilitata di default per motivi
tecnici ma ? intrinsecamente insicura
+NodeClientCore.couldNotFindOrCreateDir=Non ? stato possibile trovare o creare
la directory
+NodeClientCore.downloadAllowedDirs=Directory dove il download ? consentito
+NodeClientCore.downloadAllowedDirsLong=Si pu? usare una lista di directory
dove dove il download e' permesso, separate da 'punto e virgola' (;).
"downloads" significa downloadsDir, vuoto (nessuna directory specificata)
significa che il download su disco non e' permesso, "all" significa download
permessi in tutte le directory AVVERTENZA; Se impostato su "all" ("tutte"),
ogni utente potr? scaricare files in qualsiasi directory.
NodeClientCore.downloadDir=Directory predefinita per i download
NodeClientCore.downloadDirLong=Directory predefinita dove salvare i file
scaricati
+NodeClientCore.encryptPersistentTempBuckets=Codifica i bucket di dati
temporanei persistenti? NON MODIFICARE!
+NodeClientCore.encryptPersistentTempBucketsLong=Codifica i bucket di dati
temporanei? In alcuni casi (p.es. se si usa HDD e swap encryption)potrebbe non
essere necessario codificare (encrypting) i bucket di dati temporanei. IN CASO
DI DUBBIO NON MODIFICARE
+NodeClientCore.encryptTempBuckets=Codifica buckets di dati temporanei? NON
MODIFICARE!
+NodeClientCore.encryptTempBucketsLong=Codifica i bucket di dati temporanei? In
alcuni casi (p.es. se si usa HDD e swap encryption)potrebbe non essere
necessario codificare (encrypting) i bucket di dati temporanei. IN CASO DI
DUBBIO NON MODIFICARE
NodeClientCore.fileForClientStats=File contenente statistiche del client
NodeClientCore.fileForClientStatsLong=File dove conservare le statistiche
relative al client throttling (utilizzato per stabilire l'intervallo tra le
richieste)
-NodeClientCore.lazyResume=Caricare completamente le richieste persistenti dopo
aver completato l'avvio del nodo? (Fa maggiore uso di memoria ma avvia il nodo
pi? velocemente)
-NodeClientCore.lazyResumeLong=Le richieste persistenti possono essere caricate
durante l'avvio del nodo, oppure si possono scrivere i dati in memoria e
caricarli completamente solo dopo che il processo di avvio ? terminato. Ci?
riduce tempo di avviamento ma fa maggior uso di memoria.
+NodeClientCore.lazyResume=Caricare completamente le richieste persistenti dopo
aver completato l'avvio del nodo? (Fa maggiore uso di memoria ma avvia il nodo
pi? velocemente)
+NodeClientCore.lazyResumeLong=Le richieste persistenti possono essere caricate
durante l'avvio del nodo, oppure si possono scrivere i dati in memoria e
caricarli completamente solo dopo che il processo di avvio ? terminato. Ci?
riduce tempo di avviamento ma fa maggior uso di memoria.
+NodeClientCore.maxArchiveSize=Dimensione massima di ogni archivio
+NodeClientCore.maxArchiveSizeLong=Dimensione massima di ogni archivio
+NodeClientCore.maxRAMBucketSize=Dimensione massima di un RAMbucket
+NodeClientCore.maxRAMBucketSizeLong=Dimensione massima di un RAMBucket (i
bucket di dimensioni maggiori verranno immagazzinati sul disco rigido come file)
NodeClientCore.maxUSKFetchers=Numero massimo di USK fetchers ammessi
NodeClientCore.maxUSKFetchersLong=Numero massimo di USK fetchers ammessi
NodeClientCore.maxUSKFetchersMustBeGreaterThanZero=Deve essere maggiore di zero
-NodeClientCore.movingTempDirOnTheFlyNotSupported=Non ? possible cambiare la
directory dei file temporanei mentre il nodo ? in funzione
+NodeClientCore.movingTempDirOnTheFlyNotSupported=Non ? possible cambiare la
directory dei file temporanei mentre il nodo ? in funzione
NodeClientCore.persistentTempDir=Directory dei file temporanei persistenti
NodeClientCore.persistentTempDirLong=Nome della directory dei file temporanei
persistenti
-NodeClientCore.startingUp=Si prega di concedere a Freenet alcuni minuti per
completare il processo di avviamento. Nel frattempo alcune funzioni non saranno
disponibili e il nodo potr? risultare pi? lento del normale.
-NodeClientCore.startingUpShort=L'avviamento di Freenet ? ancora in corso:
alcune funzioni potrebbero non essere ancora disponibili e il nodo potrebbe
operare ad una velocit? inferiore al normale.
+NodeClientCore.ramBucketPoolSize=Quantit? di RAM da dedicare ai bucket di dati
temporanei
+NodeClientCore.ramBucketPoolSizeLong=Ammontare di memoria RAM da dedicare ai
bucket di dati temporanei che sarebbero altrimenti immagazzinati su disco
rigido. In cambio di pi? uso di memoria si ottiene pi? I/O.
+NodeClientCore.startingUp=Si prega di concedere a Freenet alcuni minuti per
completare il processo di avviamento. Nel frattempo alcune funzioni non saranno
disponibili e il nodo potr? risultare pi? lento del normale.
+NodeClientCore.startingUpShort=L'avviamento di Freenet ? ancora in corso:
alcune funzioni potrebbero non essere ancora disponibili e il nodo potrebbe
operare ad una velocit? inferiore al normale.
NodeClientCore.startingUpTitle=Avviamento di Freenet in corso
NodeClientCore.tempDir=Directory file temporanei
NodeClientCore.tempDirLong=Nome della directory dei file temporanei
NodeClientCore.uploadAllowedDirs=Directory dalle quali l'upload e' consentito
-NodeClientCore.uploadAllowedDirsLong=Si pu? usare una lista di directory dove
l'upload e' consentito, separate da 'punto e virgola' (;). Vuoto (nessuna
directory specificata) significa che l'upload non e' permesso, "all" significa
upload permesso da tutte le directory AVVERTENZA; Se impostato su "all"
("tutte"), ogni utente potr? inserire qualunque file da qualsiasi directory.
+NodeClientCore.uploadAllowedDirsLong=Si pu? usare una lista di directory dove
l'upload e' consentito, separate da 'punto e virgola' (;). Vuoto (nessuna
directory specificata) significa che l'upload non e' permesso, "all" significa
upload permesso da tutte le directory AVVERTENZA; Se impostato su "all"
("tutte"), ogni utente potr? inserire qualunque file da qualsiasi directory.
NodeIPDectector.inclLocalAddress=Includi indirizzi locali nella referenza del
nodo
-NodeIPDectector.inclLocalAddressLong=Specifica se includere l'indirizzo locale
(LAN e localhost) nella referenza del nodo. Ci? non ? necessario a meno che
entrambi i nodi che si vogliono collegare abbiano impostato
allowLocalAddresses=true per le rispettive referenze (per impostare questa
opzione, abilitare la modalit? avanzata e usare le opzioni disponibili alla
pagina Amici).
+NodeIPDectector.inclLocalAddressLong=Specifica se includere l'indirizzo locale
(LAN e localhost) nella referenza del nodo. Ci? non ? necessario a meno che
entrambi i nodi che si vogliono collegare abbiano impostato
allowLocalAddresses=true per le rispettive referenze (per impostare questa
opzione, abilitare la modalit? avanzata e usare le opzioni disponibili alla
pagina Amici).
NodeIPDectector.ipOverride=Impostazione manuale indirizzo IP
-NodeIPDectector.ipOverrideLong=Impostazione manuale dell'indirizzo IP (di
solito non ? necessario) - Utilizzare questa opzione se si ha un indirizzo IP
statico o un domain name (es. dyndns), e ci si trova dietro un firewall.
+NodeIPDectector.ipOverrideLong=Impostazione manuale dell'indirizzo IP (di
solito non ? necessario) - Utilizzare questa opzione se si ha un indirizzo IP
statico o un domain name (es. dyndns), e ci si trova dietro un firewall.
NodeIPDectector.tempAddressHint=Suggerimento temporaneo indirizzo IP
NodeIPDectector.tempAddressHintLong=Suggerisce temporaneamente l'indirizzo IP;
viene eliminato dopo l'uso
-NodeIPDetector.maybeSymmetric=Sembra che il nodo sia dietro una NAT
simmetrica. Potrebbe trattarsi di problemi di connessione: se ci si trova
dietro una NAT simmetrica ci si potr? probabilmente connettere soltanto con i
nodi che sono raggiungibili da interenet.
+NodeIPDetector.maybeSymmetric=Sembra che il nodo sia dietro una NAT
simmetrica. Potrebbe trattarsi di problemi di connessione: se ci si trova
dietro una NAT simmetrica ci si potr? probabilmente connettere soltanto con i
nodi che sono raggiungibili da interenet.
NodeIPDetector.maybeSymmetricShort=Problema di connessione: il nodo potrebbe
trovarsi dietro una NAT simmetrica.
NodeIPDetector.maybeSymmetricTitle=Problemi di connessione
NodeIPDetector.unknownHostErrorInIPOverride=Host sconosciuto: ${error}
@@ -779,8 +793,8 @@
NodeStat.freeHeapBytesThresholdLong=Il nodo respinge richieste per mantenere
la quota di free heap bytes impostata
NodeStat.freeHeapPercentThreshold=Soglia percentuale free heap
NodeStat.freeHeapPercentThresholdLong=Respingendo nuove richieste, il nodo
mantiene la percentuale di di free heap (in rapporto a max heap bytes ammessi)
al di sopra della soglia
-NodeStat.ignoreLocalVsRemoteBandwidthLiability=Gestisi richieste locali allo
come quelle remote per limitazioni della disponibilit? di banda
-NodeStat.ignoreLocalVsRemoteBandwidthLiabilityLong=Abilitando questa opzione
si riduce notevolmente la banda utilizzata e si aumenta leggermente la
sicurezza nei confronti di attacchi di timing. Generalmente non c'? di che
preoccuparsi per questo tipo di attacchi in quanto gli attacchi di correlazione
sono pi? facili da eseguire.
+NodeStat.ignoreLocalVsRemoteBandwidthLiability=Gestisi richieste locali allo
come quelle remote per limitazioni della disponibilit? di banda
+NodeStat.ignoreLocalVsRemoteBandwidthLiabilityLong=Abilitando questa opzione
si riduce notevolmente la banda utilizzata e si aumenta leggermente la
sicurezza nei confronti di attacchi di timing. Generalmente non c'? di che
preoccuparsi per questo tipo di attacchi in quanto gli attacchi di correlazione
sono pi? facili da eseguire.
NodeStat.memCheck=Abilita Verifica di Memoria
NodeStat.memCheckLong=Abilita verifica della memoria (scrive un messaggio nel
log file. La verifica della memoria deve essere abilitata perche'
aggressiveGCModificator abbia effetto)
NodeStat.statsPersister=File contenente le statistiche del nodo
@@ -788,8 +802,8 @@
NodeStat.threadLimit=Limite thread
NodeStat.threadLimitLong=Il nodo respinge richieste per limitare l'uso di
thread al valore specificato.
NodeStats.mustBePercentValueNotFull=Questo valore deve essere espresso in
precentuale, compresa tra 0 e 99.
-NodeStats.valueTooLow=Valore troppo basso per questa impostazione: ?
necessario aumentarlo.
-NodeUpdateManager.enabled=Verifica disponibilit? e scarica nuove versioni
+NodeStats.valueTooLow=Valore troppo basso per questa impostazione: ?
necessario aumentarlo.
+NodeUpdateManager.enabled=Verifica disponibilit? e scarica nuove versioni
NodeUpdateManager.enabledLong=Verifica e scarica automaticamente nuove
versioni di Freenet. Se impostatos su 'vero', le nuove versioni verranno
scaricate ma non necessariamente installate. L'impostazione torna sempre su
'falso' se il nodo non gira all'interno del wrapper.
NodeUpdateManager.extURI=Dove cercare versioni aggiornate di freenet-ext.jar?
NodeUpdateManager.extURILong=Dove cercare aggiornamenti per freenet-ext.jar?
@@ -798,7 +812,7 @@
NodeUpdateManager.invalidExtURI=Ext URI non valida: ${error}
NodeUpdateManager.invalidRevocationURI=URI di revoca non valida: ${error}
NodeUpdateManager.invalidUpdateURI=URI di aggiornamento non valida: ${error}
-NodeUpdateManager.noUpdateWithoutWrapper=Non ? stato possibile completare
l'aggiornamento perch? il nodo non sta girando nel wrapper
+NodeUpdateManager.noUpdateWithoutWrapper=Non ? stato possibile completare
l'aggiornamento perch? il nodo non sta girando nel wrapper
NodeUpdateManager.revocationURI=Dove cercare la chiave di revoca?
NodeUpdateManager.revocationURILong=URI per la chiave di revoca. Se viene
trovata il nodo ne mostra il contenuto e disabilita l'aggiornamento automatico.
NodeUpdateManager.updateCatastropheTitle=Fallimento Catastrofico dell'
Aggiornamento!
@@ -807,32 +821,32 @@
NodeUpdateManager.updateFailedTitle=Aggiornamento Fallito!
NodeUpdateManager.updateURI=Dove cercare aggiornamenti?
NodeUpdateManager.updateURILong=Dove cercare aggiornamenti?
-NotEnoughNiceLevelsUserAlert.content=Il nodo ha rilevato di stare operando ad
un Nice level alto. In mancanza di un numero sufficiente di livelli di nice, il
nodo non potr? operare a pieno regime. Si prega di ridurre il livello di nice.
(cercare PRIORITY nel file run.sh e ridurne il valore). Attualmente il nodo ha
${available} livelli a disposizione mentre avrebbe bisogno di ${required}
livelli.
+NotEnoughNiceLevelsUserAlert.content=Il nodo ha rilevato di stare operando ad
un Nice level alto. In mancanza di un numero sufficiente di livelli di nice, il
nodo non potr? operare a pieno regime. Si prega di ridurre il livello di nice.
(cercare PRIORITY nel file run.sh e ridurne il valore). Attualmente il nodo ha
${available} livelli a disposizione mentre avrebbe bisogno di ${required}
livelli.
NotEnoughNiceLevelsUserAlert.short=Non ci sono abbastanza Nice level
disponibili. si prega di assegnare a Freenet un Nice level inferiore.
NotEnoughNiceLevelsUserAlert.title=Numero di Nice level insufficiente!
-OpennetConnectionsToadlet.fullTitle=${counts} Sconosciuti (Peer non fid?ti)
del nodo: ${name}
-OpennetConnectionsToadlet.peersListTitle=Peer Opennet (peer non fid?ti
aggiunti automaticamente dal nodo)
-OpennetConnectionsToadlet.successTime=L'ultima volta che si ? riusciti a
richiamare una CHK dal nodo.
+OpennetConnectionsToadlet.fullTitle=${counts} Sconosciuti (Peer non fid?ti)
del nodo: ${name}
+OpennetConnectionsToadlet.peersListTitle=Peer Opennet (peer non fid?ti
aggiunti automaticamente dal nodo)
+OpennetConnectionsToadlet.successTime=L'ultima volta che si ? riusciti a
richiamare una CHK dal nodo.
OpennetConnectionsToadlet.successTimeTitle=Ultimo successo
-OpennetUserAlert.warning=Il nodo sta funzionando in modo "promiscuo". Ci?
significa che il nodo si connetter? con nodi operati da sconosiuti, e quindi
chiunque potr? facilmente determinare che l'utente Tal dei Tali sta usando
Freenet. Molti attacchi vengono facilitati da questa modalit?, bloccare il nodo
(per esempio con un firewall nazionale) diventa molto pi? facile, ed intoltre
l'utente non ha controllo su chi si connette al suo nodo. Si raccomanda
vivamente di procurarsi qualche connessione ad Amici (nodi operati da persone
conosciute); il modo promiscuo va considerato una misura temporanea da
utilizzarsi temporaneamente, in attesa di connessioni ad amici. Connettendosi
esclusivamente a nodi gestiti da persone conosciute, pur non essendo impossibli
degli attacchi da parte loro, risulter? comunque meno probabile l'esposizione
ad agenzie governative (tipo servizi segreti o che so io) o altri "cattivi".
Nota che aggiungere un peer alla sezione Amici non cambia molto la situazione,
a meno che tale nodo non sia gestito da qualcuno di consciuto e di cui ci si
fida (per ragioni sia di routing [instradamento] che di sicurezza)!
-OpennetUserAlert.warningShort=Modalit? insicura abilitata.
-OpennetUserAlert.warningTitle=Avvertenza: Modo Promiscuo Attivato: Il nodo si
connetter? a degli sconosciuti
-PNGFilter.invalidHeader=Il file che si sta cercando di richiamare non e' un
PNG: esso non include un header PNG valido. Potrebbe trattarsi di un file in
altro formato e il browser potrebbe fare qualcosa di pericoloso a causa della
confusione creata dalla mancata corrispondenza; il file ? stato pertanto
bloccato.
+OpennetUserAlert.warning=Il nodo sta funzionando in modo "promiscuo". Ci?
significa che il nodo si connetter? con nodi operati da sconosiuti, e quindi
chiunque potr? facilmente determinare che l'utente Tal dei Tali sta usando
Freenet. Molti attacchi vengono facilitati da questa modalit?, bloccare il nodo
(per esempio con un firewall nazionale) diventa molto pi? facile, ed intoltre
l'utente non ha controllo su chi si connette al suo nodo. Si raccomanda
vivamente di procurarsi qualche connessione ad Amici (nodi operati da persone
conosciute); il modo promiscuo va considerato una misura temporanea da
utilizzarsi temporaneamente, in attesa di connessioni ad amici. Connettendosi
esclusivamente a nodi gestiti da persone conosciute, pur non essendo impossibli
degli attacchi da parte loro, risulter? comunque meno probabile l'esposizione
ad agenzie governative (tipo servizi segreti o che so io) o altri "cattivi".
Nota che aggiungere un peer alla sezione Amici non cambia molto la situazione,
a meno che tale nodo non sia gestito da qualcuno di consciuto e di cui ci si
fida (per ragioni sia di routing [instradamento] che di sicurezza)!
+OpennetUserAlert.warningShort=Modalit? insicura abilitata.
+OpennetUserAlert.warningTitle=Avvertenza: Modo Promiscuo Attivato: Il nodo si
connetter? a degli sconosciuti
+PNGFilter.invalidHeader=Il file che si sta cercando di richiamare non e' un
PNG: esso non include un header PNG valido. Potrebbe trattarsi di un file in
altro formato e il browser potrebbe fare qualcosa di pericoloso a causa della
confusione creata dalla mancata corrispondenza; il file ? stato pertanto
bloccato.
PNGFilter.invalidHeaderTitle=Header PNG non valido
PageMaker.modeAdvanced=Interfaccia avanzata
-PageMaker.modeAdvancedTooltip=Un'interfaccia pi? complessa, utile soltanto
agli utenti esperti
+PageMaker.modeAdvancedTooltip=Un'interfaccia pi? complessa, utile soltanto
agli utenti esperti
PageMaker.modeSimple=Interfaccia semplice
-PageMaker.modeSimpleTooltip=Un'interfaccia semplice che pu? essere usata da
ogni utente
-PeerManagerUserAlert.clockProblem=${count} peer non riescono a connettersi
perch? il loro orologio di sistema differisce di oltre 24 ore da quello locale.
Si prega di verificare che l'orologio di sistema del computer sia regolato
sull'ora esatta. Regolazioni inaccurate dell'orologio causano molti problemi
nel funzionamento dei meccanismi tra nodo e client.
+PageMaker.modeSimpleTooltip=Un'interfaccia semplice che pu? essere usata da
ogni utente
+PeerManagerUserAlert.clockProblem=${count} peer non riescono a connettersi
perch? il loro orologio di sistema differisce di oltre 24 ore da quello locale.
Si prega di verificare che l'orologio di sistema del computer sia regolato
sull'ora esatta. Regolazioni inaccurate dell'orologio causano molti problemi
nel funzionamento dei meccanismi tra nodo e client.
PeerManagerUserAlert.clockProblemTitle=Problema di sincronizzazione.
PeerManagerUserAlert.connError=${count} peer non riescono a connettersi per
motivi sconosciuti, forse per causa di 'bug' nel nodo o di una referenza di un
nodo che e' corrotta.
PeerManagerUserAlert.connErrorTitle=Alcuni peer non riescono a connettersi
-PeerManagerUserAlert.noConns=Non ? stato finora possibile connettersi ad alcun
nodo. Forse qualcuno dei peer si connettera entro breve. in caso contrario sar?
necessario aggiungere altri peer; c'e' bisogno di almeno tre peer connessi in
ogni momento, meglio 5-10.
+PeerManagerUserAlert.noConns=Non ? stato finora possibile connettersi ad alcun
nodo. Forse qualcuno dei peer si connettera entro breve. in caso contrario sar?
necessario aggiungere altri peer; c'e' bisogno di almeno tre peer connessi in
ogni momento, meglio 5-10.
PeerManagerUserAlert.noConnsTitle=Nessuna connessione aperta
-PeerManagerUserAlert.noPeersDarknet=Questo nodo non ha peers ai quale
connettersi e non pu? quindi funzionare normalmente. In teoria ci si dovrebbe
connettere esclusivamente a persone che si conosce (per i paranoici: persone di
cui ci si fida, per i non paranoici: persone con le quali si ha parlato). Per
un corretto funzionamento c'e' bisogno di almeno tre peer connessi in ogni
momento, idealmente 5-10. Ci si pu? connettere a irc.freenode.net canale
#freenet-refs e chiedere chi vuole connettersi, ma ? bene tenere presente che
si ? vulnerabili ad attacchi da parte dei peer (Speciamente in queste prime
versioni alfa di Freenet 0.7...) VERIFICARE CHE L'ATRA PARTE AGGIUNGA LA
REFERENZA ALLA SUA LISTA: LE CONNESSIONI "A SENSO UNICO" NON FUNZIONANO!
-PeerManagerUserAlert.noPeersTestnet=Questo nodo non ha peer ai quale
connettersi e non pu? quindi funzionare normalmente. In teoria ci si dovrebbe
connettere esclusivamente a persone che si conosce (per i paranoici: persone di
cui ci si fida, per i non paranoici: persone con le quali si ha parlato). Per
un corretto funzionamento c'e' bisogno di almeno tre peer connessi in ogni
momento, idealmente 5-10. Trattandosi di un nodo testnet, ci si pu? connettere
a irc.freenode.net canale #freenet-refs e chiedere chi vuole connettersi.
+PeerManagerUserAlert.noPeersDarknet=Questo nodo non ha peers ai quale
connettersi e non pu? quindi funzionare normalmente. In teoria ci si dovrebbe
connettere esclusivamente a persone che si conosce (per i paranoici: persone di
cui ci si fida, per i non paranoici: persone con le quali si ha parlato). Per
un corretto funzionamento c'e' bisogno di almeno tre peer connessi in ogni
momento, idealmente 5-10. Ci si pu? connettere a irc.freenode.net canale
#freenet-refs e chiedere chi vuole connettersi, ma ? bene tenere presente che
si ? vulnerabili ad attacchi da parte dei peer (Speciamente in queste prime
versioni alfa di Freenet 0.7...) VERIFICARE CHE L'ATRA PARTE AGGIUNGA LA
REFERENZA ALLA SUA LISTA: LE CONNESSIONI "A SENSO UNICO" NON FUNZIONANO!
+PeerManagerUserAlert.noPeersTestnet=Questo nodo non ha peer ai quale
connettersi e non pu? quindi funzionare normalmente. In teoria ci si dovrebbe
connettere esclusivamente a persone che si conosce (per i paranoici: persone di
cui ci si fida, per i non paranoici: persone con le quali si ha parlato). Per
un corretto funzionamento c'e' bisogno di almeno tre peer connessi in ogni
momento, idealmente 5-10. Trattandosi di un nodo testnet, ci si pu? connettere
a irc.freenode.net canale #freenet-refs e chiedere chi vuole connettersi.
PeerManagerUserAlert.noPeersTitle=Nessun peer trovato
-PeerManagerUserAlert.oneConn=Questo nodo ha una sola connessione. Il
rendimento ne risentir? in modo notevole, e l'utente non disporr? di anonimato
e "negabilit? plausibile" se quell' unico nodo al quale si ? conessi dovesse
essere operato da un avversario. Il nodo risulter? attaccato al network come
una "foglia all' albero" e non contribuir? alla salute generale del network
stesso. Per un corretto funzionamento del nodo ? necessario che almeno tre peer
e (idealmente 5-10) siano connessi in qualsiasi momento.
+PeerManagerUserAlert.oneConn=Questo nodo ha una sola connessione. Il
rendimento ne risentir? in modo notevole, e l'utente non disporr? di anonimato
e "negabilit? plausibile" se quell' unico nodo al quale si ? conessi dovesse
essere operato da un avversario. Il nodo risulter? attaccato al network come
una "foglia all' albero" e non contribuir? alla salute generale del network
stesso. Per un corretto funzionamento del nodo ? necessario che almeno tre peer
e (idealmente 5-10) siano connessi in qualsiasi momento.
PeerManagerUserAlert.onlyFewConnsTitle=Soltanto ${count} connessione/i aperta/e
PeerManagerUserAlert.tooHighBwlimitDelayTime=Questo nodo deve aspettare troppo
a lungo la banda disponibile (${delay}ms > ${max}ms). Aumentare l'ampiezza di
banda in uscita e/o rimuovere alcuni peer migliorerebbe la situazione.
PeerManagerUserAlert.tooHighBwlimitDelayTimeTitle=bwlimitDelayTime troppo alto
@@ -840,51 +854,51 @@
PeerManagerUserAlert.tooHighPingTimeTitle=nodeAveragePingTime troppo alto
PeerManagerUserAlert.tooManyConns=Questo nodo ha troppe connessioni (${count}
> ${max}). Aggiungere troppi peer non produce un topologia mondo-piccolo,
danneggia l'instradamento, e rischia di produrre punti di fallimento singoli.
PeerManagerUserAlert.tooManyConnsTitle=Troppe connessioni aperte
-PeerManagerUserAlert.tooManyDisconnected=Questo nodo ha troppi peer
disconnessi (${count} > ${max}). Questo pu? avere un leggero impatto sul
rendimento perch? anche i peer disconnessi usano una piccola quantit? di banda
e CPU. Potrebbe essere necessario "ripulire" la lista dei peer. Nota che almeno
in teoria, bisognerebbe connettersi esclusivamente ad utenti che si conosce.
Anche in caso contrario, aggiungere troppi nodi automaticamente produce un
risultato negativo in quanto la topologia risultante non ? ottimale.
+PeerManagerUserAlert.tooManyDisconnected=Questo nodo ha troppi peer
disconnessi (${count} > ${max}). Questo pu? avere un leggero impatto sul
rendimento perch? anche i peer disconnessi usano una piccola quantit? di banda
e CPU. Potrebbe essere necessario "ripulire" la lista dei peer. Nota che almeno
in teoria, bisognerebbe connettersi esclusivamente ad utenti che si conosce.
Anche in caso contrario, aggiungere troppi nodi automaticamente produce un
risultato negativo in quanto la topologia risultante non ? ottimale.
PeerManagerUserAlert.tooManyDisconnectedTitle=Troppi peer disconnessi
-PeerManagerUserAlert.tooManyNeverConnected=Ben ${count} tra i peer di questo
nodo non sono mai stati connessi, nemmeno una volta sola: . Non bisognerebbe
aggiungere peer a meno che la propria referenza venga aggiunta a sua volta. In
caso contrario sar? impossibile connettersi.
+PeerManagerUserAlert.tooManyNeverConnected=Ben ${count} tra i peer di questo
nodo non sono mai stati connessi, nemmeno una volta sola: . Non bisognerebbe
aggiungere peer a meno che la propria referenza venga aggiunta a sua volta. In
caso contrario sar? impossibile connettersi.
PeerManagerUserAlert.tooManyNeverConnectedTitle=Molti peers non sono ancora
stati connessi nemmeno una volta
-PeerManagerUserAlert.tooManyNeverConnectedWithLink=${count} peer di questo
nodo non sono mai stati connessi, nemmeno una volta sola. Non bisognerebbe
aggiungere nuovi peers a meno che essi non aggiungano a loro volta ${link}your
reference${/link}. Se ci? non avviene non sar? possibile stabilire una
connessione.
-PeerManagerUserAlert.tooManyPeers=Il nodo ha troppi peer (${count} > ${max}).
Non si raccomanda di far girare "ubernodes" con l'aggiunta automatica di peer;
questo non produce una topologia mondo-piccolo. Ci? influisce negativamente sul
rendimento perch? anche i peer disconnessi usano un po' di banda e di CPU.
Potrebbe essere necessario "ripulire" la lista dei peer.
+PeerManagerUserAlert.tooManyNeverConnectedWithLink=${count} peer di questo
nodo non sono mai stati connessi, nemmeno una volta sola. Non bisognerebbe
aggiungere nuovi peers a meno che essi non aggiungano a loro volta ${link}your
reference${/link}. Se ci? non avviene non sar? possibile stabilire una
connessione.
+PeerManagerUserAlert.tooManyPeers=Il nodo ha troppi peer (${count} > ${max}).
Non si raccomanda di far girare "ubernodes" con l'aggiunta automatica di peer;
questo non produce una topologia mondo-piccolo. Ci? influisce negativamente sul
rendimento perch? anche i peer disconnessi usano un po' di banda e di CPU.
Potrebbe essere necessario "ripulire" la lista dei peer.
PeerManagerUserAlert.tooManyPeersTitle=Troppi peer
-PeerManagerUserAlert.tooOldNeverConnectedPeers=Uno o pi? peer non si sono mai
connessi nelle due settimane trascorse da quando sono stati aggiunti. E' da
prendere in considerazione l'idea di rimuoverli in quanto essi stanno
marginalmente compromettendo il rendimento (pacchetti sprecati cencando di
comunicare con nodi che non ci sono).
+PeerManagerUserAlert.tooOldNeverConnectedPeers=Uno o pi? peer non si sono mai
connessi nelle due settimane trascorse da quando sono stati aggiunti. E' da
prendere in considerazione l'idea di rimuoverli in quanto essi stanno
marginalmente compromettendo il rendimento (pacchetti sprecati cencando di
comunicare con nodi che non ci sono).
PeerManagerUserAlert.tooOldNeverConnectedPeersTitle=Peer mai connesso/i
obsoleto/i
-PeerManagerUserAlert.twoConns=Il nodo ha solo due connessioni. Rendimento e
sicurezza risulteranno di qualit? inferiore, e non sara possibile provvedere
instradamento (routing) per altri nodi. Il nodo ? collegato al network come un
"anello di catena" e non contribuisce (molto) alla salute generale del network
stesso. Per un corretto funzionamento del nodo, ? necessario che almeno tre
peers (e idealmente 5-10) siano connessi in ogni momento.
+PeerManagerUserAlert.twoConns=Il nodo ha solo due connessioni. Rendimento e
sicurezza risulteranno di qualit? inferiore, e non sara possibile provvedere
instradamento (routing) per altri nodi. Il nodo ? collegato al network come un
"anello di catena" e non contribuisce (molto) alla salute generale del network
stesso. Per un corretto funzionamento del nodo, ? necessario che almeno tre
peers (e idealmente 5-10) siano connessi in ogni momento.
PeersSayKeyBlownAlert.connectedSayBlownLabel=I seguenti nodi hanno rilevato un
problema con la chiave (si cerca attualmente di ottenere il certificato di
revoca da loro):
-PeersSayKeyBlownAlert.disconnectedSayBlownLabel=I seguenti nodi si sono
disconnessi dopo aver comunicato che la chiave ? saltata, quindi non ? stato
possibile richiamare il certificato di revoca:
-PeersSayKeyBlownAlert.failedFetch=Non ? stato possibile scaricare il
certificato di revoca. Le possibili cause di tale evento includono la
possibilit? di un attacco sul nodo locale volto a fargli scaricare ed
installare un aggiornamento nonostante la chiave sia saltata, o la possibilit?
che dei nodi stiano "mentendo" circa la chiave di revoca. Si prega di
contattare gli sviluppatori di Freenet per cercare di mettere ordine in questo
casino.
-PeersSayKeyBlownAlert.failedTransferSayBlownLabel=Questi nodi hanno comunicato
che la chiave di revoca ? saltata ma poi non hanno completato il trasferimento
del certificato di revoca:
-PeersSayKeyBlownAlert.fetching=Il nodo sta scaricando il certificato di revoca
contentnte spiegazioni pi? dettagliate.
-PeersSayKeyBlownAlert.intro=Uno o pi? peers ci comunicano che la chiave di
revoca per l'aggiornamento automatico ? saltata. Questo significa che qualcuno
potrebbe essere venuto a conoscenza della chiave privata del sistema di
autoaggiornamento, cosa che potrebbe far eseguire al nodo il codice che
l'attaccante volesse fargli eseguire (se l'aggiornamento venisse eseguito): per
prevenire tale eventualit?, il sistema di autoaggiornamento ? stato
disabilitato. E' anche possibile che dei peers stiano deliberatamente mentendo
a proposito della chiave di revoca.
-PeersSayKeyBlownAlert.short=Alcuni peer avvertono che la chiave di auto
aggiornamento ? saltata!
-PeersSayKeyBlownAlert.titleWithCount=La chiave di Auto-aggiornamento ?
saltata! L' evento ? stato confermato da ${count} peer!
+PeersSayKeyBlownAlert.disconnectedSayBlownLabel=I seguenti nodi si sono
disconnessi dopo aver comunicato che la chiave ? saltata, quindi non ? stato
possibile richiamare il certificato di revoca:
+PeersSayKeyBlownAlert.failedFetch=Non ? stato possibile scaricare il
certificato di revoca. Le possibili cause di tale evento includono la
possibilit? di un attacco sul nodo locale volto a fargli scaricare ed
installare un aggiornamento nonostante la chiave sia saltata, o la possibilit?
che dei nodi stiano "mentendo" circa la chiave di revoca. Si prega di
contattare gli sviluppatori di Freenet per cercare di mettere ordine in questo
casino.
+PeersSayKeyBlownAlert.failedTransferSayBlownLabel=Questi nodi hanno comunicato
che la chiave di revoca ? saltata ma poi non hanno completato il trasferimento
del certificato di revoca:
+PeersSayKeyBlownAlert.fetching=Il nodo sta scaricando il certificato di revoca
contentnte spiegazioni pi? dettagliate.
+PeersSayKeyBlownAlert.intro=Uno o pi? peers ci comunicano che la chiave di
revoca per l'aggiornamento automatico ? saltata. Questo significa che qualcuno
potrebbe essere venuto a conoscenza della chiave privata del sistema di
autoaggiornamento, cosa che potrebbe far eseguire al nodo il codice che
l'attaccante volesse fargli eseguire (se l'aggiornamento venisse eseguito): per
prevenire tale eventualit?, il sistema di autoaggiornamento ? stato
disabilitato. E' anche possibile che dei peers stiano deliberatamente mentendo
a proposito della chiave di revoca.
+PeersSayKeyBlownAlert.short=Alcuni peer avvertono che la chiave di auto
aggiornamento ? saltata!
+PeersSayKeyBlownAlert.titleWithCount=La chiave di Auto-aggiornamento ?
saltata! L' evento ? stato confermato da ${count} peer!
PluginConfig.configFile=File di configurazione dei plugin
PluginConfig.configFileLong=Percorso/Nome del file che contiene la
configurazione del plugin
PluginConfig.installDir=Directory di installazione dei plugin
PluginConfig.installDirLong=Directory dove installare i plugin
-PluginManager.cannotSetOnceLoaded=Una volta caricata, non ? pi? possibile
impostare la lista dei plugin
+PluginManager.cannotSetOnceLoaded=Una volta caricata, non ? pi? possibile
impostare la lista dei plugin
PluginManager.loadedOnStartup=Plugin da caricare all'avvio
PluginManager.loadedOnStartupLong=Classpath, nome e locazione dei plugin da
caricare all'avvio
PluginManager.loadedPlugins=Plugin da caricare all'avvio
PluginManager.loadedPluginsLong=Lista dei plugin da caricare all'avvio del nodo
-PluginManager.pluginLoadingFailed=Non ? stato possibile caricare il plugin
specificato ${name}.
+PluginManager.pluginLoadingFailed=Non ? stato possibile caricare il plugin
specificato ${name}.
PluginManager.pluginLoadingFailedShort=Impossibile caricare il plugin ${name}!
-PluginManager.pluginLoadingFailedTitle=Non ? stato possibile caricare il plugin
-PluginManager.pluginLoadingFailedWithMessage=Non ? stato possibile caricare il
plugin specificato ${name}: ${message}
-PluginManager.pluginReqNewerJVM=Per usare il plugin ${name} ? necessario
installare una JVM pi? recente di quella attualmente in uso. Installare Sun
Java 1.5 o superiore, o rimuovere il plugin.
-PluginManager.pluginReqNewerJVMTitle=Il plugin ${name} richiede l'uso di una
JVM pi? aggiornata
+PluginManager.pluginLoadingFailedTitle=Non ? stato possibile caricare il plugin
+PluginManager.pluginLoadingFailedWithMessage=Non ? stato possibile caricare il
plugin specificato ${name}: ${message}
+PluginManager.pluginReqNewerJVM=Per usare il plugin ${name} ? necessario
installare una JVM pi? recente di quella attualmente in uso. Installare Sun
Java 1.5 o superiore, o rimuovere il plugin.
+PluginManager.pluginReqNewerJVMTitle=Il plugin ${name} richiede l'uso di una
JVM pi? aggiornata
PluginToadlet.addPluginTitle=Aggiungi plugin
PluginToadlet.failedToLoadPlugin=Caricamento plugin fallito.
-PluginToadlet.failedToLoadPluginCheckClass=Non ? stato possibile caricare il
plugin richiesto. Verificare il nome del plugin, class, e URL se se ne ? usata
una.
+PluginToadlet.failedToLoadPluginCheckClass=Non ? stato possibile caricare il
plugin richiesto. Verificare il nome del plugin, class, e URL se se ne ? usata
una.
PluginToadlet.failedToLoadPluginTitle=Caricamento plugin fallito
PluginToadlet.internalNameTitle=Nome Interno
PluginToadlet.loadPluginCommand=Carica Plugin
-PluginToadlet.noWebInterface=Questo plugin non ha interfaccia web e pertanto
non c'? nulla da mostrare
+PluginToadlet.noWebInterface=Questo plugin non ha interfaccia web e pertanto
non c'? nulla da mostrare
PluginToadlet.noWebInterfaceTitle=Plugin non provvisto di interfaccia web
PluginToadlet.pluginList=Lista plugin
PluginToadlet.pluginListTitle=Lista Plugin
PluginToadlet.pluginNameTitle=Nome Plugin
-PluginToadlet.pluginNotFound=Non ? stato possibile trovare il plugin richiesto
+PluginToadlet.pluginNotFound=Non ? stato possibile trovare il plugin richiesto
PluginToadlet.pluginNotFoundTitle=Plugin non trovato
PluginToadlet.returnToPluginsWithLinks=${link}return${/link} alla lista di
plugins.
PluginToadlet.unsupportedMethod=Metodo non supportato
@@ -895,37 +909,37 @@
PproxyToadlet.cancel=Cancella
PproxyToadlet.changeReloadOnStartup=Cambia
PproxyToadlet.classNameTitle=Class Name
-PproxyToadlet.downloadNotAllowedFromRemoteServer=Donload dei plugins ? ammesso
solo dal server di Freenet.
+PproxyToadlet.downloadNotAllowedFromRemoteServer=Donload dei plugins ? ammesso
solo dal server di Freenet.
PproxyToadlet.fileonly=accetta solo file locali
PproxyToadlet.internalIDTitle=ID interna
PproxyToadlet.loadFreenetPlugin=Carica un Plugin non ufficiale da freenet
-PproxyToadlet.loadFreenetPluginText=Inserire la URI del plugin che si vuole
caricare. I plugin disponibili si Freenet non godono di alcun supporto
ufficiale e non vengono controllati dagli sviluppatori di Freenet. Non ? quindi
possibile quindi garantire la privacy e la sicurezza di chi decidesse di
utilizzarli.
+PproxyToadlet.loadFreenetPluginText=Inserire la URI del plugin che si vuole
caricare. I plugin disponibili si Freenet non godono di alcun supporto
ufficiale e non vengono controllati dagli sviluppatori di Freenet. Non ? quindi
possibile quindi garantire la privacy e la sicurezza di chi decidesse di
utilizzarli.
PproxyToadlet.loadFreenetURLLabel=Chiave del plugin
PproxyToadlet.loadOfficialPlugin=Aggiungi un Plugin Ufficiale
PproxyToadlet.loadOfficialPluginLabel=Carica Plugin Ufficiale
-PproxyToadlet.loadOfficialPluginText=Plugin ufficialy disponibili per download
dai server del Progetto Freenet. I programmatori di Freenet hanno esaminato i
plugin ufficiali e trovato che essi appaiono esenti da difetti che possano
compromettere la privacy; non ? tuttavia possibile garantire con il 100% di
sicurezza che ci? corrisponda a realt?.
-PproxyToadlet.loadOfficialPluginWarning=AVVERTENZA: Caricando un plugin
ufficiale lo si scarica da internet (non da Freenet). Se ci? pu? effettivamente
rappresentare un un problema, si consiglia di non caricare plugins.
+PproxyToadlet.loadOfficialPluginText=Plugin ufficialy disponibili per download
dai server del Progetto Freenet. I programmatori di Freenet hanno esaminato i
plugin ufficiali e trovato che essi appaiono esenti da difetti che possano
compromettere la privacy; non ? tuttavia possibile garantire con il 100% di
sicurezza che ci? corrisponda a realt?.
+PproxyToadlet.loadOfficialPluginWarning=AVVERTENZA: Caricando un plugin
ufficiale lo si scarica da internet, (NON da Freenet). Se ci? dovesse
rappresentare un problema, si consiglia di non caricare plugin.
PproxyToadlet.loadOtherPlugin=Aggiungi Plugin Non Ufficiale
-PproxyToadlet.loadOtherPluginText=Inserire qui la URL del plugin che si vuole
caricare. ATTENZIONE! I Plugin non ufficiali non ricevono alcuna assistenza e
non vengono controllati dai programmatory di Freenet, pertanto chi volesse
utilizzarli lo far? A PROPRIO RISCHIO.
+PproxyToadlet.loadOtherPluginText=Inserire qui la URL del plugin che si vuole
caricare. ATTENZIONE! I Plugin non ufficiali non ricevono alcuna assistenza e
non vengono controllati dai programmatory di Freenet, pertanto chi volesse
utilizzarli lo far? A PROPRIO RISCHIO.
PproxyToadlet.loadOtherURLLabel=URL del plugin
PproxyToadlet.loadPluginLabel=Carica Plugin:
PproxyToadlet.noPlugins=Nessun plugin caricato
PproxyToadlet.noVersion=N/A
-PproxyToadlet.pluginDirectoryNotCreated=Non ? stato possibile creare una
directory per i plugin.
-PproxyToadlet.pluginNotDownloaded=Non ? stato possibile scaricare il plugin
-PproxyToadlet.pluginNotFoundReload=Non ? stato possibile localizzare il plugin
specificato per poterlo ricaricare.
+PproxyToadlet.pluginDirectoryNotCreated=Non ? stato possibile creare una
directory per i plugin.
+PproxyToadlet.pluginNotDownloaded=Non ? stato possibile scaricare il plugin
+PproxyToadlet.pluginNotFoundReload=Non ? stato possibile localizzare il plugin
specificato per poterlo ricaricare.
PproxyToadlet.pluginNotFoundReloadTitle=Plugin non trovato (ricaricamento in
corso)
PproxyToadlet.pluginStopping=Disconnessione plugin in corso
PproxyToadlet.pluginUnloaded=Plugin terminato
-PproxyToadlet.pluginUnloadedWithName=Il plugin ${name} ? stato terminato.
+PproxyToadlet.pluginUnloadedWithName=Il plugin ${name} ? stato terminato.
PproxyToadlet.plugins=Plugin
PproxyToadlet.pluginsWithNodeName=Plugin di ${name}
PproxyToadlet.refreshOnStartup=Ricarica da server all'avvio
PproxyToadlet.reload=Ricarica
-PproxyToadlet.reloadExplanation=Ricaricare un plugin ? come scaricarlo e
ricaricarlo.
+PproxyToadlet.reloadExplanation=Ricaricare un plugin ? come scaricarlo e
ricaricarlo.
PproxyToadlet.reloadOnStartupShort=Ricarica all'avvio
PproxyToadlet.reloadPluginTitle=Ricarica Plugin
-PproxyToadlet.reloadPurgeWarning=Rimuovi il plugin dalla cache prima di
ricaricarlo. Se il plugin era stato scaricato da internet, sar? scaricato
nuovamente.
+PproxyToadlet.reloadPurgeWarning=Rimuovi il plugin dalla cache prima di
ricaricarlo. Se il plugin era stato scaricato da internet, sar? scaricato
nuovamente.
PproxyToadlet.reloadWarning=Attenzione: alcuni plugin non reagiscono in modo
ottimale a un reload.
PproxyToadlet.returnToPluginPage=Torna alla pagina dei plugin
PproxyToadlet.startedAtTitle=Avviato:
@@ -933,7 +947,7 @@
PproxyToadlet.startingPluginStatus=Stato attuale
PproxyToadlet.startingPluginTime=tempo trascorso
PproxyToadlet.startingPluginsTitle=Avvio plugins in corso
-PproxyToadlet.unauthorized=L'accesso a questa pagina non ? autorizzato.
+PproxyToadlet.unauthorized=L'accesso a questa pagina non ? autorizzato.
PproxyToadlet.unauthorizedTitle=Accesso Non Autorizzato
PproxyToadlet.unload=Termina
PproxyToadlet.unloadPluginTitle=Termina plugin?
@@ -957,39 +971,39 @@
QueueToadlet.download=Scarica
QueueToadlet.downloadFiles=Download multipli
QueueToadlet.downloadFilesInstructions=E' possibile incollare una serie di
chiavi da scaricare nello spazio sottostante (una per rigo)
-QueueToadlet.downloadSucceeded=Il file ${origlink}${filename}${/origlink} ?
stato scaricato. ${link}Click qui${/link} per aprile il file (${size}).
+QueueToadlet.downloadSucceeded=Il file ${origlink}${filename}${/origlink} ?
stato scaricato. ${link}Click qui${/link} per aprile il file (${size}).
QueueToadlet.downloadSucceededTitle=Download completato: ${filename}
QueueToadlet.emergency=urgenza estrema
-QueueToadlet.enqueuedFailure=Non ? stato possibile agguingere alla coda le
${number} chiavi qui elencate:
+QueueToadlet.enqueuedFailure=Non ? stato possibile agguingere alla coda le
${number} chiavi qui elencate:
QueueToadlet.enqueuedSuccessfully=Le ${number} chiavi elencate di seguito sono
state aggiunte alla coda con successo:
QueueToadlet.errorAccessDenied=Errore: Accesso Negato
QueueToadlet.errorAccessDeniedFile=L'attuale configurazione del nodo non
consente l'upload del file "${file}".
-QueueToadlet.errorDToDisk=Non ? stato possibile scaricare su disco
+QueueToadlet.errorDToDisk=Non ? stato possibile scaricare su disco
QueueToadlet.errorDToDiskConfig=L'attuale configurazione del nodo non consente
di scaricare file nella directory dei download
QueueToadlet.errorDownloadNotCompleted=Download Non Completato
-QueueToadlet.errorDownloadNotFound=Non ? stato possibile localizzare il
download richiesto
-QueueToadlet.errorDownloadNotFoundExplanation=Non ? stato possibile trovare il
download specificato. Potrebbe essere stato eliminato in precedenza.
+QueueToadlet.errorDownloadNotFound=Non ? stato possibile localizzare il
download richiesto
+QueueToadlet.errorDownloadNotFoundExplanation=Non ? stato possibile trovare il
download specificato. Potrebbe essere stato eliminato in precedenza.
QueueToadlet.errorInvalidURI=URI non valida
-QueueToadlet.errorInvalidURIToD=La URI non ? valida e pertanto non pu? essere
scaricata.
-QueueToadlet.errorInvalidURIToU=Non ? stata specificata alcuna URI valida dove
inserire il file
+QueueToadlet.errorInvalidURIToD=La URI non ? valida e pertanto non pu? essere
scaricata.
+QueueToadlet.errorInvalidURIToU=Non ? stata specificata alcuna URI valida dove
inserire il file
QueueToadlet.errorNoFileOrCannotRead=File inesistente o illegibile
QueueToadlet.errorNoFileSelected=Nessun file selezionato
QueueToadlet.errorNoFileSelectedU=Non e' stato selezionato alcun file per
l'upload
-QueueToadlet.errorNoKey=Non ? stata specificata alcuna chiave per il download
-QueueToadlet.errorNoKeyToD=Non ? stata specificata una chiave per il download
+QueueToadlet.errorNoKey=Non ? stata specificata alcuna chiave per il download
+QueueToadlet.errorNoKeyToD=Non ? stata specificata una chiave per il download
QueueToadlet.failedD=Download falliti
QueueToadlet.failedDU=Upload di directory falliti
-QueueToadlet.failedToRemove=Non ? stato possibile rimuovere ${id}: ${message}
-QueueToadlet.failedToRemoveId=Non ? stato possibile eliminare: ${id}
-QueueToadlet.failedToRemoveRequest=Non ? stato possibile eliminare la richiesta
-QueueToadlet.failedToRestart=Non ? stato possibile riavviare: ${id}
+QueueToadlet.failedToRemove=Non ? stato possibile rimuovere ${id}: ${message}
+QueueToadlet.failedToRemoveId=Non ? stato possibile eliminare: ${id}
+QueueToadlet.failedToRemoveRequest=Non ? stato possibile eliminare la richiesta
+QueueToadlet.failedToRestart=Non ? stato possibile riavviare: ${id}
QueueToadlet.failedToRestartRequest=Non e' stato possibile riavviare la
richiesta
QueueToadlet.failedU=Upload falliti
QueueToadlet.fcpIsMissing=Server FCP non trovato
QueueToadlet.fileName=File
QueueToadlet.files=File
QueueToadlet.follow=Segui Redirect
-QueueToadlet.globalQueueIsEmpty=La coda globale ? vuota
+QueueToadlet.globalQueueIsEmpty=La coda globale ? vuota
QueueToadlet.high=alta
QueueToadlet.identifier=Identificazione
QueueToadlet.insertAs=Inserisci come:
@@ -1000,22 +1014,22 @@
QueueToadlet.insertFileLabel=File
QueueToadlet.insertFileResetForm=Annulla
QueueToadlet.key=Chiave
-QueueToadlet.legend=Significato dei colori: Priorit?...
+QueueToadlet.legend=Significato dei colori: Priorit?...
QueueToadlet.low=bassa
QueueToadlet.medium=media
QueueToadlet.mimeType=MIME type
QueueToadlet.noTaskOnGlobalQueue=Nessuna operazione in attesa nella coda
globale in questo momento.
QueueToadlet.none=nessuna
QueueToadlet.notLoadedYet=Il nodo sta ancora caricando la lista delle
richieste persistenti. Si prega di pazientare.
-QueueToadlet.notLoadedYetTitle=La Coda non ? stata ancora caricata.
+QueueToadlet.notLoadedYetTitle=La Coda non ? stata ancora caricata.
QueueToadlet.panicButton=Bottone Emergenza
QueueToadlet.panicButtonConfirmation=Elimina tutte le richieste senza chiedere
conferma
QueueToadlet.persistence=Persistenza
QueueToadlet.persistenceForever=illimitata
QueueToadlet.persistenceNone=nessuna
QueueToadlet.persistenceReboot=reboot
-QueueToadlet.pleaseEnableFCP=Per accedere a questa pagina ? necessario
abilitare il server FCP
-QueueToadlet.priority=Priorit?
+QueueToadlet.pleaseEnableFCP=Per accedere a questa pagina ? necessario
abilitare il server FCP
+QueueToadlet.priority=Priorit?
QueueToadlet.priority0=emergenza
QueueToadlet.priority1=molto alta
QueueToadlet.priority2=alta
@@ -1025,7 +1039,7 @@
QueueToadlet.priority6=campa cavallo
QueueToadlet.progress=Completato
QueueToadlet.progressbarAccurate=Questo valore e' accurato
-QueueToadlet.progressbarNotAccurate=I valori possono essere imprecisi perch?
il processo di download del file non e' stato finalizzato
+QueueToadlet.progressbarNotAccurate=I valori possono essere imprecisi perch?
il processo di download del file non e' stato finalizzato
QueueToadlet.reason=Motivo
QueueToadlet.remove=Elimina
QueueToadlet.requestNavigation=Esplora Richieste
@@ -1037,25 +1051,25 @@
QueueToadlet.title=Coda globale del nodo: ${nodeName}
QueueToadlet.totalSize=Dimensioni Totali
QueueToadlet.unknown=Non Disp.
-QueueToadlet.uploadProgressbarNotAccurate=Il valore di questo indicatore di
progresso pu? essere falsato quando l'upload codifica ulteriori blocchi.
-QueueToadlet.uploadSucceeded=Il file ${filename} (size ${size}) ? stato
correttamente caricato su Freenet. ${link}Click qui${/link} per aprire il file.
+QueueToadlet.uploadProgressbarNotAccurate=Il valore di questo indicatore di
progresso pu? essere falsato quando l'upload codifica ulteriori blocchi.
+QueueToadlet.uploadSucceeded=Il file ${filename} (size ${size}) ? stato
correttamente caricato su Freenet. ${link}Click qui${/link} per aprire il file.
QueueToadlet.uploadSucceededTitle=Inserzione completata: ${filename}
QueueToadlet.veryhigh=molto alta
QueueToadlet.verylow=bassissima
QueueToadlet.warningUnsafeContent=Contenuto Potenzialmente Pericoloso
-QueueToadlet.warningUnsafeContentExplanation=Il file richiesto ? di un tipo
non ancora supportato dal filtro contenuti di Freenet e pertanto non sar?
possibile filtrarlo. Ci? significa che aprire tale file potrebbe compromettere
l'anonimato dell'utente
+QueueToadlet.warningUnsafeContentExplanation=Il file richiesto ? di un tipo
non ancora supportato dal filtro contenuti di Freenet e pertanto non sar?
possibile filtrarlo. Ci? significa che aprire tale file potrebbe compromettere
l'anonimato dell'utente
QueueToadlet.willneverfinish=campa cavallo
QueueToadlet.wipD=Download in corso (${size})
QueueToadlet.wipDU=Upload directory in corso (${size})
QueueToadlet.wipU=Upload in corso: (${size})
-RequestStarterGroup.scheduler=Policy di priorit? dello schedulatore
-RequestStarterGroup.schedulerCHKInserts=Policy di priorit? dello scheduler
(inserzioni CHK)
-RequestStarterGroup.schedulerCHKRequests=Policy di priorit? dello scheduler
(richieste CHK)
-RequestStarterGroup.schedulerLong=Imposta lo schema delle policy di priorit?
usate dallo schedulatore.
-RequestStarterGroup.schedulerSSKInserts=Policy di priorit? dello scheduler
(inserzioni SSK)
-RequestStarterGroup.schedulerSSKRequests=Policy di priorit? dello scheduler
(richieste SSK)
-RevocationKeyFoundUserAlert.text=E' stata rilevata la presenza sul network
della chiave di revoca dell' aggiornamento automatico. Questo significa che il
nostro sistema di aggiornamento automatico ? stato probabilmente COMPROMESSO.
L'aggiornamento automatico ? stato conseguentemente disabilitato onde prevenire
l'intallazione automatica di "robaccia". Si raccomanda di controllare la
disponibilit? di nuovi aggiornamenti al sito del progetto. Controllare che il
sito non sia stato falsificato!. Il messaggio di revoca ? il seguente:
${message}.
-RevocationKeyFoundUserAlert.title=La chiave privata del progetto ? stata
compromessa!
+RequestStarterGroup.scheduler=Policy di priorit? dello schedulatore
+RequestStarterGroup.schedulerCHKInserts=Policy di priorit? dello scheduler
(inserzioni CHK)
+RequestStarterGroup.schedulerCHKRequests=Policy di priorit? dello scheduler
(richieste CHK)
+RequestStarterGroup.schedulerLong=Imposta lo schema delle policy di priorit?
usate dallo schedulatore.
+RequestStarterGroup.schedulerSSKInserts=Policy di priorit? dello scheduler
(inserzioni SSK)
+RequestStarterGroup.schedulerSSKRequests=Policy di priorit? dello scheduler
(richieste SSK)
+RevocationKeyFoundUserAlert.text=E' stata rilevata la presenza sul network
della chiave di revoca dell' aggiornamento automatico. Questo significa che il
nostro sistema di aggiornamento automatico ? stato probabilmente COMPROMESSO.
L'aggiornamento automatico ? stato conseguentemente disabilitato onde prevenire
l'intallazione automatica di "robaccia". Si raccomanda di controllare la
disponibilit? di nuovi aggiornamenti al sito del progetto. Controllare che il
sito non sia stato falsificato!. Il messaggio di revoca ? il seguente:
${message}.
+RevocationKeyFoundUserAlert.title=La chiave privata del progetto ? stata
compromessa!
SSL.enable=Attiva supporto SSL?
SSL.enableLong=Attiva supporto SSL?
SSL.keyPass=Password di private key access
@@ -1066,41 +1080,43 @@
SSL.keyStorePassLong=Password per l'accesso di key store file
SSL.version=Versione di SSL
SSL.versionLong=Versione di SSL, SSLv3 o TLSv1 (default SSLv3)
-ShortOption.parseError=Il valore specificato non pu? essere interpretato come
16-bit integer : ${val}
-SimpleToadletServer.advancedMode=Abilita modalit? avanzata
+ShortOption.parseError=Il valore specificato non pu? essere interpretato come
16-bit integer : ${val}
+SimpleToadletServer.advancedMode=Abilita modalit? avanzata
SimpleToadletServer.advancedModeLong=Mostra informazioni cho possono
interessare solo utenti avanzati o sviluppatori. Nella maggioranza dei casi
dovrebbe essere impostata su 'falso'
-SimpleToadletServer.allowedFullAccess=Host ai quali ? consentito pieno accesso
a FProxy (leggere l'avvertenza)
-SimpleToadletServer.allowedFullAccessLong=Host ai quali ? consentito accesso
pieno al nodo (cambiare impostazioni di configurazione, riavviare, ecc).
AVVERTENZA: Usare cautela nel decidere a chi consentire accesso pieno!
+SimpleToadletServer.allowedFullAccess=Host ai quali ? consentito pieno accesso
a FProxy (leggere l'avvertenza)
+SimpleToadletServer.allowedFullAccessLong=Host ai quali ? consentito accesso
pieno al nodo (cambiare impostazioni di configurazione, riavviare, ecc).
AVVERTENZA: Usare cautela nel decidere a chi consentire accesso pieno!
SimpleToadletServer.allowedHosts=Nomi host o indirizzi IP ai quali e'
consentito connettersi a FProxy
-SimpleToadletServer.allowedHostsLong=Pu? essere una lista di IP separati da
virgole e IP in formato CIDR come 192.168.0.0/24. Tutti possono accedere al
disco rigido nei limiti definiti dalle altre opzioni di configurazione.
+SimpleToadletServer.allowedHostsLong=Pu? essere una lista di IP separati da
virgole e IP in formato CIDR come 192.168.0.0/24. Tutti possono accedere al
disco rigido nei limiti definiti dalle altre opzioni di configurazione.
SimpleToadletServer.bindTo=Indirizzo IP collegato
SimpleToadletServer.bindToLong=Indirizzo IP collegato
-SimpleToadletServer.cannotChangePortOnTheFly=Non ? possibile cambiare il
numero della porta FProxy "al volo"
-SimpleToadletServer.couldNotChangeBindTo=Non ? stato possibile cambiare
l'indirizzo abbinato a FProxy: ${error}.
+SimpleToadletServer.cannotChangePortOnTheFly=Non ? possibile cambiare il
numero della porta FProxy "al volo"
+SimpleToadletServer.couldNotChangeBindTo=Non ? stato possibile cambiare
l'indirizzo abbinato a FProxy: ${error}.
SimpleToadletServer.cssName=Nome del CSS
SimpleToadletServer.cssNameLong=Nome del CSS utilizzato da FProxy
SimpleToadletServer.cssOverride=Usa un CSS personalizzato al posto di quello
regolare (ATTENZIONE!)
-SimpleToadletServer.cssOverrideCantRead=Non ? stato possibile leggere il file
di sovrascrittura CSS fornito: ${filename}
+SimpleToadletServer.cssOverrideCantRead=Non ? stato possibile leggere il file
di sovrascrittura CSS fornito: ${filename}
SimpleToadletServer.cssOverrideLong=Questa impostazione permette di utilizzare
un CSS personalizzato invece di quello normalmente usato. AVVERTENZA: i CSS
possono essere pericolosi, e *non* vengono filtrati: utilizzare a proprio
rischio. Per includerli nella distribuzione principale e-mail devl at
freenetroject.org
-SimpleToadletServer.cssOverrideNotInUploads=Non ? possibile usare questa
impostazione: "${filename} non ? una directory dalla quale sono permessi gli
upload.
+SimpleToadletServer.cssOverrideNotInUploads=Non ? possibile usare questa
impostazione: "${filename} non ? una directory dalla quale sono permessi gli
upload.
SimpleToadletServer.doRobots=Usare robots.txt per escludere i robot?
SimpleToadletServer.doRobotsLong=Pubblica un file /robots.txt allo scopo di
tenere lontano Google, spiders, Wget, etc.
SimpleToadletServer.enableInlinePrefetch=Abilita pre-ricezione (prefetching)
di immagini inlinea (inline)?
SimpleToadletServer.enableInlinePrefetchLong=Questo potrebbe essere utile se
il browser utilizza un numero ridotto di connessioni per comunicare con il
nodo. D'altra parte potrebbe non esserlo.
SimpleToadletServer.enableJS=Permetti a FProxy di usare Javascript
-SimpleToadletServer.enableJSLong=Determina se FProxy pu? o meno fare uso di
Javascript. Questa impostazione di solito va tenuta su 'falso'. Nota che i
freesite non fanno uso di javascript nemmeno se qui abilitata.
+SimpleToadletServer.enableJSLong=Determina se FProxy pu? o meno fare uso di
Javascript. Questa impostazione di solito va tenuta su 'falso'. Nota che i
freesite non fanno uso di javascript nemmeno se qui abilitata.
SimpleToadletServer.enablePersistentConnections=Abilita connessioni
persistenti HTTP? (Leggere la descrizione)
SimpleToadletServer.enablePersistentConnectionsLong=Non abilitare questa
opzione tranne nel caso in cui il browser sia configurato per usare molte
connessioni anche se sono persistenti.
SimpleToadletServer.enabled=Abilita FProxy
SimpleToadletServer.enabledLong=Abilita FProxy e relativi servizi HTTP
-SimpleToadletServer.illegalCSSName=Il nome CSS non pu? contenere i catarreri
"barra" (/ slash) e "due punti" ( : colon)
+SimpleToadletServer.illegalCSSName=Il nome CSS non pu? contenere i catarreri
"barra" (/ slash) e "due punti" ( : colon)
SimpleToadletServer.panicButton=Mostra bottone Emergenza
SimpleToadletServer.panicButtonLong=Mostra il bottone Emergenza nella pagina
della Coda. Se usato, Il bottone Emergenza rimuove tutte le richieste che non
hanno ricevuto conferma.
+SimpleToadletServer.passthroughMaxSize=Dimensione massima per pass-through
trasparente in fproxy
+SimpleToadletServer.passthroughMaxSizeLong=Dimensione massima file per
pass-through trasparente in fproxy
SimpleToadletServer.port=Numero della porta FProxy
SimpleToadletServer.portLong=Numero della porta FProxy
SimpleToadletServer.ssl=Abilitare ssl?
SimpleToadletServer.sslLong=Abilitare ssl?
-StartupToadlet.entropyErrorContent=Non c'? abbastanza entropia disponibile nel
sistema... Freenet non si avvier? finch? non ne avr? racimolata abbastanza.
+StartupToadlet.entropyErrorContent=Non c'? abbastanza entropia disponibile nel
sistema... Freenet non si avvier? finch? non ne avr? racimolata abbastanza.
StartupToadlet.entropyErrorTitle=Entropia insufficiente!
StartupToadlet.isStartingUp=Avviamento del nodo Freenet in corso, si prega di
attendere.
StartupToadlet.title=Avvio di Freenet in corso
@@ -1137,17 +1153,17 @@
StatisticsToadlet.outputRate=Output: ${rate} al secondo (di ${max} al secondo)
StatisticsToadlet.payloadOutput=Output Carico Utile: ${total} (${rate}/second)
(${percent}%)
StatisticsToadlet.peerStatsTitle=Statistiche peer
-StatisticsToadlet.priority=Priorit?
+StatisticsToadlet.priority=Priorit?
StatisticsToadlet.requestOutput=Output richieste (carico utile escluso): CHK
${chk} SSK ${ssk}.
StatisticsToadlet.resendBytes=Bytes rispediti: ${total}
-StatisticsToadlet.routingDisabled=Indirizzamento traffico sospeso (il nodo ?
attualmente connesso ma una delle due parti non accetta indirizzamento di
traffico)
+StatisticsToadlet.routingDisabled=Indirizzamento traffico sospeso (il nodo ?
attualmente connesso ma una delle due parti non accetta indirizzamento di
traffico)
StatisticsToadlet.routingDisabledShort=Indirizzamento Traffico Sospeso
StatisticsToadlet.running=In funzione
StatisticsToadlet.statisticGatheringTitle=Raccolta Statistiche
StatisticsToadlet.swapOutput=Output Scambio: ${total}.
StatisticsToadlet.threadDumpButton=Genera Thread Dump
StatisticsToadlet.threads=Threads correnti: ${running}/${max}
-StatisticsToadlet.threadsByPriority=Thread in ordine di prorit?
+StatisticsToadlet.threadsByPriority=Thread in ordine di prorit?
StatisticsToadlet.totalInput=Input Totale: ${total} (${rate}/second)
StatisticsToadlet.totalOutput=Output Totale: ${total} (${rate}/second)
StatisticsToadlet.totalOverhead=Totale overhead di non-richieste: ${rate}/sec
(${percent}%).
@@ -1159,13 +1175,13 @@
StatisticsToadlet.waiting=In attesa
SymlinkerToadlet.symlinks=Link simbolici in ToadletServer
SymlinkerToadlet.symlinksLong=Lista di "alias#target" che va a formare un
gruppo di link simbolici
-TestnetHandler.cannotEnableDisableOnTheFly=Non ? possibile abilitare o
disabilitare la modalit? testnet "al volo"; ? necessario riavviare il nodo ed
ottenere nuove connessioni.
-TestnetHandler.enable=Abilita modalit? testnet (PERICOLO)
-TestnetHandler.enableLong=Abilita la modalit? testnet (PERICOLO). La modalit?
testnet elimina l'anonimato per poter permettere agli sviluppatori di fare il
debugging del nodo
+TestnetHandler.cannotEnableDisableOnTheFly=Non ? possibile abilitare o
disabilitare la modalit? testnet "al volo"; ? necessario riavviare il nodo ed
ottenere nuove connessioni.
+TestnetHandler.enable=Abilita modalit? testnet (PERICOLO)
+TestnetHandler.enableLong=Abilita la modalit? testnet (PERICOLO). La modalit?
testnet elimina l'anonimato per poter permettere agli sviluppatori di fare il
debugging del nodo
TestnetHandler.port=Porta testnet
TestnetHandler.portLong=Numero della porta testnet (-1 = listenPort+1000)
TextModeClientInterfaceServer.allowedHosts=Host consentiti
-TextModeClientInterfaceServer.allowedHostsLong=Nomi host o indirizzi IP ai
quali ? consentito connettersi a TMCI. Pu? essere una lista di nomi host e
indirizzi IP separati da virgole, o anche IP in formato CIDR come 192.168.0.0/24
+TextModeClientInterfaceServer.allowedHostsLong=Nomi host o indirizzi IP ai
quali ? consentito connettersi a TMCI. Pu? essere una lista di nomi host e
indirizzi IP separati da virgole, o anche IP in formato CIDR come 192.168.0.0/24
TextModeClientInterfaceServer.bindTo=Indirizzo IP collegato
TextModeClientInterfaceServer.bindToLong=Indirizzo IP collegato
TextModeClientInterfaceServer.enableInputOutput=Abilita stdout/stdin
@@ -1177,7 +1193,7 @@
TextModeClientInterfaceServer.telnetPortNumber=Porta telnet
TextModeClientInterfaceServer.telnetPortNumberLong=Porta TCP utlizzata dal
server TMCI
TimeSkewDetectedUserAlert.shortText=Il nodo ha rilevato una discrepanza
temporale. Freenet potrebbe bloccarsi in strani modi!
-TimeSkewDetectedUserAlert.text=Una discrepanza temporale ? stata rilevata dal
nodo. Questo ? un inconveniente grave; il nodo non potr? funzionare
correttamente finch? non vi si sar? ovviato. Tra le cause pi? comuni, la
modalit? powersafe mal configurata, cattiva sincronizzazione tra i client in
rete, problemi di hardware.
+TimeSkewDetectedUserAlert.text=Una discrepanza temporale ? stata rilevata dal
nodo. Questo ? un inconveniente grave; il nodo non potr? funzionare
correttamente finch? non vi si sar? ovviato. Tra le cause pi? comuni, la
modalit? powersafe mal configurata, cattiva sincronizzazione tra i client in
rete, problemi di hardware.
TimeSkewDetectedUserAlert.title=Discrepanza temporale rilevata!
Toadlet.cancel=Cancella
Toadlet.clickHere=Clicca qui
@@ -1195,9 +1211,9 @@
Toadlet.returnToPrevPage=Torna alla pagina precedente
Toadlet.returnToQueuepage=Torna alla pagina della coda
Toadlet.tempRedirectWithReason=Redirect temporaneo: ${reason}
-Toadlet.unauthorized=L'accesso a questa pagina ? interdetto.
+Toadlet.unauthorized=L'accesso a questa pagina ? interdetto.
Toadlet.unauthorizedTitle=Non Autorizzato
-Toadlet.yes=S?
+Toadlet.yes=S?
ToadletContextImpl.cannotParseContentLength=errore nell' analisi
contenuto-lunghezza: ${error}
ToadletContextImpl.cannotParseContentLengthWithError=Impossibile interpretare
contenuto-lunghezza: ${error}
ToadletContextImpl.headersLineTooLong=Rigo troppo lungo dalla ricostruzione di
headers
@@ -1219,23 +1235,23 @@
TranslationToadlet.reEdit=Ri-modifica la traduzione
TranslationToadlet.remove=Elimina
TranslationToadlet.removeOverrideTitle=Elimina una chiave di traduzione
-TranslationToadlet.removeOverrideWarningTitle=Attenzione: la chiave di
traduzione verr? eliminata!
+TranslationToadlet.removeOverrideWarningTitle=Attenzione: la chiave di
traduzione verr? eliminata!
TranslationToadlet.returnToTranslations=Torna alla pagina della traduzione
-TranslationToadlet.showEverything=Mostra tutto, incluse stringhe gi? tradotte
+TranslationToadlet.showEverything=Mostra tutto, incluse stringhe gi? tradotte
TranslationToadlet.translationKeyLabel=Chiave di traduzione
TranslationToadlet.translationUpdateTitle=Aggiornamento traduzione
TranslationToadlet.translationUpdatedTitle=Traduzione aggiornata!
TranslationToadlet.updateTranslationCommand=Aggiorna traduzione
-UnknownContentTypeException.explanation=Il nodo non ha informazioni su questo
MIME type. Ci? potrebbe comportare una reazione pericolosa da parte del browser
in risposta al download di questo file. Per esempio, molti formati possono
contenere immagini o video inclusi (embedded) che vengono scaricati dal web:
ci? espone l'utente al rischio di rivelare il proprio indirizzo IP ad un
eventuale avversario (per esempio un avversario che gestisca il il sito web dal
quale le immagini o video ecc. vengono scaricati, o uno che abbia in qualche
modo ottenuto accesso ai log del sito stesso). Hyperlinks e scripting sono
entrambi ugualmente pericolosi, per lo stesso motivo, ed anche per alcuni altri.
+UnknownContentTypeException.explanation=Il nodo non ha informazioni su questo
MIME type. Ci? potrebbe comportare una reazione pericolosa da parte del browser
in risposta al download di questo file. Per esempio, molti formati possono
contenere immagini o video inclusi (embedded) che vengono scaricati dal web:
ci? espone l'utente al rischio di rivelare il proprio indirizzo IP ad un
eventuale avversario (per esempio un avversario che gestisca il il sito web dal
quale le immagini o video ecc. vengono scaricati, o uno che abbia in qualche
modo ottenuto accesso ai log del sito stesso). Hyperlinks e scripting sono
entrambi ugualmente pericolosi, per lo stesso motivo, ed anche per alcuni altri.
UnknownContentTypeException.title=Tipo di contenuto (content type) sconosciuto
e pertanto potenzialmente pericoloso: ${type}
UpdateDeployContext.cannotUpdateNoExtJar=Freenet-ext.jar non trovata in
wrapper.conf: (freenet.jar trovata: ${mainFilename})
-UpdateDeployContext.cannotUpdateNoJars=Non ? stato possibile trovare i file
jar di Freenet in wrapper.conf
-UpdateDeployContext.cannotUpdateNoMainJar=Non ? stato possibile trovare
freenet.jar in wrapper.conf (freenet-ext.jar non trovata: ${extFilename})
+UpdateDeployContext.cannotUpdateNoJars=Non ? stato possibile trovare i file
jar di Freenet in wrapper.conf
+UpdateDeployContext.cannotUpdateNoMainJar=Non ? stato possibile trovare
freenet.jar in wrapper.conf (freenet-ext.jar non trovata: ${extFilename})
UpdateDeployContext.updateCatastrophe=ERRORE CATASTROFICO: Eliminato ${old} ma
impossibile rinominare ${new} in ${old} quindi IL NODO NON SI AVVIERA'! La
soluzione consiste nel rinominare ${new} in ${old} manualmente
-UpdateDeployContext.updateFailedCannotDeleteOldConfig=Non ? stato possibile
eliminare ${old} quindi non ? possibile sovrascrivere. Aggiornamento fallito.
-UpdateDeployContext.updateFailedNonStandardConfig=Non ? stato possibile
completare l'aggiornamento a causa della configurazione non-standard: written
main=${main} ext=${ext} - Questo non dovrebbe accadere! Si prega di riportare
l'accaduto agli sviluppatori includendo il file wrapper.conf
+UpdateDeployContext.updateFailedCannotDeleteOldConfig=Non ? stato possibile
eliminare ${old} quindi non ? possibile sovrascrivere. Aggiornamento fallito.
+UpdateDeployContext.updateFailedNonStandardConfig=Non ? stato possibile
completare l'aggiornamento a causa della configurazione non-standard: written
main=${main} ext=${ext} - Questo non dovrebbe accadere! Si prega di riportare
l'accaduto agli sviluppatori includendo il file wrapper.conf
UpdatedVersionAvailableUserAlert.alsoDownloadedNewExtJar=Il nodo ha anche
scaricato una nuova versione della extra jar di Freenet, versione ${version}
-UpdatedVersionAvailableUserAlert.armed=Il nodo verr? riavviato automaticamente
dopo aver completato il download e verificato la nuova versione di Freenet.
+UpdatedVersionAvailableUserAlert.armed=Il nodo verr? riavviato automaticamente
dopo aver completato il download e verificato la nuova versione di Freenet.
UpdatedVersionAvailableUserAlert.clickToUpdateASAP=Clicca qui sotto per
aggiornare il nodo dopo la verifica dell'aggiornamento.
UpdatedVersionAvailableUserAlert.clickToUpdateNow=Clicca qui sotto per
aggiornare il nodo immediatamente.
UpdatedVersionAvailableUserAlert.downloadedNewExtJar=Il nodo ha scaricato una
nuova versione della extra jar di Freenet, versione ${version}.
@@ -1245,12 +1261,12 @@
UpdatedVersionAvailableUserAlert.fetchingNewNode=Il nodo sta scaricando una
versione aggiornata di Freenet (versione nodo ${nodeVersion}).
UpdatedVersionAvailableUserAlert.finalCheck=Il nodo sta eseguendo un controllo
finale per verificare la sicurezza dell'aggiornamento (${count} of ${max}).
UpdatedVersionAvailableUserAlert.notLatest=Sembra che il nodo non stia usando
una versione aggiornata del software.
-UpdatedVersionAvailableUserAlert.shortArmed=In nodo sta scaricando una nuova
versione di Freenet e si riavvier? una volta terminato il download.
-UpdatedVersionAvailableUserAlert.shortNotReadyNotArmed=Il nodo sta scaricando
una nuova versione di Freenet, ma per poterla utilizzare ? necessaria la
conferma da parte dell'utente.
-UpdatedVersionAvailableUserAlert.shortReadyNotArmed=Il nodo ha scaricato una
nuova versione di Freenet ma potr? usarla solo dopo la conferma da parte dell'
utente.
+UpdatedVersionAvailableUserAlert.shortArmed=In nodo sta scaricando una nuova
versione di Freenet e si riavvier? una volta terminato il download.
+UpdatedVersionAvailableUserAlert.shortNotReadyNotArmed=Il nodo sta scaricando
una nuova versione di Freenet, ma per poterla utilizzare ? necessaria la
conferma da parte dell'utente.
+UpdatedVersionAvailableUserAlert.shortReadyNotArmed=Il nodo ha scaricato una
nuova versione di Freenet ma potr? usarla solo dopo la conferma da parte dell'
utente.
UpdatedVersionAvailableUserAlert.title=E' disponibile una nuova versione
stabile di Freenet
-UpdatedVersionAvailableUserAlert.updateASAPButton=Si prega di aggiornare al
pi? presto possibile
-UpdatedVersionAvailableUserAlert.updateASAPQuestion=Riavviare il nodo dopo che
l'aggiornamento ? stato completato?
+UpdatedVersionAvailableUserAlert.updateASAPButton=Si prega di aggiornare al
pi? presto possibile
+UpdatedVersionAvailableUserAlert.updateASAPQuestion=Riavviare il nodo dopo che
l'aggiornamento ? stato completato?
UpdatedVersionAvailableUserAlert.updateNowButton=Aggiorna Adesso!
UserAlert.apply=Conferma
UserAlert.hide=Nascondi
@@ -1266,7 +1282,7 @@
UserAlertManager.totalLabel=Totale:
UserAlertManager.warningCountLabel=Avvertenze:
UserAlertsToadlet.titleWithName=Avvertenze per ${name}
-WelcomeToadlet.activityTitle=Attivit? in corso
+WelcomeToadlet.activityTitle=Attivit? in corso
WelcomeToadlet.alertsSummary=Sommario avvertenze
WelcomeToadlet.arkFetchCount=ARK Fetchers: ${total}
WelcomeToadlet.confirmAddBookmarkSubTitle=Conferma Aggiunta Sgnalibro
@@ -1283,20 +1299,20 @@
WelcomeToadlet.extVersionWithRecommended=Freenet-ext Build #${build} (si
raccomanda ${recbuild}) r${rev}
WelcomeToadlet.fetch=Richiama
WelcomeToadlet.fetchKeyLabel=Richiama una chiave
-WelcomeToadlet.finInsertSuccessWithKey=Il messaggio ? stato inserito in ${key}.
+WelcomeToadlet.finInsertSuccessWithKey=Il messaggio ? stato inserito in ${key}.
WelcomeToadlet.finInsertedTitle=Inserzione
WelcomeToadlet.finTitle=Inserzione Nota Istantanea di Frost
WelcomeToadlet.fromHeader=Da
WelcomeToadlet.goToExternalLink=Vai al link specificato
WelcomeToadlet.homepageFullTitleWithName=Homepage FProxy di ${name}
-WelcomeToadlet.ieWarning=E' stato rilevato l'uso di Microsoft Internet
Explorer. Ci? potrebbe costituire un pericolo per l'anonimato dell'utente.
+WelcomeToadlet.ieWarning=E' stato rilevato l'uso di Microsoft Internet
Explorer. Ci? potrebbe costituire un pericolo per l'anonimato dell'utente.
WelcomeToadlet.ieWarningTitle=Rischio Sicurezza!
WelcomeToadlet.insertCount=Inserzioni: ${total}
WelcomeToadlet.insertFailedTitle=Inserzione fallita
-WelcomeToadlet.insertFailedWithMessage=L'inserzione ? fallita con il
messaggio: ${message}
+WelcomeToadlet.insertFailedWithMessage=L'inserzione ? fallita con il
messaggio: ${message}
WelcomeToadlet.insertSucceededTitle=Inserzione Completata
WelcomeToadlet.insertedTitle=Inserzione
-WelcomeToadlet.keyInsertedSuccessfullyWithKeyAndName=La chiave
${link}${name}${/link} ? stata inserita.
+WelcomeToadlet.keyInsertedSuccessfullyWithKeyAndName=La chiave
${link}${name}${/link} ? stata inserita.
WelcomeToadlet.keyRequestLabel=Chiave:
WelcomeToadlet.messageHeader=Messaggio
WelcomeToadlet.nodeUpdateConfirm=Conferma: aggiornare il nodo Freenet?
@@ -1309,7 +1325,7 @@
WelcomeToadlet.restartConfirm=Conferma: Riavvia nodo Freenet?
WelcomeToadlet.restartConfirmTitle=Riavvia Nodo
WelcomeToadlet.restartNode=Riavvia nodo
-WelcomeToadlet.restarting=Si prega di attendere durante il riavvio del nodo.
Questa schermata si aggiorner? automaticamente, fino a mostrare la pagina
iniziale fi Freenet. Grazie di aver scelto Freenet.
+WelcomeToadlet.restarting=Si prega di attendere durante il riavvio del nodo.
Questa schermata si aggiorner? automaticamente, fino a mostrare la pagina
iniziale fi Freenet. Grazie di aver scelto Freenet.
WelcomeToadlet.restartingTitle=Riavvio del nodo Freenet in corso.
WelcomeToadlet.shutdown=Arresta
WelcomeToadlet.shutdownConfirm=Conferma: Arresta nodo Freenet?
@@ -1320,24 +1336,24 @@
WelcomeToadlet.startIndexHeader=Indice dal quale iniziare
WelcomeToadlet.subjectHeader=Oggetto
WelcomeToadlet.targetBoardHeader=Target Board
-WelcomeToadlet.testnetWarning=gira in modalit? testnet. DISTRUGGE l'anonimato!
-WelcomeToadlet.testnetWarningTitle=Modalit? Testnet
+WelcomeToadlet.testnetWarning=gira in modalit? testnet. DISTRUGGE l'anonimato!
+WelcomeToadlet.testnetWarningTitle=Modalit? Testnet
WelcomeToadlet.thanks=Grazie di aver scelto Freenet.
-WelcomeToadlet.threadDumpNotUsingWrapper=Non ? possibile generare un thread
dump se il nodo non sta girando nel wrapper
+WelcomeToadlet.threadDumpNotUsingWrapper=Non ? possibile generare un thread
dump se il nodo non sta girando nel wrapper
WelcomeToadlet.threadDumpSubTitle=Generazione di Thread Dump
WelcomeToadlet.threadDumpTitle=Genera Thread Dump
-WelcomeToadlet.threadDumpWithFilename=E' stato generato un thread dump, esso ?
disponibile in ${filename}.
+WelcomeToadlet.threadDumpWithFilename=E' stato generato un thread dump, esso ?
disponibile in ${filename}.
WelcomeToadlet.transferringRequestCount=Richieste in corso di trasferimento:
${total}
WelcomeToadlet.update=Aggiorna
-WelcomeToadlet.updating=Il nodo Freenet ? stato aggiornato e sar? ora
riavviato automaticamente. Il processo di riavvio pu? durare fino a dieci
minuti perch? il nodo prima di aggiornare deve controllare se sia presente una
chiave di revoca.
+WelcomeToadlet.updating=Il nodo Freenet ? stato aggiornato e sar? ora
riavviato automaticamente. Il processo di riavvio pu? durare fino a dieci
minuti perch? il nodo prima di aggiornare deve controllare se sia presente una
chiave di revoca.
WelcomeToadlet.updatingThanks=Grazie per usare Freenet
WelcomeToadlet.updatingTitle=Aggiornamento del nodo in corso
WelcomeToadlet.uriWouldHaveBeen=La URI sarebbe stata: ${uri}
WelcomeToadlet.version=Freenet ${fullVersion} Build ${build} r${rev}
WelcomeToadlet.versionHeader=Informazioni sulla Versione e Controllo del Nodo
WelcomeToadlet.writtenDatabaseStats=Le statistiche di runtime del database
sono state scritte nel file di log del wrapper
-WrapperConfig.wrapper.java.maxmemory.long=Limita la quantit? massima di
memoria utilizzabile da Freenet. Freenet ha bisogno di molta pi? memoria se si
hanno molti e/o grossi file in coda di dowload/upload, ed in misura minore se
il nodo ? dotato di un datastore di dimensioni abbondanti. I cambiamenti
saranno effettivi dopo il riavvio del nodo.
+WrapperConfig.wrapper.java.maxmemory.long=Limita la quantit? massima di
memoria utilizzabile da Freenet. Freenet ha bisogno di molta pi? memoria se si
hanno molti e/o grossi file in coda di dowload/upload, ed in misura minore se
il nodo ? dotato di un datastore di dimensioni abbondanti. I cambiamenti
saranno effettivi dopo il riavvio del nodo.
WrapperConfig.wrapper.java.maxmemory.short=Memoria massima (in megabytes)
testing.test=test${test1}test${test2}test
-?BookmarkEditorToadlet.pasteOrCancel=Click su un'icona incolla o cancella.
+?BookmarkEditorToadlet.pasteOrCancel=Click su un'icona incolla o cancella.
End
Modified: branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -242,7 +242,7 @@
}
private long timeGotEnoughPeers = -1;
-
+ private final Object timeGotEnoughPeersLock = new Object();
private boolean killedAnnouncementTooOld;
/** @return True if we have enough peers that we don't need to
announce. */
@@ -254,7 +254,7 @@
if(opennetCount >= target) {
if(logMINOR)
Logger.minor(this, "We have enough opennet
peers: "+opennetCount+" > "+target+" since
"+(System.currentTimeMillis()-timeGotEnoughPeers)+" ms");
- synchronized(this) {
+ synchronized(timeGotEnoughPeersLock) {
if(timeGotEnoughPeers <= 0)
timeGotEnoughPeers =
System.currentTimeMillis();
}
@@ -278,7 +278,7 @@
}
}
- synchronized(this) {
+ synchronized(timeGotEnoughPeersLock) {
timeGotEnoughPeers = -1;
}
return false;
@@ -288,8 +288,10 @@
* Get the earliest time at which we had enough opennet peers. This is
reset when we drop
* below the threshold.
*/
- synchronized long timeGotEnoughPeers() {
- return timeGotEnoughPeers;
+ long timeGotEnoughPeers() {
+ synchronized(timeGotEnoughPeersLock) {
+ return timeGotEnoughPeers;
+ }
}
private boolean ignoreIPUndetected;
Modified: branches/saltedhashstore/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/DarknetPeerNode.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/DarknetPeerNode.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -511,7 +511,7 @@
node.usm.send(this, n2nm, null);
Logger.normal(this, "Sent
queued ("+fileNumber+") N2NM to '"+getName()+"': "+n2nm);
sendSuccess = true;
-
queuedToSendN2NMExtraPeerDataFileNumbers.remove(new Integer(fileNumber));
+
queuedToSendN2NMExtraPeerDataFileNumbers.remove(fileNumber);
}
deleteExtraPeerDataFile(fileNumber);
} catch (NotConnectedException e) {
@@ -558,7 +558,7 @@
}
nextFileNumber = localFileNumbers[i].intValue()
+ 1;
}
- extraPeerDataFileNumbers.add(new
Integer(nextFileNumber));
+ extraPeerDataFileNumbers.add(nextFileNumber);
}
FileOutputStream fos;
File extraPeerDataFile = new
File(extraPeerDataPeerDir.getPath()+File.separator+nextFileNumber);
@@ -613,7 +613,7 @@
return;
}
synchronized(extraPeerDataFileNumbers) {
- extraPeerDataFileNumbers.remove(new
Integer(fileNumber));
+ extraPeerDataFileNumbers.remove(fileNumber);
}
if(!extraPeerDataFile.delete()) {
if(extraPeerDataFile.exists()) {
@@ -724,7 +724,7 @@
public void queueN2NM(SimpleFieldSet fs) {
int fileNumber = writeNewExtraPeerDataFile( fs,
Node.EXTRA_PEER_DATA_TYPE_QUEUED_TO_SEND_N2NM);
synchronized(queuedToSendN2NMExtraPeerDataFileNumbers) {
- queuedToSendN2NMExtraPeerDataFileNumbers.add(new
Integer(fileNumber));
+
queuedToSendN2NMExtraPeerDataFileNumbers.add(fileNumber);
}
}
@@ -767,9 +767,9 @@
// FIXME this should be persistent across node restarts
/** Files I have offered to this peer */
- private final HashMap myFileOffersByUID = new HashMap();
+ private final HashMap<Long, FileOffer> myFileOffersByUID = new
HashMap<Long, FileOffer>();
/** Files this peer has offered to me */
- private final HashMap hisFileOffersByUID = new HashMap();
+ private final HashMap<Long, FileOffer> hisFileOffersByUID = new
HashMap<Long, FileOffer>();
private void storeOffers() {
// FIXME do something
@@ -870,10 +870,9 @@
}
protected void remove() {
- Long l = new Long(uid);
synchronized(DarknetPeerNode.this) {
- myFileOffersByUID.remove(l);
- hisFileOffersByUID.remove(l);
+ myFileOffersByUID.remove(uid);
+ hisFileOffersByUID.remove(uid);
}
data.close();
}
@@ -1342,7 +1341,7 @@
RandomAccessThing data = new RandomAccessFileWrapper(filename,
"r");
FileOffer fo = new FileOffer(uid, data, fnam, mime, message);
synchronized(this) {
- myFileOffersByUID.put(new Long(uid), fo);
+ myFileOffersByUID.put(uid, fo);
}
storeOffers();
long now = System.currentTimeMillis();
@@ -1406,9 +1405,10 @@
Logger.error(this, "Could not parse offer: "+e+" on
"+this+" :\n"+fs, e);
return;
}
- Long u = new Long(offer.uid);
- synchronized(this) {
- if(hisFileOffersByUID.containsKey(u)) return; // Ignore
re-advertisement
+ Long u = offer.uid;
+ synchronized (this) {
+ if (hisFileOffersByUID.containsKey(u))
+ return; // Ignore re-advertisement
hisFileOffersByUID.put(u, offer);
}
@@ -1425,7 +1425,7 @@
Logger.minor(this, "Accepting transfer "+id+" on
"+this);
FileOffer fo;
synchronized(this) {
- fo = (FileOffer) hisFileOffersByUID.get(new Long(id));
+ fo = hisFileOffersByUID.get(id);
}
fo.accept();
}
@@ -1433,7 +1433,7 @@
public void rejectTransfer(long id) {
FileOffer fo;
synchronized(this) {
- fo = (FileOffer) hisFileOffersByUID.remove(new
Long(id));
+ fo = hisFileOffersByUID.remove(id);
}
fo.reject();
}
@@ -1451,10 +1451,9 @@
}
if(logMINOR)
Logger.minor(this, "Offer accepted for "+uid);
- Long u = new Long(uid);
FileOffer fo;
synchronized(this) {
- fo = (FileOffer) (myFileOffersByUID.get(u));
+ fo = (myFileOffersByUID.get(uid));
}
if(fo == null) {
Logger.error(this, "No such offer: "+uid);
@@ -1486,7 +1485,7 @@
FileOffer fo;
synchronized(this) {
- fo = (FileOffer) myFileOffersByUID.remove(new
Long(uid));
+ fo = myFileOffersByUID.remove(uid);
}
fo.onRejected();
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/KeyTracker.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/KeyTracker.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -220,7 +220,6 @@
* Constraint: urgentTime is always greater than activeTime.
*/
long activeTime;
- final Integer packetNumberAsInteger;
void sent() throws UpdatableSortedLinkedListKilledException {
long now = System.currentTimeMillis();
@@ -232,7 +231,6 @@
BaseQueuedResend(int packetNumber) {
this.packetNumber = packetNumber;
- packetNumberAsInteger = new Integer(packetNumber);
long now = System.currentTimeMillis();
activeTime = initialActiveTime(now);
urgentTime = activeTime + urgentDelay();
@@ -278,7 +276,7 @@
}
public Object indexValue() {
- return packetNumberAsInteger;
+ return packetNumber;
}
private DoublyLinkedList parent;
@@ -327,13 +325,9 @@
return now + activeDelay;
}
- QueuedAckRequest(int packetNumber, boolean sendSoon) {
+ QueuedAckRequest(int packetNumber) {
super(packetNumber);
- this.createdTime = System.currentTimeMillis();
- if(sendSoon) {
- activeTime -= activeDelay;
- urgentTime -= activeDelay;
- }
+ this.createdTime = System.currentTimeMillis();
}
@Override
@@ -479,7 +473,7 @@
}
if(logMINOR)
Logger.minor(this, "Queueing ack request for "
+ packetNumber + " on " + this);
- QueuedAckRequest qrr = new
QueuedAckRequest(packetNumber, false);
+ QueuedAckRequest qrr = new
QueuedAckRequest(packetNumber);
ackRequestQueue.add(qrr);
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/LocationManager.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/LocationManager.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/LocationManager.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -49,11 +49,13 @@
this.item = item;
}
+ @Override
public void disconnected() {
super.disconnected();
removeRecentlyForwardedItem(item);
}
+ @Override
public void acknowledged() {
item.successfullyForwarded = true;
}
@@ -157,7 +159,7 @@
int sleepTime = getSendSwapInterval();
sleepTime *= nextRandom;
sleepTime = Math.min(sleepTime, Integer.MAX_VALUE);
- long endTime = startTime + (int)sleepTime;
+ long endTime = startTime + sleepTime;
long now = System.currentTimeMillis();
long diff = endTime - now;
try {
@@ -246,7 +248,6 @@
Message origMessage;
PeerNode pn;
long uid;
- Long luid;
RecentlyForwardedItem item;
IncomingSwapRequestHandler(Message msg, PeerNode pn,
RecentlyForwardedItem item) {
@@ -254,7 +255,6 @@
this.pn = pn;
this.item = item;
uid = origMessage.getLong(DMT.UID);
- luid = new Long(uid);
}
public void run() {
@@ -737,7 +737,7 @@
if(Math.abs(hisLoc - myLoc) <= Double.MIN_VALUE * 2)
return false; // Probably swapping with self
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append("my: ").append(myLoc).append(", his:
").append(hisLoc).append(", myFriends: ");
sb.append(friendLocs.length).append(", hisFriends:
").append(hisFriendLocs.length).append(" mine:\n");
@@ -855,9 +855,8 @@
* to be handled otherwise.
*/
public boolean handleSwapRequest(Message m, PeerNode pn) {
- long oldID = m.getLong(DMT.UID);
- Long luid = new Long(oldID);
- long newID = oldID+1;
+ final long oldID = m.getLong(DMT.UID);
+ final long newID = oldID + 1;
/**
* UID is used to record the state i.e. UID x, came in from node a,
forwarded to node b.
* We increment it on each hop, because in order for the node
selection to be as random as
@@ -865,7 +864,7 @@
* twice or more. However, if we get a request with either the
incoming or the outgoing
* UID, we can safely kill it as it's clearly the result of a bug.
*/
- RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(luid);
+ RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(oldID);
if(item != null) {
if(logMINOR) Logger.minor(this, "Rejecting - same ID as
previous request");
// Reject
@@ -1012,8 +1011,8 @@
private RecentlyForwardedItem addForwardedItem(long uid, long oid,
PeerNode pn, PeerNode randomPeer) {
RecentlyForwardedItem item = new RecentlyForwardedItem(uid, oid, pn,
randomPeer);
synchronized(recentlyForwardedIDs) {
- recentlyForwardedIDs.put(new Long(uid), item);
- recentlyForwardedIDs.put(new Long(oid), item);
+ recentlyForwardedIDs.put(uid, item);
+ recentlyForwardedIDs.put(oid, item);
}
return item;
}
@@ -1023,9 +1022,8 @@
* @return True if we recognized and forwarded this reply.
*/
public boolean handleSwapReply(Message m, PeerNode source) {
- long uid = m.getLong(DMT.UID);
- Long luid = new Long(uid);
- RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(luid);
+ final long uid = m.getLong(DMT.UID);
+ RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(uid);
if(item == null) {
Logger.error(this, "Unrecognized SwapReply: ID "+uid);
return false;
@@ -1060,9 +1058,8 @@
* @return True if we recognized and forwarded this message.
*/
public boolean handleSwapRejected(Message m, PeerNode source) {
- long uid = m.getLong(DMT.UID);
- Long luid = new Long(uid);
- RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(luid);
+ final long uid = m.getLong(DMT.UID);
+ RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(uid);
if(item == null) return false;
if(item.requestSender == null){
if(logMINOR) Logger.minor(this, "Got a FNPSwapRejected without
any requestSender set! we can't and won't claim it! UID="+uid);
@@ -1095,9 +1092,8 @@
* @return True if we recognized and forwarded this message.
*/
public boolean handleSwapCommit(Message m, PeerNode source) {
- long uid = m.getLong(DMT.UID);
- Long luid = new Long(uid);
- RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(luid);
+ final long uid = m.getLong(DMT.UID);
+ RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(uid);
if(item == null) return false;
if(item.routedTo == null) return false;
if(source != item.requestSender) {
@@ -1123,10 +1119,9 @@
* @return True if we recognized and forwarded this message.
*/
public boolean handleSwapComplete(Message m, PeerNode source) {
- long uid = m.getLong(DMT.UID);
+ final long uid = m.getLong(DMT.UID);
if(logMINOR) Logger.minor(this, "handleSwapComplete("+uid+ ')');
- Long luid = new Long(uid);
- RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(luid);
+ RecentlyForwardedItem item = (RecentlyForwardedItem)
recentlyForwardedIDs.get(uid);
if(item == null) {
if(logMINOR) Logger.minor(this, "Item not found: "+uid+": "+m);
return false;
@@ -1277,8 +1272,8 @@
Logger.error(this, "removeRecentlyForwardedItem(null)", new
Exception("error"));
}
synchronized(recentlyForwardedIDs) {
- recentlyForwardedIDs.remove(new Long(item.incomingID));
- recentlyForwardedIDs.remove(new Long(item.outgoingID));
+ recentlyForwardedIDs.remove(item.incomingID);
+ recentlyForwardedIDs.remove(item.outgoingID);
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/Node.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Node.java 2008-09-02
15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/Node.java 2008-09-02
15:13:36 UTC (rev 22349)
@@ -208,16 +208,17 @@
private static class L10nCallback extends StringCallback implements
EnumerableOptionCallback {
public String get() {
- return
L10n.mapLanguageNameToLongName(L10n.getSelectedLanguage());
+ return L10n.getSelectedLanguage().fullName;
}
public void set(String val) throws InvalidConfigValueException {
- if(get().equalsIgnoreCase(val)) return;
+ if(val == null || get().equalsIgnoreCase(val)) return;
try {
L10n.setLanguage(val);
} catch (MissingResourceException e) {
throw new
InvalidConfigValueException(e.getLocalizedMessage());
}
+ PluginManager.setLanguage(L10n.getSelectedLanguage());
}
public void setPossibleValues(String[] val) {
@@ -225,10 +226,7 @@
}
public String[] getPossibleValues() {
- String[] result = new
String[L10n.AVAILABLE_LANGUAGES.length];
- for(int i=0; i<L10n.AVAILABLE_LANGUAGES.length; i++)
- result[i] = L10n.AVAILABLE_LANGUAGES[i][1];
- return result;
+ return L10n.LANGUAGE.valuesWithFullNames();
}
}
@@ -660,7 +658,7 @@
try {
L10n.setLanguage(nodeConfig.getOption("l10n").getDefault());
} catch (MissingResourceException e1) {
- L10n.setLanguage(L10n.FALLBACK_DEFAULT);
+
L10n.setLanguage(L10n.LANGUAGE.getDefault().shortCode);
}
}
@@ -812,12 +810,7 @@
oldBootID = -1;
// If we have an error in reading, *or in writing*, we
don't reliably know the last boot ID.
} finally {
- try {
- if(raf != null)
- raf.close();
- } catch (IOException e) {
- // Ignore
- }
+ Closer.close(raf);
}
lastBootID = oldBootID;
@@ -930,7 +923,7 @@
});
enableSwapping = nodeConfig.getBoolean("enableSwapping");
- nodeConfig.register("publishOurPeersLocation", false,
sortOrder++, true, false, "Node.publishOurPeersLocation",
"Node.publishOurPeersLocationLong", new BooleanCallback() {
+ nodeConfig.register("publishOurPeersLocation", true,
sortOrder++, true, false, "Node.publishOurPeersLocation",
"Node.publishOurPeersLocationLong", new BooleanCallback() {
public Boolean get() {
return publishOurPeersLocation;
@@ -942,7 +935,7 @@
});
publishOurPeersLocation =
nodeConfig.getBoolean("publishOurPeersLocation");
- nodeConfig.register("routeAccordingToOurPeersLocation", false,
sortOrder++, true, false, "Node.routeAccordingToOurPeersLocation",
"Node.routeAccordingToOurPeersLocationLong", new BooleanCallback() {
+ nodeConfig.register("routeAccordingToOurPeersLocation", true,
sortOrder++, true, false, "Node.routeAccordingToOurPeersLocation",
"Node.routeAccordingToOurPeersLocationLong", new BooleanCallback() {
public Boolean get() {
return routeAccordingToOurPeersLocation;
@@ -1175,7 +1168,8 @@
return isAllowedToConnectToSeednodes;
}
public void set(Boolean val) throws
InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
synchronized(Node.this) {
if(opennet != null)
throw new
InvalidConfigValueException("Can't change that setting on the fly when opennet
is already active!");
@@ -3507,6 +3501,6 @@
}
public boolean shallWeRouteAccordingToOurPeersLocation() {
- return routeAccordingToOurPeersLocation;
+ return routeAccordingToOurPeersLocation &&
Version.lastGoodBuild() >= 1160;
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/NodeClientCore.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/NodeClientCore.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1,6 +1,5 @@
package freenet.node;
-import freenet.config.NodeNeedRestartException;
import java.io.File;
import java.io.IOException;
import java.net.URI;
@@ -154,6 +153,8 @@
// FIXME
throw new
InvalidConfigValueException(l10n("movingTempDirOnTheFlyNotSupported"));
}
+
+ @Override
public boolean isReadOnly() {
return true;
}
@@ -180,7 +181,8 @@
}
public void set(Boolean val) throws
InvalidConfigValueException {
- if((val == get()) ||
(persistentTempBucketFactory == null)) return;
+ if (get().equals(val) ||
(persistentTempBucketFactory == null))
+ return;
persistentTempBucketFactory.setEncryption(val);
}
});
@@ -198,6 +200,8 @@
// FIXME
throw new
InvalidConfigValueException("Moving persistent temp directory on the fly not
supported at present");
}
+
+ @Override
public boolean isReadOnly() {
return true;
}
@@ -209,14 +213,15 @@
throw new
NodeInitException(NodeInitException.EXIT_BAD_TEMP_DIR, msg);
}
- nodeConfig.register("maxRAMBucketSize", "32KiB", sortOrder++,
true, false, "NodeClientCore.maxRAMBucketSize",
"NodeClientCore.maxRAMBucketSizeLong", new LongCallback() {
+ nodeConfig.register("maxRAMBucketSize", "128KiB", sortOrder++,
true, false, "NodeClientCore.maxRAMBucketSize",
"NodeClientCore.maxRAMBucketSizeLong", new LongCallback() {
public Long get() {
return (tempBucketFactory == null ? 0 :
tempBucketFactory.getMaxRAMBucketSize());
}
public void set(Long val) throws
InvalidConfigValueException {
- if((val == get()) || (tempBucketFactory ==
null)) return;
+ if (get().equals(val) || (tempBucketFactory ==
null))
+ return;
tempBucketFactory.setMaxRAMBucketSize(val);
}
});
@@ -227,7 +232,8 @@
}
public void set(Long val) throws
InvalidConfigValueException {
- if((val == get()) || (tempBucketFactory ==
null)) return;
+ if (get().equals(val) || (tempBucketFactory ==
null))
+ return;
tempBucketFactory.setMaxRamUsed(val);
}
});
@@ -239,11 +245,12 @@
}
public void set(Boolean val) throws
InvalidConfigValueException {
- if((val == get()) || (tempBucketFactory ==
null)) return;
+ if (get().equals(val) || (tempBucketFactory ==
null))
+ return;
tempBucketFactory.setEncryption(val);
}
});
- tempBucketFactory = new
TempBucketFactory(tempFilenameGenerator,
nodeConfig.getLong("maxRAMBucketSize"),
nodeConfig.getLong("RAMBucketPoolSize"), random, node.fastWeakRandom,
nodeConfig.getBoolean("encryptTempBuckets"));
+ tempBucketFactory = new TempBucketFactory(node.executor,
tempFilenameGenerator, nodeConfig.getLong("maxRAMBucketSize"),
nodeConfig.getLong("RAMBucketPoolSize"), random, node.fastWeakRandom,
nodeConfig.getBoolean("encryptTempBuckets"));
// Downloads directory
@@ -314,22 +321,8 @@
}
});
setUploadAllowedDirs(nodeConfig.getStringArr("uploadAllowedDirs"));
-
- nodeConfig.register("maxArchiveSize", "5MiB", sortOrder++,
true, false, "NodeClientCore.maxArchiveSize",
"NodeClientCore.maxArchiveSizeLong", new LongCallback() {
-
- @Override
- public Long get() {
- return archiveManager.getMaxArchiveSize();
- }
-
- @Override
- public void set(Long val) throws
InvalidConfigValueException, NodeNeedRestartException {
- if(val == get()) return;
- archiveManager.setMaxArchiveSize(val);
- }
- });
- archiveManager = new ArchiveManager(MAX_ARCHIVE_HANDLERS,
MAX_CACHED_ARCHIVE_DATA, nodeConfig.getLong("maxArchiveSize"),
MAX_ARCHIVED_FILE_SIZE, MAX_CACHED_ELEMENTS, tempBucketFactory);
+ archiveManager = new ArchiveManager(MAX_ARCHIVE_HANDLERS,
MAX_CACHED_ARCHIVE_DATA, MAX_ARCHIVED_FILE_SIZE, MAX_CACHED_ELEMENTS,
tempBucketFactory);
Logger.normal(this, "Initializing USK Manager");
System.out.println("Initializing USK Manager");
uskManager = new USKManager(this);
Modified: branches/saltedhashstore/freenet/src/freenet/node/NodeCrypto.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/NodeCrypto.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/NodeCrypto.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -366,7 +366,7 @@
private byte[] myCompressedRef(boolean setup, boolean heavySetup,
boolean forARK) {
SimpleFieldSet fs = exportPublicFieldSet(setup, heavySetup,
forARK);
- boolean shouldStripGroup = ((setup || heavySetup) && !forARK)
&& Global.DSAgroupBigA.equals(cryptoGroup);
+ boolean shouldStripGroup = heavySetup &&
Global.DSAgroupBigA.equals(cryptoGroup);
if(shouldStripGroup)
fs.removeSubset("dsaGroup");
Modified: branches/saltedhashstore/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/NodeStarter.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/NodeStarter.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -33,7 +33,7 @@
private Node node;
private static LoggingConfigHandler logConfigHandler;
- public final static int RECOMMENDED_EXT_BUILD_NUMBER = 20;
+ public final static int RECOMMENDED_EXT_BUILD_NUMBER = 21;
/*
(File.separatorChar == '\\') &&
(System.getProperty("os.arch").toLowerCase().matches("(i?[x0-9]86_64|amd64)"))
? 6 : 2;
Modified: branches/saltedhashstore/freenet/src/freenet/node/NodeStats.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/NodeStats.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/NodeStats.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -216,7 +216,8 @@
return threadLimit;
}
public void set(Integer val) throws
InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
if(val < 100)
throw new
InvalidConfigValueException(l10n("valueTooLow"));
threadLimit = val;
@@ -231,7 +232,8 @@
return aggressiveGCModificator;
}
public void set(Integer val) throws
InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
Logger.normal(this, "Changing
aggressiveGCModificator to "+val);
aggressiveGCModificator = val;
}
@@ -246,7 +248,8 @@
}
public void set(Boolean val) throws
InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
if(val)
myMemoryChecker.start();
Modified: branches/saltedhashstore/freenet/src/freenet/node/PeerManager.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/PeerManager.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/PeerManager.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -80,12 +80,20 @@
/** routableConnectionStats update interval (milliseconds) */
private static final long routableConnectionStatsUpdateInterval = 7 *
1000; // 7 seconds
- /**
- * Track the number of times a PeerNode has been selected by the
routing algorithm
- * @see PeerNode.numberOfSelections
- */
- private SortedSet<Long> numberOfSelectionSamples = new TreeSet<Long>();
- private final Object numberOfSelectionSamplesSync = new Object();
+ /** Should update the peer-file ? */
+ private volatile boolean shouldWritePeers = false;
+ private static final int MIN_WRITEPEERS_DELAY = 5*1000; // 5sec
+ private final Runnable writePeersRunnable = new Runnable() {
+
+ public void run() {
+ if(shouldWritePeers) {
+ shouldWritePeers = false;
+ writePeersInner();
+ }
+
+ node.ps.queueTimedJob(writePeersRunnable,
MIN_WRITEPEERS_DELAY);
+ }
+ };
public static final int PEER_NODE_STATUS_CONNECTED = 1;
public static final int PEER_NODE_STATUS_ROUTING_BACKED_OFF = 2;
@@ -866,6 +874,15 @@
long now = System.currentTimeMillis();
int count = 0;
+
+ Long selectionSamplesTimestamp = now -
PeerNode.SELECTION_SAMPLING_PERIOD;
+ double[] selectionRates = new double[peers.length];
+ double totalSelectionRate = 0.0;
+ for(int i=0;i<peers.length;i++) {
+ selectionRates[i] = peers[i].selectionRate();
+ totalSelectionRate += selectionRates[i];
+ }
+ boolean enableFOAFMitigationHack = (peers.length >=
PeerNode.SELECTION_MIN_PEERS) && (totalSelectionRate > 0.0);
for(int i = 0; i < peers.length; i++) {
PeerNode p = peers[i];
if(routedTo.contains(p)) {
@@ -888,6 +905,16 @@
Logger.minor(this, "Skipping old
version: " + p.getPeer());
continue;
}
+ if(enableFOAFMitigationHack) {
+ double selectionRate = selectionRates[i];
+ double selectionSamplesPercentage =
selectionRate / totalSelectionRate;
+ if(PeerNode.SELECTION_PERCENTAGE_WARNING <
selectionSamplesPercentage) {
+ if(logMINOR)
+ Logger.minor(this, "Skipping
over-selectionned peer(" + selectionSamplesPercentage + "%): " + p.getPeer());
+ continue;
+ }
+ }
+
long timeout = -1;
if(entry != null)
timeout = entry.getTimeoutTime(p);
@@ -897,7 +924,7 @@
double diff = Location.distance(loc, target);
double[] peersLocation = p.getPeersLocation();
- if((node.shallWeRouteAccordingToOurPeersLocation()) &&
(peersLocation != null)) {
+ if((peersLocation != null) &&
(node.shallWeRouteAccordingToOurPeersLocation())) {
for(double l : peersLocation) {
double newDiff = Location.distance(l,
target);
if(newDiff < diff) {
@@ -1069,12 +1096,7 @@
private final Object writePeerFileSync = new Object();
void writePeers() {
- node.ps.queueTimedJob(new Runnable() {
-
- public void run() {
- writePeersInner();
- }
- }, 0);
+ shouldWritePeers = true;
}
protected StringBuilder getDarknetPeersString() {
@@ -1282,6 +1304,7 @@
ua = new PeerManagerUserAlert(node.nodeStats);
updatePMUserAlert();
node.clientCore.alerts.register(ua);
+ node.ps.queueTimedJob(writePeersRunnable, 0);
}
public int countNonBackedOffPeers() {
@@ -1865,19 +1888,8 @@
return null;
}
- public SortedSet<Long> getNumberOfSelectionSamples() {
- synchronized (numberOfSelectionSamplesSync) {
- return new TreeSet<Long>(numberOfSelectionSamples);
- }
- }
-
private void incrementSelectionSamples(long now, PeerNode pn) {
// TODO: reimplement with a bit field to spare memory
- synchronized (numberOfSelectionSamplesSync) {
- if(numberOfSelectionSamples.size() >
PeerNode.SELECTION_MAX_SAMPLES * OpennetManager.MAX_PEERS_FOR_SCALING)
- numberOfSelectionSamples =
numberOfSelectionSamples.tailSet(now - PeerNode.SELECTION_SAMPLING_PERIOD);
- numberOfSelectionSamples.add(now);
- pn.incrementNumberOfSelections(now);
- }
+ pn.incrementNumberOfSelections(now);
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -153,16 +153,13 @@
/** Time added or restarted (reset on startup unlike peerAddedTime) */
private long timeAddedOrRestarted;
- /**
- * Track the number of times this PeerNode has been selected by
- * the routing algorithm over a given period of time
- */
- private SortedSet<Long> numberOfSelections = new TreeSet<Long>();
- private final Object numberOfSelectionsSync = new Object();
+ private long countSelectionsSinceConnected = 0;
// 5mins; yes it's alchemy!
public static final int SELECTION_SAMPLING_PERIOD = 5 * 60 * 1000;
// 30%; yes it's alchemy too! and probably *way* too high to serve any
purpose
public static final int SELECTION_PERCENTAGE_WARNING = 30;
+ // Minimum number of routable peers to have for the selection code to
have any effect
+ public static final int SELECTION_MIN_PEERS = 5;
// Should be good enough provided we don't get selected more than 10
times per/sec
// Lower the following value if you want to spare memory... or better
switch from a TreeSet to a bit field.
public static final int SELECTION_MAX_SAMPLES = 10 *
SELECTION_SAMPLING_PERIOD / 1000;
@@ -1895,6 +1892,7 @@
// Don't reset the uptime if we rekey
if(!isConnected) {
connectedTime = now;
+ countSelectionsSinceConnected = 0;
sentInitialMessages = false;
} else
wasARekey = true;
@@ -3993,22 +3991,23 @@
return (short)(((int)uptime) & 0xFF);
}
- public SortedSet<Long> getNumberOfSelections() {
- // FIXME: returning a copy is not an option: find a smarter way
of dealing with the synchronization
- synchronized(numberOfSelectionsSync) {
- return numberOfSelections;
- }
- }
-
public void incrementNumberOfSelections(long time) {
// TODO: reimplement with a bit field to spare memory
- synchronized(numberOfSelectionsSync) {
- if(numberOfSelections.size() > SELECTION_MAX_SAMPLES)
- numberOfSelections =
numberOfSelections.tailSet(time - SELECTION_SAMPLING_PERIOD);
- numberOfSelections.add(time);
+ synchronized(this) {
+ countSelectionsSinceConnected++;
}
}
+ /**
+ * @return The rate at which this peer has been selected since it
connected.
+ */
+ public synchronized double selectionRate() {
+ long uptime = System.currentTimeMillis() - this.connectedTime;
+ // Avoid bias due to short uptime.
+ if(uptime < 10*1000) return 0.0;
+ return countSelectionsSinceConnected / (double) uptime;
+ }
+
private long offeredMainJarVersion;
public void setMainJarOfferedVersion(long mainJarVersion) {
Modified: branches/saltedhashstore/freenet/src/freenet/node/PeerNodeStatus.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/PeerNodeStatus.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/PeerNodeStatus.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -95,7 +95,7 @@
private final int reportedUptimePercentage;
- private final SortedSet<Long> numberOfSelections;
+ private final double selectionRate;
PeerNodeStatus(PeerNode peerNode, boolean noHeavy) {
if(Logger.shouldLog(Logger.MINOR, this)) {
@@ -109,7 +109,7 @@
peerAddress = p.getFreenetAddress().toString();
peerPort = p.getPort();
}
- this.numberOfSelections = peerNode.getNumberOfSelections();
+ this.selectionRate = peerNode.selectionRate();
this.statusValue = peerNode.getPeerNodeStatus();
this.statusName = peerNode.getPeerNodeStatusString();
this.statusCSSName = peerNode.getPeerNodeStatusCSSClassName();
@@ -398,7 +398,7 @@
return reportedUptimePercentage;
}
- public SortedSet<Long> getNumberOfSelections() {
- return numberOfSelections;
+ public double getSelectionRate() {
+ return selectionRate;
}
}
Modified:
branches/saltedhashstore/freenet/src/freenet/node/SimpleSendableInsert.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/SimpleSendableInsert.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/SimpleSendableInsert.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -120,16 +120,17 @@
public synchronized Object[] allKeys() {
if(finished) return new Object[] {};
- return new Object[] { new Integer(0) };
+ return new Object[] { 0 };
}
public synchronized Object[] sendableKeys() {
if(finished) return new Object[] {};
- return new Object[] { new Integer(0) };
+ return new Object[] { 0 };
}
public synchronized Object chooseKey(KeysFetchingLocally keys) {
if(finished) return null;
- else return new Integer(0);
+ else
+ return 0;
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/TestnetHandler.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/TestnetHandler.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/TestnetHandler.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -243,7 +243,8 @@
}
public void set(Integer val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
node.testnetHandler.rebind(val);
}
}
Modified:
branches/saltedhashstore/freenet/src/freenet/node/TextModeClientInterfaceServer.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/node/TextModeClientInterfaceServer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/node/TextModeClientInterfaceServer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -116,7 +116,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
// FIXME implement - see bug #122
throw new InvalidConfigValueException("Cannot be updated on the
fly");
}
@@ -132,7 +133,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
if(!SSL.available()) {
throw new InvalidConfigValueException("Enable
SSL support before use ssl with TMCI");
}
@@ -157,7 +159,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
// FIXME implement - see bug #122
throw new InvalidConfigValueException("Cannot be updated on the
fly");
}
@@ -236,7 +239,8 @@
// TODO: implement it
public void set(Integer val) throws InvalidConfigValueException {
- if(val == get()) return;
+ if (get().equals(val))
+ return;
core.getTextModeClientInterface().setPort(val);
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/UptimeEstimator.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/UptimeEstimator.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/UptimeEstimator.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -11,11 +11,11 @@
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.text.DecimalFormat;
import freenet.support.Fields;
import freenet.support.Logger;
import freenet.support.io.Closer;
-import java.text.DecimalFormat;
/**
* A class to estimate the node's average uptime. Every 5 minutes (with a
fixed offset), we write
@@ -88,6 +88,8 @@
}
} catch (EOFException e) {
// Finished
+ } finally {
+ Closer.close(dis);
}
} catch (IOException e) {
Logger.error(this, "Unable to read old uptime file:
"+file+" - we will assume we weren't online during that period");
@@ -119,6 +121,7 @@
} catch (IOException e) {
Logger.error(this, "Unable to write to uptime estimator
log file: "+logFile);
} finally {
+ Closer.close(dos);
Closer.close(fos);
// Schedule next time
schedule(now);
Modified: branches/saltedhashstore/freenet/src/freenet/node/Version.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Version.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/Version.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1158;
+ private static final int buildNumber = 1160;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 1155;
- private static final int newLastGoodBuild = 1158;
+ private static final int oldLastGoodBuild = 1158;
+ private static final int newLastGoodBuild = 1160;
static final long transitionTime;
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2008, Calendar.AUGUST, 20, 0, 0, 0 );
+ _cal.set( 2008, Calendar.SEPTEMBER, 5, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/fcp/FCPServer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/fcp/FCPServer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -206,7 +206,7 @@
}
public void set(Integer val) throws InvalidConfigValueException
{
- if(val != get()) {
+ if (!get().equals(val)) {
throw new InvalidConfigValueException("Cannot
change FCP port number on the fly");
}
}
@@ -229,7 +229,7 @@
}
//TODO: Allow it
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val != get()) {
+ if (!get().equals(val)) {
throw new
InvalidConfigValueException(l10n("cannotStartOrStopOnTheFly"));
}
}
@@ -246,7 +246,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
if(!SSL.available()) {
throw new InvalidConfigValueException("Enable
SSL support before use ssl with FCP");
}
@@ -387,7 +388,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
server.assumeDownloadDDAIsAllowed = val;
}
}
@@ -400,7 +402,8 @@
}
public void set(Boolean val) throws InvalidConfigValueException
{
- if(val == get()) return;
+ if (get().equals(val))
+ return;
server.assumeUploadDDAIsAllowed = val;
}
}
Modified:
branches/saltedhashstore/freenet/src/freenet/node/fcp/NodeHelloMessage.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/fcp/NodeHelloMessage.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/node/fcp/NodeHelloMessage.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -43,7 +43,7 @@
sfs.putSingle("Testnet", Boolean.toString(node == null ? false
: node.isTestnetEnabled()));
sfs.putSingle("CompressionCodecs",
Integer.toString(Compressor.countCompressAlgorithms()));
sfs.putSingle("ConnectionIdentifier", id);
- sfs.putSingle("NodeLanguage", L10n.getSelectedLanguage());
+ sfs.putSingle("NodeLanguage",
L10n.getSelectedLanguage().toString());
return sfs;
}
Modified:
branches/saltedhashstore/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -79,7 +79,7 @@
/** Maximum time between asking for the main jar and it starting to
transfer */
static final int REQUEST_MAIN_JAR_TIMEOUT = 60*1000;
//** Grace time before we use UoM to update */
- public static final int GRACE_TIME = 60*60*1000; // 1h
+ public static final int GRACE_TIME = 3*60*60*1000; // 3h
private boolean logMINOR;
private UserAlert alert;
@@ -227,8 +227,9 @@
// If we have fetches running already, then
sendUOMRequestMain() will add the offer to nodesOfferedMainJar,
// so that if all our fetches fail, we can
fetch from this node.
if(!isOutdated) {
- Logger.error(this, "The update
process seems to have been stuck for over an hour; let's switch to UoM! SHOULD
NOT HAPPEN! (1)");
- System.out.println("The update
process seems to have been stuck for over an hour; let's switch to UoM! SHOULD
NOT HAPPEN! (1)");
+ String howLong =
TimeUtil.formatTime(now - started);
+ Logger.error(this, "The update
process seems to have been stuck for "+ howLong +"; let's switch to UoM! SHOULD
NOT HAPPEN! (1)");
+ System.out.println("The update
process seems to have been stuck for "+ howLong +"; let's switch to UoM! SHOULD
NOT HAPPEN! (1)");
} else
if(logMINOR) Logger.minor(this,
"Fetching via UOM as our build is deprecated");
// Fetch it
@@ -256,8 +257,8 @@
if(!updateManager.isEnabled())
return;
if(updateManager.hasNewMainJar()) return;
if(!updateManager.node.isOudated()) {
- Logger.error(this, "The
update process seems to have been stuck for over an hour; let's switch to UoM!
SHOULD NOT HAPPEN! (2)");
- System.out.println("The
update process seems to have been stuck for over an hour; let's switch to UoM!
SHOULD NOT HAPPEN! (2)");
+ Logger.error(this, "The
update process seems to have been stuck for too long; let's switch to UoM!
SHOULD NOT HAPPEN! (2)");
+ System.out.println("The
update process seems to have been stuck for too long; let's switch to UoM!
SHOULD NOT HAPPEN! (2)");
}
maybeRequestMainJar();
}
@@ -383,6 +384,7 @@
super(false, null, null, null, null,
UserAlert.CRITICAL_ERROR, true, null, false, null);
}
+ @Override
public HTMLNode getHTMLText() {
HTMLNode div = new HTMLNode("div");
@@ -434,6 +436,7 @@
return L10n.getString("PeersSayKeyBlownAlert."+key,
pattern, value);
}
+ @Override
public String getText() {
StringBuffer sb = new StringBuffer();
sb.append(l10n("intro")).append("\n\n");
@@ -477,14 +480,17 @@
return sb.toString();
}
+ @Override
public String getTitle() {
return l10n("titleWithCount", "count",
Integer.toString(nodesSayKeyRevoked.size()));
}
+ @Override
public void isValid(boolean validity) {
// Do nothing
}
+ @Override
public String getShortText() {
return l10n("short");
}
@@ -603,6 +609,7 @@
Logger.minor(this, "Message
sent, data soon");
}
+ @Override
public String toString() {
return super.toString() +
"("+uid+":"+source.getPeer()+")";
}
@@ -977,6 +984,7 @@
Logger.minor(this, "Message
sent, data soon");
}
+ @Override
public String toString() {
return super.toString() +
"("+uid+":"+source.getPeer()+")";
}
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -9,6 +9,6 @@
public interface ForwardPortCallback {
/** Called to indicate status on one or more forwarded ports. */
- public void portForwardStatus(Map /*<ForwardPort,ForwardPortStatus>*/
statuses);
+ public void portForwardStatus(Map<ForwardPort,ForwardPortStatus>
statuses);
}
Added:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginL10n.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginL10n.java
(rev 0)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginL10n.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -0,0 +1,19 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.pluginmanager;
+
+import freenet.l10n.L10n.LANGUAGE;
+
+/**
+ * Interface that has to be implemented for plugins that wants to use
+ * PageMaker.addNavigationLink(..)
+ *
+ * @author saces
+ */
+public interface FredPluginL10n {
+
+ public String getString(String key);
+
+ public void setLanguage(LANGUAGE newLanguage);
+}
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -16,6 +16,6 @@
* @param cb Callback to be called with success/failure of each
forward. Some
* plugins may return a probabilistic success e.g. with UP&P.
*/
- public void onChangePublicPorts(Set/*<ForwardPort>*/ ports,
ForwardPortCallback cb);
+ public void onChangePublicPorts(Set<ForwardPort> ports,
ForwardPortCallback cb);
}
Added:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginThemed.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginThemed.java
(rev 0)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/FredPluginThemed.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -0,0 +1,21 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.pluginmanager;
+
+import freenet.clients.http.PageMaker.THEME;
+
+/**
+ * Interface that has to be implemented for plugins that wants to use
+ * nodes html look (css theme) but not PageMaker.<br />
+ *
+ * Very geek'ish and not recommended. Use PageMaker instead. {see
FredPluginL10n}
+ *
+ * @author saces
+ *
+ */
+public interface FredPluginThemed {
+
+ public void setTheme(THEME theme);
+
+}
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginDownLoaderOfficial.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginDownLoaderOfficial.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginDownLoaderOfficial.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -84,7 +84,12 @@
Certificate cert = (Certificate) it.next();
ks.setCertificateEntry(cert.getPublicKey().toString(), cert);
}
- ks.store(new FileOutputStream(TMP_KEYSTORE), new
char[0]);
+ FileOutputStream tmpFOS = new
FileOutputStream(TMP_KEYSTORE);
+ try {
+ ks.store(tmpFOS, new char[0]);
+ } finally {
+ Closer.close(tmpFOS);
+ }
System.out.println("The CA has been imported into the
trustStore");
} catch(Exception e) {
System.err.println("Error while handling the CA :" +
e.getMessage());
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginHandler.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginHandler.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginHandler.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -20,7 +20,7 @@
* @param plug
*/
public static PluginInfoWrapper startPlugin(PluginManager pm, String
filename, FredPlugin plug, PluginRespirator pr) {
- final PluginInfoWrapper pi = new PluginInfoWrapper(plug,
filename);
+ final PluginInfoWrapper pi = new PluginInfoWrapper(pr, plug,
filename);
final PluginStarter ps = new PluginStarter(pr, pi);
ps.setPlugin(pm, plug);
// We must start the plugin *after startup has finished*
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -13,6 +13,7 @@
private final String className;
private Thread thread;
private final long start;
+ final PluginRespirator pr;
private final String threadName;
final FredPlugin plug;
private final boolean isPproxyPlugin;
@@ -27,11 +28,14 @@
private HashSet<String> toadletLinks = new HashSet<String>();
private volatile boolean stopping = false;
private volatile boolean unregistered = false;
+ private final boolean isThemedPlugin;
+ private final boolean isL10nPlugin;
- public PluginInfoWrapper(FredPlugin plug, String filename) {
+ public PluginInfoWrapper(PluginRespirator pr, FredPlugin plug, String
filename) {
this.plug = plug;
className = plug.getClass().toString();
this.filename = filename;
+ this.pr = pr;
threadName = 'p' + className.replaceAll("^class ", "") + '_' +
hashCode();
start = System.currentTimeMillis();
fedPluginThread = true;
@@ -43,6 +47,8 @@
isMultiplePlugin = (plug instanceof FredPluginMultiple);
isFCPPlugin = (plug instanceof FredPluginFCP);
isVersionedPlugin = (plug instanceof FredPluginVersioned);
+ isThemedPlugin = (plug instanceof FredPluginThemed);
+ isL10nPlugin = (plug instanceof FredPluginL10n);
}
void setThread(Thread ps) {
@@ -179,6 +185,13 @@
public boolean isFCPPlugin() {
return isFCPPlugin;
}
+
+ public boolean isThemedPlugin() {
+ return isThemedPlugin;
+ }
+ public boolean isL10nPlugin() {
+ return isL10nPlugin;
+ }
public synchronized boolean isStopping() {
return stopping;
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginManager.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginManager.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -25,10 +25,12 @@
import java.util.zip.ZipException;
import freenet.client.HighLevelSimpleClient;
+import freenet.clients.http.PageMaker.THEME;
import freenet.config.InvalidConfigValueException;
import freenet.config.SubConfig;
import freenet.keys.FreenetURI;
import freenet.l10n.L10n;
+import freenet.l10n.L10n.LANGUAGE;
import freenet.node.Node;
import freenet.node.NodeClientCore;
import freenet.node.RequestStarter;
@@ -38,10 +40,12 @@
import freenet.support.HexUtil;
import freenet.support.JarClassLoader;
import freenet.support.Logger;
+import freenet.support.SerialExecutor;
import freenet.support.api.HTTPRequest;
import freenet.support.api.StringArrCallback;
import freenet.support.io.Closer;
import freenet.support.io.FileUtil;
+import freenet.support.io.NativeThread;
public class PluginManager {
@@ -65,9 +69,14 @@
private boolean logMINOR;
private boolean logDEBUG;
private final HighLevelSimpleClient client;
+
+ private static PluginManager selfinstance = null;
+ private THEME fproxyTheme;
+
+ private final SerialExecutor executor;
+
public PluginManager(Node node) {
-
logMINOR = Logger.shouldLog(Logger.MINOR, this);
logDEBUG = Logger.shouldLog(Logger.DEBUG, this);
// config
@@ -85,7 +94,10 @@
client =
core.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS, true);
-
+ // callback executor
+ executor = new SerialExecutor(NativeThread.NORM_PRIORITY);
+ executor.start(node.executor, "PM callback executor");
+
pmconfig = new SubConfig("pluginmanager", node.config);
// pmconfig.register("configfile", "fplugins.ini", 9, true, true,
"PluginConfig.configFile", "PluginConfig.configFileLong",
// new StringCallback() {
@@ -140,6 +152,9 @@
startPluginAuto(name, false);
pmconfig.finishedInitialization();
+
+ fproxyTheme =
THEME.themeFromName(node.config.get("fproxy").getString("css"));
+ selfinstance = this;
}
private String[] getConfigLoadString() {
@@ -204,7 +219,7 @@
}
public void startPluginFreenet(final String filename, boolean store) {
- realStartPlugin(new PluginDownLoaderFreenet(client), filename,
true);
+ realStartPlugin(new PluginDownLoaderFreenet(client), filename,
store);
}
private void realStartPlugin(final PluginDownLoader pdl, final String
filename, final boolean store) {
@@ -222,7 +237,7 @@
try {
plug = loadPlugin(pdl, filename);
pluginProgress.setProgress(PluginProgress.STARTING);
- PluginInfoWrapper pi =
PluginHandler.startPlugin(PluginManager.this, filename, plug, new
PluginRespirator(node, PluginManager.this));
+ PluginInfoWrapper pi =
PluginHandler.startPlugin(PluginManager.this, filename, plug, new
PluginRespirator(node, PluginManager.this, plug));
synchronized(pluginWrappers) {
pluginWrappers.add(pi);
}
@@ -845,4 +860,52 @@
return "PluginProgress[name=" + name + ",startingTime="
+ startingTime + ",progress=" + pluginProgress + "]";
}
}
+
+ public void setFProxyTheme(final THEME cssName) {
+ //if (fproxyTheme.equals(cssName)) return;
+ fproxyTheme = cssName;
+ synchronized(pluginWrappers) {
+ for(PluginInfoWrapper pi: pluginWrappers) {
+ pi.pr.getPageMaker().setTheme(cssName);
+ if(pi.isThemedPlugin()) {
+ final FredPluginThemed plug =
(FredPluginThemed)(pi.plug);
+ executor.execute(new Runnable() {
+ public void run() {
+ try {
+
plug.setTheme(cssName);
+ } catch (Throwable t) {
+
Logger.error(this, "Cought Trowable in Callback", t);
+ }
+ }}, "Callback");
+ }
+ }
+ }
+ }
+
+ public static void setLanguage(LANGUAGE lang) {
+ if (selfinstance == null) return;
+ selfinstance.setPluginLanguage(lang);
+ }
+
+ private void setPluginLanguage(final LANGUAGE lang) {
+ synchronized(pluginWrappers) {
+ for(PluginInfoWrapper pi: pluginWrappers) {
+ if(pi.isL10nPlugin()) {
+ final FredPluginL10n plug =
(FredPluginL10n)(pi.plug);
+ executor.execute(new Runnable() {
+ public void run() {
+ try {
+
plug.setLanguage(lang);
+ } catch (Throwable t) {
+
Logger.error(this, "Cought Trowable in Callback", t);
+ }
+ }}, "Callback");
+ }
+ }
+ }
+ }
+
+ public THEME getFProxyTheme() {
+ return fproxyTheme;
+ }
}
Modified:
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginRespirator.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginRespirator.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/pluginmanager/PluginRespirator.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -14,11 +14,18 @@
private final HighLevelSimpleClient hlsc;
private final Node node;
private final PageMaker pageMaker;
+ private final FredPlugin plugin;
+ private final PluginManager pluginManager;
- public PluginRespirator(Node node, PluginManager pm) {
+ public PluginRespirator(Node node, PluginManager pm, FredPlugin plug) {
this.node = node;
this.hlsc =
node.clientCore.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS);
- this.pageMaker = new PageMaker("clean");
+ this.plugin = plug;
+ this.pluginManager = pm;
+ if (plugin instanceof FredPluginL10n)
+ pageMaker = new PageMaker((FredPluginL10n)plugin,
pluginManager.getFProxyTheme());
+ else
+ pageMaker = new PageMaker(null,
pluginManager.getFProxyTheme());
}
//public HighLevelSimpleClient getHLSimpleClient() throws
PluginSecurityException {
Modified:
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -497,7 +497,7 @@
maybeQuickShrink(true);
return;
}
- Integer blockNum = new
Integer((int)storeBlock.offset);
+ Integer blockNum = (int) storeBlock.offset;
//Long seqNum = new
Long(storeBlock.recentlyUsed);
//System.out.println("#"+x+" seq "+seqNum+":
block "+blockNum);
if(blockNum.longValue() >= realSize) {
@@ -2318,18 +2318,10 @@
return false;
}
- Cursor c = null;
try {
return keysDB.get(null, routingkeyDBE, blockDBE,
LockMode.READ_UNCOMMITTED) == OperationStatus.SUCCESS;
} catch (DatabaseException e) {
return false;
- } finally {
- try {
- if (c != null)
- c.close();
- } catch (DatabaseException e) {
- // ignore
- }
- }
+ }
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/support/Fields.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/Fields.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/Fields.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -21,54 +21,56 @@
* All possible chars for representing a number as a String. Used to
* optimize numberList().
*/
- private final static char[] digits =
- {
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- 'a',
- 'b',
- 'c',
- 'd',
- 'e',
- 'f',
- 'g',
- 'h',
- 'i',
- 'j',
- 'k',
- 'l',
- 'm',
- 'n',
- 'o',
- 'p',
- 'q',
- 'r',
- 's',
- 't',
- 'u',
- 'v',
- 'w',
- 'x',
- 'y',
- 'z' };
-
+ private final static char[] digits = {
+ '0',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ 'a',
+ 'b',
+ 'c',
+ 'd',
+ 'e',
+ 'f',
+ 'g',
+ 'h',
+ 'i',
+ 'j',
+ 'k',
+ 'l',
+ 'm',
+ 'n',
+ 'o',
+ 'p',
+ 'q',
+ 'r',
+ 's',
+ 't',
+ 'u',
+ 'v',
+ 'w',
+ 'x',
+ 'y',
+ 'z'
+ };
private static final long[] MULTIPLES = {
- 1000, 1l << 10,
- 1000 * 1000, 1l << 20,
- 1000l * 1000l * 1000l, 1l << 30,
- 1000l * 1000l * 1000l * 1000l, 1l << 40,
- 1000l * 1000l * 1000l * 1000l * 1000, 1l << 50,
- 1000l * 1000l * 1000l * 1000l * 1000l * 1000l, 1l << 60
+ 1000, 1l << 10,
+ 1000 * 1000, 1l << 20,
+ 1000l * 1000l * 1000l, 1l << 30,
+ 1000l * 1000l * 1000l * 1000l, 1l << 40,
+ 1000l * 1000l * 1000l * 1000l * 1000, 1l << 50,
+ 1000l * 1000l * 1000l * 1000l * 1000l * 1000l, 1l << 60
};
-
+ private static final String[] MULTIPLES_2 = {
+ "k", "K", "m", "M", "g", "G", "t", "T", "p", "P", "e", "E"
+ };
+
/**
* Converts a hex string into a long. Long.parseLong(hex, 16) assumes
the
* input is nonnegative unless there is a preceding minus sign. This
method
@@ -88,14 +90,14 @@
public static final long hexToLong(String hex)
throws NumberFormatException {
int len = hex.length();
- if (len > 16)
+ if(len > 16)
throw new NumberFormatException();
long l = 0;
- for (int i = 0; i < len; i++) {
+ for(int i = 0; i < len; i++) {
l <<= 4;
int c = Character.digit(hex.charAt(i), 16);
- if (c < 0)
+ if(c < 0)
throw new NumberFormatException();
l |= c;
}
@@ -120,14 +122,14 @@
*/
public static final int hexToInt(String hex) throws
NumberFormatException {
int len = hex.length();
- if (len > 16)
+ if(len > 16)
throw new NumberFormatException();
int l = 0;
- for (int i = 0; i < len; i++) {
+ for(int i = 0; i < len; i++) {
l <<= 4;
int c = Character.digit(hex.charAt(i), 16);
- if (c < 0)
+ if(c < 0)
throw new NumberFormatException();
l |= c;
}
@@ -149,7 +151,8 @@
*/
/* wooo, rocket science! (this is purely abstraction people) */
public static final boolean stringToBool(String s, boolean def) {
- if(s == null) return def;
+ if(s == null)
+ return def;
return (def ? !s.equalsIgnoreCase("false") :
s.equalsIgnoreCase("true"));
}
@@ -159,10 +162,13 @@
* @return
*/
public static boolean stringToBool(String s) throws
NumberFormatException {
- if(s == null) throw new NumberFormatException("Null");
- if(s.equalsIgnoreCase("false") || s.equalsIgnoreCase("no"))
return false;
- if(s.equalsIgnoreCase("true") || s.equalsIgnoreCase("yes"))
return true;
- throw new NumberFormatException("Invalid boolean: "+s);
+ if(s == null)
+ throw new NumberFormatException("Null");
+ if(s.equalsIgnoreCase("false") || s.equalsIgnoreCase("no"))
+ return false;
+ if(s.equalsIgnoreCase("true") || s.equalsIgnoreCase("yes"))
+ return true;
+ throw new NumberFormatException("Invalid boolean: " + s);
}
/**
@@ -177,10 +183,11 @@
}
public static final String[] commaList(String ls) {
- if(ls == null) return null;
+ if(ls == null)
+ return null;
StringTokenizer st = new StringTokenizer(ls, ",");
String[] r = new String[st.countTokens()];
- for (int i = 0; i < r.length; i++) {
+ for(int i = 0; i < r.length; i++) {
r[i] = st.nextToken().trim();
}
return r;
@@ -191,10 +198,10 @@
}
public static final String textList(String[] ls, char ch) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < ls.length; i++) {
+ StringBuilder sb = new StringBuilder();
+ for(int i = 0; i < ls.length; i++) {
sb.append(ls[i]);
- if (i != ls.length - 1)
+ if(i != ls.length - 1)
sb.append(ch);
}
return sb.toString();
@@ -204,7 +211,7 @@
throws NumberFormatException {
StringTokenizer st = new StringTokenizer(ls, ",");
long[] r = new long[st.countTokens()];
- for (int i = 0; i < r.length; i++) {
+ for(int i = 0; i < r.length; i++) {
r[i] = hexToLong(st.nextToken());
}
return r;
@@ -212,8 +219,8 @@
public static final String numberList(long[] ls) {
char[] numberBuf = new char[64];
- StringBuffer listBuf = new StringBuffer(ls.length * 18);
- for (int i = 0; i < ls.length; i++) {
+ StringBuilder listBuf = new StringBuilder(ls.length * 18);
+ for(int i = 0; i < ls.length; i++) {
// Convert the number into a string in a fixed size
buffer.
long l = ls[i];
@@ -221,12 +228,11 @@
do {
numberBuf[--charPos] = digits[(int) (l & 0x0F)];
l >>>= 4;
- } while (l != 0);
+ } while(l != 0);
listBuf.append(numberBuf, charPos, (64 - charPos));
- if (i != ls.length - 1) {
+ if(i != ls.length - 1)
listBuf.append(',');
- }
}
return listBuf.toString();
}
@@ -242,53 +248,39 @@
public static final long dateTime(String date)
throws NumberFormatException {
- if (date.length() == 0)
+ if(date.length() == 0)
throw new NumberFormatException("Date time empty");
- if ((date.charAt(0) == '-') || (date.charAt(0) == '+')) {
+ if((date.charAt(0) == '-') || (date.charAt(0) == '+')) {
// Relative date
- StringBuffer sb = new StringBuffer(10);
- for (int x = 1; x < date.length(); x++) {
+ StringBuilder sb = new StringBuilder(10);
+ for(int x = 1; x < date.length(); x++) {
char c = date.charAt(x);
- if (Character.isDigit(c)) {
+ if(Character.isDigit(c))
sb.append(c);
- } else
+ else
break;
}
int num = Integer.parseInt(sb.toString());
int chop = 1 + sb.length();
int deltaType = 0;
- if (date.length() == chop)
+ if(date.length() == chop)
deltaType = Calendar.DAY_OF_YEAR;
else {
String deltaTypeString =
date.substring(chop).toLowerCase();
- if (deltaTypeString.equals("y")
- || deltaTypeString.equals("year"))
+ if(deltaTypeString.equals("y") ||
deltaTypeString.equals("year"))
deltaType = Calendar.YEAR;
- else if (
- deltaTypeString.equals("month")
- || deltaTypeString.equals("mo"))
+ else if(deltaTypeString.equals("month") ||
deltaTypeString.equals("mo"))
deltaType = Calendar.MONTH;
- else if (
- deltaTypeString.equals("week")
- || deltaTypeString.equals("w"))
+ else if(deltaTypeString.equals("week") ||
deltaTypeString.equals("w"))
deltaType = Calendar.WEEK_OF_YEAR;
- else if (
- deltaTypeString.equals("day")
- || deltaTypeString.equals("d"))
+ else if(deltaTypeString.equals("day") ||
deltaTypeString.equals("d"))
deltaType = Calendar.DAY_OF_YEAR;
- else if (
- deltaTypeString.equals("hour")
- || deltaTypeString.equals("h"))
+ else if(deltaTypeString.equals("hour") ||
deltaTypeString.equals("h"))
deltaType = Calendar.HOUR;
- else if (
- deltaTypeString.equals("minute")
- ||
deltaTypeString.equals("min"))
+ else if(deltaTypeString.equals("minute") ||
deltaTypeString.equals("min"))
deltaType = Calendar.MINUTE;
- else if (
- deltaTypeString.equals("second")
- || deltaTypeString.equals("s")
- ||
deltaTypeString.equals("sec"))
+ else if(deltaTypeString.equals("second") ||
deltaTypeString.equals("s") || deltaTypeString.equals("sec"))
deltaType = Calendar.SECOND;
else
throw new NumberFormatException(
@@ -301,8 +293,7 @@
int dash = date.indexOf('-');
- if (!((dash == -1) && (date.length() == 8))
- && !((dash == 8) && (date.length() == 17)))
+ if(!((dash == -1) && (date.length() == 8)) && !((dash == 8) &&
(date.length() == 17)))
throw new NumberFormatException(
"Date time: " + date + " not correct.");
int year = Integer.parseInt(date.substring(0, 4));
@@ -315,17 +306,14 @@
// Note that month is zero based in GregorianCalender!
try {
- return (
- new GregorianCalendar(
- year,
- month - 1,
- day,
- hour,
- minute,
- second))
- .getTime()
- .getTime();
- } catch (Exception e) {
+ return (new GregorianCalendar(
+ year,
+ month - 1,
+ day,
+ hour,
+ minute,
+ second)).getTime().getTime();
+ } catch(Exception e) {
e.printStackTrace();
// The API docs don't say which exception is thrown on
bad numbers!
throw new NumberFormatException("Invalid date " + date
+ ": " + e);
@@ -342,7 +330,7 @@
//String dateString = f.format(c.getTime());
String dateString = f.format(new Date(time * 1000));
- if (dateString.endsWith("-00:00:00"))
+ if(dateString.endsWith("-00:00:00"))
dateString = dateString.substring(0, 8);
return dateString;
@@ -350,14 +338,14 @@
public static final int compareBytes(byte[] b1, byte[] b2) {
int len = Math.max(b1.length, b2.length);
- for (int i = 0; i < len; ++i) {
- if (i == b1.length)
+ for(int i = 0; i < len; ++i) {
+ if(i == b1.length)
return i == b2.length ? 0 : -1;
- else if (i == b2.length)
+ else if(i == b2.length)
return 1;
- else if ((0xff & b1[i]) > (0xff & b2[i]))
+ else if((0xff & b1[i]) > (0xff & b2[i]))
return 1;
- else if ((0xff & b1[i]) < (0xff & b2[i]))
+ else if((0xff & b1[i]) < (0xff & b2[i]))
return -1;
}
return 0;
@@ -369,24 +357,24 @@
int aoff,
int boff,
int len) {
- for (int i = 0; i < len; ++i) {
- if (i + aoff == a.length)
+ for(int i = 0; i < len; ++i) {
+ if(i + aoff == a.length)
return i + boff == b.length ? 0 : -1;
- else if (i + boff == b.length)
+ else if(i + boff == b.length)
return 1;
- else if ((0xff & a[i + aoff]) > (0xff & b[i + boff]))
+ else if((0xff & a[i + aoff]) > (0xff & b[i + boff]))
return 1;
- else if ((0xff & a[i + aoff]) < (0xff & b[i + boff]))
+ else if((0xff & a[i + aoff]) < (0xff & b[i + boff]))
return -1;
}
return 0;
}
public static final boolean byteArrayEqual(byte[] a, byte[] b) {
- if (a.length != b.length)
+ if(a.length != b.length)
return false;
- for (int i = 0; i < a.length; ++i)
- if (a[i] != b[i])
+ for(int i = 0; i < a.length; ++i)
+ if(a[i] != b[i])
return false;
return true;
}
@@ -397,10 +385,10 @@
int aoff,
int boff,
int len) {
- if ((a.length < aoff + len) || (b.length < boff + len))
+ if((a.length < aoff + len) || (b.length < boff + len))
return false;
- for (int i = 0; i < len; ++i)
- if (a[i + aoff] != b[i + boff])
+ for(int i = 0; i < len; ++i)
+ if(a[i + aoff] != b[i + boff])
return false;
return true;
}
@@ -409,9 +397,11 @@
* Compares byte arrays lexicographically.
*/
public static final class ByteArrayComparator implements Comparator {
+
public final int compare(Object o1, Object o2) {
return compare((byte[]) o1, (byte[]) o2);
}
+
public static final int compare(byte[] o1, byte[] o2) {
return compareBytes(o1, o2);
}
@@ -419,18 +409,17 @@
// could add stuff like IntegerComparator, LongComparator etc.
// if we need it
-
public static final int hashCode(byte[] b) {
- return hashCode(b, 0, b.length);
+ return hashCode(b, 0, b.length);
}
-
+
/**
* A generic hashcode suited for byte arrays that are more or less
random.
*/
public static final int hashCode(byte[] b, int ptr, int length) {
int h = 0;
- for (int i = length - 1; i >= 0; --i) {
- int x = b[ptr+i] & 0xff;
+ for(int i = length - 1; i >= 0; --i) {
+ int x = b[ptr + i] & 0xff;
h ^= x << ((i & 3) << 3);
}
return h;
@@ -441,172 +430,176 @@
*/
public static final long longHashCode(byte[] b) {
return longHashCode(b, 0, b.length);
- }
+ }
/**
* Long version of above Not believed to be secure in any sense of the
word :)
*/
public static final long longHashCode(byte[] b, int offset, int length)
{
long h = 0;
- for (int i = length - 1; i >= 0; --i) {
- int x = b[i+offset] & 0xff;
+ for(int i = length - 1; i >= 0; --i) {
+ int x = b[i + offset] & 0xff;
h ^= ((long) x) << ((i & 7) << 3);
}
return h;
}
- /**
- * @param addr
- * @return
- */
- public static String commaList(Object[] addr) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < addr.length; i++) {
+ /**
+ * @param addr
+ * @return
+ */
+ public static String commaList(Object[] addr) {
+ StringBuilder sb = new StringBuilder();
+ for(int i = 0; i < addr.length; i++) {
sb.append(addr[i]);
- if (i != addr.length - 1)
+ if(i != addr.length - 1)
sb.append(',');
}
return sb.toString();
- }
+ }
- /**
- * Convert an array of longs to an array of bytes, using a
- * consistent endianness.
- */
- public static byte[] longsToBytes(long[] longs) {
- byte[] buf = new byte[longs.length * 8];
- for(int i=0;i<longs.length;i++) {
- long x = longs[i];
- for(int j=0;j<8;j++) {
- buf[i*8+j] = (byte)x;
- x >>>= 8;
- }
- }
- return buf;
- }
-
- /**
- * Convert an array of bytes to an array of longs.
- */
- public static long[] bytesToLongs(byte[] buf) {
- return bytesToLongs(buf, 0, buf.length);
- }
-
- /**
- * Convert an array of bytes to an array of longs.
- * @param buf
- * @param length
- * @param offset
- * @return
- */
- public static long[] bytesToLongs(byte[] buf, int offset, int length) {
- if(length % 8 != 0) throw new IllegalArgumentException();
- long[] longs = new long[length/8];
- for(int i=0;i<longs.length;i++) {
- long x = 0;
- for(int j=7;j>=0;j--) {
- long y = (buf[offset+i*8+j] & 0xff);
- x = (x << 8) | y;
- }
- longs[i] = x;
- }
- return longs;
- }
+ /**
+ * Convert an array of longs to an array of bytes, using a
+ * consistent endianness.
+ */
+ public static byte[] longsToBytes(long[] longs) {
+ byte[] buf = new byte[longs.length * 8];
+ for(int i = 0; i < longs.length; i++) {
+ long x = longs[i];
+ for(int j = 0; j < 8; j++) {
+ buf[i * 8 + j] = (byte) x;
+ x >>>= 8;
+ }
+ }
+ return buf;
+ }
- /**
- * Convert an array of bytes to a single long.
- */
- public static long bytesToLong(byte[] buf) {
- if(buf.length < 8) throw new IllegalArgumentException();
- long x = 0;
- for(int j=7;j>=0;j--) {
- long y = (buf[j] & 0xff);
- x = (x << 8) | y;
- }
- return x;
- }
+ /**
+ * Convert an array of bytes to an array of longs.
+ */
+ public static long[] bytesToLongs(byte[] buf) {
+ return bytesToLongs(buf, 0, buf.length);
+ }
- /**
- * Convert an array of bytes to a single int.
- */
+ /**
+ * Convert an array of bytes to an array of longs.
+ * @param buf
+ * @param length
+ * @param offset
+ * @return
+ */
+ public static long[] bytesToLongs(byte[] buf, int offset, int length) {
+ if(length % 8 != 0)
+ throw new IllegalArgumentException();
+ long[] longs = new long[length / 8];
+ for(int i = 0; i < longs.length; i++) {
+ long x = 0;
+ for(int j = 7; j >= 0; j--) {
+ long y = (buf[offset + i * 8 + j] & 0xff);
+ x = (x << 8) | y;
+ }
+ longs[i] = x;
+ }
+ return longs;
+ }
+
+ /**
+ * Convert an array of bytes to a single long.
+ */
+ public static long bytesToLong(byte[] buf) {
+ if(buf.length < 8)
+ throw new IllegalArgumentException();
+ long x = 0;
+ for(int j = 7; j >= 0; j--) {
+ long y = (buf[j] & 0xff);
+ x = (x << 8) | y;
+ }
+ return x;
+ }
+
+ /**
+ * Convert an array of bytes to a single int.
+ */
public static int bytesToInt(byte[] buf, int offset) {
- if(buf.length < 4) throw new IllegalArgumentException();
- int x = 0;
- for(int j=3;j>=0;j--) {
- int y = (buf[j+offset] & 0xff);
- x = (x << 8) | y;
- }
- return x;
+ if(buf.length < 4)
+ throw new IllegalArgumentException();
+ int x = 0;
+ for(int j = 3; j >= 0; j--) {
+ int y = (buf[j + offset] & 0xff);
+ x = (x << 8) | y;
+ }
+ return x;
}
-
+
public static int[] bytesToInts(byte[] buf, int offset, int length) {
- if(length % 4 != 0) throw new IllegalArgumentException();
- int[] ints = new int[length/4];
- for(int i=0;i<ints.length;i++) {
+ if(length % 4 != 0)
+ throw new IllegalArgumentException();
+ int[] ints = new int[length / 4];
+ for(int i = 0; i < ints.length; i++) {
int x = 0;
- for(int j=3;j>=0;j--) {
- int y = (buf[j+offset] & 0xff);
+ for(int j = 3; j >= 0; j--) {
+ int y = (buf[j + offset] & 0xff);
x = (x << 8) | y;
}
ints[i] = x;
}
return ints;
}
-
+
public static int[] bytesToInts(byte[] buf) {
return bytesToInts(buf, 0, buf.length);
}
-
- public static byte[] longToBytes(long x) {
- byte[] buf = new byte[8];
- for(int j=0;j<8;j++) {
- buf[j] = (byte)x;
- x >>>= 8;
- }
- return buf;
- }
+ public static byte[] longToBytes(long x) {
+ byte[] buf = new byte[8];
+ for(int j = 0; j < 8; j++) {
+ buf[j] = (byte) x;
+ x >>>= 8;
+ }
+ return buf;
+ }
+
public static byte[] intsToBytes(int[] ints) {
- byte[] buf = new byte[ints.length * 8];
- for(int i=0;i<ints.length;i++) {
- long x = ints[i];
- for(int j=0;j<4;j++) {
- buf[i*4+j] = (byte)x;
- x >>>= 8;
- }
- }
- return buf;
+ byte[] buf = new byte[ints.length * 8];
+ for(int i = 0; i < ints.length; i++) {
+ long x = ints[i];
+ for(int j = 0; j < 4; j++) {
+ buf[i * 4 + j] = (byte) x;
+ x >>>= 8;
+ }
+ }
+ return buf;
}
public static long parseLong(String s, long defaultValue) {
try {
return Long.parseLong(s);
- } catch (NumberFormatException e) {
- Logger.error(Fields.class, "Failed to parse value as
long: "+s+" : "+e, e);
+ } catch(NumberFormatException e) {
+ Logger.error(Fields.class, "Failed to parse value as
long: " + s + " : " + e, e);
return defaultValue;
}
}
-
+
public static int parseInt(String s, int defaultValue) {
try {
return Integer.parseInt(s);
- } catch (NumberFormatException e) {
- Logger.error(Fields.class, "Failed to parse value as
int: "+s+" : "+e, e);
+ } catch(NumberFormatException e) {
+ Logger.error(Fields.class, "Failed to parse value as
int: " + s + " : " + e, e);
return defaultValue;
}
}
-
+
public static long parseShort(String s, short defaultValue) {
try {
return Short.parseShort(s);
- } catch (NumberFormatException e) {
- Logger.error(Fields.class, "Failed to parse value as
short: "+s+" : "+e, e);
+ } catch(NumberFormatException e) {
+ Logger.error(Fields.class, "Failed to parse value as
short: " + s + " : " + e, e);
return defaultValue;
}
}
-
- /**
- * Parse a human-readable string possibly including SI and ICE units into
a short.
+
+ /**
+ * Parse a human-readable string possibly including SI and ICE units
into a short.
* @throws NumberFormatException
* if the string is not parseable
*/
@@ -616,13 +609,12 @@
int x = s.length() - 1;
int idx;
try {
- while ((x >= 0)
- && ((idx = "kK".indexOf(s.charAt(x))) != -1)) {
+ while((x >= 0) && ((idx = "kK".indexOf(s.charAt(x))) !=
-1)) {
x--;
res *= MULTIPLES[idx];
}
res *= Double.parseDouble(s.substring(0, x + 1));
- } catch (ArithmeticException e) {
+ } catch(ArithmeticException e) {
res = Short.MAX_VALUE;
throw new NumberFormatException(e.getMessage());
}
@@ -640,19 +632,18 @@
int x = s.length() - 1;
int idx;
try {
- while ((x >= 0)
- && ((idx = "kKmMgG".indexOf(s.charAt(x))) !=
-1)) {
+ while((x >= 0) && ((idx =
"kKmMgG".indexOf(s.charAt(x))) != -1)) {
x--;
res *= MULTIPLES[idx];
}
res *= Double.parseDouble(s.substring(0, x + 1));
- } catch (ArithmeticException e) {
+ } catch(ArithmeticException e) {
res = Integer.MAX_VALUE;
throw new NumberFormatException(e.getMessage());
}
return res;
}
-
+
/**
* Parse a human-readable string possibly including SI and ICE units
into a long.
* @throws NumberFormatException
@@ -664,20 +655,21 @@
int x = s.length() - 1;
int idx;
try {
- while ((x >= 0)
- && ((idx = "kKmMgGtTpPeE".indexOf(s.charAt(x)))
!= -1)) {
+ while((x >= 0) && ((idx =
"kKmMgGtTpPeE".indexOf(s.charAt(x))) != -1)) {
x--;
res *= MULTIPLES[idx];
}
String multiplier = s.substring(0, x + 1).trim();
if(multiplier.indexOf('.') > -1 ||
multiplier.indexOf('E') > -1) {
res *= Double.parseDouble(multiplier);
- if(Logger.shouldLog(Logger.MINOR,
Fields.class)) Logger.minor(Fields.class, "Parsed "+multiplier+" of "+s+" as
double: "+res);
+ if(Logger.shouldLog(Logger.MINOR, Fields.class))
+ Logger.minor(Fields.class, "Parsed " +
multiplier + " of " + s + " as double: " + res);
} else {
res *= Long.parseLong(multiplier);
- if(Logger.shouldLog(Logger.MINOR,
Fields.class)) Logger.minor(Fields.class, "Parsed "+multiplier+" of "+s+" as
long: "+res);
+ if(Logger.shouldLog(Logger.MINOR, Fields.class))
+ Logger.minor(Fields.class, "Parsed " +
multiplier + " of " + s + " as long: " + res);
}
- } catch (ArithmeticException e) {
+ } catch(ArithmeticException e) {
res = Long.MAX_VALUE;
throw new NumberFormatException(e.getMessage());
}
@@ -685,16 +677,15 @@
}
public static String longToString(long val) {
- String[] u = { "k", "K", "m", "M", "g", "G", "t", "T", "p",
"P", "e", "E" };
String ret = Long.toString(val);
- if (val <= 0)
+ if(val <= 0)
return ret;
- for (int i = MULTIPLES.length - 1; i >= 0; i--) {
- if (val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
- ret = (val / MULTIPLES[i]) + u[i];
- if (!u[i].toLowerCase().equals(u[i]))
+ for(int i = MULTIPLES.length - 1; i >= 0; i--) {
+ if(val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
+ ret = (val / MULTIPLES[i]) + MULTIPLES_2[i];
+
if(!MULTIPLES_2[i].toLowerCase().equals(MULTIPLES_2[i]))
ret += "iB";
break;
}
@@ -703,16 +694,15 @@
}
public static String intToString(int val) {
- String[] u = { "k", "K", "m", "M", "g", "G", "t", "T", "p",
"P", "e", "E" };
String ret = Integer.toString(val);
- if (val <= 0)
+ if(val <= 0)
return ret;
- for (int i = MULTIPLES.length - 1; i >= 0; i--) {
- if (val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
- ret = (val / MULTIPLES[i]) + u[i];
- if (!u[i].toLowerCase().equals(u[i]))
+ for(int i = MULTIPLES.length - 1; i >= 0; i--) {
+ if(val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
+ ret = (val / MULTIPLES[i]) + MULTIPLES_2[i];
+
if(!MULTIPLES_2[i].toLowerCase().equals(MULTIPLES_2[i]))
ret += "iB";
break;
}
@@ -721,16 +711,15 @@
}
public static String shortToString(short val) {
- String[] u = { "k", "K", "m", "M", "g", "G", "t", "T", "p",
"P", "e", "E" };
String ret = Short.toString(val);
- if (val <= 0)
+ if(val <= 0)
return ret;
-
- for (int i = MULTIPLES.length - 1; i >= 0; i--) {
- if (val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
- ret = (val / MULTIPLES[i]) + u[i];
- if (!u[i].toLowerCase().equals(u[i]))
+
+ for(int i = MULTIPLES.length - 1; i >= 0; i--) {
+ if(val > MULTIPLES[i] && val % MULTIPLES[i] == 0) {
+ ret = (val / MULTIPLES[i]) + MULTIPLES_2[i];
+
if(!MULTIPLES_2[i].toLowerCase().equals(MULTIPLES_2[i]))
ret += "iB";
break;
}
@@ -741,14 +730,14 @@
public static double[] bytesToDoubles(byte[] data, int offset, int
length) {
long[] longs = bytesToLongs(data, offset, length);
double[] doubles = new double[longs.length];
- for(int i=0;i<longs.length;i++)
+ for(int i = 0; i < longs.length; i++)
doubles[i] = Double.longBitsToDouble(longs[i]);
return doubles;
}
public static byte[] doublesToBytes(double[] doubles) {
long[] longs = new long[doubles.length];
- for(int i=0;i<longs.length;i++)
+ for(int i = 0; i < longs.length; i++)
longs[i] = Double.doubleToLongBits(doubles[i]);
return longsToBytes(longs);
}
@@ -765,18 +754,16 @@
int end = origEnd;
while(true) {
if(end < begin) // so we can use origEnd=length-1
without worrying length=0
- return -begin-1;
+ return -begin - 1;
int middle = (begin + end) >>> 1;
if(values[middle] == key)
return middle;
-
- if(values[middle] > key) {
+
+ if(values[middle] > key)
end = middle - 1;
- } else if(values[middle] < key) {
+ else if(values[middle] < key)
begin = middle + 1;
- }
}
}
-
}
Modified:
branches/saltedhashstore/freenet/src/freenet/support/FileLoggerHook.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/FileLoggerHook.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/FileLoggerHook.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -13,6 +13,7 @@
import java.net.InetAddress;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -22,7 +23,6 @@
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import java.util.TimeZone;
-import java.util.Vector;
import java.util.zip.GZIPOutputStream;
import freenet.node.Version;
@@ -95,7 +95,7 @@
* Something wierd happens when the disk gets full, also we don't want
to
* block So run the actual write on another thread
*/
- protected final LinkedList list = new LinkedList();
+ protected final LinkedList<byte[]> list = new LinkedList<byte[]>();
protected long listBytes = 0;
protected int MAX_LIST_SIZE = 100000;
@@ -103,7 +103,7 @@
// FIXME: should reimplement LinkedList with minimal locking
long maxOldLogfilesDiskUsage;
- protected final LinkedList logFiles = new LinkedList();
+ protected final LinkedList<OldLogFile> logFiles = new
LinkedList<OldLogFile>();
private long oldLogFilesDiskSpaceUsage = 0;
private static class OldLogFile {
@@ -132,7 +132,7 @@
}
public void setInterval(String intervalName) throws
IntervalParseException {
- StringBuffer sb = new StringBuffer(intervalName.length());
+ StringBuilder sb = new StringBuilder(intervalName.length());
for(int i=0;i<intervalName.length();i++) {
char c = intervalName.charAt(i);
if(!Character.isDigit(c)) break;
@@ -175,7 +175,7 @@
}
protected String getHourLogName(Calendar c, boolean compressed) {
- StringBuffer buf = new StringBuffer(50);
+ StringBuilder buf = new StringBuilder(50);
buf.append(baseFilename).append('-');
buf.append(Version.buildNumber());
buf.append('-');
@@ -194,7 +194,7 @@
return buf.toString();
}
- private StringBuffer pad2digits(StringBuffer buf, int x) {
+ private StringBuilder pad2digits(StringBuilder buf, int x) {
String s = Integer.toString(x);
if (s.length() == 1) {
buf.append('0');
@@ -208,9 +208,10 @@
super("Log File Writer Thread");
}
+ @SuppressWarnings("fallthrough")
public void run() {
File currentFilename = null;
- Object o = null;
+ byte[] o = null;
long thisTime;
long lastTime = -1;
long startTime;
@@ -245,7 +246,7 @@
filename = getHourLogName(gc, true);
currentFilename = new File(filename);
synchronized(logFiles) {
- if((!logFiles.isEmpty()) &&
((OldLogFile)logFiles.getLast()).filename.equals(currentFilename)) {
+ if ((!logFiles.isEmpty()) &&
logFiles.getLast().filename.equals(currentFilename)) {
logFiles.removeLast();
}
}
@@ -334,11 +335,11 @@
}
}
o = list.removeFirst();
- listBytes -= (((byte[])
o).length + LINE_OVERHEAD);
+ listBytes -= o.length +
LINE_OVERHEAD;
}
- myWrite(logStream, ((byte[]) o));
+ myWrite(logStream, o);
if(altLogStream != null)
- myWrite(altLogStream, (byte[]) o);
+ myWrite(altLogStream, o);
} catch (OutOfMemoryError e) {
System.err.println(e.getClass());
System.err.println(e.getMessage());
@@ -473,7 +474,7 @@
if(logFiles.isEmpty()) {
System.err.println("ERROR:
INCONSISTENT LOGGER TOTALS: Log file list is empty but still used
"+oldLogFilesDiskSpaceUsage+" bytes!");
}
- olf = (OldLogFile)
logFiles.removeFirst();
+ olf = logFiles.removeFirst();
}
olf.filename.delete();
oldLogFilesDiskSpaceUsage -= olf.size;
@@ -719,9 +720,10 @@
fmt = "d:c:h:t:p:m";
char[] f = fmt.toCharArray();
- Vector fmtVec = new Vector(), strVec = new Vector();
+ ArrayList<Integer> fmtVec = new ArrayList<Integer>();
+ ArrayList<String> strVec = new ArrayList<String>();
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
boolean comment = false;
for (int i = 0; i < f.length; ++i) {
@@ -730,11 +732,11 @@
getUName();
if (!comment && (type != 0)) {
if (sb.length() > 0) {
- strVec.addElement(sb.toString());
- fmtVec.addElement(new Integer(0));
- sb = new StringBuffer();
+ strVec.add(sb.toString());
+ fmtVec.add(0);
+ sb = new StringBuilder();
}
- fmtVec.addElement(new Integer(type));
+ fmtVec.add(type);
} else if (f[i] == '\\') {
comment = true;
} else {
@@ -743,17 +745,17 @@
}
}
if (sb.length() > 0) {
- strVec.addElement(sb.toString());
- fmtVec.addElement(new Integer(0));
+ strVec.add(sb.toString());
+ fmtVec.add(0);
}
this.fmt = new int[fmtVec.size()];
int size = fmtVec.size();
for (int i = 0; i < size; ++i)
- this.fmt[i] = ((Integer)
fmtVec.elementAt(i)).intValue();
+ this.fmt[i] = fmtVec.get(i);
this.str = new String[strVec.size()];
- str = (String[]) strVec.toArray(str);
+ str = strVec.toArray(str);
}
private void setDateFormat(String dfmt) {
@@ -769,14 +771,14 @@
df.setTimeZone(TimeZone.getTimeZone("UTC"));
}
- public void log(Object o, Class c, String msg, Throwable e, int
priority) {
+ public void log(Object o, Class<?> c, String msg, Throwable e, int
priority) {
if (!instanceShouldLog(priority, c))
return;
if (closed)
return;
- StringBuffer sb = new StringBuffer( e == null ? 512 : 1024 );
+ StringBuilder sb = new StringBuilder( e == null ? 512 : 1024 );
int sctr = 0;
for (int i = 0; i < fmt.length; ++i) {
@@ -858,7 +860,7 @@
|| (listBytes > (MAX_LIST_BYTES *
0.9F))) {
byte[] ss;
try {
- ss = (byte[])
(list.removeFirst());
+ ss = list.removeFirst();
} catch (NoSuchElementException e) {
// Yes I know this is
impossible but it happens with 1.6 with heap profiling enabled
noElementCount++;
@@ -943,7 +945,7 @@
public void listAvailableLogs(OutputStreamWriter writer) throws
IOException {
OldLogFile[] oldLogFiles;
synchronized(logFiles) {
- oldLogFiles = (OldLogFile[]) logFiles.toArray(new
OldLogFile[logFiles.size()]);
+ oldLogFiles = logFiles.toArray(new
OldLogFile[logFiles.size()]);
}
DateFormat tempDF =
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT,
Locale.ENGLISH);
tempDF.setTimeZone(TimeZone.getTimeZone("GMT"));
@@ -956,9 +958,9 @@
public void sendLogByContainedDate(long time, OutputStream os) throws
IOException {
OldLogFile toReturn = null;
synchronized(logFiles) {
- Iterator i = logFiles.iterator();
+ Iterator<OldLogFile> i = logFiles.iterator();
while(i.hasNext()) {
- OldLogFile olf = (OldLogFile) i.next();
+ OldLogFile olf = i.next();
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR)
Logger.minor(this, "Checking "+time+" against
"+olf.filename+" : start="+olf.start+", end="+olf.end);
@@ -1040,7 +1042,7 @@
OldLogFile olf;
synchronized(logFiles) {
if(logFiles.isEmpty()) return;
- olf = (OldLogFile)
logFiles.removeFirst();
+ olf = logFiles.removeFirst();
}
olf.filename.delete();
oldLogFilesDiskSpaceUsage -= olf.size;
Modified:
branches/saltedhashstore/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -18,7 +18,7 @@
public class LimitedRangeIntByteArrayMap {
private static boolean logMINOR;
- private final HashMap contents;
+ private final HashMap<Integer, LimitedRangeIntByteArrayMapElement>
contents;
private int minValue;
private int maxValue;
private final int maxRange;
@@ -27,7 +27,7 @@
public LimitedRangeIntByteArrayMap(int maxRange) {
this.maxRange = maxRange;
- contents = new HashMap();
+ contents = new HashMap<Integer, LimitedRangeIntByteArrayMapElement>();
minValue = -1;
maxValue = -1;
flag = false;
@@ -43,32 +43,29 @@
}
public synchronized byte[] get(int index) {
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement wrapper =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ LimitedRangeIntByteArrayMapElement wrapper = contents.get(index);
if(wrapper != null)
return wrapper.data;
else return null;
}
public synchronized AsyncMessageCallback[] getCallbacks(int index) {
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement wrapper =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ LimitedRangeIntByteArrayMapElement wrapper = contents.get(index);
if(wrapper != null)
return wrapper.callbacks;
else return null;
}
public synchronized long getTime(int index) {
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement wrapper =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ LimitedRangeIntByteArrayMapElement wrapper = contents.get(index);
if(wrapper != null)
return wrapper.createdTime;
else return -1;
}
public short getPriority(int index, short defaultValue) {
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement wrapper =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ Integer i = index;
+ LimitedRangeIntByteArrayMapElement wrapper = contents.get(i);
if(wrapper != null)
return wrapper.priority;
else return defaultValue;
@@ -78,8 +75,7 @@
* Get the time at which an index was re-added last.
*/
public synchronized long getReaddedTime(int index) {
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement wrapper =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ LimitedRangeIntByteArrayMapElement wrapper = contents.get(index);
if(wrapper != null)
return wrapper.reputTime;
else return -1;
@@ -108,10 +104,9 @@
minValue = index;
}
if(data == null) throw new NullPointerException();
- Integer i = new Integer(index);
- LimitedRangeIntByteArrayMapElement le =
(LimitedRangeIntByteArrayMapElement) contents.get(i);
+ LimitedRangeIntByteArrayMapElement le = contents.get(index);
if(le == null)
- contents.put(new Integer(index), new
LimitedRangeIntByteArrayMapElement(index, data, callbacks, priority));
+ contents.put(index, new
LimitedRangeIntByteArrayMapElement(index, data, callbacks, priority));
else
le.reput();
notifyAll();
@@ -166,7 +161,7 @@
*/
public synchronized boolean remove(int index) {
if(logMINOR) Logger.minor(this, "Removing "+index+" - min="+minValue+"
max="+maxValue);
- if(contents.remove(new Integer(index)) != null) {
+ if (contents.remove(index) != null) {
if((index > minValue) && (index < maxValue)) return true;
if(contents.size() == 0) {
minValue = maxValue = -1;
Modified: branches/saltedhashstore/freenet/src/freenet/support/Logger.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/Logger.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/Logger.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -242,7 +242,7 @@
logger.log(o, s, t, DEBUG);
}
- public synchronized static void error(Class c, String s) {
+ public synchronized static void error(Class<?> c, String s) {
logger.log(c, s, ERROR);
}
@@ -254,7 +254,7 @@
logger.log(o, s, e, ERROR);
}
- public synchronized static void minor(Class c, String s) {
+ public synchronized static void minor(Class<?> c, String s) {
logger.log(c, s, MINOR);
}
@@ -266,7 +266,7 @@
logger.log(o, s, t, MINOR);
}
- public synchronized static void minor(Class class1, String string,
Throwable t) {
+ public synchronized static void minor(Class<?> class1, String string,
Throwable t) {
logger.log(class1, string, t, MINOR);
}
@@ -278,7 +278,7 @@
logger.log(o, s, t, NORMAL);
}
- public synchronized static void normal(Class c, String s) {
+ public synchronized static void normal(Class<?> c, String s) {
logger.log(c, s, NORMAL);
}
@@ -303,7 +303,7 @@
*/
public abstract void log(
Object o,
- Class source,
+ Class<?> source,
String message,
Throwable e,
int priority);
@@ -335,7 +335,7 @@
* @param priority The priority of the mesage, one of Logger.ERROR,
* Logger.NORMAL, Logger.MINOR, or Logger.DEBUG.
*/
- public abstract void log(Class c, String message, int priority);
+ public abstract void log(Class<?> c, String message, int priority);
/**
* Log a message from static code.
@@ -345,12 +345,12 @@
* @param priority The priority of the mesage, one of Logger.ERROR,
* Logger.NORMAL, Logger.MINOR, or Logger.DEBUG.
*/
- public abstract void log(Class c, String message, Throwable e,
+ public abstract void log(Class<?> c, String message, Throwable e,
int priority);
- public abstract boolean instanceShouldLog(int priority, Class c);
+ public abstract boolean instanceShouldLog(int priority, Class<?> c);
- public synchronized static boolean shouldLog(int priority, Class c) {
+ public static boolean shouldLog(int priority, Class<?> c) {
return logger.instanceShouldLog(priority, c);
}
Modified: branches/saltedhashstore/freenet/src/freenet/support/LoggerHook.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/LoggerHook.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/LoggerHook.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1,5 +1,6 @@
package freenet.support;
+import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Vector;
@@ -45,7 +46,7 @@
*/
public abstract void log(
Object o,
- Class source,
+ Class<?> source,
String message,
Throwable e,
int priority);
@@ -85,13 +86,13 @@
* @param priority The priority of the mesage, one of Logger.ERROR,
* Logger.NORMAL, Logger.MINOR, or Logger.DEBUG.
*/
- public void log(Class c, String message, int priority) {
+ public void log(Class<?> c, String message, int priority) {
if (!instanceShouldLog(priority,c)) return;
log(null, c, message, null, priority);
}
- public void log(Class c, String message, Throwable e, int priority) {
+ public void log(Class<?> c, String message, Throwable e, int priority) {
if (!instanceShouldLog(priority, c))
return;
log(null, c, message, e, priority);
@@ -117,7 +118,7 @@
if ((details == null) || (details.length() == 0))
return;
StringTokenizer st = new StringTokenizer(details, ",", false);
- Vector stuff = new Vector();
+ ArrayList<DetailedThreshold> stuff = new
ArrayList<DetailedThreshold>();
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.length() == 0)
@@ -134,12 +135,17 @@
}
DetailedThreshold[] newThresholds = new
DetailedThreshold[stuff.size()];
stuff.toArray(newThresholds);
- detailedThresholds = newThresholds;
+ synchronized(this) {
+ detailedThresholds = newThresholds;
+ }
}
public String getDetailedThresholds() {
- DetailedThreshold[] thresh = detailedThresholds;
- StringBuffer sb = new StringBuffer();
+ DetailedThreshold[] thresh = null;
+ synchronized(this) {
+ thresh = detailedThresholds;
+ }
+ StringBuilder sb = new StringBuilder();
for(int i=0;i<thresh.length;i++) {
if(i != 0)
sb.append(',');
@@ -194,16 +200,19 @@
}
}
- public boolean instanceShouldLog(int priority, Class c) {
- int thresh = threshold;
- if ((c != null) && (detailedThresholds.length != 0)) {
+ public boolean instanceShouldLog(int priority, Class<?> c) {
+ DetailedThreshold[] thresholds;
+ int thresh;
+ synchronized(this) {
+ thresholds = detailedThresholds;
+ thresh = threshold;
+ }
+ if ((c != null) && (thresholds.length > 0)) {
String cname = c.getName();
- for (int i = 0; i < detailedThresholds.length; i++) {
- DetailedThreshold dt = detailedThresholds[i];
- if (cname.startsWith(dt.section)) {
- thresh = dt.dThreshold;
+ for(DetailedThreshold dt : thresholds) {
+ if(cname.startsWith(dt.section))
+ thresh = dt.dThreshold;
}
- }
}
return priority >= thresh;
}
Modified:
branches/saltedhashstore/freenet/src/freenet/support/NumberedRecentItems.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/NumberedRecentItems.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/NumberedRecentItems.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -29,7 +29,7 @@
}
public synchronized NumberedItem get(int num) {
- int x = java.util.Arrays.binarySearch(items, new Integer(num),
myComparator);
+ int x = Arrays.binarySearch(items, num, myComparator);
if(x >= 0) return items[x];
return null;
}
@@ -42,7 +42,7 @@
*/
public synchronized boolean add(NumberedItem item) {
long num = item.getNumber();
- int x = Arrays.binarySearch(items, new Long(num), myComparator);
+ int x = Arrays.binarySearch(items, num, myComparator);
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Search pos: "+x);
if(x >= 0) return false; // already present
@@ -97,7 +97,7 @@
}
public synchronized NumberedItem[] getAfter(long target) {
- int x = Arrays.binarySearch(items, new Long(target), myComparator);
+ int x = Arrays.binarySearch(items, target, myComparator);
if(x == items.length-1) return null;
if(x >= 0) {
NumberedItem[] out = new NumberedItem[items.length-x-1];
Modified: branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -63,15 +63,15 @@
throw new IOException("Boolean is non boolean value:
"+bool);
} else if (type.equals(Byte.class)) {
int b = dis.readByte();
- return new Byte((byte) b);
+ return (byte) b;
} else if (type.equals(Short.class)) {
- return new Short(dis.readShort());
+ return dis.readShort();
} else if (type.equals(Integer.class)) {
- return new Integer(dis.readInt());
+ return dis.readInt();
} else if (type.equals(Long.class)) {
- return new Long(dis.readLong());
+ return dis.readLong();
} else if (type.equals(Double.class)) {
- return new Double(dis.readDouble());
+ return dis.readDouble();
} else if (type.equals(String.class)) {
int length = dis.readInt();
StringBuffer sb = new StringBuffer(length);
Modified:
branches/saltedhashstore/freenet/src/freenet/support/SimpleIntNumberedItemComparator.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/SimpleIntNumberedItemComparator.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/SimpleIntNumberedItemComparator.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -2,7 +2,7 @@
import java.util.Comparator;
-public class SimpleIntNumberedItemComparator implements Comparator {
+public class SimpleIntNumberedItemComparator implements Comparator<Object> {
private final boolean nullAtStart;
Modified:
branches/saltedhashstore/freenet/src/freenet/support/SortedVectorByNumber.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/SortedVectorByNumber.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/SortedVectorByNumber.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -11,7 +11,7 @@
private IntNumberedItem[] data;
private int length;
- private static final Comparator comparator = new
SimpleIntNumberedItemComparator(true);
+ private static final Comparator<Object> comparator = new
SimpleIntNumberedItemComparator(true);
private static final int MIN_SIZE = 4;
public SortedVectorByNumber() {
@@ -28,15 +28,15 @@
return length == 0;
}
- public synchronized IntNumberedItem get(int retryCount) {
- int x = Arrays.binarySearch(data, new Integer(retryCount),
comparator);
+ public synchronized IntNumberedItem get(int item) {
+ int x = Arrays.binarySearch(data, item, comparator);
if(x >= 0)
return data[x];
return null;
}
public synchronized void remove(int item) {
- int x = Arrays.binarySearch(data, new Integer(item),
comparator);
+ int x = Arrays.binarySearch(data, item, comparator);
if(x >= 0) {
if(x < length-1)
System.arraycopy(data, x+1, data, x,
length-x-1);
@@ -70,7 +70,7 @@
* @return True if we added the item.
*/
public synchronized boolean push(IntNumberedItem grabber) {
- int x = Arrays.binarySearch(data, new
Integer(grabber.getNumber()), comparator);
+ int x = Arrays.binarySearch(data, grabber.getNumber(),
comparator);
if(x >= 0) return false;
// insertion point
x = -x-1;
@@ -79,7 +79,7 @@
}
public synchronized void add(IntNumberedItem grabber) {
- int x = Arrays.binarySearch(data, new
Integer(grabber.getNumber()), comparator);
+ int x = Arrays.binarySearch(data, grabber.getNumber(),
comparator);
if(x >= 0) {
if(grabber != data[x])
throw new IllegalArgumentException(); //
already exists
Modified:
branches/saltedhashstore/freenet/src/freenet/support/compress/GzipCompressor.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/compress/GzipCompressor.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/compress/GzipCompressor.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -16,6 +16,8 @@
public class GzipCompressor extends Compressor {
public Bucket compress(Bucket data, BucketFactory bf, long maxLength)
throws IOException, CompressionOutputSizeException {
+ if(maxLength <= 0)
+ throw new IllegalArgumentException();
Bucket output = bf.makeBucket(maxLength);
InputStream is = null;
OutputStream os = null;
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucket.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucket.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucket.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -1,6 +1,5 @@
package freenet.support.io;
-import freenet.support.Logger;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -12,53 +11,42 @@
import freenet.support.api.Bucket;
/**
- * A bucket that stores data in RAM
+ * A bucket that stores data in the memory.
+ *
+ * FIXME: No synchronization, should there be?
+ *
+ * @author oskar
*/
public class ArrayBucket implements Bucket {
- private final ArrayList<byte[]> data;
- private final String name;
- private volatile boolean readOnly;
-
- /** The maximum size of the bucket; -1 means no maxSize */
- private final long maxSize;
- private long size;
-
- private static boolean logDEBUG = false;
-
- public ArrayBucket(long maxSize) {
- this("ArrayBucket", maxSize);
+ private final ArrayList data;
+ private String name;
+ private boolean readOnly;
+
+ public ArrayBucket() {
+ this("ArrayBucket");
}
-
- public ArrayBucket(byte[] finalData) {
- this(finalData, finalData.length);
- setReadOnly();
- }
- public ArrayBucket(byte[] initdata, long maxSize) {
- this("ArrayBucket", maxSize);
+ public ArrayBucket(byte[] initdata) {
+ this("ArrayBucket");
data.add(initdata);
}
- ArrayBucket(String name, long maxSize) {
- data = new ArrayList<byte[]>();
+ public ArrayBucket(String name) {
+ data = new ArrayList();
this.name = name;
- this.maxSize = maxSize;
- if(logDEBUG && maxSize < 0)
- Logger.minor(this, "Has been called with maxSize<0 !",
new NullPointerException());
}
- public synchronized OutputStream getOutputStream() throws IOException {
+ public OutputStream getOutputStream() throws IOException {
if(readOnly) throw new IOException("Read only");
return new ArrayBucketOutputStream();
}
- public synchronized InputStream getInputStream() {
+ public InputStream getInputStream() {
return new ArrayBucketInputStream();
}
- @Override
- public synchronized String toString() {
+ public String toString() {
StringBuffer s = new StringBuffer(250);
for (Iterator i = data.iterator(); i.hasNext();) {
byte[] b = (byte[]) i.next();
@@ -67,7 +55,7 @@
return s.toString();
}
- public synchronized void read(InputStream in) throws IOException {
+ public void read(InputStream in) throws IOException {
OutputStream out = new ArrayBucketOutputStream();
int i;
byte[] b = new byte[8 * 1024];
@@ -77,7 +65,12 @@
out.close();
}
- public synchronized long size() {
+ public long size() {
+ long size = 0;
+ for (Iterator i = data.iterator(); i.hasNext();) {
+ byte[] b = (byte[]) i.next();
+ size += b.length;
+ }
return size;
}
@@ -86,40 +79,19 @@
}
private class ArrayBucketOutputStream extends ByteArrayOutputStream {
- boolean hasBeenClosed = false;
+ private boolean hasBeenClosed = false;
public ArrayBucketOutputStream() {
super();
}
-
- @Override
- public synchronized void write(byte b[], int off, int len) {
- if(readOnly) throw new IllegalStateException("Read
only");
- long sizeIfWritten = size + len;
- if(logDEBUG && maxSize > -1 && maxSize < sizeIfWritten)
// FIXME: should be IOE but how to do it?
- throw new IllegalArgumentException("The maxSize
of the bucket is "+maxSize+
- " and writing "+len+ " bytes to it
would make it oversize!");
- super.write(b, off, len);
- size = sizeIfWritten;
- }
-
- @Override
- public synchronized void write(int b) {
- if(readOnly) throw new IllegalStateException("Read
only");
- long sizeIfWritten = size + 1;
- if(logDEBUG && maxSize > -1 && maxSize < sizeIfWritten)
// FIXME: should be IOE but how to do it?
- throw new IllegalArgumentException("The maxSize
of the bucket is "+maxSize+
- " and writing 1 byte to it would make
it oversize!");
- super.write(b);
- size = sizeIfWritten;
- }
@Override
public synchronized void close() throws IOException {
if(hasBeenClosed) return;
- hasBeenClosed = true;
data.add(super.toByteArray());
if(readOnly) throw new IOException("Read only");
+ // FIXME maybe we should throw on write instead? :)
+ hasBeenClosed = true;
}
}
@@ -132,11 +104,11 @@
i = data.iterator();
}
- public synchronized int read() {
+ public int read() {
return priv_read();
}
- private synchronized int priv_read() {
+ private int priv_read() {
if (in == null) {
if (i.hasNext()) {
in = new ByteArrayInputStream((byte[])
i.next());
@@ -144,26 +116,24 @@
return -1;
}
}
- int x = in.read();
- if (x == -1) {
+ int i = in.read();
+ if (i == -1) {
in = null;
return priv_read();
} else {
- return x;
+ return i;
}
}
- @Override
- public synchronized int read(byte[] b) {
+ public int read(byte[] b) {
return priv_read(b, 0, b.length);
}
- @Override
- public synchronized int read(byte[] b, int off, int len) {
+ public int read(byte[] b, int off, int len) {
return priv_read(b, off, len);
}
- private synchronized int priv_read(byte[] b, int off, int len) {
+ private int priv_read(byte[] b, int off, int len) {
if (in == null) {
if (i.hasNext()) {
in = new ByteArrayInputStream((byte[])
i.next());
@@ -171,17 +141,16 @@
return -1;
}
}
- int x = in.read(b, off, len);
- if (x == -1) {
+ int i = in.read(b, off, len);
+ if (i == -1) {
in = null;
return priv_read(b, off, len);
} else {
- return x;
+ return i;
}
}
- @Override
- public synchronized int available() {
+ public int available() {
if (in == null) {
if (i.hasNext()) {
in = new ByteArrayInputStream((byte[])
i.next());
@@ -202,17 +171,15 @@
readOnly = true;
}
- public synchronized void free() {
- readOnly = true;
+ public void free() {
data.clear();
- size = 0;
// Not much else we can do.
}
- public synchronized byte[] toByteArray() {
+ public byte[] toByteArray() {
long sz = size();
- int bufSize = (int)sz;
- byte[] buf = new byte[bufSize];
+ int size = (int)sz;
+ byte[] buf = new byte[size];
int index = 0;
for(Iterator i=data.iterator();i.hasNext();) {
byte[] obuf = (byte[]) i.next();
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucketFactory.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucketFactory.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/io/ArrayBucketFactory.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -11,7 +11,7 @@
public class ArrayBucketFactory implements BucketFactory {
public Bucket makeBucket(long size) throws IOException {
- return new ArrayBucket(size);
+ return new ArrayBucket();
}
public void freeBucket(Bucket b) throws IOException {
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/BaseFileBucket.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/io/BaseFileBucket.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/io/BaseFileBucket.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -151,6 +151,7 @@
}
+ @Override
public void write(byte[] b) throws IOException {
synchronized (BaseFileBucket.this) {
confirmWriteSynchronized();
@@ -159,6 +160,7 @@
}
}
+ @Override
public void write(byte[] b, int off, int len) throws
IOException {
synchronized (BaseFileBucket.this) {
confirmWriteSynchronized();
@@ -167,6 +169,7 @@
}
}
+ @Override
public void write(int b) throws IOException {
synchronized (BaseFileBucket.this) {
confirmWriteSynchronized();
@@ -175,6 +178,7 @@
}
}
+ @Override
public void close() throws IOException {
File file;
synchronized(this) {
@@ -213,6 +217,7 @@
}
}
+ @Override
public String toString() {
return
super.toString()+":"+BaseFileBucket.this.toString();
}
@@ -225,6 +230,7 @@
super(f);
}
+ @Override
public void close() throws IOException {
synchronized(this) {
if(closed) return;
@@ -234,6 +240,7 @@
super.close();
}
+ @Override
public String toString() {
return
super.toString()+":"+BaseFileBucket.this.toString();
}
@@ -277,6 +284,7 @@
getFile().delete();
}
+ @Override
protected void finalize() {
if(deleteOnFinalize())
free(true);
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/BucketTools.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/io/BucketTools.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/io/BucketTools.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -141,31 +141,31 @@
}
public final static int[] nullIndices(Bucket[] array) {
- List list = new ArrayList();
+ List<Integer> list = new ArrayList();
for (int i = 0; i < array.length; i++) {
if (array[i] == null) {
- list.add(new Integer(i));
+ list.add(i);
}
}
int[] ret = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
- ret[i] = ((Integer) list.get(i)).intValue();
+ ret[i] = list.get(i);
}
return ret;
}
public final static int[] nonNullIndices(Bucket[] array) {
- List list = new ArrayList();
+ List<Integer> list = new ArrayList();
for (int i = 0; i < array.length; i++) {
if (array[i] != null) {
- list.add(new Integer(i));
+ list.add(i);
}
}
int[] ret = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
- ret[i] = ((Integer) list.get(i)).intValue();
+ ret[i] = list.get(i);
}
return ret;
}
@@ -200,10 +200,8 @@
dis = new DataInputStream(is);
dis.readFully(data);
} finally {
- if(dis != null)
- dis.close();
- else
- is.close();
+ Closer.close(dis);
+ Closer.close(is);
}
return data;
}
@@ -288,14 +286,16 @@
if(bytes <= 0) {
if(truncateLength == Long.MAX_VALUE)
break;
- new IOException().printStackTrace();
- throw new IOException("Could not move
required quantity of data in copyTo: "+bytes+" (moved "+moved+" of
"+truncateLength+"): unable to read from "+is);
+ IOException ioException = new
IOException("Could not move required quantity of data in copyTo: "+bytes+"
(moved "+moved+" of "+truncateLength+"): unable to read from "+is);
+ ioException.printStackTrace();
+ throw ioException;
}
os.write(buf, 0, bytes);
moved += bytes;
}
} finally {
is.close();
+ os.flush();
}
}
Modified: branches/saltedhashstore/freenet/src/freenet/support/io/FileUtil.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/io/FileUtil.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/src/freenet/support/io/FileUtil.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -104,11 +104,9 @@
}
} finally {
- try {
- if(isr != null) isr.close();
- if(bis != null) bis.close();
- if(fis != null) fis.close();
- } catch (IOException e) {}
+ Closer.close(isr);
+ Closer.close(bis);
+ Closer.close(fis);
}
return result.toString();
}
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/LineReadingInputStream.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/io/LineReadingInputStream.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/io/LineReadingInputStream.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -33,7 +33,7 @@
byte[] buf = new byte[Math.max(Math.min(128, maxLength),
Math.min(1024, bufferSize))];
int ctr = 0;
- mark(Integer.MAX_VALUE); // Might be more than maxLengh if we
use utf8
+ mark(maxLength + 2); // in case we have both a \r and a \n
while(true) {
int x = read(buf, ctr, buf.length - ctr);
if(x == -1) {
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -151,6 +151,17 @@
}
}
+ // Override this or FOS will use write(int)
+ @Override
+ public void write(byte[] buf) throws IOException {
+ if(closed)
+ throw new IOException("Already closed!");
+ if(streamNumber != lastOutputStream)
+ throw new IllegalStateException("Writing to old
stream in "+getName());
+ write(buf, 0, buf.length);
+ }
+
+ @Override
public void write(byte[] buf, int offset, int length) throws
IOException {
if(closed) throw new IOException("Already closed!");
if(streamNumber != lastOutputStream)
@@ -165,14 +176,7 @@
}
}
- // Override this or FOS will use write(int)
- public void write(byte[] buf) throws IOException {
- if(closed) throw new IOException("Already closed!");
- if(streamNumber != lastOutputStream)
- throw new IllegalStateException("Writing to old
stream in "+getName());
- write(buf, 0, buf.length);
- }
-
+ @Override
public void close() throws IOException {
if(closed) return;
try {
@@ -225,11 +229,13 @@
return pcfb.decipher(x);
}
+ @Override
public final int available() {
int x = (int)Math.min(dataLength - ptr,
Integer.MAX_VALUE);
return (x < 0) ? 0 : x;
}
+ @Override
public int read(byte[] buf, int offset, int length) throws
IOException {
// FIXME remove debugging
if((length+offset > buf.length) || (offset < 0) ||
(length < 0))
@@ -244,10 +250,12 @@
return readBytes;
}
+ @Override
public int read(byte[] buf) throws IOException {
return read(buf, 0, buf.length);
}
+ @Override
public long skip(long bytes) throws IOException {
byte[] buf = new byte[(int)Math.min(4096, bytes)];
long skipped = 0;
@@ -259,6 +267,7 @@
return skipped;
}
+ @Override
public void close() throws IOException {
in.close();
}
@@ -308,6 +317,7 @@
return "Encrypted:"+bucket.getName();
}
+ @Override
public String toString() {
return super.toString()+ ':' +bucket.toString();
}
Modified:
branches/saltedhashstore/freenet/src/freenet/support/io/TempBucketFactory.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/io/TempBucketFactory.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/src/freenet/support/io/TempBucketFactory.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -4,6 +4,10 @@
package freenet.support.io;
import freenet.crypt.RandomSource;
+import freenet.support.Executor;
+import freenet.support.Logger;
+import freenet.support.SizeUtil;
+import freenet.support.TimeUtil;
import java.io.IOException;
import freenet.support.api.Bucket;
@@ -11,51 +15,299 @@
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.LinkedList;
+import java.util.Queue;
import java.util.Random;
+import java.util.Vector;
+import java.util.concurrent.LinkedBlockingQueue;
/**
* Temporary Bucket Factory
+ *
+ * Buckets created by this factory can be either:
+ * - ArrayBuckets
+ * OR
+ * - FileBuckets
+ *
+ * ArrayBuckets are used if and only if:
+ * 1) there is enough room remaining on the pool (@see maxRamUsed and @see
bytesInUse)
+ * 2) the initial size is smaller than (@maxRAMBucketSize)
+ *
+ * Depending on how they are used they might switch from one type to another
transparently.
+ *
+ * Currently they are two factors considered for a migration:
+ * - if they are long-lived or not (@see RAMBUCKET_MAX_AGE)
+ * - if their size is over RAMBUCKET_CONVERSION_FACTOR*maxRAMBucketSize
*/
public class TempBucketFactory implements BucketFactory {
+ public final static long defaultIncrement = 4096;
+ public final static float DEFAULT_FACTOR = 1.25F;
+
+ private final FilenameGenerator filenameGenerator;
+ private long bytesInUse = 0;
+ private final RandomSource strongPRNG;
+ private final Random weakPRNG;
+ private final Executor executor;
+ private volatile boolean logMINOR;
+ private volatile boolean reallyEncrypt;
+
+ /** How big can the defaultSize be for us to consider using RAMBuckets?
*/
+ private long maxRAMBucketSize;
+ /** How much memory do we dedicate to the RAMBucketPool? (in bytes) */
+ private long maxRamUsed;
+
+ /** How old is a long-lived RAMBucket? */
+ private final int RAMBUCKET_MAX_AGE = 5*60*1000; // 5mins
+ /** How many times the maxRAMBucketSize can a RAMBucket be before it
gets migrated? */
+ private final int RAMBUCKET_CONVERSION_FACTOR = 4;
+
public class TempBucket implements Bucket {
+ /** The underlying bucket itself */
private Bucket currentBucket;
+ /** We have to account the size of the underlying bucket
ourself in order to be able to access it fast */
+ private long currentSize;
+ /** A link to the "real" underlying outputStream, even if we
migrated */
+ private OutputStream os = null;
+ /** All the open-streams to reset or close on migration or
free() */
+ private final Vector<TempBucketInputStream> tbis;
+ /** An identifier used to know when to deprecate the
InputStreams */
+ private short osIndex;
+ /** A timestamp used to evaluate the age of the bucket and
maybe consider it for a migration */
+ public final long creationTime;
+ private boolean hasBeenFreed = false;
- public TempBucket(Bucket cur) {
+ public TempBucket(long now, Bucket cur) {
+ if(cur == null)
+ throw new NullPointerException();
this.currentBucket = cur;
+ this.creationTime = now;
+ this.osIndex = 0;
+ this.tbis = new Vector<TempBucketInputStream>();
}
- public final void migrateToFileBucket() throws IOException {
- RAMBucket ramBucket = null;
+ private void closeInputStreams(boolean forFree) {
+ for(TempBucketInputStream is : tbis) {
+ try {
+ if(forFree)
+ is.close();
+ else
+ is._maybeResetInputStream();
+ } catch(IOException e) {
+ Closer.close(is);
+ tbis.remove(is);
+ }
+ }
+ }
+
+ /** A blocking method to force-migrate from a RAMBucket to a
FileBucket */
+ private final void migrateToFileBucket() throws IOException {
+ Bucket toMigrate = null;
synchronized(this) {
- if(!isRAMBucket())
+ if(!isRAMBucket() || hasBeenFreed)
+ // Nothing to migrate! We don't want to
switch back to ram, do we?
return;
-
- ramBucket = (RAMBucket) currentBucket;
- TempFileBucket tempFB = new
TempFileBucket(filenameGenerator.makeRandomFilename(), filenameGenerator);
- BucketTools.copy(currentBucket, tempFB);
+ toMigrate = currentBucket;
+ Bucket tempFB = _makeFileBucket();
+ if(os != null) {
+ os.flush();
+ Closer.close(os);
+ // DO NOT INCREMENT THE osIndex HERE!
+ os = tempFB.getOutputStream();
+ if(currentSize > 0)
+ BucketTools.copyTo(toMigrate,
os, currentSize);
+ }
+ if(toMigrate.isReadOnly())
+ tempFB.setReadOnly();
+
+ closeInputStreams(false);
+
currentBucket = tempFB;
+ // We need streams to be reset to point to the
new bucket
}
- ramBucket.free();
+ if(logMINOR)
+ Logger.minor(this, "We have migrated
"+toMigrate.hashCode());
+
+ // We can free it on-thread as it's a rambucket
+ toMigrate.free();
+ // Might have changed already so we can't rely on
currentSize!
+ _hasFreed(toMigrate.size());
}
- public final synchronized boolean isRAMBucket() {
- return (currentBucket instanceof RAMBucket);
+ public synchronized final boolean isRAMBucket() {
+ return (currentBucket instanceof ArrayBucket);
}
public synchronized OutputStream getOutputStream() throws
IOException {
- return currentBucket.getOutputStream();
+ if(osIndex > 0)
+ throw new IOException("Only one OutputStream
per bucket!");
+ return new TempBucketOutputStream(++osIndex);
}
+ private class TempBucketOutputStream extends OutputStream {
+ private final short idx;
+
+ TempBucketOutputStream(short idx) throws IOException {
+ this.idx = idx;
+ if(os == null)
+ os = currentBucket.getOutputStream();
+ }
+
+ private void _maybeMigrateRamBucket(long futureSize)
throws IOException {
+ if(isRAMBucket()) {
+ boolean shouldMigrate = false;
+ boolean isOversized = false;
+
+ if(futureSize >=
Math.min(Integer.MAX_VALUE, maxRAMBucketSize * RAMBUCKET_CONVERSION_FACTOR)) {
+ isOversized = true;
+ shouldMigrate = true;
+ } else if ((futureSize - currentSize) +
bytesInUse >= maxRamUsed)
+ shouldMigrate = true;
+
+ if(shouldMigrate) {
+ if(logMINOR) {
+ if(isOversized)
+
Logger.minor(this, "The bucket is over
"+SizeUtil.formatSize(maxRAMBucketSize*RAMBUCKET_CONVERSION_FACTOR)+": we will
force-migrate it to disk.");
+ else
+
Logger.minor(this, "The bucketpool is full: force-migrate before we go over the
limit");
+ }
+ migrateToFileBucket();
+ }
+ }
+ }
+
+ @Override
+ public final void write(int b) throws IOException {
+ synchronized(TempBucket.this) {
+ long futureSize = currentSize + 1;
+ _maybeMigrateRamBucket(futureSize);
+ os.write(b);
+ currentSize = futureSize;
+ if(isRAMBucket()) // We need to
re-check because it might have changed!
+ _hasTaken(1);
+ }
+ }
+
+ @Override
+ public final void write(byte b[], int off, int len)
throws IOException {
+ synchronized(TempBucket.this) {
+ long futureSize = currentSize + len;
+ _maybeMigrateRamBucket(futureSize);
+ os.write(b, off, len);
+ currentSize = futureSize;
+ if(isRAMBucket()) // We need to
re-check because it might have changed!
+ _hasTaken(len);
+ }
+ }
+
+ @Override
+ public final void flush() throws IOException {
+ synchronized(TempBucket.this) {
+ _maybeMigrateRamBucket(currentSize);
+ os.flush();
+ }
+ }
+
+ @Override
+ public final void close() throws IOException {
+ synchronized(TempBucket.this) {
+ _maybeMigrateRamBucket(currentSize);
+ os.flush();
+ os.close();
+ // DO NOT NULL os OUT HERE!
+ }
+ }
+ }
+
public synchronized InputStream getInputStream() throws
IOException {
- return currentBucket.getInputStream();
+ if(os == null)
+ throw new IOException("No OutputStream has been
openned! Why would you want an InputStream then?");
+ TempBucketInputStream is = new
TempBucketInputStream(osIndex);
+ tbis.add(is);
+
+ return is;
}
+
+ private class TempBucketInputStream extends InputStream {
+ /** The current InputStream we use from the underlying
bucket */
+ private InputStream currentIS;
+ /** Keep a counter to know where we are on the stream
(useful when we have to reset and skip) */
+ private long index = 0;
+ /** Will change if a new OutputStream is openned: used
to detect deprecation */
+ private final short idx;
+
+ TempBucketInputStream(short idx) throws IOException {
+ this.idx = idx;
+ this.currentIS = currentBucket.getInputStream();
+ }
+
+ public void _maybeResetInputStream() throws IOException
{
+ if(idx != osIndex)
+ close();
+ }
+
+ @Override
+ public final int read() throws IOException {
+ synchronized(TempBucket.this) {
+ int toReturn = currentIS.read();
+ if(toReturn != -1)
+ index++;
+ return toReturn;
+ }
+ }
+
+ @Override
+ public int read(byte b[]) throws IOException {
+ synchronized(TempBucket.this) {
+ return read(b, 0, b.length);
+ }
+ }
+
+ @Override
+ public int read(byte b[], int off, int len) throws
IOException {
+ synchronized(TempBucket.this) {
+ int toReturn = currentIS.read(b, off,
len);
+ if(toReturn > 0)
+ index += toReturn;
+ return toReturn;
+ }
+ }
+
+ @Override
+ public long skip(long n) throws IOException {
+ synchronized(TempBucket.this) {
+ long skipped = currentIS.skip(n);
+ index += skipped;
+ return skipped;
+ }
+ }
+
+ @Override
+ public int available() throws IOException {
+ synchronized(TempBucket.this) {
+ return currentIS.available();
+ }
+ }
+
+ @Override
+ public boolean markSupported() {
+ return false;
+ }
+
+ @Override
+ public final void close() throws IOException {
+ synchronized(TempBucket.this) {
+ Closer.close(currentIS);
+ tbis.remove(this);
+ }
+ }
+ }
public synchronized String getName() {
return currentBucket.getName();
}
public synchronized long size() {
- return currentBucket.size();
+ return currentSize;
}
public synchronized boolean isReadOnly() {
@@ -67,45 +319,31 @@
}
public synchronized void free() {
+ if(hasBeenFreed) return;
+ hasBeenFreed = true;
+
+ Closer.close(os);
+ closeInputStreams(true);
currentBucket.free();
+ if(isRAMBucket()) {
+ _hasFreed(currentSize);
+ synchronized(ramBucketQueue) {
+ ramBucketQueue.remove(this);
+ }
+ }
}
}
-
- private class RAMBucket extends ArrayBucket {
- public RAMBucket(long size) {
- super("RAMBucket", size);
- _hasTaken(size);
- }
-
- @Override
- public void free() {
- super.free();
- _hasFreed(size());
- }
- }
- private final FilenameGenerator filenameGenerator;
- private long bytesInUse = 0;
-
- public final static long defaultIncrement = 4096;
-
- public final static float DEFAULT_FACTOR = 1.25F;
-
- public long maxRAMBucketSize;
- public long maxRamUsed;
-
- private final RandomSource strongPRNG;
- private final Random weakPRNG;
- private volatile boolean reallyEncrypt;
-
// Storage accounting disabled by default.
- public TempBucketFactory(FilenameGenerator filenameGenerator, long
maxBucketSizeKeptInRam, long maxRamUsed, RandomSource strongPRNG, Random
weakPRNG, boolean reallyEncrypt) {
+ public TempBucketFactory(Executor executor, FilenameGenerator
filenameGenerator, long maxBucketSizeKeptInRam, long maxRamUsed, RandomSource
strongPRNG, Random weakPRNG, boolean reallyEncrypt) {
this.filenameGenerator = filenameGenerator;
this.maxRamUsed = maxRamUsed;
this.maxRAMBucketSize = maxBucketSizeKeptInRam;
this.strongPRNG = strongPRNG;
this.weakPRNG = weakPRNG;
this.reallyEncrypt = reallyEncrypt;
+ this.executor = executor;
+ this.logMINOR = Logger.shouldLog(Logger.MINOR, this);
}
public Bucket makeBucket(long size) throws IOException {
@@ -129,22 +367,27 @@
}
public synchronized void setMaxRamUsed(long size) {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
maxRamUsed = size;
}
public synchronized long getMaxRamUsed() {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
return maxRamUsed;
}
public synchronized void setMaxRAMBucketSize(long size) {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
maxRAMBucketSize = size;
}
public synchronized long getMaxRAMBucketSize() {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
return maxRAMBucketSize;
}
public void setEncryption(boolean value) {
+ logMINOR = Logger.shouldLog(Logger.MINOR, this);
reallyEncrypt = value;
}
@@ -167,7 +410,10 @@
public TempBucket makeBucket(long size, float factor, long increment)
throws IOException {
Bucket realBucket = null;
boolean useRAMBucket = false;
+ long now = System.currentTimeMillis();
+ // We need to clean the queue in order to have "space" to host
new buckets
+ cleanBucketQueue(now);
synchronized(this) {
if((size > 0) && (size <= maxRAMBucketSize) &&
(bytesInUse <= maxRamUsed)) {
useRAMBucket = true;
@@ -175,10 +421,59 @@
}
// Do we want a RAMBucket or a FileBucket?
- realBucket = (useRAMBucket ? new RAMBucket(size) : new
TempFileBucket(filenameGenerator.makeRandomFilename(), filenameGenerator));
- // Do we want it to be encrypted?
- realBucket = (!reallyEncrypt ? realBucket : new
PaddedEphemerallyEncryptedBucket(realBucket, 1024, strongPRNG, weakPRNG));
+ realBucket = (useRAMBucket ? new ArrayBucket() :
_makeFileBucket());
- return new TempBucket(realBucket);
+ TempBucket toReturn = new TempBucket(now, realBucket);
+ if(useRAMBucket) { // No need to consider them for migration if
they can't be migrated
+ synchronized(ramBucketQueue) {
+ ramBucketQueue.add(toReturn);
+ }
+ }
+ return toReturn;
+}
+
+ /** Migrate all long-lived buckets from the queue */
+ private void cleanBucketQueue(long now) {
+ boolean shouldContinue = true;
+ // create a new list to avoid race-conditions
+ final Queue<TempBucket> toMigrate = new
LinkedList<TempBucket>();
+ do {
+ synchronized(ramBucketQueue) {
+ final TempBucket tmpBucket =
ramBucketQueue.peek();
+ if((tmpBucket == null) ||
(tmpBucket.creationTime + RAMBUCKET_MAX_AGE > now))
+ shouldContinue = false;
+ else {
+ if(logMINOR)
+ Logger.minor(this, "The bucket
is "+TimeUtil.formatTime(now - tmpBucket.creationTime)+" old: we will
force-migrate it to disk.");
+ ramBucketQueue.remove(tmpBucket);
+ toMigrate.add(tmpBucket);
+ }
+ }
+ } while(shouldContinue);
+
+ if(toMigrate.size() > 0) {
+ executor.execute(new Runnable() {
+
+ public void run() {
+ if(logMINOR)
+ Logger.minor(this, "We are
going to migrate " + toMigrate.size() + " RAMBuckets");
+ for(TempBucket tmpBucket : toMigrate) {
+ try {
+
tmpBucket.migrateToFileBucket();
+ } catch(IOException e) {
+ Logger.error(tmpBucket,
"An IOE occured while migrating long-lived buckets:" + e.getMessage(), e);
+ }
+ }
+ }
+ }, "RAMBucket migrator ("+now+')');
+ }
}
-}
+
+ private final Queue<TempBucket> ramBucketQueue = new
LinkedBlockingQueue<TempBucket>();
+
+ private Bucket _makeFileBucket() {
+ Bucket fileBucket = new
TempFileBucket(filenameGenerator.makeRandomFilename(), filenameGenerator);
+ // Do we want it to be encrypted?
+ return (reallyEncrypt ? new
PaddedEphemerallyEncryptedBucket(fileBucket, 1024, strongPRNG, weakPRNG) :
fileBucket);
+ }
+}
\ No newline at end of file
Modified:
branches/saltedhashstore/freenet/test/freenet/clients/http/filter/ContentFilterTest.java
===================================================================
---
branches/saltedhashstore/freenet/test/freenet/clients/http/filter/ContentFilterTest.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/test/freenet/clients/http/filter/ContentFilterTest.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -64,6 +64,6 @@
URI baseURI = new URI(BASE_URI);
byte[] dataToFilter = data.getBytes("UTF-8");
- return ContentFilter.filter(new ArrayBucket(dataToFilter, -1),
bf, typeName, baseURI, null).data.toString();
+ return ContentFilter.filter(new ArrayBucket(dataToFilter), bf,
typeName, baseURI, null).data.toString();
}
}
Modified:
branches/saltedhashstore/freenet/test/freenet/support/HTMLNodeTest.java
===================================================================
--- branches/saltedhashstore/freenet/test/freenet/support/HTMLNodeTest.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/test/freenet/support/HTMLNodeTest.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -211,11 +211,11 @@
HTMLNode methodHTMLNode = new HTMLNode(SAMPLE_OKAY_NODE_NAME);
methodHTMLNode.addChild(SAMPLE_OKAY_NODE_NAME,
SAMPLE_OKAY_ATTRIBUTE_NAME,
SAMPLE_ATTRIBUTE_VALUE);
- List childrenList = methodHTMLNode.children;
+ List<HTMLNode> childrenList = methodHTMLNode.children;
assertEquals(1,childrenList.size());
assertEquals(generateNoContentNodeOutput(SAMPLE_OKAY_NODE_NAME,
SAMPLE_OKAY_ATTRIBUTE_NAME,SAMPLE_ATTRIBUTE_VALUE),
- ((HTMLNode)childrenList.get(0)).generate());
+ childrenList.get(0).generate());
}
/**
@@ -228,12 +228,12 @@
methodHTMLNode.addChild(SAMPLE_OKAY_NODE_NAME,
SAMPLE_OKAY_ATTRIBUTE_NAME,
SAMPLE_ATTRIBUTE_VALUE,
SAMPLE_NODE_CONTENT);
- List childrenList = methodHTMLNode.children;
+ List<HTMLNode> childrenList = methodHTMLNode.children;
assertEquals(1,childrenList.size());
assertEquals(generateFullNodeOutput(SAMPLE_OKAY_NODE_NAME,
SAMPLE_OKAY_ATTRIBUTE_NAME,
SAMPLE_ATTRIBUTE_VALUE,
SAMPLE_NODE_CONTENT),
-
((HTMLNode)childrenList.get(0)).generate());
+ childrenList.get(0).generate());
}
/**
@@ -274,9 +274,9 @@
* @param attributesValues the attributes values to check
*/
private void testSingleChildAttributes(HTMLNode aHTMLNode,String[]
attibutesNames, String[] attributesValues) {
- List childrenList = aHTMLNode.children;
+ List<HTMLNode> childrenList = aHTMLNode.children;
assertEquals(1,childrenList.size());
- HTMLNode childHTMLNode = (HTMLNode)childrenList.get(0);
+ HTMLNode childHTMLNode = childrenList.get(0);
assertEquals(attibutesNames.length,childHTMLNode.getAttributes().size());
for(int i = 0 ; i<attibutesNames.length;i++)
assertEquals(attributesValues[i],
@@ -296,7 +296,7 @@
//since the HTMLNode name is not "#", or "%",
//the content will be a new child with the "#" name
assertEquals(SAMPLE_NODE_CONTENT,
-
((HTMLNode)(methodHTMLNode.children.get(0))).getContent());
+ methodHTMLNode.children.get(0).getContent());
assertNull(methodHTMLNode.getContent());
methodHTMLNode = new HTMLNode("#",SAMPLE_NODE_CONTENT);
Modified:
branches/saltedhashstore/freenet/test/freenet/support/LRUHashtableTest.java
===================================================================
--- branches/saltedhashstore/freenet/test/freenet/support/LRUHashtableTest.java
2008-09-02 15:07:40 UTC (rev 22348)
+++ branches/saltedhashstore/freenet/test/freenet/support/LRUHashtableTest.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -50,8 +50,8 @@
* @param size HashTable size
* @return the created LRUHashtable
*/
- private LRUHashtable createSampleHashTable(int size) {
- LRUHashtable methodLRUht = new LRUHashtable();
+ private LRUHashtable<Object, Object> createSampleHashTable(int size) {
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects = createSampleKeyVal(size);
for (int i=0;i<sampleObjects.length;i++)
methodLRUht.push(sampleObjects[i][0],sampleObjects[i][1]);
@@ -66,7 +66,7 @@
* @param aValue the correspondent value
* @return true if the key is present and returned value is the same as
in the argument
*/
- private boolean verifyKeyValPresence(LRUHashtable aLRUht, Object aKey,
Object aValue) {
+ private boolean verifyKeyValPresence(LRUHashtable<Object, Object>
aLRUht, Object aKey, Object aValue) {
if (aLRUht.containsKey(aKey))
return aLRUht.get(aKey).equals(aValue);
return false;
@@ -80,7 +80,7 @@
* is raised
*/
public void testPushNull() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
try {
//a null value is admitted
methodLRUht.push(new Object(),null);}
@@ -104,7 +104,7 @@
* time.
*/
public void testPushSameObjTwice() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
Object[][] sampleObj = {
{ new Integer(sampleElemsNumber), new Object()
},
{ new Integer(sampleElemsNumber+1), new
Object() } };
@@ -132,7 +132,7 @@
* values.
*/
public void testPushSameKey() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
Object[][] sampleObj = {
{ new Integer(sampleElemsNumber), new Object()
},
{ new Integer(sampleElemsNumber+1), new
Object() } };
@@ -162,7 +162,7 @@
* HashTable entry deleted
*/
public void testPopKey() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
//pushing objects
for (int i=0; i<sampleObjects.length; i++)
@@ -182,7 +182,7 @@
* HashTable entry deleted
*/
public void testPopValue() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
//pushing objects
for (int i=0; i<sampleObjects.length; i++)
@@ -210,7 +210,7 @@
* verifying if their peekValue is correct
*/
public void testPeekValue() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
//pushing objects
for (int i=0; i<sampleObjects.length; i++)
@@ -232,7 +232,7 @@
* the LRUHashTable
*/
public void testSize() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
assertTrue(methodLRUht.size()==0);
//pushing objects
@@ -253,7 +253,7 @@
* the HashTable size.
*/
public void testRemoveKey() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
//pushing objects
for (int i=0; i<sampleObjects.length; i++)
@@ -271,7 +271,7 @@
* setting up a sample queue.
*/
public void testRemoveNullKey() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
try {
methodLRUht.removeKey(null);
fail("Expected Exception Error Not Thrown!"); }
@@ -285,7 +285,7 @@
* setting up a sample LRUHashtable.
*/
public void testRemoveNotPresent() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
assertFalse(methodLRUht.removeKey(new Object()));
}
@@ -296,7 +296,7 @@
* Then it search for a present one.
*/
public void testContainsKey() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
assertFalse(methodLRUht.containsKey(new Object()));
Object methodSampleObj = new Object();
methodLRUht.push(methodSampleObj,null);
@@ -310,7 +310,7 @@
* then it search a present key.
*/
public void testGet() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
assertNull(methodLRUht.get(new Object()));
Object methodSampleKey = new Object();
Object methodSampleValue = new Object();
@@ -323,7 +323,7 @@
* a null key.
*/
public void testGetNullKey() {
- LRUHashtable methodLRUht =
createSampleHashTable(sampleElemsNumber);
+ LRUHashtable<Object, Object> methodLRUht =
createSampleHashTable(sampleElemsNumber);
try {
methodLRUht.get(null);
fail("Expected Exception Error Not Thrown!"); }
@@ -337,7 +337,7 @@
* is correct
*/
public void testKeys() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
Object[][] sampleObjects =
createSampleKeyVal(sampleElemsNumber);
//pushing objects
for (int i=0; i<sampleObjects.length; i++)
@@ -356,7 +356,7 @@
* out all keys in a sample LRUHashTable
*/
public void testIsEmpty() {
- LRUHashtable methodLRUht = new LRUHashtable();
+ LRUHashtable<Object, Object> methodLRUht = new
LRUHashtable<Object, Object>();
assertTrue(methodLRUht.isEmpty());
methodLRUht = createSampleHashTable(sampleElemsNumber);
//popping keys
Modified:
branches/saltedhashstore/freenet/test/freenet/support/MultiValueTableTest.java
===================================================================
---
branches/saltedhashstore/freenet/test/freenet/support/MultiValueTableTest.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/test/freenet/support/MultiValueTableTest.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -15,12 +15,12 @@
*/
package freenet.support;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
-import java.util.Arrays;
import junit.framework.TestCase;
@@ -51,7 +51,7 @@
for (int i=0; i<sampleObjects.length;i++) {
if (isRandom)
methodValuesNumber =
1+rnd.nextInt(valuesNumber);
- sampleObjects[i][0] = new Integer(i);
+ sampleObjects[i][0] = i;
sampleObjects[i][1] =
fillSampleValuesList(methodValuesNumber); }
return sampleObjects;
}
Modified:
branches/saltedhashstore/freenet/test/freenet/support/compress/GzipCompressorTest.java
===================================================================
---
branches/saltedhashstore/freenet/test/freenet/support/compress/GzipCompressorTest.java
2008-09-02 15:07:40 UTC (rev 22348)
+++
branches/saltedhashstore/freenet/test/freenet/support/compress/GzipCompressorTest.java
2008-09-02 15:13:36 UTC (rev 22349)
@@ -111,7 +111,7 @@
public void testCompressException() {
byte[] uncompressedData = UNCOMPRESSED_DATA_1.getBytes();
- Bucket inBucket = new ArrayBucket(uncompressedData,
uncompressedData.length);
+ Bucket inBucket = new ArrayBucket(uncompressedData);
BucketFactory factory = new ArrayBucketFactory();
try {
@@ -133,7 +133,7 @@
byte[] compressedData = doCompress(uncompressedData);
- Bucket inBucket = new ArrayBucket(compressedData,
uncompressedData.length);
+ Bucket inBucket = new ArrayBucket(compressedData);
BucketFactory factory = new ArrayBucketFactory();
try {
@@ -147,7 +147,7 @@
private byte[] doBucketDecompress(byte[] compressedData) {
- Bucket inBucket = new ArrayBucket(compressedData,
compressedData.length);
+ Bucket inBucket = new ArrayBucket(compressedData);
BucketFactory factory = new ArrayBucketFactory();
Bucket outBucket = null;
@@ -179,7 +179,7 @@
}
private byte[] doCompress(byte[] uncompressedData) {
- Bucket inBucket = new ArrayBucket(uncompressedData,
uncompressedData.length);
+ Bucket inBucket = new ArrayBucket(uncompressedData);
BucketFactory factory = new ArrayBucketFactory();
Bucket outBucket = null;