From acebabc690f78921a1bc10191df092c207393415 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 15 Jan 2024 16:36:17 -0800 Subject: Make device sharing configurable --- src/main/java/org/traccar/api/resource/DeviceResource.java | 7 +++++++ src/main/java/org/traccar/config/Keys.java | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/java/org/traccar/api/resource/DeviceResource.java b/src/main/java/org/traccar/api/resource/DeviceResource.java index 217ccda65..540450cbb 100644 --- a/src/main/java/org/traccar/api/resource/DeviceResource.java +++ b/src/main/java/org/traccar/api/resource/DeviceResource.java @@ -19,6 +19,8 @@ import jakarta.ws.rs.FormParam; import org.traccar.api.BaseObjectResource; import org.traccar.api.signature.TokenManager; import org.traccar.broadcast.BroadcastService; +import org.traccar.config.Config; +import org.traccar.config.Keys; import org.traccar.database.MediaManager; import org.traccar.helper.LogAction; import org.traccar.model.Device; @@ -60,6 +62,9 @@ import java.util.List; @Consumes(MediaType.APPLICATION_JSON) public class DeviceResource extends BaseObjectResource { + @Inject + private Config config; + @Inject private CacheManager cacheManager; @@ -212,6 +217,8 @@ public class DeviceResource extends BaseObjectResource { share.setExpirationTime(expiration); share.setTemporary(true); share.setReadonly(true); + share.setLimitCommands(!config.getBoolean(Keys.WEB_SHARE_DEVICE_COMMANDS)); + share.setDisableReports(!config.getBoolean(Keys.WEB_SHARE_DEVICE_REPORTS)); share.setId(storage.addObject(share, new Request(new Columns.Exclude("id")))); diff --git a/src/main/java/org/traccar/config/Keys.java b/src/main/java/org/traccar/config/Keys.java index 1da68e1c0..e79264908 100644 --- a/src/main/java/org/traccar/config/Keys.java +++ b/src/main/java/org/traccar/config/Keys.java @@ -1805,6 +1805,20 @@ public final class Keys { "web.showUnknownDevices", List.of(KeyType.CONFIG)); + /** + * Enable commands for a shared device. + */ + public static final ConfigKey WEB_SHARE_DEVICE_COMMANDS = new BooleanConfigKey( + "web.shareDevice.commands", + List.of(KeyType.CONFIG)); + + /** + * Enable reports for a shared device. + */ + public static final ConfigKey WEB_SHARE_DEVICE_REPORTS = new BooleanConfigKey( + "web.shareDevice.reports", + List.of(KeyType.CONFIG)); + /** * Output logging to the standard terminal output instead of a log file. */ -- cgit v1.2.3