From 8f4d1c67d3996657c57ed868f34da4066095480c Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 2 Feb 2018 12:39:22 +0500 Subject: Add switch to enable media web access --- src/org/traccar/web/WebServer.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 88b38c1ab..5c3fc8aaa 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -167,12 +167,14 @@ public class WebServer { servletHandler.addServlet(new ServletHolder(new AsyncSocketServlet()), "/socket"); - ServletHolder servletHolder = new ServletHolder("media", DefaultServlet.class); - servletHolder.setInitParameter("resourceBase", config.getString("media.path")); - servletHolder.setInitParameter("dirAllowed", config.getString("media.directoryAllow", "false")); - servletHolder.setInitParameter("pathInfoOnly", "true"); - servletHandler.addServlet(servletHolder, "/media/*"); - servletHandler.addFilter(MediaFilter.class, "/media/*", EnumSet.allOf(DispatcherType.class)); + if (config.getBoolean("media.web.enable")) { + ServletHolder servletHolder = new ServletHolder("media", DefaultServlet.class); + servletHolder.setInitParameter("resourceBase", config.getString("media.path")); + servletHolder.setInitParameter("dirAllowed", config.getString("media.web.directoryAllow", "false")); + servletHolder.setInitParameter("pathInfoOnly", "true"); + servletHandler.addServlet(servletHolder, "/media/*"); + servletHandler.addFilter(MediaFilter.class, "/media/*", EnumSet.allOf(DispatcherType.class)); + } ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.registerClasses(JacksonFeature.class, ObjectMapperProvider.class, ResourceErrorHandler.class); -- cgit v1.2.3 From af49fada37f21df9ed5ceb67504c45b714ec24d4 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 2 Feb 2018 13:53:49 +0500 Subject: - Use "media.path" as switch - Handle if MediaManager undefined --- src/org/traccar/protocol/Gt06ProtocolDecoder.java | 8 +++++--- src/org/traccar/protocol/MeitrackProtocolDecoder.java | 4 +++- src/org/traccar/protocol/WatchProtocolDecoder.java | 8 ++++++-- src/org/traccar/web/WebServer.java | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/org/traccar/protocol/Gt06ProtocolDecoder.java b/src/org/traccar/protocol/Gt06ProtocolDecoder.java index 4173b4d5b..e1bb6f96c 100644 --- a/src/org/traccar/protocol/Gt06ProtocolDecoder.java +++ b/src/org/traccar/protocol/Gt06ProtocolDecoder.java @@ -703,9 +703,11 @@ public class Gt06ProtocolDecoder extends BaseProtocolDecoder { if (photo.writableBytes() > 0) { sendPhotoRequest(channel, pictureId); } else { - Device device = Context.getDeviceManager().getById(deviceSession.getDeviceId()); - position.set( - Position.KEY_IMAGE, Context.getMediaManager().writeFile(device.getUniqueId(), photo, "jpg")); + if (Context.getMediaManager() != null) { + Device device = Context.getDeviceManager().getById(deviceSession.getDeviceId()); + position.set(Position.KEY_IMAGE, + Context.getMediaManager().writeFile(device.getUniqueId(), photo, "jpg")); + } photos.remove(pictureId); } diff --git a/src/org/traccar/protocol/MeitrackProtocolDecoder.java b/src/org/traccar/protocol/MeitrackProtocolDecoder.java index 11e38194f..4d42683b1 100644 --- a/src/org/traccar/protocol/MeitrackProtocolDecoder.java +++ b/src/org/traccar/protocol/MeitrackProtocolDecoder.java @@ -477,7 +477,9 @@ public class MeitrackProtocolDecoder extends BaseProtocolDecoder { getLastLocation(position, null); - position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(imei, photo, "jpg")); + if (Context.getMediaManager() != null) { + position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(imei, photo, "jpg")); + } photo = null; return position; diff --git a/src/org/traccar/protocol/WatchProtocolDecoder.java b/src/org/traccar/protocol/WatchProtocolDecoder.java index fe62874b5..cc0364094 100644 --- a/src/org/traccar/protocol/WatchProtocolDecoder.java +++ b/src/org/traccar/protocol/WatchProtocolDecoder.java @@ -246,7 +246,9 @@ public class WatchProtocolDecoder extends BaseProtocolDecoder { int timeIndex = buf.indexOf(buf.readerIndex(), buf.writerIndex(), (byte) ','); buf.readerIndex(timeIndex + 12 + 2); - position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(id, buf, "jpg")); + if (Context.getMediaManager() != null) { + position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(id, buf, "jpg")); + } return position; @@ -257,7 +259,9 @@ public class WatchProtocolDecoder extends BaseProtocolDecoder { getLastLocation(position, null); - position.set(Position.KEY_AUDIO, Context.getMediaManager().writeFile(id, buf, "amr")); + if (Context.getMediaManager() != null) { + position.set(Position.KEY_AUDIO, Context.getMediaManager().writeFile(id, buf, "amr")); + } return position; diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java index 5c3fc8aaa..06894552d 100644 --- a/src/org/traccar/web/WebServer.java +++ b/src/org/traccar/web/WebServer.java @@ -167,10 +167,10 @@ public class WebServer { servletHandler.addServlet(new ServletHolder(new AsyncSocketServlet()), "/socket"); - if (config.getBoolean("media.web.enable")) { + if (config.hasKey("media.path")) { ServletHolder servletHolder = new ServletHolder("media", DefaultServlet.class); servletHolder.setInitParameter("resourceBase", config.getString("media.path")); - servletHolder.setInitParameter("dirAllowed", config.getString("media.web.directoryAllow", "false")); + servletHolder.setInitParameter("dirAllowed", config.getString("media.directoryAllow", "false")); servletHolder.setInitParameter("pathInfoOnly", "true"); servletHandler.addServlet(servletHolder, "/media/*"); servletHandler.addFilter(MediaFilter.class, "/media/*", EnumSet.allOf(DispatcherType.class)); -- cgit v1.2.3 From bec12783f99849131f80175731d00b3f7929e661 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Fri, 2 Feb 2018 16:38:55 +0500 Subject: Always initialize MediaManager --- src/org/traccar/Context.java | 4 +-- src/org/traccar/database/MediaManager.java | 33 +++++++++++----------- src/org/traccar/protocol/Gt06ProtocolDecoder.java | 8 ++---- .../traccar/protocol/MeitrackProtocolDecoder.java | 4 +-- src/org/traccar/protocol/WatchProtocolDecoder.java | 8 ++---- 5 files changed, 24 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java index 3681cc2cc..09e3c619b 100644 --- a/src/org/traccar/Context.java +++ b/src/org/traccar/Context.java @@ -337,9 +337,7 @@ public final class Context { ldapProvider = new LdapProvider(config); } - if (config.hasKey("media.path")) { - mediaManager = new MediaManager(config); - } + mediaManager = new MediaManager(config.getString("media.path")); if (dataManager != null) { usersManager = new UsersManager(dataManager); diff --git a/src/org/traccar/database/MediaManager.java b/src/org/traccar/database/MediaManager.java index 2c448a20c..482442735 100644 --- a/src/org/traccar/database/MediaManager.java +++ b/src/org/traccar/database/MediaManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 Anton Tananaev (anton@traccar.org) + * Copyright 2017 - 2018 Anton Tananaev (anton@traccar.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.traccar.database; import org.jboss.netty.buffer.ChannelBuffer; -import org.traccar.Config; import org.traccar.helper.Log; import java.io.File; @@ -34,8 +33,8 @@ public class MediaManager { private String path; - public MediaManager(Config config) { - path = config.getString("media.path"); + public MediaManager(String path) { + this.path = path; } private File createFile(String uniqueId, String name) throws IOException { @@ -48,19 +47,21 @@ public class MediaManager { } public String writeFile(String uniqueId, ChannelBuffer buf, String extension) { - int size = buf.readableBytes(); - String name = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + "." + extension; - try (FileOutputStream output = new FileOutputStream(createFile(uniqueId, name)); - FileChannel fileChannel = output.getChannel()) { - ByteBuffer byteBuffer = buf.toByteBuffer(); - int written = 0; - while (written < size) { - written += fileChannel.write(byteBuffer); + if (path != null) { + int size = buf.readableBytes(); + String name = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + "." + extension; + try (FileOutputStream output = new FileOutputStream(createFile(uniqueId, name)); + FileChannel fileChannel = output.getChannel()) { + ByteBuffer byteBuffer = buf.toByteBuffer(); + int written = 0; + while (written < size) { + written += fileChannel.write(byteBuffer); + } + fileChannel.force(false); + return name; + } catch (IOException e) { + Log.warning(e); } - fileChannel.force(false); - return name; - } catch (IOException e) { - Log.warning(e); } return null; } diff --git a/src/org/traccar/protocol/Gt06ProtocolDecoder.java b/src/org/traccar/protocol/Gt06ProtocolDecoder.java index e1bb6f96c..4173b4d5b 100644 --- a/src/org/traccar/protocol/Gt06ProtocolDecoder.java +++ b/src/org/traccar/protocol/Gt06ProtocolDecoder.java @@ -703,11 +703,9 @@ public class Gt06ProtocolDecoder extends BaseProtocolDecoder { if (photo.writableBytes() > 0) { sendPhotoRequest(channel, pictureId); } else { - if (Context.getMediaManager() != null) { - Device device = Context.getDeviceManager().getById(deviceSession.getDeviceId()); - position.set(Position.KEY_IMAGE, - Context.getMediaManager().writeFile(device.getUniqueId(), photo, "jpg")); - } + Device device = Context.getDeviceManager().getById(deviceSession.getDeviceId()); + position.set( + Position.KEY_IMAGE, Context.getMediaManager().writeFile(device.getUniqueId(), photo, "jpg")); photos.remove(pictureId); } diff --git a/src/org/traccar/protocol/MeitrackProtocolDecoder.java b/src/org/traccar/protocol/MeitrackProtocolDecoder.java index 4d42683b1..11e38194f 100644 --- a/src/org/traccar/protocol/MeitrackProtocolDecoder.java +++ b/src/org/traccar/protocol/MeitrackProtocolDecoder.java @@ -477,9 +477,7 @@ public class MeitrackProtocolDecoder extends BaseProtocolDecoder { getLastLocation(position, null); - if (Context.getMediaManager() != null) { - position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(imei, photo, "jpg")); - } + position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(imei, photo, "jpg")); photo = null; return position; diff --git a/src/org/traccar/protocol/WatchProtocolDecoder.java b/src/org/traccar/protocol/WatchProtocolDecoder.java index cc0364094..fe62874b5 100644 --- a/src/org/traccar/protocol/WatchProtocolDecoder.java +++ b/src/org/traccar/protocol/WatchProtocolDecoder.java @@ -246,9 +246,7 @@ public class WatchProtocolDecoder extends BaseProtocolDecoder { int timeIndex = buf.indexOf(buf.readerIndex(), buf.writerIndex(), (byte) ','); buf.readerIndex(timeIndex + 12 + 2); - if (Context.getMediaManager() != null) { - position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(id, buf, "jpg")); - } + position.set(Position.KEY_IMAGE, Context.getMediaManager().writeFile(id, buf, "jpg")); return position; @@ -259,9 +257,7 @@ public class WatchProtocolDecoder extends BaseProtocolDecoder { getLastLocation(position, null); - if (Context.getMediaManager() != null) { - position.set(Position.KEY_AUDIO, Context.getMediaManager().writeFile(id, buf, "amr")); - } + position.set(Position.KEY_AUDIO, Context.getMediaManager().writeFile(id, buf, "amr")); return position; -- cgit v1.2.3