From 16fd46db2b66e458f8e2d1e90dfb13ee3fd17ba5 Mon Sep 17 00:00:00 2001 From: jrandom Date: Sun, 13 Nov 2005 11:04:17 +0000 Subject: [PATCH] move the admin page over to the new system --- .../java/src/net/i2p/syndie/BlogManager.java | 2 +- .../src/net/i2p/syndie/web/AdminServlet.java | 74 +++++++++++++ .../src/net/i2p/syndie/web/BaseServlet.java | 36 ++++++- apps/syndie/jsp/admin.jsp | 101 ------------------ apps/syndie/jsp/web.xml | 9 ++ 5 files changed, 115 insertions(+), 107 deletions(-) create mode 100644 apps/syndie/java/src/net/i2p/syndie/web/AdminServlet.java delete mode 100644 apps/syndie/jsp/admin.jsp diff --git a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java index b755245b4..cc15b6450 100644 --- a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java +++ b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java @@ -452,7 +452,7 @@ public class BlogManager { login = DEFAULT_LOGIN; return login; } - private String getDefaultPass() { + public String getDefaultPass() { String pass = _context.getProperty(PROP_DEFAULT_PASS); if ( (pass == null) || (pass.trim().length() <= 0) ) pass = DEFAULT_PASS; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/AdminServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/AdminServlet.java new file mode 100644 index 000000000..747655012 --- /dev/null +++ b/apps/syndie/java/src/net/i2p/syndie/web/AdminServlet.java @@ -0,0 +1,74 @@ +package net.i2p.syndie.web; + +import java.io.*; +import java.util.*; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; + +import net.i2p.I2PAppContext; +import net.i2p.client.naming.*; +import net.i2p.data.*; +import net.i2p.syndie.*; +import net.i2p.syndie.data.*; +import net.i2p.syndie.sml.*; + +/** + * Admin form + * + */ +public class AdminServlet extends BaseServlet { + protected void renderServletDetails(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index, + int threadOffset, BlogURI visibleEntry, Archive archive) throws IOException { + if (BlogManager.instance().authorizeRemote(user)) { + displayForm(user, req, out); + } else { + out.write("You are not authorized to configure this Syndie instance\n"); + } + } + + private void displayForm(User user, HttpServletRequest req, PrintWriter out) throws IOException { + out.write("
\n"); + out.write(""); + + out.write("Single user?
\n"); + + out.write("If this is checked, the registration, admin, and remote passwords are unnecessary - anyone"); + out.write("can register and administer Syndie, as well as use any remote functionality. This should not be checked if untrusted"); + out.write("parties can access this web interface.
\n"); + out.write("Default user: \n"); + out.write("pass:
\n"); + out.write("If Syndie is in single user mode, it will create a new 'default' user automatically and use that "); + out.write("whenever you access Syndie unless you explicitly log in to another account. If you want Syndie to use an existing account as "); + out.write("your default account, you can specify them here, in which case it will automatically log you in under that account.
\n"); + out.write("Registration password:
\n"); + out.write("Users must specify this password on the registration form to proceed. If this is "); + out.write("blank, anyone can register.
\n"); + out.write("Remote password:
\n"); + out.write("To access remote archives, users must first provide this password on their "); + out.write("metadata page. Remote access is 'dangerous', as it allows the user to instruct "); + out.write("this Syndie instance to establish HTTP connections with arbitrary locations. If "); + out.write("this field is not specified, no one can use remote archives.
\n"); + out.write("Default remote proxy host:
\n"); + out.write("Default remote proxy port:
\n"); + out.write("This is the default HTTP proxy shown on the remote archive page.
\n"); + out.write("
\n"); + out.write("\n"); + + out.write("\n"); + out.write("
\n"); + } +} 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 e102895c1..51f006a49 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java @@ -60,6 +60,8 @@ public abstract class BaseServlet extends HttpServlet { req.getSession().setAttribute("user", user); + handleAdmin(user, req); + forceNewIndex = handleAddressbook(user, req) || forceNewIndex; forceNewIndex = handleBookmarking(user, req) || forceNewIndex; handleUpdateProfile(user, req); @@ -346,6 +348,31 @@ public abstract class BaseServlet extends HttpServlet { } } + private void handleAdmin(User user, HttpServletRequest req) throws IOException { + if (BlogManager.instance().authorizeRemote(user)) { + String action = req.getParameter("action"); + if ( (action != null) && ("Save config".equals(action)) ) { + boolean wantSingle = !empty(req, "singleuser"); + String defaultUser = req.getParameter("defaultUser"); + String defaultPass = req.getParameter("defaultPass"); + String regPass = req.getParameter("regpass"); + String remotePass = req.getParameter("remotepass"); + String proxyHost = req.getParameter("proxyhost"); + String proxyPort = req.getParameter("proxyport"); + + // default user cannot be empty, but the rest can be blank + if ( (!empty(defaultUser)) && (defaultPass != null) && (regPass != null) && (remotePass != null) && + (proxyHost != null) && (proxyPort != null) ) { + int port = 4444; + try { port = Integer.parseInt(proxyPort); } catch (NumberFormatException nfe) {} + BlogManager.instance().configure(regPass, remotePass, null, null, proxyHost, port, wantSingle, + null, defaultUser, defaultPass); + } + } + } + } + + protected void render(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index) throws ServletException, IOException { Archive archive = BlogManager.instance().getArchive(); int numThreads = 10; @@ -375,7 +402,7 @@ public abstract class BaseServlet extends HttpServlet { } protected void renderBegin(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index) throws IOException { - out.write(BEGIN_HTML); + out.write("\n" + getTitle() + "\n" + BEGIN_HTML); } protected void renderNavBar(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index) throws IOException { //out.write("\n"); @@ -770,10 +797,7 @@ public abstract class BaseServlet extends HttpServlet { } } - private static final String BEGIN_HTML = "\n" + -"\n" + -"Syndie\n" + -"