diff --git a/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java new file mode 100644 index 000000000..6018104f0 --- /dev/null +++ b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java @@ -0,0 +1,151 @@ +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.*; + +/** + * Syndicate with another remote Syndie node + * + */ +public class SyndicateServlet extends BaseServlet { + protected String getTitle() { return "Syndie :: Syndicate"; } + + public static final String PARAM_SCHEMA = "schema"; + + protected void renderServletDetails(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index, + int threadOffset, BlogURI visibleEntry, Archive archive) throws IOException { + if (!BlogManager.instance().authorizeRemote(user)) { + out.write("Sorry, you are not authorized to access remote archives\n"); + } else { + out.write("
"); + displayForm(user, req, out); + handleRequest(user, req, index, out); + out.write("
\n"); + } + } + + private void handleRequest(User user, HttpServletRequest req, ThreadIndex index, PrintWriter out) throws IOException { + RemoteArchiveBean remote = getRemote(req); + String action = req.getParameter("action"); + if ("Continue...".equals(action)) { + String location = req.getParameter("location"); + String pn = req.getParameter("archivepetname"); + if ( (pn != null) && (pn.trim().length() > 0) ) { + PetName pnval = user.getPetNameDB().getByName(pn); + if (pnval != null) location = pnval.getLocation(); + } + + remote.fetchIndex(user, req.getParameter("schema"), location, + req.getParameter("proxyhost"), + req.getParameter("proxyport")); + } else if ("Fetch metadata".equals(action)) { + remote.fetchMetadata(user, req.getParameterMap()); + } else if ("Fetch selected entries".equals(action)) { + //remote.fetchSelectedEntries(user, request.getParameterMap()); + remote.fetchSelectedBulk(user, req.getParameterMap()); + } else if ("Fetch all new entries".equals(action)) { + //remote.fetchAllEntries(user, request.getParameterMap()); + remote.fetchSelectedBulk(user, req.getParameterMap()); + } else if ("Post selected entries".equals(action)) { + remote.postSelectedEntries(user, req.getParameterMap()); + } + String msgs = remote.getStatus(); + if ( (msgs != null) && (msgs.length() > 0) ) { + out.write("
");
+            out.write(msgs);
+            out.write("Refresh

\n"); + } + + if (remote.getFetchIndexInProgress()) { + out.write("Please wait while the index is being fetched "); + out.write("from "); + out.write(remote.getRemoteLocation()); + out.write("."); + } else if (remote.getRemoteIndex() != null) { + // remote index is NOT null! + out.write(""); + out.write(remote.getRemoteLocation()); + out.write(""); + out.write("(refetch):
\n"); + + remote.renderDeltaForm(user, BlogManager.instance().getArchive().getIndex(), out); + out.write(""); + } + + out.write("\n"); + } + + private void displayForm(User user, HttpServletRequest req, PrintWriter out) throws IOException { + writeAuthActionFields(out); + out.write(""); + out.write("Import from:\n"); + out.write("\n"); + out.write("Proxy\n"); + out.write("\n"); + out.write("
\n"); + out.write("Bookmarked archives:\n"); + out.write(" or "); + out.write("\n"); + out.write("
\n"); + out.write("
\n"); + } + + private static final String ATTR_REMOTE = "remote"; + protected RemoteArchiveBean getRemote(HttpServletRequest req) { + RemoteArchiveBean remote = (RemoteArchiveBean)req.getSession().getAttribute(ATTR_REMOTE); + if (remote == null) { + remote = new RemoteArchiveBean(); + req.getSession().setAttribute(ATTR_REMOTE, remote); + } + return remote; + } +} diff --git a/apps/syndie/jsp/remote.jsp b/apps/syndie/jsp/remote.jsp deleted file mode 100644 index 0f79cbaa5..000000000 --- a/apps/syndie/jsp/remote.jsp +++ /dev/null @@ -1,83 +0,0 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.client.naming.PetName, net.i2p.syndie.web.*, net.i2p.syndie.*, net.i2p.syndie.sml.*, java.util.*" %><% -request.setCharacterEncoding("UTF-8"); -%> - - -SyndieMedia remote - - - - - - - - - -
<% -if (!BlogManager.instance().authorizeRemote(user)) { -%>Sorry, you are not allowed to access remote archives from here. Perhaps you should install Syndie yourself?<% -} else { %>
Import from: - -Proxy - -
-Bookmarked archives: or -" /> -
-
-<% - String action = request.getParameter("action"); - if ("Continue...".equals(action)) { - String location = request.getParameter("location"); - String pn = request.getParameter("archivepetname"); - if ( (pn != null) && (pn.trim().length() > 0) ) { - PetName pnval = user.getPetNameDB().getByName(pn); - if (pnval != null) location = pnval.getLocation(); - } - remote.fetchIndex(user, request.getParameter("schema"), location, request.getParameter("proxyhost"), request.getParameter("proxyport")); - } else if ("Fetch metadata".equals(action)) { - remote.fetchMetadata(user, request.getParameterMap()); - } else if ("Fetch selected entries".equals(action)) { - //remote.fetchSelectedEntries(user, request.getParameterMap()); - remote.fetchSelectedBulk(user, request.getParameterMap()); - } else if ("Fetch all new entries".equals(action)) { - //remote.fetchAllEntries(user, request.getParameterMap()); - remote.fetchSelectedBulk(user, request.getParameterMap()); - } else if ("Post selected entries".equals(action)) { - remote.postSelectedEntries(user, request.getParameterMap()); - } - String msgs = remote.getStatus(); - if ( (msgs != null) && (msgs.length() > 0) ) { %>
<%=msgs%>
-Refresh

<% - } - if (remote.getFetchIndexInProgress()) { %>Please wait while the index is being fetched -from <%=remote.getRemoteLocation()%>.<% - } else if (remote.getRemoteIndex() != null) { - // remote index is NOT null! - %><%=remote.getRemoteLocation()%> -(refetch):
-<%remote.renderDeltaForm(user, archive, out);%> -<% - } -} -%> -
- \ No newline at end of file diff --git a/apps/syndie/jsp/web.xml b/apps/syndie/jsp/web.xml index cf55c9df3..22bb37ee1 100644 --- a/apps/syndie/jsp/web.xml +++ b/apps/syndie/jsp/web.xml @@ -44,6 +44,11 @@ net.i2p.syndie.web.AdminServlet + + net.i2p.syndie.web.SyndicateServlet + net.i2p.syndie.web.SyndicateServlet + + net.i2p.syndie.UpdaterServlet net.i2p.syndie.UpdaterServlet @@ -90,6 +95,10 @@ net.i2p.syndie.web.AdminServlet /admin.jsp + + net.i2p.syndie.web.SyndicateServlet + /syndicate.jsp +