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