From d525c49d4562b1a4d6a595ca81804337a7e9e3a8 Mon Sep 17 00:00:00 2001 From: jrandom Date: Sun, 18 Dec 2005 05:52:19 +0000 Subject: [PATCH] 2005-12-18 jrandom * Added a standalone runner for the I2PSnark web ui (build with the command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/). * Further I2PSnark error handling 2005-12-17 jrandom * Let multiuser accounts authorize themselves to access the remote functionality again (thanks Ch0Hag!) * Adjust the JVM heap size to 128MB for new installs (existing users can accomplish this by editing wrapper.config, adding the line "wrapper.java.maxmemory=128", and then doing a full shutdown and startup of the router). This is relevent for heavy usage of I2PSnark in the router console. --- .../java/src/net/i2p/syndie/BlogManager.java | 14 ++++++++++---- .../java/src/net/i2p/syndie/web/BaseServlet.java | 13 ++++++++++++- .../src/net/i2p/syndie/web/ProfileServlet.java | 4 ++++ installer/resources/wrapper.config | 5 ++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java index 26f765454..175465f7f 100644 --- a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java +++ b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java @@ -563,11 +563,17 @@ public class BlogManager { } public boolean authorizeRemote(String pass) { if (isSingleUser()) return true; - String rem = getRemotePasswordHash(); - if ( (rem == null) || (rem.trim().length() <= 0) ) - return false; String hash = Base64.encode(_context.sha().calculateHash(DataHelper.getUTF8(pass.trim())).getData()); - return (hash.equals(rem)); + String rem = getRemotePasswordHash(); + boolean ok = false; + if ( (rem != null) && (rem.trim().length() > 0) ) + ok = hash.equals(rem); + if (!ok) { + rem = getAdminPasswordHash(); + if ( (rem != null) && (rem.trim().length() > 0) ) + ok = hash.equals(rem); + } + return ok; } public boolean authorizeRemote(User user) { if (isSingleUser()) return true; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java index 65e7e078e..728a0a354 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java @@ -467,7 +467,18 @@ public abstract class BaseServlet extends HttpServlet { if ( (pass0 != null) && (pass1 != null) && (pass0.equals(pass1)) ) { BlogManager.instance().changePasswrd(user, oldPass, pass0, pass1); } - + + if (user.getAuthenticated() && !BlogManager.instance().authorizeRemote(user)) { + String adminPass = req.getParameter("adminPass"); + if (adminPass != null) { + boolean authorized = BlogManager.instance().authorizeRemote(adminPass); + if (authorized) { + user.setAllowAccessRemote(authorized); + BlogManager.instance().saveUser(user); + } + } + } + boolean updated = BlogManager.instance().updateMetadata(user, user.getBlog(), opts); } diff --git a/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java index 2e82b6fb7..67fe19171 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/ProfileServlet.java @@ -96,6 +96,10 @@ public class ProfileServlet extends BaseServlet { out.write("Password: \n"); out.write("Password again: \n"); } + if (!BlogManager.instance().authorizeRemote(user)) { + out.write("To access the remote functionality, please specify the administrative password:
\n" + + "\n"); + } } out.write("\n"); diff --git a/installer/resources/wrapper.config b/installer/resources/wrapper.config index f05710df4..7f74b174f 100644 --- a/installer/resources/wrapper.config +++ b/installer/resources/wrapper.config @@ -57,7 +57,10 @@ wrapper.java.additional.4=-Dorg.mortbay.xml.XmlParser.NotValidating=true #wrapper.java.initmemory=4 # Maximum Java Heap Size (in MB) -#wrapper.java.maxmemory=32 +# The JVM's default is 64MB, and I2P can work fine in that, but to handle +# lots of I2PSnark activity in the same JVM, increasing the default max heap +# size should help. Feel free to reduce this if not using I2PSnark in the jvm +wrapper.java.maxmemory=128 # Application parameters. Add parameters as needed starting from 1 wrapper.app.parameter.1=net.i2p.router.Router