diff options
Diffstat (limited to 'src/org/traccar/Context.java')
-rw-r--r-- | src/org/traccar/Context.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java index c833d0c2e..675465aff 100644 --- a/src/org/traccar/Context.java +++ b/src/org/traccar/Context.java @@ -16,6 +16,8 @@ package org.traccar; import com.ning.http.client.AsyncHttpClient; +import org.h2.server.web.ConnectionInfo; +import org.h2.tools.Server; import org.traccar.database.ConnectionManager; import org.traccar.database.DataManager; import org.traccar.database.IdentityManager; @@ -34,6 +36,8 @@ import org.traccar.location.MozillaLocationProvider; import org.traccar.location.OpenCellIdLocationProvider; import org.traccar.web.WebServer; +import java.lang.reflect.Method; + public final class Context { private Context() { @@ -93,6 +97,12 @@ public final class Context { return webServer; } + private static Server databaseConsole; + + public static Server getDatabaseConsole() { + return databaseConsole; + } + private static ServerManager serverManager; public static ServerManager getServerManager() { @@ -175,6 +185,20 @@ public final class Context { webServer = new WebServer(config, dataManager.getDataSource()); } + if (config.getBoolean("console.enable")) { + databaseConsole = Server.createWebServer("-webPort", config.getString("console.port")); + org.h2.server.web.WebServer databaseService = (org.h2.server.web.WebServer) databaseConsole.getService(); + + ConnectionInfo connectionInfo = new ConnectionInfo("Traccar|" + + config.getString("database.driver") + "|" + + config.getString("database.url") + "|" + + config.getString("database.user")); + + Method method = databaseService.getClass().getDeclaredMethod("updateSetting", ConnectionInfo.class); + method.setAccessible(true); + method.invoke(databaseService, connectionInfo); + } + connectionManager = new ConnectionManager(dataManager); serverManager = new ServerManager(); |