From d489eac12119ed62f899569db121364b20b1c9dc Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Wed, 27 Dec 2017 16:38:13 +0500 Subject: Implement device disable --- src/org/traccar/BaseProtocolDecoder.java | 36 +++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'src/org/traccar/BaseProtocolDecoder.java') diff --git a/src/org/traccar/BaseProtocolDecoder.java b/src/org/traccar/BaseProtocolDecoder.java index 2d6286bf8..e412134d1 100644 --- a/src/org/traccar/BaseProtocolDecoder.java +++ b/src/org/traccar/BaseProtocolDecoder.java @@ -85,12 +85,13 @@ public abstract class BaseProtocolDecoder extends ExtendedObjectDecoder { private Map addressDeviceSessions = new HashMap<>(); // connectionless protocols private long findDeviceId(SocketAddress remoteAddress, String... uniqueIds) { - long deviceId = 0; if (uniqueIds.length > 0) { + long deviceId = 0; + Device device = null; try { for (String uniqueId : uniqueIds) { if (uniqueId != null) { - Device device = Context.getIdentityManager().getByUniqueId(uniqueId); + device = Context.getIdentityManager().getByUniqueId(uniqueId); if (device != null) { deviceId = device.getId(); break; @@ -100,22 +101,27 @@ public abstract class BaseProtocolDecoder extends ExtendedObjectDecoder { } catch (Exception e) { Log.warning(e); } + if (deviceId == 0 && Context.getConfig().getBoolean("database.registerUnknown")) { + return addUnknownDevice(uniqueIds[0]); + } + if (device != null && !device.getDisabled() || Context.getConfig().getBoolean("database.storeDisabled")) { + return deviceId; + } + StringBuilder message = new StringBuilder(); if (deviceId == 0) { - if (Context.getConfig().getBoolean("database.registerUnknown")) { - return addUnknownDevice(uniqueIds[0]); - } - - StringBuilder message = new StringBuilder("Unknown device -"); - for (String uniqueId : uniqueIds) { - message.append(" ").append(uniqueId); - } - if (remoteAddress != null) { - message.append(" (").append(((InetSocketAddress) remoteAddress).getHostString()).append(")"); - } - Log.warning(message.toString()); + message.append("Unknown device -"); + } else { + message.append("Disabled device -"); + } + for (String uniqueId : uniqueIds) { + message.append(" ").append(uniqueId); + } + if (remoteAddress != null) { + message.append(" (").append(((InetSocketAddress) remoteAddress).getHostString()).append(")"); } + Log.warning(message.toString()); } - return deviceId; + return 0; } public DeviceSession getDeviceSession(Channel channel, SocketAddress remoteAddress, String... uniqueIds) { -- cgit v1.2.3