- Fixes for Jetty 9

- Convert I2PControlController to RouterApp
- Remove all static references
- Don't stop all running threads on shutdown
- Set restrictive permissions on configuration file
- Disable changing host/port/password via RPC
- Use I2P lib for setting supported ciphers
- Update makeplugin.sh
- Change signer and update URLs in plugin.config
- Don't include license, readme, and clients.config in the update
- Bundle i2pcontrol.py test script
- Make constants static and final
- Comment out unused methods
- Remove tabs in build.xml
- Remove unused dependencies in build.xml
- Clean up imports
This commit is contained in:
zzz
2018-02-01 15:14:03 +00:00
parent 44263d9b26
commit 37251cbcb3
22 changed files with 691 additions and 330 deletions

View File

@ -18,17 +18,27 @@ package net.i2p.i2pcontrol.servlets;
import com.thetransactioncompany.jsonrpc2.*;
import com.thetransactioncompany.jsonrpc2.server.Dispatcher;
import net.i2p.I2PAppContext;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;
import net.i2p.i2pcontrol.I2PControlVersion;
import net.i2p.i2pcontrol.servlets.jsonrpc2handlers.*;
import net.i2p.util.Log;
import net.i2p.i2pcontrol.security.SecurityManager;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
/**
@ -38,25 +48,33 @@ public class JSONRPC2Servlet extends HttpServlet {
private static final long serialVersionUID = -45075606818515212L;
private static final int BUFFER_LENGTH = 2048;
private static Dispatcher disp;
private static char[] readBuffer;
private static Log _log;
private Dispatcher disp;
private Log _log;
private final SecurityManager _secMan;
private final JSONRPC2Helper _helper;
private final RouterContext _context;
public JSONRPC2Servlet(RouterContext ctx, SecurityManager secMan) {
_context = ctx;
_secMan = secMan;
_helper = new JSONRPC2Helper(_secMan);
if (ctx != null)
_log = ctx.logManager().getLog(JSONRPC2Servlet.class);
else
_log = I2PAppContext.getGlobalContext().logManager().getLog(JSONRPC2Servlet.class);
}
@Override
public void init() {
_log = I2PAppContext.getGlobalContext().logManager().getLog(JSONRPC2Servlet.class);
readBuffer = new char[BUFFER_LENGTH];
disp = new Dispatcher();
disp.register(new EchoHandler());
disp.register(new GetRateHandler());
disp.register(new AuthenticateHandler());
disp.register(new NetworkSettingHandler());
disp.register(new RouterInfoHandler());
disp.register(new RouterManagerHandler());
disp.register(new I2PControlHandler());
disp.register(new AdvancedSettingsHandler());
disp.register(new EchoHandler(_helper));
disp.register(new GetRateHandler(_helper));
disp.register(new AuthenticateHandler(_helper, _secMan));
disp.register(new NetworkSettingHandler(_context, _helper));
disp.register(new RouterInfoHandler(_context, _helper));
disp.register(new RouterManagerHandler(_context, _helper));
disp.register(new I2PControlHandler(_context, _helper));
disp.register(new AdvancedSettingsHandler(_context, _helper));
}
@Override
@ -80,12 +98,15 @@ public class JSONRPC2Servlet extends HttpServlet {
if (msg instanceof JSONRPC2Request) {
jsonResp = disp.dispatch((JSONRPC2Request)msg, null);
jsonResp.toJSON().put("API", I2PControlVersion.API_VERSION);
_log.debug("Request: " + msg);
_log.debug("Response: " + jsonResp);
if (_log.shouldDebug()) {
_log.debug("Request: " + msg);
_log.debug("Response: " + jsonResp);
}
}
else if (msg instanceof JSONRPC2Notification) {
disp.dispatch((JSONRPC2Notification)msg, null);
_log.debug("Notification: " + msg);
if (_log.shouldDebug())
_log.debug("Notification: " + msg);
}
out.println(jsonResp);
@ -99,6 +120,7 @@ public class JSONRPC2Servlet extends HttpServlet {
Writer writer = new StringWriter();
BufferedReader reader = new BufferedReader(new InputStreamReader(sis, "UTF-8"));
char[] readBuffer = new char[BUFFER_LENGTH];
int n;
while ((n = reader.read(readBuffer)) != -1) {
writer.write(readBuffer, 0, n);