diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/traccar/Context.java | 6 | ||||
-rw-r--r-- | src/org/traccar/database/DataManager.java | 2 | ||||
-rw-r--r-- | src/org/traccar/web/WebServer.java | 65 |
3 files changed, 45 insertions, 28 deletions
diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java index f818368d0..80c9efb40 100644 --- a/src/org/traccar/Context.java +++ b/src/org/traccar/Context.java @@ -125,12 +125,10 @@ public class Context { } if (config.getBoolean("web.enable")) { - if (!config.getBoolean("web.old")) { + if (config.getString("web.type", "new").equals("new") || config.getString("web.type", "new").equals("api")) { permissionsManager = new PermissionsManager(dataManager); - webServer = new WebServer(config); - } else { - webServer = new WebServer(config, dataManager.getDataSource()); } + webServer = new WebServer(config, dataManager.getDataSource()); } serverManager = new ServerManager(); diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 0b8cff03a..add355ea7 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -143,7 +143,7 @@ public class DataManager implements IdentityManager { private void initDatabaseSchema() throws SQLException { - if (!config.getBoolean("web.old")) { + if (config.getString("web.type", "new").equals("new") || config.getString("web.type", "new").equals("api")) { Connection connection = dataSource.getConnection(); ResultSet result = connection.getMetaData().getTables( diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 0bff3a839..29af2b16e 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -18,7 +18,6 @@ package org.traccar.web; import java.net.InetSocketAddress; import javax.naming.InitialContext; import javax.sql.DataSource; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; @@ -34,8 +33,11 @@ import org.traccar.helper.Log; public class WebServer { private Server server; + private final Config config; + private final DataSource dataSource; + private final HandlerList handlers = new HandlerList(); - private void initServer(Config config) { + private void initServer() { String address = config.getString("web.address"); int port = config.getInteger("web.port", 8082); @@ -47,9 +49,41 @@ public class WebServer { } public WebServer(Config config, DataSource dataSource) { - - initServer(config); - + this.config = config; + this.dataSource = dataSource; + + initServer(); + switch (config.getString("web.type", "new")) { + case "api": + initApi(); + break; + case "new": + initApi(); + initWebApp(); + break; + case "old": + initApi(); + initOldWebApp(); + break; + default: + Log.error("Unsupported web application type: " + config.getString("web.type")); + break; + } + server.setHandler(handlers); + } + + private void initWebApp() { + ResourceHandler resourceHandler = new ResourceHandler(); + resourceHandler.setResourceBase(config.getString("web.path")); + if (config.getBoolean("web.debug")) { + resourceHandler.setWelcomeFiles(new String[] { "debug.html" }); + } else { + resourceHandler.setWelcomeFiles(new String[] { "release.html", "index.html" }); + } + handlers.addHandler(resourceHandler); + } + + private void initOldWebApp() { try { javax.naming.Context context = new InitialContext(); context.bind("java:/DefaultDS", dataSource); @@ -60,13 +94,10 @@ public class WebServer { WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); webapp.setWar(config.getString("web.application")); - server.setHandler(webapp); + handlers.addHandler(webapp); } - public WebServer(Config config) { - - initServer(config); - + private void initApi() { ServletContextHandler servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); servletHandler.setContextPath("/api"); servletHandler.addServlet(new ServletHolder(new AsyncServlet()), "/async/*"); @@ -76,19 +107,7 @@ public class WebServer { servletHandler.addServlet(new ServletHolder(new PositionServlet()), "/position/*"); servletHandler.addServlet(new ServletHolder(new CommandServlet()), "/command/*"); servletHandler.addServlet(new ServletHolder(new MainServlet()), "/*"); - - ResourceHandler resourceHandler = new ResourceHandler(); - resourceHandler.setResourceBase(config.getString("web.path")); - if (config.getBoolean("web.debug")) { - resourceHandler.setWelcomeFiles(new String[] { "debug.html" }); - } else { - resourceHandler.setWelcomeFiles(new String[] { "release.html", "index.html" }); - } - - HandlerList handlerList = new HandlerList(); - handlerList.setHandlers(new Handler[] {servletHandler, resourceHandler}); - - server.setHandler(handlerList); + handlers.addHandler(servletHandler); } public void start() { |