From 037e0394d41c8c0557a28059a65373edaba0d929 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 28 Aug 2016 10:59:15 +1200 Subject: Allow to pass password in commands --- src/org/traccar/BaseProtocolEncoder.java | 15 +++++++++++++- src/org/traccar/protocol/TotemProtocolEncoder.java | 14 ++++--------- .../traccar/protocol/WondexProtocolEncoder.java | 24 ++++++++++++++-------- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/org/traccar/BaseProtocolEncoder.java b/src/org/traccar/BaseProtocolEncoder.java index 050697801..2bf6cde66 100644 --- a/src/org/traccar/BaseProtocolEncoder.java +++ b/src/org/traccar/BaseProtocolEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2015 - 2016 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; import org.traccar.helper.Log; import org.traccar.model.Command; +import org.traccar.model.Device; public abstract class BaseProtocolEncoder extends OneToOneEncoder { @@ -27,6 +28,18 @@ public abstract class BaseProtocolEncoder extends OneToOneEncoder { return Context.getIdentityManager().getDeviceById(deviceId).getUniqueId(); } + protected void initDevicePassword(Command command, String defaultPassword) { + if (!command.getAttributes().containsKey(Command.KEY_DEVICE_PASSWORD)) { + Device device = Context.getIdentityManager().getDeviceById(command.getDeviceId()); + if (device.getAttributes().containsKey(Command.KEY_DEVICE_PASSWORD)) { + String password = (String) device.getAttributes().get(Command.KEY_DEVICE_PASSWORD); + command.set(Command.KEY_DEVICE_PASSWORD, password); + } else { + command.set(Command.KEY_DEVICE_PASSWORD, defaultPassword); + } + } + } + @Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { diff --git a/src/org/traccar/protocol/TotemProtocolEncoder.java b/src/org/traccar/protocol/TotemProtocolEncoder.java index 1c870f63c..5e0ca407a 100644 --- a/src/org/traccar/protocol/TotemProtocolEncoder.java +++ b/src/org/traccar/protocol/TotemProtocolEncoder.java @@ -1,6 +1,6 @@ /* * Copyright 2015 Irving Gonzalez - * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2015 - 2016 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,26 +16,19 @@ */ package org.traccar.protocol; -import org.traccar.Context; import org.traccar.StringProtocolEncoder; import org.traccar.helper.Log; import org.traccar.model.Command; -import org.traccar.model.Device; public class TotemProtocolEncoder extends StringProtocolEncoder { @Override protected Object encodeCommand(Command command) { - command.set(Command.KEY_DEVICE_PASSWORD, "000000"); - Device device = Context.getIdentityManager().getDeviceById(command.getDeviceId()); - if (device.getAttributes().containsKey(Command.KEY_DEVICE_PASSWORD)) { - command.set(Command.KEY_DEVICE_PASSWORD, (String) device.getAttributes() - .get(Command.KEY_DEVICE_PASSWORD)); - } + initDevicePassword(command, "000000"); switch (command.getType()) { - //Assuming PIN 8 (Output C) is the power wire, like manual says but it can be PIN 5,7,8 + // Assuming PIN 8 (Output C) is the power wire, like manual says but it can be PIN 5,7,8 case Command.TYPE_ENGINE_STOP: return formatCommand(command, "*{%s},025,C,1#", Command.KEY_DEVICE_PASSWORD); case Command.TYPE_ENGINE_RESUME: @@ -47,4 +40,5 @@ public class TotemProtocolEncoder extends StringProtocolEncoder { return null; } + } diff --git a/src/org/traccar/protocol/WondexProtocolEncoder.java b/src/org/traccar/protocol/WondexProtocolEncoder.java index 568ca6aa0..918c22cda 100644 --- a/src/org/traccar/protocol/WondexProtocolEncoder.java +++ b/src/org/traccar/protocol/WondexProtocolEncoder.java @@ -1,21 +1,29 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.traccar.protocol; -import org.traccar.Context; import org.traccar.StringProtocolEncoder; import org.traccar.helper.Log; import org.traccar.model.Command; -import org.traccar.model.Device; public class WondexProtocolEncoder extends StringProtocolEncoder { @Override protected Object encodeCommand(Command command) { - command.set(Command.KEY_DEVICE_PASSWORD, "0000"); - Device device = Context.getIdentityManager().getDeviceById(command.getDeviceId()); - if (device.getAttributes().containsKey(Command.KEY_DEVICE_PASSWORD)) { - command.set(Command.KEY_DEVICE_PASSWORD, (String) device.getAttributes() - .get(Command.KEY_DEVICE_PASSWORD)); - } + initDevicePassword(command, "0000"); switch (command.getType()) { case Command.TYPE_REBOOT_DEVICE: -- cgit v1.2.3