diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
index 91ec63702b..f54371a560 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 2af4837349..7ea0490bfc 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 872bab9860..f047d17f40 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 4f6c65cdf4..2924bcb73b 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 ff1d435862..6a0b4d7485 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 5a906c9a69..8daeeb46f6 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 7038e6daa2..4bf4af3b39 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 fe0da2216c..0a46adf329 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 d7359b9f95..9875e874fc 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 f6387a2004..ecea580844 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");
@@ -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 fb91b60e75..df124f2dcc 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 6018104f04..1eb97730ea 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(" 0) {
out.write("&proxyhost=" + remote.getProxyHost() + "&proxyport=" + remote.getProxyPort());
}
@@ -100,12 +102,12 @@ public class SyndicateServlet extends BaseServlet {
writeAuthActionFields(out);
out.write("| ");
out.write("Import from:\n");
- out.write(" |