From nextgens at freenetproject.org Fri Nov 2 01:06:51 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 2 Nov 2007 01:06:51 +0000 (UTC) Subject: [freenet-cvs] r15658 - trunk/website/pages/en Message-ID: <20071102010651.BB1894798A1@freenetproject.org> Author: nextgens Date: 2007-11-02 01:06:51 +0000 (Fri, 02 Nov 2007) New Revision: 15658 Modified: trunk/website/pages/en/freemail.php Log: website: update the link to freemail Modified: trunk/website/pages/en/freemail.php =================================================================== --- trunk/website/pages/en/freemail.php 2007-11-02 01:04:43 UTC (rev 15657) +++ trunk/website/pages/en/freemail.php 2007-11-02 01:06:51 UTC (rev 15658) @@ -3,7 +3,7 @@

Freemail is an email system for Freenet. It allows you to send anonymous emails to other Freenet users using your standard email client. It is currently not bundled in the Freenet installer, and has to be downloaded separately.

-

You can download the latest pre-compiled version from http://downloads.freenetproject.org/alpha/Freemail/

+

You can download the latest pre-compiled version from http://downloads.freenetproject.org/alpha/plugins/Freemail/

The short version

@@ -173,4 +173,4 @@ find and click on the top line of the new incoming mail account you added. In our example this would be something like me at jsmith.freemail. There should be a drop-down box called Outgoing Server (SMTP). Set this to the new setup we just added: something like Freemail - localhost. And click OK. - \ No newline at end of file + From nextgens at freenetproject.org Fri Nov 2 01:08:44 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 2 Nov 2007 01:08:44 +0000 (UTC) Subject: [freenet-cvs] r15659 - trunk/freenet/src/freenet/l10n Message-ID: <20071102010844.CA47547A014@freenetproject.org> Author: nextgens Date: 2007-11-02 01:08:44 +0000 (Fri, 02 Nov 2007) New Revision: 15659 Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties Log: l10n: update to the german translation Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties =================================================================== --- trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties 2007-11-02 01:06:51 UTC (rev 15658) +++ trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties 2007-11-02 01:08:44 UTC (rev 15659) @@ -536,7 +536,7 @@ Node.extraPeerDirLong=Name des Verzeichnis in dem zus?tzliche Partner-Daten gespeichert werden. Node.forceBigShrink=Gro?e Daten-Kompressionen sofort ausf?hren Node.forceBigShrinkLong=Wenn aktiviert, werden gro?e Speicher-Komprimierungen (?ber 10%) sofort ausgef?hrt (anstatt auf den n?chsten Neustart des Knotens zu warten). Komprimierungen im laufenden Betrieb bewahren nicht die zuletzt benutzten Daten, daher ist dies nicht empfehlenswert; benutzen Sie dies nur, wenn Sie ein sofortiges Ergebnis haben m?ssen. -Node.inBWLimit=Limit f?r ausgehende Bandbreite (Bytes pro Sekunde) +Node.inBWLimit=Limit f?r hereinkommende Bandbreite (Bytes pro Sekunde) Node.inBWLimitLong=Limit f?r die hereinkommende Bandbreite (Bytes/Sek); der Knoten wird versuchen dieses nicht zu ?berschreiten; -1 = 4x das gesetzte Limit f?r die ausgehende Bandbreite Node.invalidStoreSize=Die Speicher-Gr??e muss mindestens 32MB betragen Node.l10nLanguage=Die Sprache die der Knoten benutzt um Nachrichten anzuzeigen From nextgens at freenetproject.org Sat Nov 3 10:58:42 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 10:58:42 +0000 (UTC) Subject: [freenet-cvs] r15663 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103105842.87C0647AAC3@freenetproject.org> Author: nextgens Date: 2007-11-03 10:58:42 +0000 (Sat, 03 Nov 2007) New Revision: 15663 Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java Log: It make sense to have public static final constants here Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java 2007-11-02 23:02:32 UTC (rev 15662) +++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java 2007-11-03 10:58:42 UTC (rev 15663) @@ -65,7 +65,8 @@ private boolean doRobots; static boolean isPanicButtonToBeShown; - static final int DEFAULT_FPROXY_PORT = 8888; + public static final int DEFAULT_FPROXY_PORT = 8888; + public static final String DEFAULT_BIND_TO = "127.0.0.1,0:0:0:0:0:0:0:1"; class FProxyPortCallback implements IntCallback { @@ -275,7 +276,7 @@ fproxyConfig.register("port", DEFAULT_FPROXY_PORT, configItemOrder++, true, true, "SimpleToadletServer.port", "SimpleToadletServer.portLong", new FProxyPortCallback()); - fproxyConfig.register("bindTo", "127.0.0.1", configItemOrder++, true, true, "SimpleToadletServer.bindTo", "SimpleToadletServer.bindToLong", + fproxyConfig.register("bindTo", DEFAULT_BIND_TO, configItemOrder++, true, true, "SimpleToadletServer.bindTo", "SimpleToadletServer.bindToLong", new FProxyBindtoCallback()); fproxyConfig.register("css", "clean", configItemOrder++, false, false, "SimpleToadletServer.cssName", "SimpleToadletServer.cssNameLong", new FProxyCSSNameCallback()); From nextgens at freenetproject.org Sat Nov 3 11:12:19 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 11:12:19 +0000 (UTC) Subject: [freenet-cvs] r15664 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103111219.CF157479878@freenetproject.org> Author: nextgens Date: 2007-11-03 11:12:19 +0000 (Sat, 03 Nov 2007) New Revision: 15664 Modified: trunk/freenet/src/freenet/clients/http/StaticToadlet.java Log: doh Modified: trunk/freenet/src/freenet/clients/http/StaticToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StaticToadlet.java 2007-11-03 10:58:42 UTC (rev 15663) +++ trunk/freenet/src/freenet/clients/http/StaticToadlet.java 2007-11-03 11:12:19 UTC (rev 15664) @@ -20,8 +20,8 @@ super(client); } - private static final String ROOT_URL = "/static/"; - private static final String ROOT_PATH = "staticfiles/"; + public static final String ROOT_URL = "/static/"; + public static final String ROOT_PATH = "staticfiles/"; public void handleGet(URI uri, HTTPRequest request, ToadletContext ctx) throws ToadletContextClosedException, IOException { String path = uri.getPath(); From nextgens at freenetproject.org Sat Nov 3 11:46:49 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 11:46:49 +0000 (UTC) Subject: [freenet-cvs] r15665 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103114650.03A064798F0@freenetproject.org> Author: nextgens Date: 2007-11-03 11:46:49 +0000 (Sat, 03 Nov 2007) New Revision: 15665 Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java Log: Small refactoring Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java =================================================================== --- trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java 2007-11-03 11:12:19 UTC (rev 15664) +++ trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java 2007-11-03 11:46:49 UTC (rev 15665) @@ -50,7 +50,7 @@ private boolean closed; private boolean shouldDisconnect; - public ToadletContextImpl(Socket sock, MultiValueTable headers, String CSSName, BucketFactory bf, PageMaker pageMaker, ToadletContainer container) throws IOException { + public ToadletContextImpl(Socket sock, MultiValueTable headers, BucketFactory bf, PageMaker pageMaker, ToadletContainer container) throws IOException { this.headers = headers; this.closed = false; sockOutputStream = sock.getOutputStream(); @@ -271,8 +271,8 @@ } boolean disconnect = shouldDisconnectAfterHandled(split[2].equals("HTTP/1.0"), headers); - - ToadletContextImpl ctx = new ToadletContextImpl(sock, headers, container.getCSSName(), bf, pageMaker, container); + + ToadletContextImpl ctx = new ToadletContextImpl(sock, headers, bf, pageMaker, container); ctx.shouldDisconnect = disconnect; /* From nextgens at freenetproject.org Sat Nov 3 11:49:45 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 11:49:45 +0000 (UTC) Subject: [freenet-cvs] r15666 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103114945.0459347A6BA@freenetproject.org> Author: nextgens Date: 2007-11-03 11:49:44 +0000 (Sat, 03 Nov 2007) New Revision: 15666 Modified: trunk/freenet/src/freenet/clients/http/PageMaker.java Log: That should be public too Modified: trunk/freenet/src/freenet/clients/http/PageMaker.java =================================================================== --- trunk/freenet/src/freenet/clients/http/PageMaker.java 2007-11-03 11:46:49 UTC (rev 15665) +++ trunk/freenet/src/freenet/clients/http/PageMaker.java 2007-11-03 11:49:44 UTC (rev 15666) @@ -24,7 +24,7 @@ */ public class PageMaker { - private static final String DEFAULT_THEME = "clean"; + public static final String DEFAULT_THEME = "clean"; private String theme; private File override; private final List navigationLinkTexts = new ArrayList(); @@ -57,7 +57,7 @@ this.theme = theme; } } - + public void addNavigationLink(String path, String name, String title, boolean fullOnly, LinkEnabledCallback cb) { navigationLinkTexts.add(name); if(!fullOnly) From nextgens at freenetproject.org Sat Nov 3 11:56:23 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 11:56:23 +0000 (UTC) Subject: [freenet-cvs] r15667 - in trunk/freenet/src/freenet: clients/http node Message-ID: <20071103115623.6341E47B2C3@freenetproject.org> Author: nextgens Date: 2007-11-03 11:56:23 +0000 (Sat, 03 Nov 2007) New Revision: 15667 Added: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Modified: trunk/freenet/src/freenet/node/Node.java trunk/freenet/src/freenet/node/NodeClientCore.java Log: Display a dirty toadlet using a dummy ToadletServer when the node is starting up. ~ I didn't test it much... Added: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java (rev 0) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 11:56:23 UTC (rev 15667) @@ -0,0 +1,271 @@ +/* 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.clients.http; + +import freenet.support.HTMLNode; +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; +import java.net.JarURLConnection; +import java.net.Socket; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.net.URI; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import freenet.io.NetworkInterface; +import freenet.l10n.L10n; +import freenet.support.Logger; +import freenet.support.OOMHandler; +import freenet.support.SimpleFieldSet; +import freenet.support.Executor; +import freenet.support.api.BucketFactory; +import freenet.support.api.HTTPRequest; +import freenet.support.io.ArrayBucketFactory; + +/** + * A Placeholder displayed before fproxy starts up. + * + * @author nextgens + * + * TODO: Maybe add a progress bar or something ? + * TODO: What about userAlerts ? + * TODO: Shall l10n be loaded before ? + */ +public class StartupToadletServer implements Runnable { + + private int port; + private final NetworkInterface networkInterface; + private String cssName; + private Thread myThread; + private final PageMaker pageMaker; + private String formPassword; + private Executor executor; + private final BucketFactory bf = new ArrayBucketFactory(); + private final File configFile = new File("freenet.ini"); + private final ToadletContainer container = new ToadletContainer() { + + public void register(Toadlet t, String urlPrefix, boolean atFront, boolean fullAccessOnly) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public Toadlet findToadlet(URI uri) { + return startupToadlet; + } + + public String getCSSName() { + return cssName; + } + + public String getFormPassword() { + return formPassword; + } + + public boolean isAllowedFullAccess(InetAddress remoteAddr) { + return false; + } + + public boolean doRobots() { + return true; + } + + public HTMLNode addFormChild(HTMLNode parentNode, String target, String name) { + throw new UnsupportedOperationException("Not supported yet."); + } + }; + + private final Toadlet startupToadlet = new Toadlet(null) { + public void handleGet(URI uri, HTTPRequest req, ToadletContext ctx) throws ToadletContextClosedException, IOException, RedirectException { + String path = uri.getPath(); + if(path.startsWith(StaticToadlet.ROOT_URL)) { + staticToadlet.handleGet(uri, req, ctx); + } else { + String desc = "Freenet is starting up"; + HTMLNode pageNode = ctx.getPageMaker().getPageNode(desc, false, ctx); + HTMLNode contentNode = ctx.getPageMaker().getContentNode(pageNode); + + HTMLNode infobox = contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-error", desc)); + HTMLNode infoboxContent = ctx.getPageMaker().getContentNode(infobox); + infoboxContent.addChild("#", "Your freenet node is starting up, please hold on."); + + //TODO: send a Retry-After header ? + writeHTMLReply(ctx, 503, desc, pageNode.generate()); + } + } + + public String supportedMethods() { + return "GET"; + } + }; + + private final StaticToadlet staticToadlet = new StaticToadlet(null); + + /** + * Create a SimpleToadletServer, using the settings from the SubConfig (the fproxy.* + * config). + */ + public StartupToadletServer(Executor executor) { + int configItemOrder = 0; + this.executor = executor; + formPassword = String.valueOf(this.getClass().hashCode()); + + List themes = new ArrayList(); + 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); + } + } + } + } + } + } catch (IOException ioe1) { + Logger.error(this, "error creating list of themes", ioe1); + } catch (NullPointerException npe) { + Logger.error(this, "error creating list of themes", npe); + } finally { + if (!themes.contains("clean")) { + themes.add("clean"); + } + } + + // hack ... we don't have the config framework yet + try { + SimpleFieldSet config = SimpleFieldSet.readFrom(configFile, false, false); + port = config.getInt("fproxy.port"); + cssName = config.get("fproxy.css"); + } catch (Exception e) { + port = SimpleToadletServer.DEFAULT_FPROXY_PORT; + cssName = PageMaker.DEFAULT_THEME; + } + + pageMaker = new PageMaker(cssName); + + boolean start = true; + NetworkInterface ni = null; + try { + ni = NetworkInterface.create(port, SimpleToadletServer.DEFAULT_BIND_TO, SimpleToadletServer.DEFAULT_BIND_TO, executor); + } catch (IOException e) { + Logger.error(this, "Error starting SimpleToadletServer on " + port); + System.err.println("Error starting SimpleToadletServer on " + port); + start = false; + } + this.networkInterface = ni; + + if (start) { + myThread = new Thread(this, "SimpleToadletServer"); + myThread.setDaemon(true); + myThread.start(); + Logger.normal(this, "Starting SimpleToadletServer on " + port); + System.out.println("Starting SimpleToadletServer on " + port); + } + } + + public void run() { + try { + networkInterface.setSoTimeout(500); + } catch (SocketException e1) { + Logger.error(this, "Could not set so-timeout to 500ms; on-the-fly disabling of the interface will not work"); + } + while (true) { + synchronized (this) { + if (myThread == null) { + return; + } + } + try { + Socket conn = networkInterface.accept(); + if (Logger.shouldLog(Logger.MINOR, this)) { + Logger.minor(this, "Accepted connection"); + } + SocketHandler sh = new SocketHandler(conn); + sh.start(); + } catch (SocketTimeoutException e) { + // Go around again, this introduced to avoid blocking forever when told to quit + } + } + } + + public synchronized void kill() throws IOException { + myThread = null; + networkInterface.close(); + } + + public class SocketHandler implements Runnable { + + Socket sock; + + public SocketHandler(Socket conn) { + this.sock = conn; + } + + void start() { + executor.execute(this, "SimpleToadletServer$SocketHandler@" + hashCode()); + } + + public void run() { + freenet.support.Logger.OSThread.logPID(this); + boolean logMINOR = Logger.shouldLog(Logger.MINOR, this); + if (logMINOR) { + Logger.minor(this, "Handling connection"); + } + try { + ToadletContextImpl.handle(sock, container, bf, pageMaker); + } catch (OutOfMemoryError e) { + OOMHandler.handleOOM(e); + System.err.println("SimpleToadletServer request above failed."); + } catch (Throwable t) { + System.err.println("Caught in SimpleToadletServer: " + t); + t.printStackTrace(); + Logger.error(this, "Caught in SimpleToadletServer: " + t, t); + } + if (logMINOR) { + Logger.minor(this, "Handled connection"); + } + } + } + + public String getCSSName() { + return this.cssName; + } + + public void setCSSName(String name) { + this.cssName = name; + } + + private static String l10n(String key, String pattern, String value) { + return L10n.getString("SimpleToadletServer." + key, pattern, value); + } + + private static String l10n(String key) { + return L10n.getString("SimpleToadletServer." + key); + } +} Modified: trunk/freenet/src/freenet/node/Node.java =================================================================== --- trunk/freenet/src/freenet/node/Node.java 2007-11-03 11:49:44 UTC (rev 15666) +++ trunk/freenet/src/freenet/node/Node.java 2007-11-03 11:56:23 UTC (rev 15667) @@ -38,6 +38,7 @@ import com.sleepycat.je.util.DbDump; import freenet.client.FetchContext; +import freenet.clients.http.StartupToadletServer; import freenet.config.EnumerableOptionCallback; import freenet.config.FreenetFilePersistentConfig; import freenet.config.InvalidConfigValueException; @@ -360,6 +361,8 @@ public final long bootID; public final long startupTime; + + public final StartupToadletServer startupPageHolder; public final NodeClientCore clientCore; @@ -538,6 +541,9 @@ if(logConfigHandler != lc) logConfigHandler=lc; startupTime = System.currentTimeMillis(); + // Will be set up properly afterwards + L10n.setLanguage(L10n.FALLBACK_DEFAULT); + startupPageHolder = new StartupToadletServer(executor); nodeNameUserAlert = new MeaningfulNodeNameUserAlert(this); recentlyCompletedIDs = new LRUQueue(); this.config = config; @@ -1255,7 +1261,7 @@ nodeStats = new NodeStats(this, sortOrder, new SubConfig("node.load", config), oldThrottleFS, obwLimit, ibwLimit); - clientCore = new NodeClientCore(this, config, nodeConfig, nodeDir, getDarknetPortNumber(), sortOrder, oldThrottleFS == null ? null : oldThrottleFS.subset("RequestStarters")); + clientCore = new NodeClientCore(this, config, nodeConfig, nodeDir, getDarknetPortNumber(), sortOrder, oldThrottleFS == null ? null : oldThrottleFS.subset("RequestStarters"), startupPageHolder); nodeConfig.register("disableHangCheckers", false, sortOrder++, true, false, "Node.disableHangCheckers", "Node.disableHangCheckersLong", new BooleanCallback() { Modified: trunk/freenet/src/freenet/node/NodeClientCore.java =================================================================== --- trunk/freenet/src/freenet/node/NodeClientCore.java 2007-11-03 11:49:44 UTC (rev 15666) +++ trunk/freenet/src/freenet/node/NodeClientCore.java 2007-11-03 11:56:23 UTC (rev 15667) @@ -16,6 +16,7 @@ import freenet.clients.http.bookmark.BookmarkManager; import freenet.clients.http.FProxyToadlet; import freenet.clients.http.SimpleToadletServer; +import freenet.clients.http.StartupToadletServer; import freenet.clients.http.filter.FilterCallback; import freenet.clients.http.filter.FoundURICallback; import freenet.clients.http.filter.GenericReadFilterCallback; @@ -113,7 +114,7 @@ static final long MAX_ARCHIVED_FILE_SIZE = 1024*1024; // arbitrary... FIXME static final int MAX_CACHED_ELEMENTS = 256*1024; // equally arbitrary! FIXME hopefully we can cache many of these though - NodeClientCore(Node node, Config config, SubConfig nodeConfig, File nodeDir, int portNumber, int sortOrder, SimpleFieldSet oldThrottleFS) throws NodeInitException { + NodeClientCore(Node node, Config config, SubConfig nodeConfig, File nodeDir, int portNumber, int sortOrder, SimpleFieldSet oldThrottleFS, StartupToadletServer sts) throws NodeInitException { this.node = node; this.nodeStats = node.nodeStats; this.random = node.random; @@ -351,6 +352,7 @@ // FProxy // FIXME this is a hack, the real way to do this is plugins try { + sts.kill(); toadletContainer = FProxyToadlet.maybeCreateFProxyEtc(this, node, config, fproxyConfig); } catch (IOException e) { e.printStackTrace(); From nextgens at freenetproject.org Sat Nov 3 12:24:45 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 12:24:45 +0000 (UTC) Subject: [freenet-cvs] r15668 - trunk/freenet/src/freenet/node Message-ID: <20071103122445.5063947A17D@freenetproject.org> Author: nextgens Date: 2007-11-03 12:24:45 +0000 (Sat, 03 Nov 2007) New Revision: 15668 Modified: trunk/freenet/src/freenet/node/Node.java trunk/freenet/src/freenet/node/NodeClientCore.java Log: The object created should be GCable... hence it's better to nullify them. Modified: trunk/freenet/src/freenet/node/Node.java =================================================================== --- trunk/freenet/src/freenet/node/Node.java 2007-11-03 11:56:23 UTC (rev 15667) +++ trunk/freenet/src/freenet/node/Node.java 2007-11-03 12:24:45 UTC (rev 15668) @@ -362,7 +362,7 @@ public final long bootID; public final long startupTime; - public final StartupToadletServer startupPageHolder; + private StartupToadletServer startupPageHolder; public final NodeClientCore clientCore; @@ -1261,7 +1261,7 @@ nodeStats = new NodeStats(this, sortOrder, new SubConfig("node.load", config), oldThrottleFS, obwLimit, ibwLimit); - clientCore = new NodeClientCore(this, config, nodeConfig, nodeDir, getDarknetPortNumber(), sortOrder, oldThrottleFS == null ? null : oldThrottleFS.subset("RequestStarters"), startupPageHolder); + clientCore = new NodeClientCore(this, config, nodeConfig, nodeDir, getDarknetPortNumber(), sortOrder, oldThrottleFS == null ? null : oldThrottleFS.subset("RequestStarters")); nodeConfig.register("disableHangCheckers", false, sortOrder++, true, false, "Node.disableHangCheckers", "Node.disableHangCheckersLong", new BooleanCallback() { @@ -2751,5 +2751,10 @@ public long getUptime() { return System.currentTimeMillis() - usm.getStartedTime(); } - + + protected void killStartupToadlet() throws IOException { + startupPageHolder.kill(); + // Give it a chance to be GCed + startupPageHolder = null; + } } Modified: trunk/freenet/src/freenet/node/NodeClientCore.java =================================================================== --- trunk/freenet/src/freenet/node/NodeClientCore.java 2007-11-03 11:56:23 UTC (rev 15667) +++ trunk/freenet/src/freenet/node/NodeClientCore.java 2007-11-03 12:24:45 UTC (rev 15668) @@ -16,7 +16,6 @@ import freenet.clients.http.bookmark.BookmarkManager; import freenet.clients.http.FProxyToadlet; import freenet.clients.http.SimpleToadletServer; -import freenet.clients.http.StartupToadletServer; import freenet.clients.http.filter.FilterCallback; import freenet.clients.http.filter.FoundURICallback; import freenet.clients.http.filter.GenericReadFilterCallback; @@ -114,7 +113,7 @@ static final long MAX_ARCHIVED_FILE_SIZE = 1024*1024; // arbitrary... FIXME static final int MAX_CACHED_ELEMENTS = 256*1024; // equally arbitrary! FIXME hopefully we can cache many of these though - NodeClientCore(Node node, Config config, SubConfig nodeConfig, File nodeDir, int portNumber, int sortOrder, SimpleFieldSet oldThrottleFS, StartupToadletServer sts) throws NodeInitException { + NodeClientCore(Node node, Config config, SubConfig nodeConfig, File nodeDir, int portNumber, int sortOrder, SimpleFieldSet oldThrottleFS) throws NodeInitException { this.node = node; this.nodeStats = node.nodeStats; this.random = node.random; @@ -352,7 +351,7 @@ // FProxy // FIXME this is a hack, the real way to do this is plugins try { - sts.kill(); + node.killStartupToadlet(); toadletContainer = FProxyToadlet.maybeCreateFProxyEtc(this, node, config, fproxyConfig); } catch (IOException e) { e.printStackTrace(); From nextgens at freenetproject.org Sat Nov 3 12:39:47 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 12:39:47 +0000 (UTC) Subject: [freenet-cvs] r15669 - in trunk/freenet/src/freenet: clients/http support/io Message-ID: <20071103123947.015414791AE@freenetproject.org> Author: nextgens Date: 2007-11-03 12:39:46 +0000 (Sat, 03 Nov 2007) New Revision: 15669 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java trunk/freenet/src/freenet/support/io/FileUtil.java Log: Display parts of the wrapper.log file on the startup page holder Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 12:24:45 UTC (rev 15668) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 12:39:46 UTC (rev 15669) @@ -22,6 +22,7 @@ import java.util.jar.JarFile; import freenet.io.NetworkInterface; import freenet.l10n.L10n; +import freenet.support.io.FileUtil; import freenet.support.Logger; import freenet.support.OOMHandler; import freenet.support.SimpleFieldSet; @@ -95,6 +96,11 @@ HTMLNode infoboxContent = ctx.getPageMaker().getContentNode(infobox); infoboxContent.addChild("#", "Your freenet node is starting up, please hold on."); + final File logs = new File("wrapper.log"); + HTMLNode logInfobox = contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-info", "Current status")); + HTMLNode logInfoboxContent = ctx.getPageMaker().getContentNode(logInfobox); + logInfoboxContent.addChild("%", FileUtil.readUTF(logs, logs.length()-2000).replace("\n", "
\n")); + //TODO: send a Retry-After header ? writeHTMLReply(ctx, 503, desc, pageNode.generate()); } Modified: trunk/freenet/src/freenet/support/io/FileUtil.java =================================================================== --- trunk/freenet/src/freenet/support/io/FileUtil.java 2007-11-03 12:24:45 UTC (rev 15668) +++ trunk/freenet/src/freenet/support/io/FileUtil.java 2007-11-03 12:39:46 UTC (rev 15669) @@ -81,7 +81,11 @@ return result; } - public static String readUTF(File file) throws FileNotFoundException, IOException { + public static String readUTF(File file) throws FileNotFoundException, IOException { + return readUTF(file, 0); + } + + public static String readUTF(File file, long offset) throws FileNotFoundException, IOException { StringBuffer result = new StringBuffer(); FileInputStream fis = null; BufferedInputStream bis = null; @@ -94,6 +98,7 @@ char[] buf = new char[4096]; int length = 0; + isr.skip(offset); while((length = isr.read(buf)) > 0) { result.append(buf, 0, length); From nextgens at freenetproject.org Sat Nov 3 12:46:03 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 12:46:03 +0000 (UTC) Subject: [freenet-cvs] r15670 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103124603.3EDA047A17D@freenetproject.org> Author: nextgens Date: 2007-11-03 12:46:03 +0000 (Sat, 03 Nov 2007) New Revision: 15670 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: Fix a 1.5ism Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 12:39:46 UTC (rev 15669) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 12:46:03 UTC (rev 15670) @@ -99,7 +99,7 @@ final File logs = new File("wrapper.log"); HTMLNode logInfobox = contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-info", "Current status")); HTMLNode logInfoboxContent = ctx.getPageMaker().getContentNode(logInfobox); - logInfoboxContent.addChild("%", FileUtil.readUTF(logs, logs.length()-2000).replace("\n", "
\n")); + logInfoboxContent.addChild("%", FileUtil.readUTF(logs, logs.length()-2000).replaceAll("\n", "
\n")); //TODO: send a Retry-After header ? writeHTMLReply(ctx, 503, desc, pageNode.generate()); From bombe at freenetproject.org Sat Nov 3 14:19:14 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 14:19:14 +0000 (UTC) Subject: [freenet-cvs] r15671 - trunk/freenet/src/freenet/pluginmanager Message-ID: <20071103141914.E818E479F6D@freenetproject.org> Author: bombe Date: 2007-11-03 14:19:14 +0000 (Sat, 03 Nov 2007) New Revision: 15671 Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java Log: fix plugin loading when manifest is wrong Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java =================================================================== --- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-03 12:46:03 UTC (rev 15670) +++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-03 14:19:14 UTC (rev 15671) @@ -483,12 +483,16 @@ Logger.error(this, "could not load manifest from plugin file"); throw new PluginNotFoundException("could not load manifest from plugin file"); } - Attributes pluginMainClassAttributes = manifest.getMainAttributes(); - if (pluginMainClassAttributes == null) { - Logger.error(this, "manifest does not contain Plugin-Main-Class attribute"); - throw new PluginNotFoundException("manifest does not contain Plugin-Main-Class attribute"); + Attributes mainAttributes = manifest.getMainAttributes(); + if (mainAttributes == null) { + Logger.error(this, "manifest does not contain attributes"); + throw new PluginNotFoundException("manifest does not contain attributes"); } - pluginMainClassName = pluginMainClassAttributes.getValue("Plugin-Main-Class"); + pluginMainClassName = mainAttributes.getValue("Plugin-Main-Class"); + if (pluginMainClassName == null) { + Logger.error(this, "manifest does not contain a Plugin-Main-Class attribute"); + throw new PluginNotFoundException("manifest does not contain a Plugin-Main-Class attribute"); + } } catch (JarException je1) { Logger.error(this, "could not process jar file", je1); throw new PluginNotFoundException("could not process jar file", je1); From nextgens at freenetproject.org Sat Nov 3 17:55:37 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 17:55:37 +0000 (UTC) Subject: [freenet-cvs] r15672 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103175537.BE37347B2D8@freenetproject.org> Author: nextgens Date: 2007-11-03 17:55:37 +0000 (Sat, 03 Nov 2007) New Revision: 15672 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: Fix an issue reported by Cooo (the pageholder was "staying" for too long) Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 14:19:14 UTC (rev 15671) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 17:55:37 UTC (rev 15672) @@ -100,7 +100,10 @@ HTMLNode logInfobox = contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-info", "Current status")); HTMLNode logInfoboxContent = ctx.getPageMaker().getContentNode(logInfobox); logInfoboxContent.addChild("%", FileUtil.readUTF(logs, logs.length()-2000).replaceAll("\n", "
\n")); - + + // If we don't disconnect we will have pipelining issues + ctx.forceDisconnect(); + //TODO: send a Retry-After header ? writeHTMLReply(ctx, 503, desc, pageNode.generate()); } From nextgens at freenetproject.org Sat Nov 3 18:06:59 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sat, 3 Nov 2007 18:06:59 +0000 (UTC) Subject: [freenet-cvs] r15673 - trunk/freenet/src/freenet/clients/http Message-ID: <20071103180659.D6F7F47B31D@freenetproject.org> Author: nextgens Date: 2007-11-03 18:06:59 +0000 (Sat, 03 Nov 2007) New Revision: 15673 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: improve last commit Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 17:55:37 UTC (rev 15672) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-03 18:06:59 UTC (rev 15673) @@ -84,6 +84,9 @@ private final Toadlet startupToadlet = new Toadlet(null) { public void handleGet(URI uri, HTTPRequest req, ToadletContext ctx) throws ToadletContextClosedException, IOException, RedirectException { + // If we don't disconnect we will have pipelining issues + ctx.forceDisconnect(); + String path = uri.getPath(); if(path.startsWith(StaticToadlet.ROOT_URL)) { staticToadlet.handleGet(uri, req, ctx); @@ -101,9 +104,6 @@ HTMLNode logInfoboxContent = ctx.getPageMaker().getContentNode(logInfobox); logInfoboxContent.addChild("%", FileUtil.readUTF(logs, logs.length()-2000).replaceAll("\n", "
\n")); - // If we don't disconnect we will have pipelining issues - ctx.forceDisconnect(); - //TODO: send a Retry-After header ? writeHTMLReply(ctx, 503, desc, pageNode.generate()); } From bombe at freenetproject.org Sat Nov 3 20:06:48 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:06:48 +0000 (UTC) Subject: [freenet-cvs] r15674 - in trunk/freenet/src/freenet/support: . io Message-ID: <20071103200648.C239647AEDC@freenetproject.org> Author: bombe Date: 2007-11-03 20:06:48 +0000 (Sat, 03 Nov 2007) New Revision: 15674 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/io/Closer.java Log: r12812 at natrium: bombe | 2007-11-01 02:39:12 +0100 add method to close zip files Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12812 Modified: trunk/freenet/src/freenet/support/io/Closer.java =================================================================== --- trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 18:06:59 UTC (rev 15673) +++ trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 20:06:48 UTC (rev 15674) @@ -22,6 +22,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.jar.JarFile; +import java.util.zip.ZipFile; /** * Closes various resources. The resources are checked for being @@ -79,4 +80,19 @@ } } + /** + * Closes the given zip file. + * + * @param zipFile + * The zip file to close + */ + public static void close(ZipFile zipFile) { + if (zipFile != null) { + try { + zipFile.close(); + } catch (IOException e) { + } + } + } + } From bombe at freenetproject.org Sat Nov 3 20:07:41 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:07:41 +0000 (UTC) Subject: [freenet-cvs] r15675 - in trunk/freenet/src/freenet/support: . io Message-ID: <20071103200741.A172047AEDC@freenetproject.org> Author: bombe Date: 2007-11-03 20:07:41 +0000 (Sat, 03 Nov 2007) New Revision: 15675 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/io/Closer.java Log: r12813 at natrium: bombe | 2007-11-01 03:05:02 +0100 add method to close a Reader Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12812 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12813 Modified: trunk/freenet/src/freenet/support/io/Closer.java =================================================================== --- trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 20:06:48 UTC (rev 15674) +++ trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 20:07:41 UTC (rev 15675) @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.Reader; import java.util.jar.JarFile; import java.util.zip.ZipFile; @@ -66,6 +67,21 @@ } /** + * Closes the given reader. + * + * @param reader + * The reader to close + */ + public static void close(Reader reader) { + if (reader != null) { + try { + reader.close(); + } catch (IOException ioe1) { + } + } + } + + /** * Closes the given jar file. * * @param jarFile From bombe at freenetproject.org Sat Nov 3 20:08:15 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:08:15 +0000 (UTC) Subject: [freenet-cvs] r15676 - trunk/freenet/src/freenet/support Message-ID: <20071103200815.CEC3C47AEDC@freenetproject.org> Author: bombe Date: 2007-11-03 20:08:15 +0000 (Sat, 03 Nov 2007) New Revision: 15676 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/HTMLNode.java Log: r12814 at natrium: bombe | 2007-11-01 13:39:34 +0100 let a # tag with null content be a container for several adjacent childs Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12813 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12814 Modified: trunk/freenet/src/freenet/support/HTMLNode.java =================================================================== --- trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:07:41 UTC (rev 15675) +++ trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:08:15 UTC (rev 15676) @@ -136,7 +136,7 @@ } public StringBuffer generate(StringBuffer tagBuffer) { - if (name.equals("#")) { + if (name.equals("#") && (content != null)) { HTMLEncoder.encodeToBuffer(content, tagBuffer); return tagBuffer; } @@ -146,6 +146,13 @@ tagBuffer.append(content); return tagBuffer; } + if (name.equals("#")) { + for (int childIndex = 0, childCount = children.size(); childIndex < childCount; childIndex++) { + HTMLNode childNode = (HTMLNode) children.get(childIndex); + childNode.generate(tagBuffer); + } + return tagBuffer; + } tagBuffer.append('<').append(name); Set attributeSet = attributes.entrySet(); for (Iterator attributeIterator = attributeSet.iterator(); attributeIterator.hasNext();) { From bombe at freenetproject.org Sat Nov 3 20:09:03 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:09:03 +0000 (UTC) Subject: [freenet-cvs] r15677 - trunk/freenet/src/freenet/support Message-ID: <20071103200903.8C140478156@freenetproject.org> Author: bombe Date: 2007-11-03 20:09:03 +0000 (Sat, 03 Nov 2007) New Revision: 15677 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/HTMLNode.java Log: r12815 at natrium: bombe | 2007-11-01 14:35:44 +0100 add getFirstTag() method Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12814 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12815 Modified: trunk/freenet/src/freenet/support/HTMLNode.java =================================================================== --- trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:08:15 UTC (rev 15676) +++ trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:09:03 UTC (rev 15677) @@ -130,6 +130,27 @@ return addChild(new HTMLNode(nodeName, attributeNames, attributeValues, content)); } + /** + * Returns the name of the first "real" tag found in the hierarchy below + * this node. + * + * @return The name of the first "real" tag, or null if no + * "real" tag could be found + */ + public String getFirstTag() { + if (!name.equals("#")) { + return name; + } + for (int childIndex = 0, childCount = children.size(); childIndex < childCount; childIndex++) { + HTMLNode childNode = (HTMLNode) children.get(childIndex); + String tag = childNode.getFirstTag(); + if (tag != null) { + return tag; + } + } + return null; + } + public String generate() { StringBuffer tagBuffer = new StringBuffer(); return generate(tagBuffer).toString(); From bombe at freenetproject.org Sat Nov 3 20:09:51 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:09:51 +0000 (UTC) Subject: [freenet-cvs] r15678 - in trunk/freenet/src/freenet/support: . io Message-ID: <20071103200951.EFC77479620@freenetproject.org> Author: bombe Date: 2007-11-03 20:09:51 +0000 (Sat, 03 Nov 2007) New Revision: 15678 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/io/Closer.java Log: r12816 at natrium: bombe | 2007-11-02 05:12:10 +0100 add method to close writer Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12815 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12816 Modified: trunk/freenet/src/freenet/support/io/Closer.java =================================================================== --- trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 20:09:03 UTC (rev 15677) +++ trunk/freenet/src/freenet/support/io/Closer.java 2007-11-03 20:09:51 UTC (rev 15678) @@ -22,6 +22,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; +import java.io.Writer; import java.util.jar.JarFile; import java.util.zip.ZipFile; @@ -67,6 +68,21 @@ } /** + * Closes the given writer. + * + * @param writer + * The writer to close + */ + public static void close(Writer writer) { + if (writer != null) { + try { + writer.close(); + } catch (IOException ioe1) { + } + } + } + + /** * Closes the given reader. * * @param reader From bombe at freenetproject.org Sat Nov 3 20:10:33 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:10:33 +0000 (UTC) Subject: [freenet-cvs] r15679 - trunk/freenet/src/freenet/support Message-ID: <20071103201033.AED46478156@freenetproject.org> Author: bombe Date: 2007-11-03 20:10:33 +0000 (Sat, 03 Nov 2007) New Revision: 15679 Modified: trunk/freenet/src/freenet/support/ trunk/freenet/src/freenet/support/HTMLNode.java Log: r12817 at natrium: bombe | 2007-11-02 14:25:03 +0100 add constructor Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12816 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12817 Modified: trunk/freenet/src/freenet/support/HTMLNode.java =================================================================== --- trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:09:51 UTC (rev 15678) +++ trunk/freenet/src/freenet/support/HTMLNode.java 2007-11-03 20:10:33 UTC (rev 15679) @@ -39,6 +39,10 @@ this(name, new String[] { attributeName }, new String[] { attributeValue }, content); } + public HTMLNode(String name, String[] attributeNames, String[] attributeValues) { + this(name, attributeNames, attributeValues, null); + } + public HTMLNode(String name, String[] attributeNames, String[] attributeValues, String content) { Matcher nameMatcher = namePattern.matcher(name); From bombe at freenetproject.org Sat Nov 3 20:11:05 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 3 Nov 2007 20:11:05 +0000 (UTC) Subject: [freenet-cvs] r15680 - trunk/freenet/src/freenet/support Message-ID: <20071103201105.A4588479620@freenetproject.org> Author: bombe Date: 2007-11-03 20:11:05 +0000 (Sat, 03 Nov 2007) New Revision: 15680 Modified: trunk/freenet/src/freenet/support/ Log: r12850 at natrium: bombe | 2007-11-03 15:19:29 +0100 r12840 at natrium (orig r15669): nextgens | 2007-11-03 13:39:46 +0100 Display parts of the wrapper.log file on the startup page holder Property changes on: trunk/freenet/src/freenet/support ___________________________________________________________________ Name: svk:merge - 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12817 + 6a5e1407-ac3d-0410-81af-9028a69beae8:/branch/freenet-documentation-browser/src/freenet/support:12850 From nextgens at freenetproject.org Sun Nov 4 19:09:40 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sun, 4 Nov 2007 19:09:40 +0000 (UTC) Subject: [freenet-cvs] r15683 - trunk/freenet/test/freenet/support Message-ID: <20071104190940.B7D48478063@freenetproject.org> Author: nextgens Date: 2007-11-04 19:09:40 +0000 (Sun, 04 Nov 2007) New Revision: 15683 Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java Log: junit: SimpleFieldSetTest wasn't testing the class well enough :| Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java =================================================================== --- trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 17:11:11 UTC (rev 15682) +++ trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 19:09:40 UTC (rev 15683) @@ -41,6 +41,7 @@ //directSubset {"foo","bar"}, {"foo.bar","foobar"}, + {"foo.bar.foo","foobar"}, {"foo.bar.boo.far","foobar"}, {"foo2","foobar.fooboo.foofar.foofoo"}, {"foo3",KEY_VALUE_SEPARATOR+"bar"} }; From nextgens at freenetproject.org Sun Nov 4 19:13:18 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sun, 4 Nov 2007 19:13:18 +0000 (UTC) Subject: [freenet-cvs] r15684 - in trunk/freenet/src/freenet: l10n support Message-ID: <20071104191318.6A66C478171@freenetproject.org> Author: nextgens Date: 2007-11-04 19:13:18 +0000 (Sun, 04 Nov 2007) New Revision: 15684 Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.no.properties trunk/freenet/src/freenet/support/SimpleFieldSet.java Log: l10n: update of the Norwegian translation (thanks to Martin Nyhus); It allowed me to spot a bug in SimpleFieldSet :) Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.no.properties =================================================================== --- trunk/freenet/src/freenet/l10n/freenet.l10n.no.properties 2007-11-04 19:09:40 UTC (rev 15683) +++ trunk/freenet/src/freenet/l10n/freenet.l10n.no.properties 2007-11-04 19:13:18 UTC (rev 15684) @@ -33,6 +33,7 @@ BookmarkEditorToadlet.pasteTitle=Klipp ut/Lim inn BookmarkEditorToadlet.save=Lagre BookmarkEditorToadlet.title=Bokmerkeredigering +BookmarkEditorToadlet.urlDecodeError=Feil ved dekoding av URL BookmarkItem.bookmarkUpdated=Siden ${name} som er lagret som bokmerke ble oppdatert til utgave ${edition}. BookmarkItem.bookmarkUpdatedTitle=Bokmerke Oppdatert: ${name} BookmarkItem.bookmarkUpdatedWithLink=Siden ${link}${name}${/link} har blitt oppdatert til utgave ${edition}. @@ -54,13 +55,27 @@ ConfigToadlet.configNavTitle=Navigasjon ConfigToadlet.contributeTranslation=Bidra til oversettelsen ConfigToadlet.fullTitle=Freenet Node Konfigurasjon for ${name} -ConfigToadlet.possibilitiesTitle=Dine Muligheter +ConfigToadlet.possibilitiesTitle=Dine muligheter ConfigToadlet.reset=Tilbakestill ConfigToadlet.returnToNodeConfig=Returner til nodens konfigurasjon ConfigToadlet.shortTitle=Konfigurasjon ConfigToadlet.title=Freenet Node Konfigurasjon ConfigurablePersister.doesNotExistCannotCreate=Filen finnes ikke og kan ikke opprettes ConfigurablePersister.existsCannotReadWrite=Filen eksisterer og kan ikke lese/skrive den +ConnectionsToadlet.nodeStatus.BACKED OFF=OPPTATT +ConnectionsToadlet.nodeStatus.BUSY=OPPTATT +ConnectionsToadlet.nodeStatus.CLOCK PROBLEM=KLOKKEPROBLEM +ConnectionsToadlet.nodeStatus.CONNECTED=TILKOPLET +ConnectionsToadlet.nodeStatus.CONNECTION ERROR=TILKOPLINGSFEIL +ConnectionsToadlet.nodeStatus.DISABLED=DEAKTIVERT +ConnectionsToadlet.nodeStatus.DISCONNECTED=FRAKOPLET +ConnectionsToadlet.nodeStatus.DISCONNECTING=KOBLER FRA +ConnectionsToadlet.nodeStatus.LISTEN ONLY=BARE LYTT +ConnectionsToadlet.nodeStatus.LISTENING=LYTTER +ConnectionsToadlet.nodeStatus.NEVER CONNECTED=ALDRI TILKOPLET +ConnectionsToadlet.nodeStatus.TOO NEW=FOR NY +ConnectionsToadlet.nodeStatus.TOO OLD=FOR GAMMEL +ConnectionsToadlet.nodeStatus.UNKNOWN STATUS=UKJENT STATUS ContentDataFilter.unknownCharset=Siden du er i ferd med ? vise har et ukjent tegnsett. Det betyr at vi ikke kan filtrere siden, og den kan kompromittere anonymiteten din. ContentDataFilter.unknownCharsetTitle=Ukjent tegnsett! ContentDataFilter.warningUnknownCharsetTitle=Advarsel: Ukjent tegnsett (${charset}) @@ -82,11 +97,11 @@ ContentFilter.textPlainWriteAdvice=Vanlig tekst - ikke farlig med mindre du inkluderer kompromitterende informasjon DarknetConnectionsToadlet.activityTitle=N?v?rende Aktivitet DarknetConnectionsToadlet.add=Legg til -DarknetConnectionsToadlet.addPeerTitle=Legg til en ny nabo +DarknetConnectionsToadlet.addPeerTitle=Legg til en ny node DarknetConnectionsToadlet.alreadyInReferences=Vi har allerede den gitte referansen. -DarknetConnectionsToadlet.backedOff=Tilkoblet, men opptatt: Disse naboene er tilkoblet, men er opptatt, s? noden sender ingen foresp?rsler til dem. +DarknetConnectionsToadlet.backedOff=Tilkoblet, men opptatt: Disse nodene er tilkoblet, men er opptatt, s? noden din sender ingen foresp?rsler til dem. DarknetConnectionsToadlet.backedOffShort=Opptatt -DarknetConnectionsToadlet.busy=Opptatt: Disse naboene er tilkoblet, men for opptatt til ? svare p? v?re foresp?rsler, s? noden sender ingen foresp?rsler til dem. +DarknetConnectionsToadlet.busy=Opptatt: Disse nodene er tilkoblet, men for opptatt til ? svare p? v?re foresp?rsler, s? noden din sender ingen foresp?rsler til dem. DarknetConnectionsToadlet.busyShort=Opptatt DarknetConnectionsToadlet.cantFetchNoderefURL=Kunne ikke hente node referansen fra ${url}. Vennligst pr?v p? nytt. DarknetConnectionsToadlet.cantParseTryAgain=Kunne ikke tolke den gitte teksten som en referanse: (${error}). Vennligst pr?v p? nytt. @@ -100,7 +115,7 @@ DarknetConnectionsToadlet.connected=Tilkoblet: Vi er vellykket tilkoblet disse nodene DarknetConnectionsToadlet.connectedShort=Tilkoblet DarknetConnectionsToadlet.darknetFnpPort=Darknet FNP: ${port}/UDP (mellom noder; du vil kanskje videresende denne porten) -DarknetConnectionsToadlet.disabled=Ikke tilkoblet og deaktivert: fordi brukeren har instruert noden til ? ikke koble til disse naboene. +DarknetConnectionsToadlet.disabled=Ikke tilkoblet og deaktivert: Du har instruert noden din til ikke ? koble til disse nodene. DarknetConnectionsToadlet.disabledShort=Deaktivert DarknetConnectionsToadlet.enterDescription=Legg til beskrivelse: DarknetConnectionsToadlet.failedToAddNodeInternalError=Kunne ikke tolke den gitte teksten som en node referanse. Vennlist rapporter det f?lgende til utviklerne: @@ -120,27 +135,27 @@ DarknetConnectionsToadlet.invalidSignature=Kunne ikke verifisere signaturen tilh?rende den gitte referansen (${error}). DarknetConnectionsToadlet.ipAddress=Nodens nettverksadresse som IP:Port DarknetConnectionsToadlet.ipAddressTitle=Adresse -DarknetConnectionsToadlet.listenOnly=Ikke tilkoblet og bare lytter: denne noden vil ikke pr?ve ? koble til disse naboene i det hele tatt fordi brukeren har markert de som BareLytt. +DarknetConnectionsToadlet.listenOnly=Ikke tilkoblet og bare lytter: noden din vil ikke pr?ve ? koble til disse nodene, fordi brukeren har markert de med BareLytt. DarknetConnectionsToadlet.listenOnlyShort=Bare lytt DarknetConnectionsToadlet.listeningShort=Lytter DarknetConnectionsToadlet.myFriends=Mine Venner DarknetConnectionsToadlet.myReferenceHeader=${linkref}Min Node Referanse${/linkref} (${linktext}som tekst${/linktext}) DarknetConnectionsToadlet.nameClickToMessage=Nodens navn. Klikk p? navnet for ? sende noden en N2NTM (Node til Node Tekst Melding) DarknetConnectionsToadlet.nameTitle=Navn -DarknetConnectionsToadlet.neverConnected=Aldri tilkoblet: Noden har aldri koblet til disse naboene. +DarknetConnectionsToadlet.neverConnected=Aldri tilkoblet: Noden din har aldri koblet til disse nodene. DarknetConnectionsToadlet.neverConnectedShort=Aldri tilkoblet -DarknetConnectionsToadlet.noPeersWithHomepageLink=Freenet kan ikke fungere ettersom du ikke har lagt til noen naboer s? langt. Vennligst g? til ${link}nodens hjemmeside${/link} og les den ?verste infoboksen for ? se hvordan dette gj?res. +DarknetConnectionsToadlet.noPeersWithHomepageLink=Freenet kan ikke fungere ettersom du ikke har lagt til noen noder s? langt. Vennligst g? til ${link}nodens hjemmeside${/link} og les den ?verste infoboksen for ? se hvordan dette gj?res. DarknetConnectionsToadlet.noRefOrURL=Fant verken en node referanse eller en URL. Vennligst pr?v igjen. DarknetConnectionsToadlet.nodePortsTitle=Porter som brukes av noden DarknetConnectionsToadlet.notConnected=Ikke tilkoblet: Ingen tilkobling s? langt, men noden pr?ver kontinuerlig ? koble til. DarknetConnectionsToadlet.notConnectedShort=Frakoblet DarknetConnectionsToadlet.opennetFnpPort=Opennet FNP: ${port}/UDP (mellom noder; du vil kanskje videresende denne porten) DarknetConnectionsToadlet.pasteReference=Lim inn referansen her: -DarknetConnectionsToadlet.privateNote=Et privat notat om denne naboen +DarknetConnectionsToadlet.privateNote=Et privat notat om denne noden DarknetConnectionsToadlet.privateNoteTitle=Privat Notat DarknetConnectionsToadlet.referenceCopyWarning=Nodens referanse m? kopieres ${bold}SOM DEN ER${/bold}. Modifisering vil gj?re den ${bold}verdil?s${/bold}. DarknetConnectionsToadlet.remove=Fjern det! -DarknetConnectionsToadlet.removePeers=Fjern valgte naboer +DarknetConnectionsToadlet.removePeers=Fjern valgte noder DarknetConnectionsToadlet.selectAction=-- Velg handling -- DarknetConnectionsToadlet.sendMessageTitle=Send Node to Node Text Message DarknetConnectionsToadlet.sendMessageToPeers=Send N2NTM til valgte peers @@ -148,11 +163,11 @@ DarknetConnectionsToadlet.statusTitle=Status DarknetConnectionsToadlet.tmciDisabled=TMCI er deaktivert (enkel telnet-basert kommandolinje-grensesnitt) DarknetConnectionsToadlet.tmciPort=TMCI: ${port}/TCP (enkel telnet-basert kommandolinje-grensesnitt) -DarknetConnectionsToadlet.tooNew=Tilkoblet, men for ny: Disse naboenes laveste obligatoriske versjon er h?yere enn denne nodens versjonsnummer. +DarknetConnectionsToadlet.tooNew=Tilkoblet, men for ny: Disse nodenes laveste obligatoriske versjon er h?yere enn din nodes versjonsnummer. DarknetConnectionsToadlet.tooNewShort=For ny -DarknetConnectionsToadlet.tooOld=Tilkoblet, men for gammel: Denne nodens laveste obligatoriske versjon er h?yere enn disse naboenes versjonsnummer. Denne noden sender ikke foresp?rsler til den. +DarknetConnectionsToadlet.tooOld=Tilkoplet, men for gammel: Din nodes laveste obligatoriske versjon er h?yere enn denne nodens versjonsnummer. Noden din vil ikke sende foresp?rsler til denne noden. DarknetConnectionsToadlet.tooOldShort=For gammel -DarknetConnectionsToadlet.triedToAddSelf=Du kan ikke legge til din egen node til listen over eksterne naboer. +DarknetConnectionsToadlet.triedToAddSelf=Du kan ikke legge til din egen node til listen over eksterne noder. DarknetConnectionsToadlet.unknownAddress=(ukjent adresse) DarknetConnectionsToadlet.updateChangedPrivnotes=Oppdater endrede private notater DarknetConnectionsToadlet.urlReference=Skriv inn URLen til referansen her: @@ -185,8 +200,10 @@ FProxyToadlet.openAsText=${link}Klikk her${/link} for ? ?pne filen som tekst (dette b?r ikke v?re farlig, men det kan se ?delagt ut). FProxyToadlet.openForce=${link}Klikk her${/link} for ? ?pne filen som ${mime} (les advarselen over!). FProxyToadlet.openRSSAsRSS=${link}Klikk her${/link} for ? ?pne filen som RSS (dette er ${bold}farlig${/bold} hvis forfatteren av siden er ondskapsfull ettersom Freenet ikke kan filtrere RSS enda). +FProxyToadlet.opennet=Administrer fremmede noder FProxyToadlet.opennetTitle=Fremmede FProxyToadlet.options=Dine valg er: +FProxyToadlet.plugins=Administrer tillegg FProxyToadlet.pluginsTitle=Tillegg FProxyToadlet.queue=h?ndter foresp?rsler satt i k? FProxyToadlet.queueTitle=K? @@ -366,7 +383,7 @@ LogConfigHandler.rotationInterval=Loggrotasjonsintervall LogConfigHandler.rotationIntervalLong=Loggrotasjonsintervall - periode mellom loggene blir rotert. Vi beholder de siste to loggene (current og prev), pluss mange komprimerte loggfiler upp til maxZippedLogsSize LongOption.parseError=Den spesifiserte verdien kan ikke tolkes som en 64-bits integer: ${val} -MeaningfulNodeNameUserAlert.noNodeNick=Det ser ut som noden din ikke har et kallenavn. ? legge inn e-mail adressen eller IRC kallenavnet ditt her er generelt en god ide og det hjelper vennene dine ? kjenne igjen noden din (merk at bare darknet naboer dine listet p? vennesiden kan se nodens navn, det vil ikke bli vist til opennet naboer). +MeaningfulNodeNameUserAlert.noNodeNick=Det virker som noden din ikke vet om pseudonymet ditt. Generelt sett er det en god ide ? legge inn e-mail adressen din eller IRC pseudonymet ditt her s? vennene dine lettere kan identifisere noden din (merk at bare venner kan se node-navnet ditt, det vises ikke til fremmede). MeaningfulNodeNameUserAlert.noNodeNickTitle=Noden din har ikke et navn. N2NTMToadlet.composingMessageLabel=Skriver N2NTM til de f?lgende mottakerne: N2NTMToadlet.delayed=Opptatt: Sending av meldingen til mottaker ble kanskje forsinket @@ -449,15 +466,21 @@ NodeUpdateManager.updateFailedTitle=Oppdatering mislyktes! NodeUpdateManager.updateURI=Hvor skal noden se etter oppdateringer? NodeUpdateManager.updateURILong=Hvor skal noden se etter oppdateringer? +OpennetConnectionsToadlet.fullTitle=${counts} Fremmede (ukjente noder) tilkoblet ${name} +OpennetConnectionsToadlet.peersListTitle=Mine Opennet koplinger (ukjente noder lagt til av noden din i promisku?s modus) +OpennetUserAlert.warning=Noden din er for tiden i promisku?s modus. Den vil koble til Fremmede, and det betyr at alle kan finne ut at du har en node. De fleste angrep er lettere, blokkering av noden din (for eksempel med en nasjonal brannmur) er mye lettere og du har ingen kontroll over hvem noden din kopler til. Vi anbefaler sterkt at du skaffer deg noen koplinger til Venner (noder du som stoler p? og som er kontrollert av folk du allerede kjenner); promisku?s modus er bare ment som et midlertidig tiltak til du kan kople til vennene dine. Hvis du bare kopler til vennene dine er det mindre sjanse for at noden din er synlig for undertrykkende organisasjoner som vil kople til deg, selv vennene dine kan angripe deg. Merk at ? legge til en node i Venne-delen ikke hjelper mye hvis denne noden ikke kontrolleres av noen du faktisk kjenner (b?de for nettverkets- og for sikkerhetsgrunner)! +OpennetUserAlert.warningTitle=Advarsel: Promisku?s modus aktivert: Noden din kan koble til Fremmede PNGFilter.invalidHeader=Filen du pr?vde ? hente er ikke et PNG. Det inkluderer ikke et gyldig PNG hode. Det kan v?re et annet format, og nettleseren din kan gj?re noe farlig med det. Det har derfor blitt blokkert. PNGFilter.invalidHeaderTitle=Ikke et PNG - ugyldig hode PeerManagerUserAlert.clockProblemTitle=Klokkeproblem -PeerManagerUserAlert.noConns=Denne noden har ikke kunnet koble til noen andre noder s? langt; den vil ikke kunne fungere normalt. Forh?pentligvis vil noen av naboene koble til snart; hvis ikke, pr?v ? skaffe noen flere naboer. Du trenger minst 3 naboer, og b?r ha 5-10. +PeerManagerUserAlert.noConns=Noden din har ikke kunnet koble til noen andre noder s? langt; den vil ikke kunne fungere normalt. Forh?pentligvis vil noen av nodene koble til snart; hvis ikke, pr?v ? skaffe noen flere tilkoplinger. Du trenger minst 3 tilkoplinger, og b?r ha 5-10. PeerManagerUserAlert.noPeersTitle=Ingen peers funnet PeerManagerUserAlert.onlyFewConnsTitle=Bare ${count} fungerende tilkobling(er) +PeerManagerUserAlert.tooManyConns=Denne noden har for mange tilkoblinger (${count} > ${max}). ? legge til et stort antall noder automatisk vil ikke gi en 'small-world' topologi og kan skade nettverket. PeerManagerUserAlert.tooManyConnsTitle=For mange ?pne tilkoblinger -PeerManagerUserAlert.tooManyDisconnectedTitle=For mange frakoblede naboer +PeerManagerUserAlert.tooManyDisconnectedTitle=For mange frakoplede noder PeerManagerUserAlert.tooManyPeersTitle=For mange peers +PeerManagerUserAlert.twoConns=Denne noden har bare to tilkoplinger. Du vil ikke f? god ytelse eller sikkerhet, og noden din hjelper bare i liten grad nettverket. Pr?v ? ha minst 3 (helst 5-10) tilkoplede noder til en hver tid. PeersSayKeyBlownAlert.connectedSayBlownLabel=Disse tilkoblede nodene sier at oppdateringssystemet er kompromitert (vi pr?ver ? laste ned revokasjonssertifikatet fra dem): PeersSayKeyBlownAlert.disconnectedSayBlownLabel=Disse nodene fortalte oss at n?kkelen har blitt kompromitert, men koblet deretter fra. Derfor kunne vi ikke hente revokasjonssertifikatet fra disse: PeersSayKeyBlownAlert.failedFetch=Noden din kunne ikke laste ned revokasjonsertifikatet. Mulige ?rsaker inkluderer ett angrep p? noden din for ? f? den til ? oppdatere selv om n?kkelen er kompromitert. Vennligst kontakt utviklerne eller andre Freenet-brukere for ? rydde opp i dette. @@ -467,31 +490,68 @@ PeersSayKeyBlownAlert.titleWithCount=Auto-oppdateringssystemet er kompromitert i f?lge ${count} peer(s)! PluginManager.cannotSetOnceLoaded=Kan ikke endre tilleggslisten n?r den er lastet PluginManager.loadedOnStartup=Tillegg som skal lastes ved oppstart +PluginManager.loadedOnStartupLong=Klasse-sti, navn og lokasjon for tillegg som skal lastes n?r noden starter PluginManager.loadedPlugins=Tillegg som skal lastes ved oppstart PluginManager.loadedPluginsLong=En liste over tillegg som startes n?r noden starter +PluginManager.pluginLoadingFailed=Kunne ikke starte tillegget ${name} +PluginManager.pluginLoadingFailedTitle=Kunne ikke starte tillegget! +PluginManager.pluginLoadingFailedWithMessage=Kunne ikke starte tillegget ${name}: ${message} PluginManager.pluginReqNewerJVM=Tillegget ${name} ser ut til ? kreve en nyere JVM. Vennligst installer til minst Sun java 1.5, eller fjern tillegget. -PluginManager.pluginReqNewerJVMTitle=Nyere JVM kreves av ${name}. +PluginManager.pluginReqNewerJVMTitle=Nyere JVM kreves av tillegget ${name}. PluginToadlet.addPluginTitle=Legg til et tillegg PluginToadlet.failedToLoadPlugin=Mislyktes i ? laste tillegg. PluginToadlet.failedToLoadPluginCheckClass=Tillegget du bad om kunne ikke lastes. Vennligst sjekk navnet p? tileggets klasse og URL, hvis du angav en. -PluginToadlet.failedToLoadPluginTitle=Lasting av tillegg mislyktes +PluginToadlet.failedToLoadPluginTitle=Tillegget mislyktes i ? starte PluginToadlet.internalNameTitle=Internt Navn -PluginToadlet.loadPluginCommand=Last tillegg +PluginToadlet.loadPluginCommand=Start tillegg PluginToadlet.noWebInterface=Tillegget har ikke et webgrensesnitt, s? det er ingenting ? vise. PluginToadlet.noWebInterfaceTitle=Tillegget har ikke et webgrensesnitt PluginToadlet.pluginList=Liste over tillegg -PluginToadlet.pluginListTitle=Liste over Tillegg +PluginToadlet.pluginListTitle=Liste over tillegg PluginToadlet.pluginNameTitle=Navn p? Tillegg PluginToadlet.pluginNotFound=Det forespurte tillegget ble ikke funnet. PluginToadlet.pluginNotFoundTitle=Tillegg ble ikke funnet PluginToadlet.returnToPluginsWithLinks=Vennligst ${link}returner${/link} til listen over tillegg. PluginToadlet.visit=Vis +PproxyToadlet.Error=Feil +PproxyToadlet.Load=Start +PproxyToadlet.changeReloadOnStartup=Endre PproxyToadlet.classNameTitle=Klassenavn +PproxyToadlet.downloadNotAllowedFromRemoteServer=Nedlasting av tillegg er bare tillat fra v?re servere. PproxyToadlet.internalIDTitle=Intern ID -PproxyToadlet.noPlugins=Ingen tillegg lastet +PproxyToadlet.loadOfficialPlugin=Start et offisielt tillegg +PproxyToadlet.loadOfficialPluginLabel=Start et offisielt tillegg +PproxyToadlet.loadOfficialPluginText=Disse tilleggene ligger p? servere hos The Freenet Project. Vi mener at disse tilleggene ikke lekker privat informasjon, men vi kan ikke garantere dette. +PproxyToadlet.loadOtherPlugin=Start et uoffisielt tillegg +PproxyToadlet.loadOtherPluginText=Her kan du legge inn en URL til et tillegg du vil starte. Tillegg som ikke er i listen over er ikke st?ttet eller sjekket av oss, s? bruk av dette feltet gj?res p? eget ansvar. +PproxyToadlet.loadOtherURLLabel=URL til tillegg +PproxyToadlet.loadPluginLabel=Start tillegg: +PproxyToadlet.noPlugins=Ingen tillegg er lastet +PproxyToadlet.pluginDirectoryNotCreated=Kunne ikke opprette tilleggskatalogen. +PproxyToadlet.pluginNotDownloaded=Kunne ikke laste ned tillegget. +PproxyToadlet.pluginNotFoundReload=Fant ikke det spesifiserte tillegget for ? starte det p? nytt. +PproxyToadlet.pluginNotFoundReloadTitle=Fant ikke tillegget (starter det p? nytt) +PproxyToadlet.pluginStopping=Tillegg stopper +PproxyToadlet.pluginUnloaded=Tillegg stoppet +PproxyToadlet.pluginUnloadedWithName=Tillegget ${name} ble stoppet. PproxyToadlet.plugins=Tillegg -PproxyToadlet.reload=Last p? nytt +PproxyToadlet.pluginsWithNodeName=Tillegg for ${name} +PproxyToadlet.refreshOnStartup=Last ned fra serveren ved oppstart +PproxyToadlet.reload=Start p? nytt +PproxyToadlet.reloadOnStartupShort=Last ned ved oppstart +PproxyToadlet.returnToPluginPage=Returner til tillegg-siden PproxyToadlet.startedAtTitle=Startet +PproxyToadlet.startingPluginName=Navn p? tillegg +PproxyToadlet.startingPluginStatus=N?v?rende status +PproxyToadlet.startingPluginTime=Brukt tid +PproxyToadlet.startingPluginsTitle=Startende tillegg +PproxyToadlet.unauthorized=Du har ikke adgang til ? vise denne siden. +PproxyToadlet.unauthorizedTitle=Uautorisert tilgang +PproxyToadlet.unload=Stopp +PproxyToadlet.unloadPluginTitle=Stopp tillegg? +PproxyToadlet.unloadPluginWithName=Er du sikker p? at du vil stoppe ${name}? +PproxyToadlet.startingPluginStatus.downloading=Laster ned +PproxyToadlet.startingPluginStatus.starting=starter QueueToadlet.DinProgress=P?begynte nedlastinger QueueToadlet.UinProgress=P?begynte opplastinger QueueToadlet.change=Endre @@ -513,11 +573,18 @@ QueueToadlet.fileName=Filnavn QueueToadlet.files=Filer QueueToadlet.follow=F?lg Omdirigeringer +QueueToadlet.globalQueueIsEmpty=Den globale k?en er tom QueueToadlet.insertAs=Sett inn som: QueueToadlet.insertFile=Sett inn fil +QueueToadlet.insertFileBrowseLabel=Finn fil +QueueToadlet.insertFileCompressLabel=Komprimer +QueueToadlet.insertFileInsertFileLabel=Sett inn fil +QueueToadlet.insertFileLabel=Fil +QueueToadlet.insertFileResetForm=Tilbakestill skjema QueueToadlet.key=N?kkel QueueToadlet.legend=Forklaring QueueToadlet.mimeType=MIME Type +QueueToadlet.noTaskOnGlobalQueue=Det er ingen oppgaver i den globale k?en for ?yeblikket. QueueToadlet.none=ingen QueueToadlet.panicButton=Panikk knapp QueueToadlet.panicButtonConfirmation=Slett alt uten bekreftelse! @@ -569,8 +636,9 @@ StatisticsToadlet.allocMemory=Allokert Java minne: ${memory} StatisticsToadlet.bandwidthTitle=B?ndbredde StatisticsToadlet.cpus=Tilgjengelige CPUer: ${count} +StatisticsToadlet.fullTitle=Statistikk for ${name} StatisticsToadlet.getLogs=Vis nodens siste loggfil -StatisticsToadlet.inputRate=Inndata fart: ${rate}/sekund (av ${max}/sekund) +StatisticsToadlet.inputRate=Inndata fart: ${rate}/s (av ${max}/s) StatisticsToadlet.jeDumpButton=Generer en JE Dump StatisticsToadlet.jvmInfoTitle=JVM Info StatisticsToadlet.jvmVendor=JVM produsent: ${vendor} @@ -580,12 +648,15 @@ StatisticsToadlet.osArch=OS Arkitektur: ${arch} StatisticsToadlet.osName=OS Navn: ${name} StatisticsToadlet.osVersion=OS Versjon: ${version} -StatisticsToadlet.outputRate=Utdata fart: ${rate}/sekund (av ${max}/sekund) +StatisticsToadlet.outputRate=Utdata fart: ${rate}/s (av ${max}/s) +StatisticsToadlet.payloadOutput=Nyttig utdata: ${total} (${rate}/s)(${percent}%) StatisticsToadlet.peerStatsTitle=Tilkoblingsstatistikk +StatisticsToadlet.statisticGatheringTitle=Innsamling av statistikk StatisticsToadlet.threadDumpButton=Generer en Tr?d Dump StatisticsToadlet.threads=Kj?rende tr?der: ${running}/${max} -StatisticsToadlet.totalInput=Inndate totalt: ${total} (${rate}/sekund) -StatisticsToadlet.totalOutput=Utdata totalt: ${total} (${rate}/sekund) +StatisticsToadlet.totalInput=Inndate totalt: ${total} (${rate}/s) +StatisticsToadlet.totalOutput=Utdata totalt: ${total} (${rate}/s) +StatisticsToadlet.transferringRequests=Overf?rende Foresp?rsler: sender ${senders}, mottar ${receivers} StatisticsToadlet.usedMemory=Brukt Java minne: ${memory} StatisticsToadlet.versionTitle=Node Versjonsinformasjon SymlinkerToadlet.symlinksLong=En liste over "alias#target" som danner en gruppe lenker @@ -625,6 +696,7 @@ TranslationToadlet.confirmRemoveOverride=Er du sikker p? at du vil fjerne den f?lgende oversettelsesn?kkelen: (${key} - ${value}) ? TranslationToadlet.contributingToLabelWithLang=Du bidrar n? til ${lang} oversettelsen: TranslationToadlet.currentTranslationLabel=N?v?rende oversettelse +TranslationToadlet.downloadTranslationsFile=Last ned din oversettelsesfil TranslationToadlet.hideAlreadyTranslated=Skjul strenger som allerede er oversatt TranslationToadlet.noCustomTranslations=Det er ingen egen oversettelse tilgjengelig. TranslationToadlet.originalVersionLabel=Original (engelsk versjon) @@ -672,6 +744,7 @@ UserAlertManager.totalLabel=Totalt: UserAlertManager.warningCountLabel=Advarsler: WelcomeToadlet.activityTitle=N?v?rende aktivitet +WelcomeToadlet.arkFetchCount=ARK Hentere: ${total} WelcomeToadlet.confirmAddBookmarkSubTitle=Bekreft Tilf?yelse Av Bokmerke WelcomeToadlet.confirmAddBookmarkTitle=Legg til Bokmerke WelcomeToadlet.confirmAddBookmarkWithKey=Vennligst bekreft at du vil legge til n?kkelen ${key} som bokmerke og skriv inn en beskrivelse du vil ha: @@ -697,6 +770,7 @@ WelcomeToadlet.insertFailedWithMessage=Innsettingen mislyktes med meldingen: ${message} WelcomeToadlet.insertSucceededTitle=Innsetting Vellykket WelcomeToadlet.keyInsertedSuccessfullyWithKeyAndName=N?kkelen ${link}${name}${/link} ble satt inn uten feil. +WelcomeToadlet.keyRequestLabel=N?kkel: WelcomeToadlet.messageHeader=Melding WelcomeToadlet.nodeUpdateConfirm=Er du sikker p? at du vil oppdatere Freenet noden din? WelcomeToadlet.nodeUpdateConfirmTitle=Bekreft Node Oppdatering @@ -730,6 +804,6 @@ WelcomeToadlet.updatingTitle=Node Oppdatering WelcomeToadlet.uriWouldHaveBeen=URIen ville v?rt: ${uri} WelcomeToadlet.version=Freenet ${fullVersion} Versjon #${build} r${rev} -WelcomeToadlet.versionHeader=Versjonsinformasjon og node kontroll +WelcomeToadlet.versionHeader=Informasjon og kontroll av noden WelcomeToadlet.writtenDatabaseStats=Databasestatistikk har blitt skrevet til wrapper-loggfilen End Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java =================================================================== --- trunk/freenet/src/freenet/support/SimpleFieldSet.java 2007-11-04 19:09:40 UTC (rev 15683) +++ trunk/freenet/src/freenet/support/SimpleFieldSet.java 2007-11-04 19:13:18 UTC (rev 15684) @@ -226,6 +226,7 @@ values.put(key, hisVal); // overwrite old } if(fs.subsets == null) return; + if(subsets == null) subsets = new HashMap(); i = fs.subsets.keySet().iterator(); while(i.hasNext()) { String key = (String) i.next(); From nextgens at freenetproject.org Sun Nov 4 19:17:18 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sun, 4 Nov 2007 19:17:18 +0000 (UTC) Subject: [freenet-cvs] r15685 - trunk/freenet/test/freenet/support Message-ID: <20071104191718.A7A1F47A0B6@freenetproject.org> Author: nextgens Date: 2007-11-04 19:17:18 +0000 (Sun, 04 Nov 2007) New Revision: 15685 Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java Log: Fix the unit test Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java =================================================================== --- trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 19:13:18 UTC (rev 15684) +++ trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 19:17:18 UTC (rev 15685) @@ -632,11 +632,11 @@ public void testRemoveSubset() { SimpleFieldSet methodSFS = sfsFromSampleStringPairs(); methodSFS.removeSubset("foo"); - for(int i = 1; i< 3; i++) + for(int i = 1; i< 4; i++) assertNull(methodSFS.get(SAMPLE_STRING_PAIRS[i][0])); assertEquals(methodSFS.get(SAMPLE_STRING_PAIRS[0][0]), SAMPLE_STRING_PAIRS[0][1]); - for(int i = 3; i< 5; i++) + for(int i = 4; i< 6; i++) assertEquals(methodSFS.get(SAMPLE_STRING_PAIRS[i][0]), SAMPLE_STRING_PAIRS[i][1]); } From nextgens at freenetproject.org Sun Nov 4 19:33:58 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Sun, 4 Nov 2007 19:33:58 +0000 (UTC) Subject: [freenet-cvs] r15686 - trunk/freenet/test/freenet/support Message-ID: <20071104193358.A42603A094C@freenetproject.org> Author: nextgens Date: 2007-11-04 19:33:58 +0000 (Sun, 04 Nov 2007) New Revision: 15686 Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java Log: Now the testcases actually works like it should (the new SFS has subkeys whereas the old one doesn't) Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java =================================================================== --- trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 19:17:18 UTC (rev 15685) +++ trunk/freenet/test/freenet/support/SimpleFieldSetTest.java 2007-11-04 19:33:58 UTC (rev 15686) @@ -175,6 +175,11 @@ for (int i=0; i < SAMPLE_STRING_PAIRS.length; i++) assertEquals(methodSFS.get(SAMPLE_STRING_PAIRS[i][0]), SAMPLE_STRING_PAIRS[i][1]+methodAppendedString); + SimpleFieldSet nullSFS = new SimpleFieldSet(false); + nullSFS.putAllOverwrite(methodNewSFS); + for (int i=0; i < SAMPLE_STRING_PAIRS.length; i++) + assertEquals(nullSFS.get(SAMPLE_STRING_PAIRS[i][0]), + SAMPLE_STRING_PAIRS[i][1]+methodAppendedString); } /** From nextgens at freenetproject.org Mon Nov 5 14:09:24 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Mon, 5 Nov 2007 14:09:24 +0000 (UTC) Subject: [freenet-cvs] r15694 - trunk/freenet/src/freenet/clients/http Message-ID: <20071105140924.883244791AE@freenetproject.org> Author: nextgens Date: 2007-11-05 14:09:24 +0000 (Mon, 05 Nov 2007) New Revision: 15694 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: maybe fix http://rafb.net/p/ayemq099.html Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-05 00:23:35 UTC (rev 15693) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-05 14:09:24 UTC (rev 15694) @@ -225,7 +225,8 @@ public synchronized void kill() throws IOException { myThread = null; - networkInterface.close(); + if(networkInterface != null) + networkInterface.close(); } public class SocketHandler implements Runnable { From dbkr at freenetproject.org Mon Nov 5 23:01:06 2007 From: dbkr at freenetproject.org (dbkr at freenetproject.org) Date: Mon, 5 Nov 2007 23:01:06 +0000 (UTC) Subject: [freenet-cvs] r15696 - trunk/freenet/src/freenet/clients/http Message-ID: <20071105230106.119C039090A@freenetproject.org> Author: dbkr Date: 2007-11-05 23:01:05 +0000 (Mon, 05 Nov 2007) New Revision: 15696 Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java Log: Don't create a new headers tabe and then ultimately use the wrong one, and I'm assuming that redirecting to /queue/ was a copy & paste accident. Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-05 21:41:52 UTC (rev 15695) +++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-05 23:01:05 UTC (rev 15696) @@ -51,9 +51,8 @@ String pass = request.getPartAsString("formPassword", 32); if((pass == null) || !pass.equals(core.formPassword)) { - MultiValueTable hdrs = new MultiValueTable(); - headers.put("Location", "/queue/"); - ctx.sendReplyHeaders(302, "Found", hdrs, null, 0); + headers.put("Location", "/plugins/"); + ctx.sendReplyHeaders(302, "Found", headers, null, 0); return; } From bombe at freenetproject.org Thu Nov 8 17:13:21 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Thu, 8 Nov 2007 17:13:21 +0000 (UTC) Subject: [freenet-cvs] r15714 - trunk/freenet/src/freenet/clients/http/staticfiles/themes/boxed Message-ID: <20071108171321.66D5947A371@freenetproject.org> Author: bombe Date: 2007-11-08 17:13:21 +0000 (Thu, 08 Nov 2007) New Revision: 15714 Modified: trunk/freenet/src/freenet/clients/http/staticfiles/themes/boxed/theme.css Log: small cosmetic fix for elements in infoboxes Modified: trunk/freenet/src/freenet/clients/http/staticfiles/themes/boxed/theme.css =================================================================== --- trunk/freenet/src/freenet/clients/http/staticfiles/themes/boxed/theme.css 2007-11-08 16:54:03 UTC (rev 15713) +++ trunk/freenet/src/freenet/clients/http/staticfiles/themes/boxed/theme.css 2007-11-08 17:13:21 UTC (rev 15714) @@ -81,6 +81,14 @@ overflow: auto; } +.infobox-content :first-child { + margin-top: 0; +} + +.infobox-content :last-child { + margin-bottom: 0; +} + .infobox-content ul { display: inline; list-style-type: none; From bombe at freenetproject.org Fri Nov 9 13:11:27 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Fri, 9 Nov 2007 13:11:27 +0000 (UTC) Subject: [freenet-cvs] r15717 - trunk/freenet/src/freenet/client Message-ID: <20071109131127.CA4C2479620@freenetproject.org> Author: bombe Date: 2007-11-09 13:11:27 +0000 (Fri, 09 Nov 2007) New Revision: 15717 Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClient.java trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java Log: add method to generate a key pair Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClient.java =================================================================== --- trunk/freenet/src/freenet/client/HighLevelSimpleClient.java 2007-11-08 21:34:23 UTC (rev 15716) +++ trunk/freenet/src/freenet/client/HighLevelSimpleClient.java 2007-11-09 13:11:27 UTC (rev 15717) @@ -67,4 +67,12 @@ */ public void addGlobalHook(ClientEventListener listener); + /** + * Generates a new key pair, consisting of the insert URI at index 0 and the + * request URI at index 1. + * + * @return An array containing the insert and request URI + */ + public FreenetURI[] generateKeyPair(); + } Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java =================================================================== --- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java 2007-11-08 21:34:23 UTC (rev 15716) +++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java 2007-11-09 13:11:27 UTC (rev 15717) @@ -17,6 +17,7 @@ import freenet.client.events.SimpleEventProducer; import freenet.crypt.RandomSource; import freenet.keys.FreenetURI; +import freenet.keys.InsertableClientSSK; import freenet.node.NodeClientCore; import freenet.support.Logger; import freenet.support.api.Bucket; @@ -201,4 +202,10 @@ SPLITFILE_INSERT_THREADS, SPLITFILE_BLOCKS_PER_SEGMENT, SPLITFILE_CHECK_BLOCKS_PER_SEGMENT, globalEventProducer, cacheLocalRequests, core.uskManager, blockEncoder, core.getExecutor()); } + + public FreenetURI[] generateKeyPair() { + InsertableClientSSK key = InsertableClientSSK.createRandom(random, ""); + return new FreenetURI[] { key.getInsertURI(), key.getURI() }; + } + } From bombe at freenetproject.org Fri Nov 9 13:56:59 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Fri, 9 Nov 2007 13:56:59 +0000 (UTC) Subject: [freenet-cvs] r15718 - trunk/freenet/src/freenet/client Message-ID: <20071109135659.D940E3921C3@freenetproject.org> Author: bombe Date: 2007-11-09 13:56:59 +0000 (Fri, 09 Nov 2007) New Revision: 15718 Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClient.java trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java Log: add document name to generateKeyPair to discourage nameless keys Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClient.java =================================================================== --- trunk/freenet/src/freenet/client/HighLevelSimpleClient.java 2007-11-09 13:11:27 UTC (rev 15717) +++ trunk/freenet/src/freenet/client/HighLevelSimpleClient.java 2007-11-09 13:56:59 UTC (rev 15718) @@ -71,8 +71,10 @@ * Generates a new key pair, consisting of the insert URI at index 0 and the * request URI at index 1. * + * @param docName + * The document name * @return An array containing the insert and request URI */ - public FreenetURI[] generateKeyPair(); + public FreenetURI[] generateKeyPair(String docName); } Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java =================================================================== --- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java 2007-11-09 13:11:27 UTC (rev 15717) +++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java 2007-11-09 13:56:59 UTC (rev 15718) @@ -203,8 +203,8 @@ globalEventProducer, cacheLocalRequests, core.uskManager, blockEncoder, core.getExecutor()); } - public FreenetURI[] generateKeyPair() { - InsertableClientSSK key = InsertableClientSSK.createRandom(random, ""); + public FreenetURI[] generateKeyPair(String docName) { + InsertableClientSSK key = InsertableClientSSK.createRandom(random, docName); return new FreenetURI[] { key.getInsertURI(), key.getURI() }; } From nextgens at freenetproject.org Fri Nov 9 17:16:21 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 9 Nov 2007 17:16:21 +0000 (UTC) Subject: [freenet-cvs] r15723 - trunk/freenet/src/freenet/node Message-ID: <20071109171621.67E9147AAA7@freenetproject.org> Author: nextgens Date: 2007-11-09 17:16:21 +0000 (Fri, 09 Nov 2007) New Revision: 15723 Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java Log: add a FIXME Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java =================================================================== --- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-11-09 17:12:44 UTC (rev 15722) +++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-11-09 17:16:21 UTC (rev 15723) @@ -1010,6 +1010,7 @@ } // cleanup + // FIXME: maybe we should copy zeros/garbage into it before leaving it to the GC pn.setJFKBuffer(null); pn.jfkKa = null; pn.jfkKe = null; From nextgens at freenetproject.org Fri Nov 9 17:24:53 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 9 Nov 2007 17:24:53 +0000 (UTC) Subject: [freenet-cvs] r15724 - trunk/freenet/src/freenet/clients/http Message-ID: <20071109172453.6DA2E47B31E@freenetproject.org> Author: nextgens Date: 2007-11-09 17:24:53 +0000 (Fri, 09 Nov 2007) New Revision: 15724 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: Bind the StartupToadletServer as we would bind Fproxy (on every interface, not only localhost) Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-09 17:16:21 UTC (rev 15723) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-09 17:24:53 UTC (rev 15724) @@ -43,6 +43,7 @@ public class StartupToadletServer implements Runnable { private int port; + private String bindTo, allowedHosts; private final NetworkInterface networkInterface; private String cssName; private Thread myThread; @@ -170,9 +171,14 @@ try { SimpleFieldSet config = SimpleFieldSet.readFrom(configFile, false, false); port = config.getInt("fproxy.port"); + bindTo = config.get("fproxy.bindTo"); + // Yeah, only FullAccess hosts here, it's on purpose. + allowedHosts = config.get("fproxy.allowedHostsFullAccess"); cssName = config.get("fproxy.css"); } catch (Exception e) { port = SimpleToadletServer.DEFAULT_FPROXY_PORT; + bindTo = SimpleToadletServer.DEFAULT_BIND_TO; + allowedHosts = SimpleToadletServer.DEFAULT_BIND_TO; cssName = PageMaker.DEFAULT_THEME; } @@ -181,10 +187,10 @@ boolean start = true; NetworkInterface ni = null; try { - ni = NetworkInterface.create(port, SimpleToadletServer.DEFAULT_BIND_TO, SimpleToadletServer.DEFAULT_BIND_TO, executor); + ni = NetworkInterface.create(port, bindTo, allowedHosts, executor); } catch (IOException e) { - Logger.error(this, "Error starting SimpleToadletServer on " + port); - System.err.println("Error starting SimpleToadletServer on " + port); + Logger.error(this, "Error starting SimpleToadletServer on "+ bindTo + ':' + port); + System.err.println("Error starting SimpleToadletServer on "+ bindTo + ':' + port); start = false; } this.networkInterface = ni; From nextgens at freenetproject.org Fri Nov 9 17:46:40 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 9 Nov 2007 17:46:40 +0000 (UTC) Subject: [freenet-cvs] r15725 - trunk/freenet/src/freenet/node Message-ID: <20071109174640.5DCD8479FA7@freenetproject.org> Author: nextgens Date: 2007-11-09 17:46:40 +0000 (Fri, 09 Nov 2007) New Revision: 15725 Modified: trunk/freenet/src/freenet/node/Version.java Log: 1071: New features: - StartupToadlet - Refactoring of the /plugins/ toadlet to improve usability - Refactoring of part of the plugins API (work in progress) - Start plugins off-thread Bugfixes: - HTMLNode was a bit too strict - *loads* of various bugfixes to fproxy - Maybe fix completionTime on FCP ClientPuts - Handshake once a while even with really old nodes - Fix the worrying message displayed about jfk (exponent-unknown) Updated translations: - Norwegian thanks to Martin Nyhus - German thanks to Thomas Credits: - Bombe - nextgens - toad Modified: trunk/freenet/src/freenet/node/Version.java =================================================================== --- trunk/freenet/src/freenet/node/Version.java 2007-11-09 17:24:53 UTC (rev 15724) +++ trunk/freenet/src/freenet/node/Version.java 2007-11-09 17:46:40 UTC (rev 15725) @@ -24,7 +24,7 @@ public static final String protocolVersion = "1.0"; /** The build number of the current revision */ - private static final int buildNumber = 1070; + private static final int buildNumber = 1071; /** Oldest build of Fred we will talk to */ private static final int oldLastGoodBuild = 1069; From nextgens at freenetproject.org Fri Nov 9 18:06:06 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 9 Nov 2007 18:06:06 +0000 (UTC) Subject: [freenet-cvs] r15728 - trunk/freenet/src/freenet/clients/http Message-ID: <20071109180606.836FA47AA8A@freenetproject.org> Author: nextgens Date: 2007-11-09 18:06:06 +0000 (Fri, 09 Nov 2007) New Revision: 15728 Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java Log: cleanup: We probably don't need that at all Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-09 17:48:29 UTC (rev 15727) +++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java 2007-11-09 18:06:06 UTC (rev 15728) @@ -126,47 +126,6 @@ this.executor = executor; formPassword = String.valueOf(this.getClass().hashCode()); - List themes = new ArrayList(); - 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); - } - } - } - } - } - } catch (IOException ioe1) { - Logger.error(this, "error creating list of themes", ioe1); - } catch (NullPointerException npe) { - Logger.error(this, "error creating list of themes", npe); - } finally { - if (!themes.contains("clean")) { - themes.add("clean"); - } - } - // hack ... we don't have the config framework yet try { SimpleFieldSet config = SimpleFieldSet.readFrom(configFile, false, false); From nextgens at freenetproject.org Fri Nov 9 22:47:05 2007 From: nextgens at freenetproject.org (nextgens at freenetproject.org) Date: Fri, 9 Nov 2007 22:47:05 +0000 (UTC) Subject: [freenet-cvs] r15732 - trunk/freenet/src/freenet/l10n Message-ID: <20071109224705.05D3347AAA7@freenetproject.org> Author: nextgens Date: 2007-11-09 22:47:04 +0000 (Fri, 09 Nov 2007) New Revision: 15732 Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.fr.properties Log: l10n: update the french translation file - thanks to batosai Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.fr.properties =================================================================== --- trunk/freenet/src/freenet/l10n/freenet.l10n.fr.properties 2007-11-09 22:19:48 UTC (rev 15731) +++ trunk/freenet/src/freenet/l10n/freenet.l10n.fr.properties 2007-11-09 22:47:04 UTC (rev 15732) @@ -59,16 +59,46 @@ ConfigToadlet.appliedTitle=Configuration appliqu?e ConfigToadlet.apply=Appliquer ConfigToadlet.configNavTitle=Sections de configuration +ConfigToadlet.console=console ConfigToadlet.contributeTranslation=Aider ? la traduction ConfigToadlet.defaultIs=La valeur par d?faut est : '${default}'. +ConfigToadlet.false=non +ConfigToadlet.fcp=fcp +ConfigToadlet.fproxy=fproxy ConfigToadlet.fullTitle=Configuration du noeud ${name} +ConfigToadlet.logger=enregistreur de logs +ConfigToadlet.node=noeud +ConfigToadlet.pluginmanager=gestionnaire de plugins +ConfigToadlet.pluginmanager2=gestionnaire de plugins 2 ConfigToadlet.possibilitiesTitle=Vos possibilit?s ConfigToadlet.reset=R?initialiser ConfigToadlet.returnToNodeConfig=Retourner ? la page de configuration ConfigToadlet.shortTitle=Configuration ConfigToadlet.title=Configuration du noeud Freenet +ConfigToadlet.toadletsymlinker=toadletsymlinker +ConfigToadlet.true=oui +ConfigToadlet.node.load=noeud.charge +ConfigToadlet.node.opennet=noeud.opennet +ConfigToadlet.node.scheduler=noeud.ordonnanceur +ConfigToadlet.node.testnet=noeud.testnet +ConfigToadlet.node.updater=noeud.mise ? jour ConfigurablePersister.doesNotExistCannotCreate=Le fichier n'existe pas et ne peut pas ?tre cr?? ConfigurablePersister.existsCannotReadWrite=Le fichier existe et ne peut pas ?tre lu/?crit +ConnectionsToadlet.nodeStatus.BACKED OFF=SURCHARGE +ConnectionsToadlet.nodeStatus.BURSTING=DIALOGUE RAPIDE +ConnectionsToadlet.nodeStatus.BUSY=OCCUPE +ConnectionsToadlet.nodeStatus.CLOCK PROBLEM=PROBLEME D'HORLOGE +ConnectionsToadlet.nodeStatus.CONNECTED=CONNECT? +ConnectionsToadlet.nodeStatus.CONNECTION ERROR=ERREUR DE CONNEXION +ConnectionsToadlet.nodeStatus.DISABLED=DESACTIVE +ConnectionsToadlet.nodeStatus.DISCONNECTED=D?CONNECT? +ConnectionsToadlet.nodeStatus.DISCONNECTING=DECONNEXION EN COURS +ConnectionsToadlet.nodeStatus.LISTEN ONLY=ECOUTE SEULEMENT +ConnectionsToadlet.nodeStatus.LISTENING=ECOUTE +ConnectionsToadlet.nodeStatus.NEVER CONNECTED=JAMAIS CONNECT? +ConnectionsToadlet.nodeStatus.TOO NEW=TROP RECENT +ConnectionsToadlet.nodeStatus.TOO OLD=TROP ANCIEN +ConnectionsToadlet.nodeStatus.UNKNOWN STATUS=ETAT INCONNU ContentDataFilter.unknownCharset=La page que vous essayez d'afficher utilise un jeu de caract?re inconnu. Cela signifie que le noeud ne pourra pas la filtrer, et qu'elle pourait compromettre votre anonymat. ContentDataFilter.unknownCharsetTitle=Jeu de caract?res inconnu ! ContentDataFilter.warningUnknownCharsetTitle=Attention : Jeu de caract?res inconnu (${charset}) @@ -93,11 +123,11 @@ DarknetConnectionsToadlet.addPeerTitle=Ajouter un noeud DarknetConnectionsToadlet.alreadyInReferences=Nous avons d?ja cette r?f?rence. DarknetConnectionsToadlet.backedOff=Connect? mais repouss? : Nous sommes connect?s ? ces noeuds mais ils nous ont mis en attente, le noeud ne leur envoie donc pas de requ?tes. -DarknetConnectionsToadlet.backedOffShort=Mis en attente +DarknetConnectionsToadlet.backedOffShort=Surcharg?s DarknetConnectionsToadlet.bursting=Non connect? mais essaie : le noeud essaie, pour quelques instants, de se connecter ? ces noeuds car le mode rafale a ?t? activ? sur eux. DarknetConnectionsToadlet.burstingShort=Tentative de connexion DarknetConnectionsToadlet.busy=Occup?: Ces noeuds sont connect?s mais sont trop occup?s pour r?pondre ? nos requ?tes, ce noeud ne leur transmet pas de requ?tes. -DarknetConnectionsToadlet.busyShort=Occup? +DarknetConnectionsToadlet.busyShort=Occup?s DarknetConnectionsToadlet.cantFetchNoderefURL=Impossible de r?cup?rer une r?f?rence ? partir de ${url}. Essayez ? nouveau. DarknetConnectionsToadlet.cantParseTryAgain=Ce texte n'est pas une r?f?rence : (${error}). Essayez ? nouveau. DarknetConnectionsToadlet.cantParseWrongEnding=Impossible d'analyser cette r?f?rence : elle devrait se terminer par une lige contenant "End", mais elle se termine par : ${end} @@ -109,10 +139,10 @@ DarknetConnectionsToadlet.connError=La connexion a ?chou? (noeud bugg? ?) DarknetConnectionsToadlet.connErrorShort=Connexion ?chou?e DarknetConnectionsToadlet.connected=Connect?s : Vous ?tes connect?s ? ces noeuds -DarknetConnectionsToadlet.connectedShort=Connect? +DarknetConnectionsToadlet.connectedShort=Connect?s DarknetConnectionsToadlet.darknetFnpPort=Darknet FNP : ${port}/UDP (communication entre les noeuds ; vous voudrez sans doute ouvrir ce port dans votre firewall) DarknetConnectionsToadlet.disabled=Non connect?s et d?sactiv?s : le noeud a re?u pour instruction de ne pas se connecter ? ces noeuds. -DarknetConnectionsToadlet.disabledShort=D?sactiv? +DarknetConnectionsToadlet.disabledShort=D?sactiv?s DarknetConnectionsToadlet.disconnecting=D?connexion en cours (nous sommes en train de pr?venir ce noeud que nous le supprimons, cela peut prendre un peu de temps) DarknetConnectionsToadlet.disconnectingShort=D?connexion DarknetConnectionsToadlet.enterDescription=Entrez un commentaire : @@ -131,7 +161,7 @@ DarknetConnectionsToadlet.idleTime=Depuis combien de temps on est connect? ? ce noeud, ou quand il a ?t? vu pour la derni?re fois DarknetConnectionsToadlet.idleTimeTitle=Connect? / en attente DarknetConnectionsToadlet.invalidSignature=La v?rification de la signature de cette r?f?rence a ?chou? (${error}). -DarknetConnectionsToadlet.ipAddress=L'adresse du noeud sous la forme IP:Port +DarknetConnectionsToadlet.ipAddress=L'adresse du noeud sous la forme IP:Port (ping) DarknetConnectionsToadlet.ipAddressTitle=Adresse DarknetConnectionsToadlet.listenOnly=Non connect? et seulement ? l'?coute : ce noeud n'essaiera pas de se connecter ? ces noeuds car ils ont ?t? configur?s ainsi. DarknetConnectionsToadlet.listenOnlyShort=Ecouter seulement @@ -142,12 +172,12 @@ DarknetConnectionsToadlet.nameClickToMessage=Le nom du noeud. Cliquez sur son nom pour lui envoyer un message DarknetConnectionsToadlet.nameTitle=Nom DarknetConnectionsToadlet.neverConnected=Jamais connect? : Le noeud ne s'est jamais connect? ? ces noeuds. -DarknetConnectionsToadlet.neverConnectedShort=Jamais connect? +DarknetConnectionsToadlet.neverConnectedShort=Jamais connect?s DarknetConnectionsToadlet.noPeersWithHomepageLink=Freenet ne peut pas fonctionner car vous n'?tes encore connect? ? aucun noeud. Rendez vous sur la ${link}page d'accueil${/link} et lisez la boite d'information pour savoir comment faire. DarknetConnectionsToadlet.noRefOrURL=Le noeud n'a trouv? ni r?f?rence, ni URL. Veuillez essayer ? nouveau. DarknetConnectionsToadlet.nodePortsTitle=Ports utilis?s par le noeud DarknetConnectionsToadlet.notConnected=Non connect? : Pas de connexion jusqu'? pr?sent mais ce noeud continue d'essayer. -DarknetConnectionsToadlet.notConnectedShort=D?connect? +DarknetConnectionsToadlet.notConnectedShort=D?connect?s DarknetConnectionsToadlet.opennetFnpPort=Opennet FNP : ${port}/UDP (communication entre les noeuds ; vous voudrez sans doute ouvrir ce port dans votre firewall) DarknetConnectionsToadlet.pasteReference=Copiez/collez sa r?f?rence ici : DarknetConnectionsToadlet.privateNote=Un commentaire priv? concernant ce noeud @@ -163,9 +193,9 @@ DarknetConnectionsToadlet.tmciDisabled=TMCI est d?sactiv? (interface simple en ligne de commande, ? la telnet) DarknetConnectionsToadlet.tmciPort=TMCI: ${port}/TCP (interface simple en ligne de commande, ? la telnet) DarknetConnectionsToadlet.tooNew=Connect? mais trop r?cents : ces noeuds n'acceptent pas de se connecter ? nous car nous somme trop ancien. -DarknetConnectionsToadlet.tooNewShort=Trop r?cent +DarknetConnectionsToadlet.tooNewShort=Trop r?cents DarknetConnectionsToadlet.tooOld=Connect? mais trop ancien : Ces noeuds sont plus anciens que la version minimum accept?e par ce noeud. Votre noeud ne leur envoie pas de requ?tes. -DarknetConnectionsToadlet.tooOldShort=Trop ancien +DarknetConnectionsToadlet.tooOldShort=Trop anciens DarknetConnectionsToadlet.triedToAddSelf=Vous ne pouvez pas ajouter votre propre r?f?rence. DarknetConnectionsToadlet.unknownAddress=(adresse inconnue) DarknetConnectionsToadlet.updateChangedPrivnotes=Mettre ? jour les commentaires @@ -655,6 +685,9 @@ PluginManager.loadedOnStartupLong=Classpath, nom et emplacement des plugins ? charger au d?marrage du node PluginManager.loadedPlugins=Plugins ? charger au d?marrage PluginManager.loadedPluginsLong=Une liste de plugins qui sont charg?s au d?marrage du noeud +PluginManager.pluginLoadingFailed=Le plugin ${name} n'a pas pu ?tre charg? +PluginManager.pluginLoadingFailedTitle=Impossible de charger le plugin ! +PluginManager.pluginLoadingFailedWithMessage=Le plugin ${name} n'a pas pu ?tre charg? : ${message} PluginManager.pluginReqNewerJVM=Le plugin ${name} semble avoir besoin d'une JVM plus r?cente. Veuillez installer au moins Sun Java 1.5, ou supprimez le plugin. PluginManager.pluginReqNewerJVMTitle=Le plugin ${name} n?cessite une JVM plus r?cente. PluginToadlet.addPluginTitle=Ajouter un plugin @@ -674,10 +707,22 @@ PluginToadlet.unsupportedMethod=M?thode non support?e. PluginToadlet.unsupportedMethodTitle=M?thode non support?e PluginToadlet.visit=Visiter +PproxyToadlet.Error=Erreur +PproxyToadlet.Load=Charger +PproxyToadlet.changeReloadOnStartup=Changer PproxyToadlet.classNameTitle=Nom de Class +PproxyToadlet.downloadNotAllowedFromRemoteServer=Le t?l?chargement de plugins n'est autoris? que depuis notre serveur. PproxyToadlet.internalIDTitle=ID interne +PproxyToadlet.loadOfficialPlugin=Ajouter un plugin officiel +PproxyToadlet.loadOfficialPluginLabel=Charger un plugin officiel +PproxyToadlet.loadOfficialPluginText=Ces plugins sont h?berg?s sur les serveurs du projet Freenet. Nous pensons que ces plugins ne contiennent pas de failles de s?curit?, sans toutefois le garantir. +PproxyToadlet.loadOtherPlugin=Charger un plugin non-officiel +PproxyToadlet.loadOtherPluginText=Vous pouvez entrer l'URL d'un plugin que vous voulez charger. Les plugins qui ne sont pas list?s ci-dessus ne sont pas support?s et leur s?curit? n'est pas v?rifi?e. Donc, si vous chargez un plugin ici, vous ?tes livr? ? vous m?me. +PproxyToadlet.loadOtherURLLabel=URL du plugin PproxyToadlet.loadPluginLabel=Charger Plugin : PproxyToadlet.noPlugins=Aucun plugin charg? +PproxyToadlet.pluginDirectoryNotCreated=Le dossier "plugins" n'a pas pu ?tre cr??. +PproxyToadlet.pluginNotDownloaded=Le plugin n'a pas pu ?tre t?l?charg?. PproxyToadlet.pluginNotFoundReload=Le plugin demand? est introuvable. PproxyToadlet.pluginNotFoundReloadTitle=Plugin introuvable (rechargement) PproxyToadlet.pluginStopping=Arr?t du plugin @@ -685,21 +730,31 @@ PproxyToadlet.pluginUnloadedWithName=Le plugin ${name} a ?t? enlev?. PproxyToadlet.plugins=Plugins PproxyToadlet.pluginsWithNodeName=Plugins de ${name} +PproxyToadlet.refreshOnStartup=Recharger depuis le serveur au d?marrage PproxyToadlet.reload=Recharger +PproxyToadlet.reloadOnStartupShort=Recharger au d?marrage PproxyToadlet.returnToPluginPage=Revenir ? la page des Plugins PproxyToadlet.startedAtTitle=D?marr? ? +PproxyToadlet.startingPluginName=Nom du plugin +PproxyToadlet.startingPluginStatus=Etat actuel +PproxyToadlet.startingPluginTime=Temps pass? +PproxyToadlet.startingPluginsTitle=D?marrage des plugins +PproxyToadlet.unauthorized=Vous n'?tes pas autoris? ? consulter cette page. +PproxyToadlet.unauthorizedTitle=Acc?s refus? PproxyToadlet.unload=Enlever PproxyToadlet.unloadPluginTitle=Enlever ce plugin? PproxyToadlet.unloadPluginWithName=Etes-vous s?r de vouloir enlever ${name}? -QueueToadlet.DUinProgress=Insertion de dossiers en cours +PproxyToadlet.startingPluginStatus.downloading=t?l?chargement en cours +PproxyToadlet.startingPluginStatus.starting=d?marrage +QueueToadlet.DUinProgress=Dossiers en cours d'insertion QueueToadlet.DinProgress=T?l?chargements en cours QueueToadlet.UinProgress=Insertions en cours QueueToadlet.change=Changer -QueueToadlet.completedDU=Dossier des t?l?chargement termin?s -QueueToadlet.completedDinDownloadDirectory=Termin?s : Fichiers dans le dossier de t?l?chargement (${size}) +QueueToadlet.completedDU=Insertions de dossiers termin?es +QueueToadlet.completedDinDownloadDirectory=Termin?s : T?l?chargements vers le dossier "downloads" (${size}) QueueToadlet.completedDinTempDirectory=Termin?s : T?l?chargements vers le dossier temporaire (${size}) -QueueToadlet.completedDtoDisk=T?l?chargements termin?s vers le disque -QueueToadlet.completedDtoTemp=T?l?chargement termin?s en attente +QueueToadlet.completedDtoDisk=T?l?chargements vers le disque termin?s +QueueToadlet.completedDtoTemp=T?l?chargement vers dossier temporaire termin?s QueueToadlet.completedU=Termin?s : Insertions (${size}) QueueToadlet.completedUDirectory=Termin?s : Insertions de dossiers (${size}) QueueToadlet.delete=Supprimer @@ -735,6 +790,11 @@ QueueToadlet.identifier=Identifiant QueueToadlet.insertAs=Ins?rer comme : QueueToadlet.insertFile=Ins?rer un fichier +QueueToadlet.insertFileBrowseLabel=Afficher +QueueToadlet.insertFileCompressLabel=Compresser +QueueToadlet.insertFileInsertFileLabel=Ins?rer le fichier +QueueToadlet.insertFileLabel=Fichier +QueueToadlet.insertFileResetForm=Remettre ? z?ro QueueToadlet.key=Cl? QueueToadlet.legend=L?gende QueueToadlet.mimeType=Type MIME @@ -813,6 +873,7 @@ StatisticsToadlet.allocMemory=M?moire allou?e par Java : ${memory} StatisticsToadlet.bandwidthTitle=Bande passante StatisticsToadlet.cpus=Processeurs disponibles : ${count} +StatisticsToadlet.fullTitle=Statistiques de ${name} StatisticsToadlet.getLogs=R?cup?rer le dernier journal du noeud StatisticsToadlet.inputRate=R?ception : ${rate}/seconde (sur ${max}/seconde) StatisticsToadlet.jeDumpButton=G?n?rer un dump JE @@ -827,6 +888,7 @@ StatisticsToadlet.outputRate=Envoi : ${rate}/seconde (sur ${max}/seconde) StatisticsToadlet.payloadOutput=Envoi utile : ${total} (${rate}/seconde) (${percent}%) StatisticsToadlet.peerStatsTitle=Statistiques des noeuds +StatisticsToadlet.statisticGatheringTitle=R?cup?ration des statistiques StatisticsToadlet.threadDumpButton=G?n?rer un dump de processus StatisticsToadlet.threads=Processus en cours : ${running}/${max} StatisticsToadlet.totalInput=Total re?u : ${total} (${rate}/seconde) @@ -868,6 +930,7 @@ Toadlet.returnToPrevPage=Retour ? la page pr?c?dente Toadlet.tempRedirectWithReason=Redirection temporaire : ${reason} Toadlet.unauthorized=Vous n'?tes pas autoris? ? acc?der ? cette page. +Toadlet.unauthorizedTitle=Acc?s refus? Toadlet.yes=Oui ToadletContextImpl.cannotParseContentLength=Erreur de content-length : ${error} ToadletContextImpl.headersLineTooLong=L'analyse des en-t?tes a rencontr? une ligne trop longue From bombe at freenetproject.org Sat Nov 10 02:17:50 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 02:17:50 +0000 (UTC) Subject: [freenet-cvs] r15733 - trunk/freenet/src/freenet/pluginmanager Message-ID: <20071110021750.DD8A247AE85@freenetproject.org> Author: bombe Date: 2007-11-10 02:17:49 +0000 (Sat, 10 Nov 2007) New Revision: 15733 Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java Log: use a new plugin respirator for each plugin Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java =================================================================== --- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-09 22:47:04 UTC (rev 15732) +++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-10 02:17:49 UTC (rev 15733) @@ -54,7 +54,6 @@ private final Set/* */startingPlugins = new HashSet/* */(); private final Vector/* */pluginWrappers; - private PluginRespirator pluginRespirator = null; final Node node; private final NodeClientCore core; SubConfig pmconfig; @@ -66,7 +65,6 @@ this.node = node; this.core = node.clientCore; logMINOR = Logger.shouldLog(Logger.MINOR, this); - pluginRespirator = new PluginRespirator(node, this); pmconfig = new SubConfig("pluginmanager", node.config); // Start plugins in the config @@ -149,7 +147,7 @@ try { plug = loadPlugin(filename, refresh); pluginProgress.setProgress(PluginProgress.STARTING); - PluginInfoWrapper pi = PluginHandler.startPlugin(PluginManager.this, filename, plug, pluginRespirator, refresh); + PluginInfoWrapper pi = PluginHandler.startPlugin(PluginManager.this, filename, plug, new PluginRespirator(node, PluginManager.this), refresh); synchronized (pluginWrappers) { pluginWrappers.add(pi); } From bombe at freenetproject.org Sat Nov 10 02:34:10 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 02:34:10 +0000 (UTC) Subject: [freenet-cvs] r15734 - trunk/freenet/src/freenet/pluginmanager Message-ID: <20071110023410.7E66C3A05AE@freenetproject.org> Author: bombe Date: 2007-11-10 02:34:10 +0000 (Sat, 10 Nov 2007) New Revision: 15734 Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java Log: accept local filenames for plugin url Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java =================================================================== --- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-10 02:17:49 UTC (rev 15733) +++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-11-10 02:34:10 UTC (rev 15734) @@ -399,11 +399,21 @@ * If anything goes wrong. */ private FredPlugin loadPlugin(String name, boolean refresh) throws PluginNotFoundException { - /* check if name contains a URL. */ URL pluginUrl = null; - try { - pluginUrl = new URL(name); - } catch (MalformedURLException mue1) { + /* check if name is a local file. */ + File pluginFile = new File(name); + if (pluginFile.exists() && pluginFile.isFile()) { + try { + pluginUrl = pluginFile.toURI().toURL(); + } catch (MalformedURLException e) { + throw new PluginNotFoundException("can not convert local path"); + } + } else { + /* check if name contains a URL. */ + try { + pluginUrl = new URL(name); + } catch (MalformedURLException mue1) { + } } if (pluginUrl == null) { try { @@ -424,7 +434,7 @@ /* get plugin filename. */ String completeFilename = pluginUrl.getPath(); String filename = completeFilename.substring(completeFilename.lastIndexOf('/') + 1); - File pluginFile = new File(pluginDirectory, filename); + pluginFile = new File(pluginDirectory, filename); /* check if file needs to be downloaded. */ if (logMINOR) { From bombe at freenetproject.org Sat Nov 10 02:37:02 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 02:37:02 +0000 (UTC) Subject: [freenet-cvs] r15735 - trunk/freenet/src/freenet/support Message-ID: <20071110023702.D20BA3A05CB@freenetproject.org> Author: bombe Date: 2007-11-10 02:37:02 +0000 (Sat, 10 Nov 2007) New Revision: 15735 Modified: trunk/freenet/src/freenet/support/JarClassLoader.java Log: throw exception if class can't be found Modified: trunk/freenet/src/freenet/support/JarClassLoader.java =================================================================== --- trunk/freenet/src/freenet/support/JarClassLoader.java 2007-11-10 02:34:10 UTC (rev 15734) +++ trunk/freenet/src/freenet/support/JarClassLoader.java 2007-11-10 02:37:02 UTC (rev 15735) @@ -129,7 +129,7 @@ Class clazz = defineClass(name, classBytes, 0, classBytes.length); return clazz; } - return null; + throw new ClassNotFoundException("could not find jar entry for class " + name); } catch (IOException e) { throw new ClassNotFoundException(e.getMessage(), e); } From bombe at freenetproject.org Sat Nov 10 11:56:52 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 11:56:52 +0000 (UTC) Subject: [freenet-cvs] r15736 - trunk/freenet/src/freenet/pluginmanager Message-ID: <20071110115652.7F38047AECC@freenetproject.org> Author: bombe Date: 2007-11-10 11:56:52 +0000 (Sat, 10 Nov 2007) New Revision: 15736 Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java Log: always remove plugin from manager Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java =================================================================== --- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java 2007-11-10 02:37:02 UTC (rev 15735) +++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java 2007-11-10 11:56:52 UTC (rev 15736) @@ -135,10 +135,9 @@ // Dump the thread? Would require post-1.4 features... } } - } else { - // Remove immediately - manager.removePlugin(this); } + // always remove plugin + manager.removePlugin(this); } /** From bombe at freenetproject.org Sat Nov 10 12:15:43 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 12:15:43 +0000 (UTC) Subject: [freenet-cvs] r15737 - trunk/freenet/src/freenet/clients/http Message-ID: <20071110121543.647704797DC@freenetproject.org> Author: bombe Date: 2007-11-10 12:15:43 +0000 (Sat, 10 Nov 2007) New Revision: 15737 Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java Log: remove unnecessary parameter, fix documentation Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-10 11:56:52 UTC (rev 15736) +++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-10 12:15:43 UTC (rev 15737) @@ -284,7 +284,7 @@ availablePlugins.remove(pluginName); } - showStartingPlugins(ctx, pm, contentNode); + showStartingPlugins(pm, contentNode); showPluginList(ctx, pm, contentNode); showOfficialPluginLoader(ctx, contentNode, availablePlugins); showUnofficialPluginLoader(ctx, contentNode); @@ -354,18 +354,12 @@ /** * Shows a list of all currently loading plugins. * - * @param toadletContext - * The toadlet context - * @param request - * The HTTP request * @param pluginManager * The plugin manager - * @throws ToadletContextClosedException - * if the toadlet context is closed - * @throws IOException - * if an I/O error occurs + * @param contentNode + * The node to add content to */ - private void showStartingPlugins(ToadletContext toadletContext, PluginManager pluginManager, HTMLNode contentNode) throws ToadletContextClosedException, IOException { + private void showStartingPlugins(PluginManager pluginManager, HTMLNode contentNode) { Set/**/ startingPlugins = pluginManager.getStartingPlugins(); if (!startingPlugins.isEmpty()) { HTMLNode startingPluginsBox = contentNode.addChild("div", "class", "infobox infobox-normal"); From bombe at freenetproject.org Sat Nov 10 12:18:22 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 12:18:22 +0000 (UTC) Subject: [freenet-cvs] r15738 - trunk/freenet/src/freenet/l10n Message-ID: <20071110121822.DBAD847984C@freenetproject.org> Author: bombe Date: 2007-11-10 12:18:22 +0000 (Sat, 10 Nov 2007) New Revision: 15738 Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties Log: rename misleading progress text Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties =================================================================== --- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties 2007-11-10 12:15:43 UTC (rev 15737) +++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties 2007-11-10 12:18:22 UTC (rev 15738) @@ -731,7 +731,7 @@ PproxyToadlet.startingPluginsTitle=Starting Plugins PproxyToadlet.startingPluginName=Plugin name PproxyToadlet.startingPluginStatus=Current status -PproxyToadlet.startingPluginStatus.downloading=downloading +PproxyToadlet.startingPluginStatus.downloading=creating local copy PproxyToadlet.startingPluginStatus.starting=starting PproxyToadlet.startingPluginTime=Time spent PproxyToadlet.pluginDirectoryNotCreated=The plugin directory could not be created. From bombe at freenetproject.org Sat Nov 10 13:40:29 2007 From: bombe at freenetproject.org (bombe at freenetproject.org) Date: Sat, 10 Nov 2007 13:40:29 +0000 (UTC) Subject: [freenet-cvs] r15739 - in trunk/freenet/src/freenet: clients/http l10n pluginmanager Message-ID: <20071110134029.B06824793D2@freenetproject.org> Author: bombe Date: 2007-11-10 13:40:29 +0000 (Sat, 10 Nov 2007) New Revision: 15739 Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties trunk/freenet/src/freenet/pluginmanager/PluginHandler.java trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java trunk/freenet/src/freenet/pluginmanager/PluginManager.java Log: remove "refresh-on-startup" option totally add "purge from cache" option to plugin unloading and reloading add method to remove plugin from local cache to plugin manager Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-10 12:18:22 UTC (rev 15738) +++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2007-11-10 13:40:29 UTC (rev 15739) @@ -119,16 +119,16 @@ { final boolean logMINOR = Logger.shouldLog(Logger.MINOR, this); final boolean logNORMAL = Logger.shouldLog(Logger.NORMAL, this); + PageMaker pageMaker = ctx.getPageMaker(); if (request.isPartSet("submit-official") || request.isPartSet("submit-other")) { String pluginName = null; - boolean refresh = request.isPartSet("refresh-on-startup"); if (request.isPartSet("submit-official")) { pluginName = request.getPartAsString("plugin-name", 40); } else { pluginName = request.getPartAsString("plugin-url", 200); } - pm.startPlugin(pluginName, refresh, true); + pm.startPlugin(pluginName, true); headers.put("Location", "."); ctx.sendReplyHeaders(302, "Found", headers, null, 0); return; @@ -140,71 +140,80 @@ ctx.sendReplyHeaders(302, "Found", headers, null, 0); return; } - if (request.isPartSet("change-reload-submit")) { - int pluginInfoWrapperHashCode = request.getIntPart("plugin-id", -1); - boolean newReload = request.isPartSet("reload-on-startup"); - Iterator/**/ pluginIterator = pm.getPlugins().iterator(); - while (pluginIterator.hasNext()) { - PluginInfoWrapper pluginInfoWrapper = (PluginInfoWrapper) pluginIterator.next(); - if (pluginInfoWrapper.hashCode() == pluginInfoWrapperHashCode) { - pluginInfoWrapper.setAutoRefresh(newReload); - break; - } - } - headers.put("Location", "."); - ctx.sendReplyHeaders(302, "Found", headers, null, 0); - return; - } if (request.isPartSet("cancel")){ headers.put("Location", "/plugins/"); ctx.sendReplyHeaders(302, "Found", headers, null, 0); return; } if (request.getPartAsString("unloadconfirm", MAX_PLUGIN_NAME_LENGTH).length() > 0) { - pm.killPlugin(request.getPartAsString("unloadconfirm", MAX_PLUGIN_NAME_LENGTH), MAX_THREADED_UNLOAD_WAIT_TIME); - HTMLNode pageNode = ctx.getPageMaker().getPageNode(l10n("plugins"), ctx); - HTMLNode contentNode = ctx.getPageMaker().getContentNode(pageNode); + String pluginThreadName = request.getPartAsString("unloadconfirm", MAX_PLUGIN_NAME_LENGTH); + String pluginSpecification = getPluginSpecification(pm, pluginThreadName); + pm.killPlugin(pluginThreadName, MAX_THREADED_UNLOAD_WAIT_TIME); + if (request.isPartSet("purge")) { + pm.removeCachedCopy(pluginSpecification); + } + HTMLNode pageNode = pageMaker.getPageNode(l10n("plugins"), ctx); + HTMLNode contentNode = pageMaker.getContentNode(pageNode); HTMLNode infobox = contentNode.addChild("div", "class", "infobox infobox-success"); infobox.addChild("div", "class", "infobox-header", l10n("pluginUnloaded")); HTMLNode infoboxContent = infobox.addChild("div", "class", "infobox-content"); - infoboxContent.addChild("#", l10n("pluginUnloadedWithName", "name", request.getPartAsString("remove", MAX_PLUGIN_NAME_LENGTH))); + infoboxContent.addChild("#", l10n("pluginUnloadedWithName", "name", pluginThreadName)); infoboxContent.addChild("br"); infoboxContent.addChild("a", "href", "/plugins/", l10n("returnToPluginPage")); writeHTMLReply(ctx, 200, "OK", pageNode.generate()); return; }if (request.getPartAsString("unload", MAX_PLUGIN_NAME_LENGTH).length() > 0) { - HTMLNode pageNode = ctx.getPageMaker().getPageNode(l10n("plugins"), ctx); - HTMLNode contentNode = ctx.getPageMaker().getContentNode(pageNode); + HTMLNode pageNode = pageMaker.getPageNode(l10n("plugins"), ctx); + HTMLNode contentNode = pageMaker.getContentNode(pageNode); HTMLNode infobox = contentNode.addChild("div", "class", "infobox infobox-query"); infobox.addChild("div", "class", "infobox-header", l10n("unloadPluginTitle")); HTMLNode infoboxContent = infobox.addChild("div", "class", "infobox-content"); infoboxContent.addChild("#", l10n("unloadPluginWithName", "name", request.getPartAsString("unload", MAX_PLUGIN_NAME_LENGTH))); HTMLNode unloadForm = ctx.addFormChild(infoboxContent, "/plugins/", "unloadPluginConfirmForm"); - unloadForm.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "cancel", L10n.getString("Toadlet.cancel") }); unloadForm.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "unloadconfirm", request.getPartAsString("unload", MAX_PLUGIN_NAME_LENGTH) }); - unloadForm.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "confirm", l10n("unload") }); + HTMLNode tempNode = unloadForm.addChild("p"); + tempNode.addChild("input", new String[] { "type", "name" }, new String[] { "checkbox", "purge" }); + tempNode.addChild("#", l10n("unloadPurge")); + tempNode = unloadForm.addChild("p"); + tempNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "confirm", l10n("unload") }); + tempNode.addChild("#", " "); + tempNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "cancel", L10n.getString("Toadlet.cancel") }); writeHTMLReply(ctx, 200, "OK", pageNode.generate()); return; - }else if (request.getPartAsString("reload", MAX_PLUGIN_NAME_LENGTH).length() > 0) { - String fn = null; - boolean refresh = false; - Iterator it = pm.getPlugins().iterator(); - while (it.hasNext()) { - PluginInfoWrapper pi = (PluginInfoWrapper) it.next(); - if (pi.getThreadName().equals(request.getPartAsString("reload", MAX_PLUGIN_NAME_LENGTH))) { - fn = pi.getFilename(); - refresh = pi.isAutoRefresh(); - break; - } - } + } else if (request.getPartAsString("reload", MAX_PLUGIN_NAME_LENGTH).length() > 0) { + HTMLNode pageNode = pageMaker.getPageNode(l10n("plugins"), ctx); + HTMLNode contentNode = pageMaker.getContentNode(pageNode); + HTMLNode reloadBox = contentNode.addChild(pageMaker.getInfobox("infobox infobox-query", l10n("reloadPluginTitle"))); + HTMLNode reloadContent = pageMaker.getContentNode(reloadBox); + reloadContent.addChild("p", l10n("reloadExplanation")); + reloadContent.addChild("p", l10n("reloadWarning")); + HTMLNode reloadForm = ctx.addFormChild(reloadContent, "/plugins/", "reloadPluginConfirmForm"); + reloadForm.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "reloadconfirm", request.getPartAsString("reload", MAX_PLUGIN_NAME_LENGTH) }); + HTMLNode tempNode = reloadForm.addChild("p"); + tempNode.addChild("input", new String[] { "type", "name" }, new String[] { "checkbox", "purge" }); + tempNode.addChild("#", l10n("reloadPurgeWarning")); + tempNode = reloadForm.addChild("p"); + tempNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "confirm", l10n("reload") }); + tempNode.addChild("#", " "); + tempNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "cancel", L10n.getString("Toadlet.cancel") }); + + writeHTMLReply(ctx, 200, "OK", pageNode.generate()); + return; + }else if (request.getPartAsString("reloadconfirm", MAX_PLUGIN_NAME_LENGTH).length() > 0) { + boolean purge = request.isPartSet("purge"); + String pluginThreadName = request.getPartAsString("reloadconfirm", MAX_PLUGIN_NAME_LENGTH); + String fn = getPluginSpecification(pm, pluginThreadName); if (fn == null) { sendErrorPage(ctx, 404, l10n("pluginNotFoundReloadTitle"), L10n.getString("PluginToadlet.pluginNotFoundReload")); } else { - pm.killPlugin(request