From 4f3d413a3003d7b9295c2e6801e7f3033738f65e Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 28 Dec 2020 21:45:05 -0800 Subject: Migrate more keys --- src/main/java/org/traccar/ServerManager.java | 9 ++++---- src/main/java/org/traccar/TrackerServer.java | 5 +++-- src/main/java/org/traccar/config/Config.java | 12 ++++++++++- src/main/java/org/traccar/config/Keys.java | 32 ++++++++++++++++++++++++++++ src/main/java/org/traccar/web/WebServer.java | 6 +++--- 5 files changed, 54 insertions(+), 10 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/traccar/ServerManager.java b/src/main/java/org/traccar/ServerManager.java index 68b133c98..935a821aa 100644 --- a/src/main/java/org/traccar/ServerManager.java +++ b/src/main/java/org/traccar/ServerManager.java @@ -17,6 +17,7 @@ package org.traccar; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.traccar.config.Keys; import java.io.File; import java.io.IOException; @@ -70,10 +71,10 @@ public class ServerManager { } for (String name : names) { - Class protocolClass = Class.forName(packageName + '.' + name); - if (BaseProtocol.class.isAssignableFrom(protocolClass) - && Context.getConfig().hasKey(BaseProtocol.nameFromClass(protocolClass) + ".port")) { - BaseProtocol protocol = (BaseProtocol) protocolClass.newInstance(); + Class protocolClass = Class.forName(packageName + '.' + name); + if (BaseProtocol.class.isAssignableFrom(protocolClass) && Context.getConfig().hasKey( + Keys.PROTOCOL_PORT.withPrefix(BaseProtocol.nameFromClass(protocolClass)))) { + BaseProtocol protocol = (BaseProtocol) protocolClass.getDeclaredConstructor().newInstance(); serverList.addAll(protocol.getServerList()); protocolList.put(protocol.getName(), protocol); } diff --git a/src/main/java/org/traccar/TrackerServer.java b/src/main/java/org/traccar/TrackerServer.java index 3a1e1c4e8..59ba123e2 100644 --- a/src/main/java/org/traccar/TrackerServer.java +++ b/src/main/java/org/traccar/TrackerServer.java @@ -24,6 +24,7 @@ import io.netty.channel.group.DefaultChannelGroup; import io.netty.channel.socket.nio.NioDatagramChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.util.concurrent.GlobalEventExecutor; +import org.traccar.config.Keys; import java.net.InetSocketAddress; @@ -39,8 +40,8 @@ public abstract class TrackerServer { public TrackerServer(boolean datagram, String protocol) { this.datagram = datagram; - address = Context.getConfig().getString(protocol + ".address"); - port = Context.getConfig().getInteger(protocol + ".port"); + address = Context.getConfig().getString(Keys.PROTOCOL_ADDRESS.withPrefix(protocol)); + port = Context.getConfig().getInteger(Keys.PROTOCOL_PORT.withPrefix(protocol)); BasePipelineFactory pipelineFactory = new BasePipelineFactory(this, protocol) { @Override diff --git a/src/main/java/org/traccar/config/Config.java b/src/main/java/org/traccar/config/Config.java index 713f5c607..dd61e1f00 100644 --- a/src/main/java/org/traccar/config/Config.java +++ b/src/main/java/org/traccar/config/Config.java @@ -99,7 +99,17 @@ public class Config { } public int getInteger(ConfigKey key) { - return getInteger(key.getKey()); + String value = getString(key.getKey()); + if (value != null) { + return Integer.parseInt(value); + } else { + Integer defaultValue = key.getDefaultValue(); + if (defaultValue != null) { + return defaultValue; + } else { + return 0; + } + } } @Deprecated diff --git a/src/main/java/org/traccar/config/Keys.java b/src/main/java/org/traccar/config/Keys.java index ea3176afd..215b00805 100644 --- a/src/main/java/org/traccar/config/Keys.java +++ b/src/main/java/org/traccar/config/Keys.java @@ -19,6 +19,21 @@ import java.util.Collections; public final class Keys { + /** + * Network interface for a the protocol. If not specified, server will bind all interfaces. + */ + public static final ConfigSuffix PROTOCOL_ADDRESS = new ConfigSuffix<>( + ".address", + Collections.singletonList(KeyType.GLOBAL)); + + /** + * Port number for the protocol. Most protocols use TCP on the transport layer. Some protocols use UDP. Some + * support both TCP and UDP. + */ + public static final ConfigSuffix PROTOCOL_PORT = new ConfigSuffix<>( + ".port", + Collections.singletonList(KeyType.GLOBAL)); + /** * Connection timeout value in seconds. Because sometimes there is no way to detect lost TCP connection old * connections stay in open state. On most systems there is a limit on number of open connection, so this leads to @@ -192,6 +207,23 @@ public final class Keys { Collections.singletonList(KeyType.GLOBAL), 600L); + /** + * Optional parameter to specify network interface for web interface to bind to. By default server will bind to all + * available interfaces. + */ + public static final ConfigKey WEB_ADDRESS = new ConfigKey<>( + "web.address", + Collections.singletonList(KeyType.GLOBAL)); + + /** + * Web interface TCP port number. By default Traccar uses port 8082. To avoid specifying port in the browser you + * can set it to 80 (default HTTP port). + */ + public static final ConfigKey WEB_PORT = new ConfigKey<>( + "web.port", + Collections.singletonList(KeyType.GLOBAL), + 8082); + /** * WebSocket connection timeout in milliseconds. Default timeout is 10 minutes. */ diff --git a/src/main/java/org/traccar/web/WebServer.java b/src/main/java/org/traccar/web/WebServer.java index 28fa45273..1e9d716b4 100644 --- a/src/main/java/org/traccar/web/WebServer.java +++ b/src/main/java/org/traccar/web/WebServer.java @@ -64,8 +64,8 @@ public class WebServer { private void initServer(Config config) { - String address = config.getString("web.address"); - int port = config.getInteger("web.port", 8082); + String address = config.getString(Keys.WEB_ADDRESS); + int port = config.getInteger(Keys.WEB_PORT); if (address == null) { server = new Server(port); } else { @@ -113,7 +113,7 @@ public class WebServer { } private void initClientProxy(Config config, HandlerList handlers) { - int port = config.getInteger("osmand.port"); + int port = config.getInteger(Keys.PROTOCOL_PORT.withPrefix("osmand")); if (port != 0) { ServletContextHandler servletHandler = new ServletContextHandler() { @Override -- cgit v1.2.3