- Move multipart form support from susimail to jetty-i2p.jar
    so console can use it
  - Add multipart form support to formhandler.jsi and FormHandler.java
Reseed:
  - Fix zip magic number
  - Finish manual reseed from local file
package.html files for jetty-i2p.jar
This commit is contained in:
zzz
2015-03-20 12:30:04 +00:00
parent a3802d4d8b
commit 7f472e4ee9
19 changed files with 116 additions and 24 deletions

View File

@ -1,6 +1,5 @@
package net.i2p.router.web;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
@ -10,7 +9,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.i2p.data.DataHelper;
import net.i2p.router.networkdb.reseed.Reseeder;
/**
@ -76,15 +74,14 @@ public class ConfigReseedHandler extends FormHandler {
addFormError(_("Bad URL {0}", val) + " - " + iae.getMessage());
}
} else if (_action.equals(_("Reseed from file"))) {
//////// FIXME multipart
String val = getJettyString("file");
if (val == null || val.length() == 0) {
addFormError(_("You must enter a file"));
return;
}
ByteArrayInputStream bais = new ByteArrayInputStream(DataHelper.getASCII(val));
InputStream in = _requestWrapper.getInputStream("file");
try {
int count = _context.netDb().reseedChecker().requestReseed(bais);
// non-null but zero bytes if no file entered, don't know why
if (in == null || in.available() <= 0) {
addFormError(_("You must enter a file"));
return;
}
int count = _context.netDb().reseedChecker().requestReseed(in);
if (count <= 0) {
addFormError(_("Reseed from file failed"));
} else {
@ -94,6 +91,10 @@ public class ConfigReseedHandler extends FormHandler {
}
} catch (IOException ioe) {
addFormError(_("Reseed from file failed") + " - " + ioe);
} finally {
// it's really a ByteArrayInputStream but we'll play along...
if (in != null)
try { in.close(); } catch (IOException ioe) {}
}
} else if (_action.equals(_("Save changes"))) {
saveChanges();

View File

@ -7,6 +7,7 @@ import java.util.Map;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.servlet.RequestWrapper;
import net.i2p.util.Log;
/**
@ -21,7 +22,10 @@ import net.i2p.util.Log;
public abstract class FormHandler {
protected RouterContext _context;
protected Log _log;
/** Not for multipart/form-data, will be null */
protected Map _settings;
/** Only for multipart/form-data. Warning, parameters are NOT XSS filtered */
protected RequestWrapper _requestWrapper;
private String _nonce, _nonce1, _nonce2;
protected String _action;
protected String _method;
@ -61,6 +65,15 @@ public abstract class FormHandler {
*/
public void setSettings(Map settings) { _settings = new HashMap(settings); }
/**
* Only set by formhandler.jsi for multipart/form-data
*
* @since 0.9.19
*/
public void setRequestWrapper(RequestWrapper rw) {
_requestWrapper = rw;
}
/**
* Same as HelperBase
* @since 0.9.14.1