forked from I2P_Developers/i2p.i2p
Console: Remove static Server ref, hang off RCR
This commit is contained in:
@ -440,7 +440,7 @@ public class PluginStarter implements Runnable {
|
||||
}
|
||||
|
||||
// start console webapps in console/webapps
|
||||
ContextHandlerCollection server = WebAppStarter.getConsoleServer();
|
||||
ContextHandlerCollection server = WebAppStarter.getConsoleServer(ctx);
|
||||
if (server != null) {
|
||||
File consoleDir = new File(pluginDir, "console");
|
||||
Properties wprops = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath());
|
||||
@ -951,7 +951,7 @@ public class PluginStarter implements Runnable {
|
||||
Iterator <String> it = pluginWars.get(pluginName).iterator();
|
||||
while(it.hasNext() && !isWarRunning) {
|
||||
String warName = it.next();
|
||||
if(WebAppStarter.isWebAppRunning(warName)) {
|
||||
if(WebAppStarter.isWebAppRunning(ctx, warName)) {
|
||||
isWarRunning = true;
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import java.util.StringTokenizer;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.app.ClientApp;
|
||||
import net.i2p.app.ClientAppManager;
|
||||
import net.i2p.app.ClientAppState;
|
||||
import static net.i2p.app.ClientAppState.*;
|
||||
@ -100,7 +101,7 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
private final RouterContext _context;
|
||||
private final ClientAppManager _mgr;
|
||||
private volatile ClientAppState _state = UNINITIALIZED;
|
||||
private static Server _server;
|
||||
private Server _server;
|
||||
private static ScheduledExecutorScheduler _jettyTimer;
|
||||
private String _listenPort;
|
||||
private String _listenHost;
|
||||
@ -116,6 +117,7 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
// default changed from 0 (forever) in Jetty 6 to 60*1000 ms in Jetty 7
|
||||
authenticator.setMaxNonceAge(7*24*60*60*1000L);
|
||||
}
|
||||
private static final String NAME = "console";
|
||||
public static final String JETTY_REALM = "i2prouter";
|
||||
private static final String JETTY_ROLE = "routerAdmin";
|
||||
public static final String PROP_CONSOLE_PW = "routerconsole.auth." + JETTY_REALM;
|
||||
@ -264,7 +266,7 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
|
||||
/** @since 0.9.4 */
|
||||
public String getName() {
|
||||
return "console";
|
||||
return NAME;
|
||||
}
|
||||
|
||||
/** @since 0.9.4 */
|
||||
@ -281,14 +283,25 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
}
|
||||
|
||||
/**
|
||||
* SInce _server is now static
|
||||
* To get to Jetty
|
||||
* @return may be null or stopped perhaps
|
||||
* @since Jetty 6 since it doesn't have Server.getServers()
|
||||
*/
|
||||
static Server getConsoleServer() {
|
||||
synchronized Server getConsoleServer() {
|
||||
return _server;
|
||||
}
|
||||
|
||||
/**
|
||||
* To get to Jetty
|
||||
* @return may be null or stopped perhaps
|
||||
* @since 0.9.38
|
||||
*/
|
||||
static Server getConsoleServer(I2PAppContext ctx) {
|
||||
ClientApp app = ctx.clientAppManager().getRegisteredApp(NAME);
|
||||
return (app != null) ? ((RouterConsoleRunner)app).getConsoleServer() : null;
|
||||
}
|
||||
|
||||
|
||||
/** @since 0.8.13, moved from LogsHelper in 0.9.33 */
|
||||
public static String jettyVersion() {
|
||||
return Server.getVersion();
|
||||
@ -1113,7 +1126,7 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
String app = name.substring(PREFIX.length(), name.lastIndexOf(ENABLED));
|
||||
if (ROUTERCONSOLE.equals(app))
|
||||
continue;
|
||||
if (WebAppStarter.isWebAppRunning(app)) {
|
||||
if (WebAppStarter.isWebAppRunning(_context, app)) {
|
||||
try {
|
||||
WebAppStarter.stopWebApp(_context, app);
|
||||
} catch (Throwable t) { t.printStackTrace(); }
|
||||
|
@ -6,6 +6,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.PortMapper;
|
||||
@ -150,7 +151,7 @@ public class WebAppStarter {
|
||||
* @since public since 0.9.33, was package private
|
||||
*/
|
||||
public static void stopWebApp(RouterContext ctx, String appName) {
|
||||
ContextHandler wac = getWebApp(appName);
|
||||
ContextHandler wac = getWebApp(ctx, appName);
|
||||
if (wac == null)
|
||||
return;
|
||||
ctx.portMapper().unregister(appName);
|
||||
@ -158,7 +159,7 @@ public class WebAppStarter {
|
||||
// not graceful is default in Jetty 6?
|
||||
wac.stop();
|
||||
} catch (Exception ie) {}
|
||||
ContextHandlerCollection server = getConsoleServer();
|
||||
ContextHandlerCollection server = getConsoleServer(ctx);
|
||||
if (server == null)
|
||||
return;
|
||||
try {
|
||||
@ -173,16 +174,16 @@ public class WebAppStarter {
|
||||
*
|
||||
* @since public since 0.9.33; was package private
|
||||
*/
|
||||
public static boolean isWebAppRunning(String appName) {
|
||||
ContextHandler wac = getWebApp(appName);
|
||||
public static boolean isWebAppRunning(I2PAppContext ctx, String appName) {
|
||||
ContextHandler wac = getWebApp(ctx, appName);
|
||||
if (wac == null)
|
||||
return false;
|
||||
return wac.isStarted();
|
||||
}
|
||||
|
||||
/** @since Jetty 6 */
|
||||
static ContextHandler getWebApp(String appName) {
|
||||
ContextHandlerCollection server = getConsoleServer();
|
||||
static ContextHandler getWebApp(I2PAppContext ctx, String appName) {
|
||||
ContextHandlerCollection server = getConsoleServer(ctx);
|
||||
if (server == null)
|
||||
return null;
|
||||
Handler handlers[] = server.getHandlers();
|
||||
@ -203,8 +204,8 @@ public class WebAppStarter {
|
||||
* See comments in ConfigClientsHandler
|
||||
* @since public since 0.9.33, was package private
|
||||
*/
|
||||
public static ContextHandlerCollection getConsoleServer() {
|
||||
Server s = RouterConsoleRunner.getConsoleServer();
|
||||
public static ContextHandlerCollection getConsoleServer(I2PAppContext ctx) {
|
||||
Server s = RouterConsoleRunner.getConsoleServer(ctx);
|
||||
if (s == null)
|
||||
return null;
|
||||
Handler h = s.getChildHandlerByClass(ContextHandlerCollection.class);
|
||||
|
@ -387,7 +387,7 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
* requested and add the .war to that one
|
||||
*/
|
||||
private void startWebApp(String app) {
|
||||
ContextHandlerCollection s = WebAppStarter.getConsoleServer();
|
||||
ContextHandlerCollection s = WebAppStarter.getConsoleServer(_context);
|
||||
if (s != null) {
|
||||
try {
|
||||
File path = new File(_context.getBaseDir(), "webapps");
|
||||
|
@ -215,7 +215,7 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
if (name.startsWith(RouterConsoleRunner.PREFIX) && name.endsWith(RouterConsoleRunner.ENABLED)) {
|
||||
String app = name.substring(RouterConsoleRunner.PREFIX.length(), name.lastIndexOf(RouterConsoleRunner.ENABLED));
|
||||
String val = props.getProperty(name);
|
||||
boolean isRunning = WebAppStarter.isWebAppRunning(app);
|
||||
boolean isRunning = WebAppStarter.isWebAppRunning(_context, app);
|
||||
String desc;
|
||||
// use descriptions already tagged elsewhere
|
||||
if (app.equals("routerconsole"))
|
||||
|
Reference in New Issue
Block a user