diff options
author | Abyss777 <abyss@fox5.ru> | 2016-10-05 14:20:59 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2016-10-05 14:20:59 +0500 |
commit | 664cc129f1a5ad13fab966d3c293e7aa6ce12ab6 (patch) | |
tree | 13c7e8eb020ad36f67c0c74161b7c9550558d08b | |
parent | 44d36f3adea94b98c88b6e491d22f4466678ad6d (diff) | |
download | traccar-server-664cc129f1a5ad13fab966d3c293e7aa6ce12ab6.tar.gz traccar-server-664cc129f1a5ad13fab966d3c293e7aa6ce12ab6.tar.bz2 traccar-server-664cc129f1a5ad13fab966d3c293e7aa6ce12ab6.zip |
- Remove hardcoded password from commands
- Authenticate device on heardbeat stage
-rw-r--r-- | src/org/traccar/protocol/Gl200Protocol.java | 1 | ||||
-rw-r--r-- | src/org/traccar/protocol/Gl200ProtocolDecoder.java | 9 | ||||
-rw-r--r-- | src/org/traccar/protocol/Gl200ProtocolEncoder.java | 14 |
3 files changed, 18 insertions, 6 deletions
diff --git a/src/org/traccar/protocol/Gl200Protocol.java b/src/org/traccar/protocol/Gl200Protocol.java index d38bdf8a9..3bf558d71 100644 --- a/src/org/traccar/protocol/Gl200Protocol.java +++ b/src/org/traccar/protocol/Gl200Protocol.java @@ -35,6 +35,7 @@ public class Gl200Protocol extends BaseProtocol { Command.TYPE_POSITION_SINGLE, Command.TYPE_ENGINE_STOP, Command.TYPE_ENGINE_RESUME, + Command.TYPE_IDENTIFICATION, Command.TYPE_REBOOT_DEVICE); } diff --git a/src/org/traccar/protocol/Gl200ProtocolDecoder.java b/src/org/traccar/protocol/Gl200ProtocolDecoder.java index 385039399..362e3fb38 100644 --- a/src/org/traccar/protocol/Gl200ProtocolDecoder.java +++ b/src/org/traccar/protocol/Gl200ProtocolDecoder.java @@ -39,7 +39,8 @@ public class Gl200ProtocolDecoder extends BaseProtocolDecoder { private static final Pattern PATTERN_HBD = new PatternBuilder() .text("+ACK:GTHBD,") - .number("([0-9A-Z]{2}xxxx),") + .number("([0-9A-Z]{2}xxxx),") // protocol version + .number("(d{15}),") // imei .any().text(",") .number("(xxxx)") .text("$").optional() @@ -245,7 +246,11 @@ public class Gl200ProtocolDecoder extends BaseProtocolDecoder { private Object decodeHbd(Channel channel, SocketAddress remoteAddress, String sentence) { Parser parser = new Parser(PATTERN_HBD, sentence); if (parser.matches() && channel != null) { - channel.write("+SACK:GTHBD," + parser.next() + "," + parser.next() + "$", remoteAddress); + String protocolVersion = parser.next(); + DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, parser.next()); + if (deviceSession != null) { + channel.write("+SACK:GTHBD," + protocolVersion + "," + parser.next() + "$", remoteAddress); + } } return null; } diff --git a/src/org/traccar/protocol/Gl200ProtocolEncoder.java b/src/org/traccar/protocol/Gl200ProtocolEncoder.java index 0537420a0..25ca1bf75 100644 --- a/src/org/traccar/protocol/Gl200ProtocolEncoder.java +++ b/src/org/traccar/protocol/Gl200ProtocolEncoder.java @@ -24,15 +24,21 @@ public class Gl200ProtocolEncoder extends StringProtocolEncoder { @Override protected Object encodeCommand(Command command) { + initDevicePassword(command, ""); + switch (command.getType()) { case Command.TYPE_POSITION_SINGLE: - return "AT+GTRTO=gv300,1,,,,,,FFFF$"; + return formatCommand(command, "AT+GTRTO={%s},1,,,,,,FFFF$", Command.KEY_DEVICE_PASSWORD); case Command.TYPE_ENGINE_STOP: - return "AT+GTOUT=gv300,1,,,0,0,0,0,0,0,0,,,,,,,FFFF$"; + return formatCommand(command, "AT+GTOUT={%s},1,,,0,0,0,0,0,0,0,,,,,,,FFFF$", + Command.KEY_DEVICE_PASSWORD); case Command.TYPE_ENGINE_RESUME: - return "AT+GTOUT=gv300,0,,,0,0,0,0,0,0,0,,,,,,,FFFF$"; + return formatCommand(command, "AT+GTOUT={%s},0,,,0,0,0,0,0,0,0,,,,,,,FFFF$", + Command.KEY_DEVICE_PASSWORD); + case Command.TYPE_IDENTIFICATION: + return formatCommand(command, "AT+GTRTO={%s},8,,,,,,FFFF$", Command.KEY_DEVICE_PASSWORD); case Command.TYPE_REBOOT_DEVICE: - return "AT+GTRTO=gv300,3,,,,,,FFFF$"; + return formatCommand(command, "AT+GTRTO={%s},3,,,,,,FFFF$", Command.KEY_DEVICE_PASSWORD); default: Log.warning(new UnsupportedOperationException(command.getType())); break; |