move the admin page over to the new system

This commit is contained in:
jrandom
2005-11-13 11:04:17 +00:00
committed by zzz
parent 1159c155a4
commit 16fd46db2b
5 changed files with 115 additions and 107 deletions

View File

@@ -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;

View File

@@ -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("<tr><td colspan=\"3\"><span class=\"b_adminMsgErr\">You are not authorized to configure this Syndie instance</span></td></tr>\n");
}
}
private void displayForm(User user, HttpServletRequest req, PrintWriter out) throws IOException {
out.write("<form action=\"" + req.getRequestURI() + "\" method=\"POST\">\n");
out.write("<tr><td colspan=\"3\">");
out.write("<em class=\"b_adminField\">Single user?</em> <input type=\"checkbox\" class=\"b_adminField\" name=\"singleuser\" ");
if (BlogManager.instance().isSingleUser())
out.write(" checked=\"true\" ");
out.write(" /><br />\n");
out.write("<span class=\"b_adminDescr\">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.</span><br />\n");
out.write("<span class=\"b_adminField\">Default user:</span> <input class=\"b_adminField\" type=\"text\" name=\"defaultUser\" size=\"10\" value=\"");
out.write(BlogManager.instance().getDefaultLogin());
out.write("\" />\n");
out.write("<span class=\"b_adminField\">pass:</span> <input class=\"b_adminField\" type=\"text\" name=\"defaultPass\" size=\"10\" value=\"");
out.write(BlogManager.instance().getDefaultPass());
out.write("\"/><br />\n");
out.write("<span class=\"b_adminDescr\">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.</span><br />\n");
out.write("<em class=\"b_adminField\">Registration password:</em> <input class=\"b_adminField\" type=\"text\" name=\"regpass\" size=\"10\" value=\"\" /><br />\n");
out.write("<span class=\"b_adminDescr\">Users must specify this password on the registration form to proceed. If this is ");
out.write("blank, anyone can register.</span><br />\n");
out.write("<em class=\"b_adminField\">Remote password:</em> <input class=\"b_adminField\" type=\"text\" name=\"remotepass\" size=\"10\" value=\"\" /><br />\n");
out.write("<span class=\"b_adminDescr\">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.</span><br />\n");
out.write("<em class=\"b_adminField\">Default remote proxy host:</em> <input class=\"b_adminField\" type=\"text\" name=\"proxyhost\" size=\"20\" value=\"");
out.write(BlogManager.instance().getDefaultProxyHost());
out.write("\" /><br />\n");
out.write("<em class=\"b_adminField\">Default remote proxy port:</em> <input class=\"b_adminField\" type=\"text\" name=\"proxyport\" size=\"5\" value=\"");
out.write(BlogManager.instance().getDefaultProxyPort());
out.write("\" /><br />\n");
out.write("<span class=\"b_adminDescr\">This is the default HTTP proxy shown on the remote archive page.</span><br />\n");
out.write("<hr />\n");
out.write("<input class=\"b_adminSave\" type=\"submit\" name=\"action\" value=\"Save config\" />\n");
out.write("</td></tr>\n");
out.write("</form>\n");
}
}

View File

@@ -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("<html>\n<head><title>" + getTitle() + "</title>\n" + BEGIN_HTML);
}
protected void renderNavBar(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index) throws IOException {
//out.write("<tr class=\"topNav\"><td class=\"topNav_user\" colspan=\"2\" nowrap=\"true\">\n");
@@ -770,10 +797,7 @@ public abstract class BaseServlet extends HttpServlet {
}
}
private static final String BEGIN_HTML = "<html>\n" +
"<head>\n" +
"<title>Syndie</title>\n" +
"<style>\n" +
private static final String BEGIN_HTML = "<style>\n" +
".overallTable {\n" +
" border-spacing: 0px;\n" +
" border-width: 0px;\n" +
@@ -855,6 +879,8 @@ public abstract class BaseServlet extends HttpServlet {
private static final String END_HTML = "</table>\n" +
"</body>\n";
protected String getTitle() { return "Syndie"; }
protected static class TreeRenderState {
private int _rowsWritten;
private int _rowsSkipped;