From b031de54041dbf330dfa56fcd96813763981d21a Mon Sep 17 00:00:00 2001 From: jrandom Date: Tue, 15 Nov 2005 06:24:17 +0000 Subject: [PATCH] more cleanup --- .../i2ptunnel/HTTPResponseOutputStream.java | 32 +++++++++++-- .../i2p/i2ptunnel/I2PTunnelHTTPServer.java | 19 +++++++- .../java/src/net/i2p/syndie/BlogManager.java | 9 +++- apps/syndie/java/src/net/i2p/syndie/User.java | 9 ++++ .../i2p/syndie/sml/HTMLPreviewRenderer.java | 8 ++-- .../src/net/i2p/syndie/sml/HTMLRenderer.java | 34 ++++++------- .../src/net/i2p/syndie/sml/RSSRenderer.java | 9 ++-- .../i2p/syndie/sml/ThreadedHTMLRenderer.java | 25 ++-------- .../net/i2p/syndie/web/AddressesServlet.java | 34 ++++++++----- .../src/net/i2p/syndie/web/BaseServlet.java | 48 +++++++++++++++---- .../net/i2p/syndie/web/RemoteArchiveBean.java | 31 +++++++----- .../net/i2p/syndie/web/SyndicateServlet.java | 18 +++---- 12 files changed, 182 insertions(+), 94 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java index 91ec63702..f54371a56 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java @@ -267,10 +267,34 @@ class HTTPResponseOutputStream extends FilterOutputStream { public InternalGZIPInputStream(InputStream in) throws IOException { super(in); } - public long getTotalRead() { return super.inf.getTotalIn(); } - public long getTotalExpanded() { return super.inf.getTotalOut(); } - public long getRemaining() { return super.inf.getRemaining(); } - public boolean getFinished() { return super.inf.finished(); } + public long getTotalRead() { + try { + return super.inf.getTotalIn(); + } catch (Exception e) { + return 0; + } + } + public long getTotalExpanded() { + try { + return super.inf.getTotalOut(); + } catch (Exception e) { + return 0; + } + } + public long getRemaining() { + try { + return super.inf.getRemaining(); + } catch (Exception e) { + return 0; + } + } + public boolean getFinished() { + try { + return super.inf.finished(); + } catch (Exception e) { + return true; + } + } public String toString() { return "Read: " + getTotalRead() + " expanded: " + getTotalExpanded() + " remaining: " + getRemaining() + " finished: " + getFinished(); } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index 2af483734..7ea0490bf 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -10,6 +10,7 @@ import java.net.SocketException; import java.util.Iterator; import java.util.Properties; import java.util.zip.GZIPOutputStream; +import java.util.zip.Deflater; import net.i2p.I2PAppContext; import net.i2p.I2PException; @@ -230,8 +231,22 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { public InternalGZIPOutputStream(OutputStream target) throws IOException { super(target); } - public long getTotalRead() { return super.def.getTotalIn(); } - public long getTotalCompressed() { return super.def.getTotalOut(); } + public long getTotalRead() { + try { + return def.getTotalIn(); + } catch (Exception e) { + // j2se 1.4.2_08 on linux is sometimes throwing an NPE in the getTotalIn() implementation + return 0; + } + } + public long getTotalCompressed() { + try { + return def.getTotalOut(); + } catch (Exception e) { + // j2se 1.4.2_08 on linux is sometimes throwing an NPE in the getTotalOut() implementation + return 0; + } + } } private String formatHeaders(Properties headers, StringBuffer command) { diff --git a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java index 872bab986..f047d17f4 100644 --- a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java +++ b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java @@ -314,12 +314,19 @@ public class BlogManager { try { Properties props = loadUserProps(userFile); if (props == null) throw new IOException("Error reading " + userFile); - return user.login(login, pass, props); + String rv = user.login(login, pass, props); + if (User.LOGIN_OK.equals(rv)) + _log.info("Login successful"); + else + _log.info("Login failed: [" + rv + "]"); + return rv; } catch (IOException ioe) { _log.error("Error logging in", ioe); return "Error logging in - corrupt userfile"; } } else { + if (_log.shouldLog(Log.INFO)) + _log.info("User does not exist"); return "User does not exist"; } } diff --git a/apps/syndie/java/src/net/i2p/syndie/User.java b/apps/syndie/java/src/net/i2p/syndie/User.java index 4f6c65cdf..2924bcb73 100644 --- a/apps/syndie/java/src/net/i2p/syndie/User.java +++ b/apps/syndie/java/src/net/i2p/syndie/User.java @@ -41,6 +41,7 @@ public class User { private int _torProxyPort; private PetNameDB _petnames; private boolean _importAddresses; + private boolean _dataImported; static final String PROP_USERHASH = "__userHash"; @@ -87,6 +88,7 @@ public class User { _lastMetaEntry = 0; _petnames = new PetNameDB(); _importAddresses = false; + _dataImported = false; } public boolean getAuthenticated() { return _authenticated; } @@ -127,6 +129,13 @@ public class User { init(); } + public void dataImported() { _dataImported = true; } + public boolean resetDataImported() { + boolean rv = _dataImported; + _dataImported = false; + return rv; + } + public boolean changePassword(String oldPass, String pass0, String pass1) { String curPass = _hashedPassword; Hash curPassHash = _context.sha().calculateHash(DataHelper.getUTF8(oldPass)); diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java index ff1d43586..6a0b4d748 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java @@ -112,13 +112,13 @@ public class HTMLPreviewRenderer extends HTMLRenderer { } else { _postBodyBuffer.append(" ").append(sanitizeString(a.name)).append(""); } } diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java index 5a906c9a6..8daeeb46f 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java @@ -408,7 +408,7 @@ public class HTMLRenderer extends EventReceiverImpl { } if (_user.getAuthenticated()) { _bodyBuffer.append(" bookmark it"); } } @@ -496,13 +496,13 @@ public class HTMLRenderer extends EventReceiverImpl { _log.debug("Receiving address [" + location + "]"); _bodyBuffer.append("").append(sanitizeString(anchorText)).append(""); } } @@ -659,13 +659,13 @@ public class HTMLRenderer extends EventReceiverImpl { } else { _postBodyBuffer.append(" ").append(sanitizeString(a.name)).append(""); } } @@ -682,7 +682,7 @@ public class HTMLRenderer extends EventReceiverImpl { _postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append(""); if (null == _user.getPetNameDB().getByLocation(a.location)) { _postBodyBuffer.append(" bookmark it"); } } @@ -1069,15 +1069,15 @@ public class HTMLRenderer extends EventReceiverImpl { return buf.toString(); } public String getArchiveURL(Hash blog, SafeURL archiveLocation) { - return "remote.jsp?" + return "syndicate.jsp?" //+ "action=Continue..." // should this be the case? - + "&schema=" + sanitizeTagParam(archiveLocation.getSchema()) - + "&location=" + sanitizeTagParam(archiveLocation.getLocation()); + + "&" + SyndicateServlet.PARAM_SCHEMA + "=" + sanitizeTagParam(archiveLocation.getSchema()) + + "&" + SyndicateServlet.PARAM_LOCATION + "=" + sanitizeTagParam(archiveLocation.getLocation()); } public String getBookmarkURL(String name, String location, String schema, String protocol) { - return "addresses.jsp?name=" + sanitizeTagParam(name) - + "&network=" + sanitizeTagParam(schema) - + "&protocol=" + sanitizeTagParam(protocol) - + "&location=" + sanitizeTagParam(location); + return "addresses.jsp?" + AddressesServlet.PARAM_NAME + '=' + sanitizeTagParam(name) + + "&" + AddressesServlet.PARAM_NET + '=' + sanitizeTagParam(schema) + + "&" + AddressesServlet.PARAM_PROTO + '=' + sanitizeTagParam(protocol) + + "&" + AddressesServlet.PARAM_LOC + '=' + sanitizeTagParam(location); } } diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/RSSRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/RSSRenderer.java index 7038e6daa..4bf4af3b3 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/RSSRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/RSSRenderer.java @@ -8,6 +8,7 @@ import net.i2p.client.naming.PetName; import net.i2p.data.*; import net.i2p.syndie.*; import net.i2p.syndie.data.*; +import net.i2p.syndie.web.AddressesServlet; /** * @@ -261,10 +262,10 @@ public class RSSRenderer extends HTMLRenderer { pn = _user.getPetNameDB().getByLocation(a.location); if (pn == null) { StringBuffer url = new StringBuffer(128); - url.append("addresses.jsp?network="); - url.append(sanitizeTagParam(a.schema)).append("&location="); - url.append(sanitizeTagParam(a.location)).append("&name="); - url.append(sanitizeTagParam(a.name)).append("&protocol="); + url.append("addresses.jsp?").append(AddressesServlet.PARAM_NAME).append('='); + url.append(sanitizeTagParam(a.schema)).append("&").append(AddressesServlet.PARAM_LOC).append("="); + url.append(sanitizeTagParam(a.location)).append("&").append(AddressesServlet.PARAM_NAME).append("="); + url.append(sanitizeTagParam(a.name)).append("&").append(AddressesServlet.PARAM_PROTO).append("="); url.append(sanitizeTagParam(a.protocol)); out.write(" \n"); } diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java index fe0da2216..0a46adf32 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java @@ -45,8 +45,6 @@ public class ThreadedHTMLRenderer extends HTMLRenderer { public static final String PARAM_PROFILE_DESC = "profileDesc"; public static final String PARAM_PROFILE_URL = "profileURL"; public static final String PARAM_PROFILE_OTHER = "profileOther"; - - public static final String PARAM_ARCHIVE = "archiveLocation"; public static String getFilterByTagLink(String uri, ThreadNode node, User user, String tag, String author) { StringBuffer buf = new StringBuffer(64); @@ -368,13 +366,13 @@ public class ThreadedHTMLRenderer extends HTMLRenderer { } else { _postBodyBuffer.append(" ").append(sanitizeString(a.name)).append(""); } } @@ -391,7 +389,7 @@ public class ThreadedHTMLRenderer extends HTMLRenderer { _postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append(""); if (null == _user.getPetNameDB().getByLocation(a.location)) { _postBodyBuffer.append(" bookmark it"); } } @@ -475,17 +473,4 @@ public class ThreadedHTMLRenderer extends HTMLRenderer { buf.append(PARAM_TAGS).append('=').append(sanitizeTagParam(tag)).append('&'); return buf.toString(); } - public String getArchiveURL(Hash blog, SafeURL archiveLocation) { - return "remote.jsp?" - //+ "action=Continue..." // should this be the case? - + "&schema=" + sanitizeTagParam(archiveLocation.getSchema()) - + "&location=" + sanitizeTagParam(archiveLocation.getLocation()); - } - public String getBookmarkURL(String name, String location, String schema, String protocol) { - return "addresses.jsp?name=" + sanitizeTagParam(name) - + "&network=" + sanitizeTagParam(schema) - + "&protocol=" + sanitizeTagParam(protocol) - + "&location=" + sanitizeTagParam(location); - - } } diff --git a/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java index d7359b9f9..9875e874f 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java @@ -70,14 +70,19 @@ public class AddressesServlet extends BaseServlet { String uri = req.getRequestURI(); PetName pn = buildNewName(req, PROTO_BLOG); + _log.debug("pn for protoBlog [" + req.getParameter(PARAM_PROTO) + "]: " + pn); renderBlogs(user, db, uri, pn, out); pn = buildNewName(req, PROTO_ARCHIVE); + _log.debug("pn for protoArchive [" + req.getParameter(PARAM_PROTO) + "]: " + pn); renderArchives(user, db, uri, pn, out); pn = buildNewName(req, PROTO_I2PHEX); + _log.debug("pn for protoPhex [" + req.getParameter(PARAM_PROTO) + "]: " + pn); renderI2Phex(user, db, uri, pn, out); pn = buildNewName(req, PROTO_EEPSITE); + _log.debug("pn for protoEep [" + req.getParameter(PARAM_PROTO) + "]: " + pn); renderEepsites(user, db, uri, pn, out); pn = buildNewName(req); + _log.debug("pn for proto other [" + req.getParameter(PARAM_PROTO) + "]: " + pn); renderOther(user, db, uri, pn, out); } } @@ -165,14 +170,16 @@ public class AddressesServlet extends BaseServlet { out.write("\n"); out.write("Name: " + pn.getName() + " "); out.write("Location: "); - if (BlogManager.instance().syndicationScheduled(pn.getLocation())) - out.write("Syndicate? "); - else - out.write("Syndicate? "); - - out.write("Sync manually "); - + if (BlogManager.instance().authorizeRemote(user)) { + + if (BlogManager.instance().syndicationScheduled(pn.getLocation())) + out.write("Syndicate? "); + else + out.write("Syndicate? "); + + out.write("Sync manually "); + } out.write(" "); out.write(" "); out.write("\n"); @@ -187,10 +194,12 @@ public class AddressesServlet extends BaseServlet { out.write("\n"); out.write("Name: "); out.write("Location: "); - if (BlogManager.instance().syndicationScheduled(newName.getLocation())) - out.write("Syndicate? "); - else - out.write("Syndicate? "); + if (BlogManager.instance().authorizeRemote(user)) { + if (BlogManager.instance().syndicationScheduled(newName.getLocation())) + out.write("Syndicate? "); + else + out.write("Syndicate? "); + } out.write(" "); out.write("\n"); @@ -344,7 +353,6 @@ public class AddressesServlet extends BaseServlet { return pn; } else { pn = buildNewAddress(req); - pn.setProtocol(protocol); } return pn; } 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 f6387a200..ecea58084 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java @@ -14,6 +14,7 @@ import net.i2p.data.*; import net.i2p.syndie.*; import net.i2p.syndie.data.*; import net.i2p.syndie.sml.*; +import net.i2p.util.Log; /** * Base servlet for handling request and rendering the templates @@ -22,10 +23,14 @@ import net.i2p.syndie.sml.*; public abstract class BaseServlet extends HttpServlet { protected static final String PARAM_AUTH_ACTION = "syndie.auth"; private static long _authNonce; + private I2PAppContext _context; + protected Log _log; public void init() throws ServletException { super.init(); - _authNonce = I2PAppContext.getGlobalContext().random().nextLong(); + _context = I2PAppContext.getGlobalContext(); + _log = _context.logManager().getLog(getClass()); + _authNonce = _context.random().nextLong(); } protected boolean authAction(HttpServletRequest req) { @@ -92,18 +97,34 @@ public abstract class BaseServlet extends HttpServlet { if (user == null) { if ("Login".equals(action)) { user = BlogManager.instance().login(login, pass); // ignore failures - user will just be unauthorized - if (!user.getAuthenticated()) + if (!user.getAuthenticated()) { user = BlogManager.instance().getDefaultUser(); + if (_log.shouldLog(Log.INFO)) + _log.info("Explicit login failed for [" + login + "], using default login"); + } else { + if (_log.shouldLog(Log.INFO)) + _log.info("Explicit login successful for [" + login + "]"); + } } else { user = BlogManager.instance().getDefaultUser(); + if (_log.shouldLog(Log.INFO)) + _log.info("Implicit login for the default user"); } forceNewIndex = true; } else if (authAction && "Login".equals(action)) { user = BlogManager.instance().login(login, pass); // ignore failures - user will just be unauthorized - if (!user.getAuthenticated()) + if (!user.getAuthenticated()) { + if (_log.shouldLog(Log.INFO)) + _log.info("Explicit relogin failed for [" + login + "] from [" + user.getUsername() + "], using default user"); user = BlogManager.instance().getDefaultUser(); + } else { + if (_log.shouldLog(Log.INFO)) + _log.info("Explicit relogin successful for [" + login + "] from [" + user.getUsername() + "]"); + } forceNewIndex = true; } else if (authAction && "Logout".equals(action)) { + if (_log.shouldLog(Log.INFO)) + _log.info("Explicit logout successful for [" + user.getUsername() + "], using default login"); user = BlogManager.instance().getDefaultUser(); forceNewIndex = true; } @@ -118,6 +139,13 @@ public abstract class BaseServlet extends HttpServlet { handleUpdateProfile(user, req); } + // the 'dataImported' flag is set by successful fetches in the SyndicateServlet/RemoteArchiveBean + if (user.resetDataImported()) { + forceNewIndex = true; + if (_log.shouldLog(Log.INFO)) + _log.info("Data imported, force regenerate"); + } + FilteredThreadIndex index = (FilteredThreadIndex)req.getSession().getAttribute("threadIndex"); Collection tags = getFilteredTags(req); @@ -125,6 +153,8 @@ public abstract class BaseServlet extends HttpServlet { if (forceNewIndex || (index == null) || (!index.getFilteredTags().equals(tags)) || (!index.getFilteredAuthors().equals(filteredAuthors))) { index = new FilteredThreadIndex(user, BlogManager.instance().getArchive(), getFilteredTags(req), filteredAuthors); req.getSession().setAttribute("threadIndex", index); + if (_log.shouldLog(Log.INFO)) + _log.info("New filtered index created (forced? " + forceNewIndex + ")"); } render(user, req, resp.getWriter(), index); @@ -468,7 +498,8 @@ public abstract class BaseServlet extends HttpServlet { out.write("Post a new thread\n"); out.write("Addressbook\n"); } else { - out.write("
\n"); + out.write("\n"); + writeAuthActionFields(out); out.write("Login: \n"); out.write("Password: \n"); out.write("
\n"); @@ -483,12 +514,9 @@ public abstract class BaseServlet extends HttpServlet { out.write("\n\n"); } - protected String getSyndicateLink(User user, String archiveName) { - if ( (user != null) && (archiveName != null) ) { - PetName pn = user.getPetNameDB().getByName(archiveName); - if (pn != null) - return "syndicate.jsp?" + ThreadedHTMLRenderer.PARAM_ARCHIVE + "=" + pn.getLocation(); - } + protected String getSyndicateLink(User user, String location) { + if (location != null) + return "syndicate.jsp?" + SyndicateServlet.PARAM_LOCATION + "=" + location; return "syndicate.jsp"; } diff --git a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java index fb91b60e7..df124f2dc 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java @@ -131,7 +131,7 @@ public class RemoteArchiveBean { for (int i = 0; i < urls.size(); i++) _statusMessages.add("Scheduling blog post fetching for " + HTMLRenderer.sanitizeString(entries[i])); - fetch(urls, tmpFiles, user, new BlogStatusListener()); + fetch(urls, tmpFiles, user, new BlogStatusListener(user)); } public void fetchSelectedBulk(User user, Map parameters) { @@ -186,7 +186,7 @@ public class RemoteArchiveBean { boolean shouldProxy = (_proxyHost != null) && (_proxyPort > 0); final EepGet get = new EepGet(_context, shouldProxy, _proxyHost, _proxyPort, 0, tmp.getAbsolutePath(), url.toString(), postData.toString()); - get.addStatusListener(new BulkFetchListener(tmp)); + get.addStatusListener(new BulkFetchListener(user, tmp)); if (shouldBlock) { get.fetch(); @@ -218,7 +218,7 @@ public class RemoteArchiveBean { File t = File.createTempFile("fetchBulk", ".dat", BlogManager.instance().getTempDir()); tmpFiles.add(t); } - fetch(urls, tmpFiles, user, new BlogStatusListener(), shouldBlock); + fetch(urls, tmpFiles, user, new BlogStatusListener(user), shouldBlock); } catch (IOException ioe) { _statusMessages.add("Internal error creating temporary file to fetch posts: " + HTMLRenderer.sanitizeString(urls.toString())); } @@ -266,7 +266,7 @@ public class RemoteArchiveBean { for (int i = 0; i < urls.size(); i++) _statusMessages.add("Fetch all entries: " + HTMLRenderer.sanitizeString((String)urls.get(i))); - fetch(urls, tmpFiles, user, new BlogStatusListener()); + fetch(urls, tmpFiles, user, new BlogStatusListener(user)); } private void fetch(List urls, List tmpFiles, User user, EepGet.StatusListener lsnr) { @@ -352,7 +352,7 @@ public class RemoteArchiveBean { _archiveFile = file; } public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) { - _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? cause.getMessage() : "")); + _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? " " + cause.getMessage() : "")); } public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {} @@ -390,7 +390,7 @@ public class RemoteArchiveBean { private class MetadataStatusListener implements EepGet.StatusListener { public MetadataStatusListener() {} public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) { - _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? cause.getMessage() : "")); + _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? " " + cause.getMessage() : "")); } public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {} @@ -428,9 +428,12 @@ public class RemoteArchiveBean { } private class BlogStatusListener implements EepGet.StatusListener { - public BlogStatusListener() {} + private User _user; + public BlogStatusListener(User user) { + _user = user; + } public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) { - _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? cause.getMessage() : "")); + _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? " " + cause.getMessage() : "")); } public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {} @@ -464,6 +467,7 @@ public class RemoteArchiveBean { } else { _statusMessages.add("Blog post " + uri.toString() + " imported"); BlogManager.instance().getArchive().regenerateIndex(); + _user.dataImported(); } } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) @@ -485,11 +489,13 @@ public class RemoteArchiveBean { */ private class BulkFetchListener implements EepGet.StatusListener { private File _tmp; - public BulkFetchListener(File tmp) { + private User _user; + public BulkFetchListener(User user, File tmp) { + _user = user; _tmp = tmp; } public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) { - _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? cause.getMessage() : "")); + _statusMessages.add("Attempt " + currentAttempt + " failed after " + bytesTransferred + (cause != null ? " " + cause.getMessage() : "")); } public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {} @@ -499,7 +505,7 @@ public class RemoteArchiveBean { ZipInputStream zi = null; try { zi = new ZipInputStream(new FileInputStream(file)); - + boolean postImported = false; while (true) { ZipEntry entry = zi.getNextEntry(); if (entry == null) @@ -540,11 +546,14 @@ public class RemoteArchiveBean { continue; } else { _statusMessages.add("Blog post " + uri.toString() + " imported"); + postImported = true; } } } BlogManager.instance().getArchive().regenerateIndex(); + if (postImported) + _user.dataImported(); } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) _log.debug("Error importing", ioe); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java index 6018104f0..1eb97730e 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java @@ -23,6 +23,8 @@ public class SyndicateServlet extends BaseServlet { protected String getTitle() { return "Syndie :: Syndicate"; } public static final String PARAM_SCHEMA = "schema"; + public static final String PARAM_LOCATION = "location"; + public static final String PARAM_PETNAME = "petname"; protected void renderServletDetails(User user, HttpServletRequest req, PrintWriter out, ThreadIndex index, int threadOffset, BlogURI visibleEntry, Archive archive) throws IOException { @@ -40,14 +42,14 @@ public class SyndicateServlet extends BaseServlet { RemoteArchiveBean remote = getRemote(req); String action = req.getParameter("action"); if ("Continue...".equals(action)) { - String location = req.getParameter("location"); - String pn = req.getParameter("archivepetname"); + String location = req.getParameter(PARAM_LOCATION); + String pn = req.getParameter(PARAM_PETNAME); 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, + remote.fetchIndex(user, req.getParameter(PARAM_SCHEMA), location, req.getParameter("proxyhost"), req.getParameter("proxyport")); } else if ("Fetch metadata".equals(action)) { @@ -82,7 +84,7 @@ public class SyndicateServlet extends BaseServlet { out.write(""); out.write(""); out.write("Import from:\n"); - out.write("\n"); String schema = req.getParameter(PARAM_SCHEMA); out.write("\n"); + out.write(">I2P/Web/Tor/Freenet\n"); out.write("\n"); out.write("Proxy\n"); @@ -116,7 +118,7 @@ public class SyndicateServlet extends BaseServlet { out.write(BlogManager.instance().getDefaultProxyPort()); out.write("\" />
\n"); out.write("Bookmarked archives:\n"); - out.write(""); out.write(""); for (Iterator iter = user.getPetNameDB().iterator(); iter.hasNext(); ) { @@ -130,7 +132,7 @@ public class SyndicateServlet extends BaseServlet { } } out.write(" or "); - out.write("