Author: solomax
Date: Sat Apr 15 16:49:12 2017
New Revision: 1791522
URL: http://svn.apache.org/viewvc?rev=1791522&view=rev
Log:
[OPENMEETINGS-551] screen-sharing is displayed in room
Added:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
- copied, changed from r1791521,
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Removed:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/
Modified:
openmeetings/application/trunk/LICENSE
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/UserService.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
Modified: openmeetings/application/trunk/LICENSE
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/LICENSE?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
--- openmeetings/application/trunk/LICENSE (original)
+++ openmeetings/application/trunk/LICENSE Sat Apr 15 16:49:12 2017
@@ -498,10 +498,10 @@ The GlassFish code released under the CD
For SLF4J:
-lib/jcl-over-slf4j-1.7.22.jar
-lib/jul-to-slf4j-1.7.22.jar
-lib/log4j-over-slf4j-1.7.22.jar
-lib/slf4j-api-1.7.22.jar
+lib/jcl-over-slf4j-*.jar
+lib/jul-to-slf4j-*.jar
+lib/log4j-over-slf4j-*.jar
+lib/slf4j-api-*.jar
Copyright (c) 2004-2008 QOS.ch
All rights reserved.
@@ -1468,8 +1468,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
For the components:
-lib/logback-classic-1.1.7.jar
-lib/logback-core-1.1.7.jar
+lib/logback-classic-*.jar
+lib/logback-core-*.jar
plugins/ecj-4.5.1.jar
Eclipse Public License - v 1.0
@@ -2114,35 +2114,6 @@ As a special exception, the copyright ho
=======================================================================================
-MIT X11 License
-https://raw.githubusercontent.com/Mahoney/sysout-over-slf4j/master/LICENSE.txt
-
-For lib/sysout-over-slf4j-1.0.2.jar
-
- * Copyright (c) 2009-2012 Robert Elliot
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
=======================================================================================
-
Mozilla Public License 1.1 (MPL 1.1)
http://www.mozilla.org/MPL/MPL-1.1.html
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
Sat Apr 15 16:49:12 2017
@@ -32,7 +32,6 @@ import javax.persistence.criteria.Predic
import javax.persistence.criteria.Root;
import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.room.SipDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dto.basic.SearchResult;
import org.apache.openmeetings.db.entity.room.Room;
@@ -58,8 +57,6 @@ public class RoomManager {
private ISessionManager sessionManager;
@Autowired
private RoomDao roomDao;
- @Autowired
- private SipDao sipDao;
public SearchResult<Room> getRooms(int start, int max, String orderby,
boolean asc, String search) {
try {
@@ -294,16 +291,6 @@ public class RoomManager {
//
---------------------------------------------------------------------------------------------
/**
- * Returns number of SIP conference participants
- * @param roomId id of room
- * @return number of participants
- */
- public Integer getSipConferenceMembersNumber(Long roomId) {
- Room r = roomDao.get(roomId);
- return r == null || r.getConfno() == null ? null :
sipDao.countUsers(r.getConfno());
- }
-
- /**
* get List of RoomGroup by group and roomtype
*
* @param groupId
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
Sat Apr 15 16:49:12 2017
@@ -18,7 +18,7 @@
*/
package org.apache.openmeetings.core.remote;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.nextBroadCastId;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.nextBroadCastId;
import static org.apache.openmeetings.db.util.LocaleHelper.getCountryName;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY;
@@ -39,8 +39,7 @@ import java.util.TimeZone;
import java.util.UUID;
import org.apache.commons.lang3.time.FastDateFormat;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
-import
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.MessageSender;
+import
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.MessageSender;
import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.basic.ChatDao;
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
Sat Apr 15 16:49:12 2017
@@ -29,7 +29,6 @@ import org.apache.openmeetings.core.conv
import
org.apache.openmeetings.core.data.record.converter.InterviewConverterTask;
import
org.apache.openmeetings.core.data.record.converter.RecordingConverterTask;
import org.apache.openmeetings.core.data.record.listener.StreamListener;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
Copied:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
(from r1791521,
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java)
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java?p2=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java&p1=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java&r1=1791521&r2=1791522&rev=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
Sat Apr 15 16:49:12 2017
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.openmeetings.core.remote.red5;
+package org.apache.openmeetings.core.remote;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_SECURE;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_SECURE_PROXY;
@@ -29,41 +29,32 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.openmeetings.IApplication;
-import org.apache.openmeetings.core.data.conference.RoomManager;
-import org.apache.openmeetings.core.remote.RecordingService;
import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.SipDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.ServerDao;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.room.BrowserStatus;
-import org.apache.openmeetings.db.dto.room.RoomStatus;
import org.apache.openmeetings.db.entity.log.ConferenceLog;
import org.apache.openmeetings.db.entity.room.Client;
import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.room.Room.RoomElement;
import org.apache.openmeetings.db.entity.server.Server;
import org.apache.openmeetings.db.entity.server.Sessiondata;
import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.util.CalendarPatterns;
import org.apache.openmeetings.util.InitializationContainer;
import org.apache.openmeetings.util.OmFileHelper;
@@ -79,10 +70,7 @@ import org.red5.server.adapter.MultiThre
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.Red5;
-import org.red5.server.api.scope.IBasicScope;
-import org.red5.server.api.scope.IBroadcastScope;
import org.red5.server.api.scope.IScope;
-import org.red5.server.api.scope.ScopeType;
import org.red5.server.api.service.IPendingServiceCall;
import org.red5.server.api.service.IPendingServiceCallback;
import org.red5.server.api.service.IServiceCapableConnection;
@@ -103,6 +91,8 @@ public class ScopeApplicationAdapter ext
public static final String FLASH_SSL_PORT = "rtmpsPort";
public static final String FLASH_VIDEO_CODEC = "videoCodec";
public static final String FLASH_FPS = "fps";
+ private static AtomicLong broadCastCounter = new AtomicLong(0);
+ private JSONObject flashSettings;
@Autowired
private ISessionManager sessionManager;
@@ -111,24 +101,19 @@ public class ScopeApplicationAdapter ext
@Autowired
private ConfigurationDao cfgDao;
@Autowired
- private AppointmentDao appointmentDao;
- @Autowired
private SessiondataDao sessiondataDao;
@Autowired
- private RoomManager roomManager;
- @Autowired
private ConferenceLogDao conferenceLogDao;
@Autowired
private UserDao userDao;
@Autowired
private RoomDao roomDao;
@Autowired
+ private SipDao sipDao;
+ @Autowired
private RecordingDao recordingDao;
@Autowired
private ServerDao serverDao;
- private JSONObject flashSettings;
-
- private static AtomicLong broadCastCounter = new AtomicLong(0);
@Override
public void resultReceived(IPendingServiceCall arg0) {
@@ -146,7 +131,7 @@ public class ScopeApplicationAdapter ext
log.debug("webAppPath : " + OmFileHelper.getOmHome());
// Only load this Class one time Initially this value
might by empty, because the DB is empty yet
- getCryptKey();
+ cfgDao.getCryptKey();
// init your handler here
Properties props = new Properties();
@@ -254,7 +239,7 @@ public class ScopeApplicationAdapter ext
}
if (map.containsKey("screenClient")) {
- Client parent =
sessionManager.getClientByPublicSID(parentSid, null);
+ org.apache.openmeetings.db.entity.basic.Client parent =
iapp.getOmClient(uid);
if (parent == null) {
log.warn("Bad parent for screen-sharing client,
client is rejected");
return rejectClient();
@@ -263,7 +248,7 @@ public class ScopeApplicationAdapter ext
rcm.setUserId(parent.getUserId());
rcm.setScreenClient(true);
rcm.setPublicSID(UUID.randomUUID().toString());
- rcm.setStreamPublishName(parentSid);
+ rcm.setStreamPublishName(uid);
}
rcm.setStreamid(conn.getClient().getId());
rcm.setScope(scn.toString());
@@ -388,31 +373,6 @@ public class ScopeApplicationAdapter ext
return returnMap;
}
- public List<Client> checkScreenSharing() {
- try {
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
-
- log.debug("checkScreenSharing -2- " + streamid);
-
- List<Client> screenSharerList = new LinkedList<>();
-
- Client currentClient =
sessionManager.getClientByStreamId(streamid, null);
-
- for (Client rcl :
sessionManager.getClientListByRoomAll(currentClient.getRoomId())) {
- if (rcl.isStartStreaming()) {
- screenSharerList.add(rcl);
- }
- }
-
- return screenSharerList;
-
- } catch (Exception err) {
- log.error("[checkScreenSharing]", err);
- }
- return null;
- }
-
/**
*
* @param map
@@ -453,8 +413,7 @@ public class ScopeApplicationAdapter ext
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("alreadyPublished", false);
- // if is already started screen sharing, then
there is no need
- // to start it again
+ // if is already started screen sharing, then
there is no need to start it again
if (client.isScreenPublishStarted()) {
returnMap.put("alreadyPublished", true);
}
@@ -500,73 +459,6 @@ public class ScopeApplicationAdapter ext
return null;
}
- public List<Long> listRoomBroadcast() {
- Set<Long> broadcastList = new HashSet<>();
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
- for (IConnection conn :
current.getScope().getClientConnections()) {
- if (conn != null) {
- Client rcl =
sessionManager.getClientByStreamId(conn.getClient().getId(), null);
- if (rcl == null) {
- // continue;
- } else if (rcl.isScreenClient()) {
- // continue;
- } else {
- if
(!streamid.equals(rcl.getStreamid())) {
- // It is not needed to send back
- // that event to the actuall
- // Moderator
- // as it will be already
triggered
- // in the result of this
Function
- // in the Client
- Long id =
Long.valueOf(rcl.getBroadCastID());
- if
(!broadcastList.contains(id)) {
- broadcastList.add(id);
- }
- }
- }
- }
- }
- return new ArrayList<>(broadcastList);
- }
-
- /**
- * this function is invoked directly after initial connecting
- *
- * @return publicSID of current client
- */
- public String getPublicSID() {
- log.debug("----------- getPublicSID");
- IConnection current = Red5.getConnectionLocal();
- Client currentClient =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
sessionManager.updateClientByStreamId(current.getClient().getId(),
currentClient, false, null);
- return currentClient.getPublicSID();
- }
-
- /**
- * this function is invoked after a reconnect
- *
- * @param newPublicSID
- */
- public boolean overwritePublicSID(String newPublicSID) {
- try {
- log.debug("----------- overwritePublicSID");
- IConnection current = Red5.getConnectionLocal();
- IClient c = current.getClient();
- Client currentClient =
sessionManager.getClientByStreamId(c.getId(), null);
- if (currentClient == null) {
- return false;
- }
- SessionVariablesUtil.initClient(c, newPublicSID);
- currentClient.setPublicSID(newPublicSID);
- sessionManager.updateClientByStreamId(c.getId(),
currentClient, false, null);
- return true;
- } catch (Exception err) {
- log.error("[overwritePublicSID]", err);
- }
- return false;
- }
-
/**
* Logic must be before roomDisconnect cause otherwise you cannot throw
a
* message to each one
@@ -743,20 +635,21 @@ public class ScopeApplicationAdapter ext
return false;
}
}.start();
+ JSONObject obj = new JSONObject().put("uid",
c.getPublicSID());
+ if (c.isScreenClient()) {
+ obj.put("screenShare", true)
+ .put("uid",
c.getStreamPublishName())
+ .put("broadcastId",
stream.getPublishedName())
+ .put("suid", c.getPublicSID())
+ .put("width", c.getVWidth())
+ .put("height", c.getVHeight());
+ }
+ WebSocketHelper.sendRoom(new
TextRoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.newStream,
obj.toString()));
} catch (Exception err) {
log.error("[streamPublishStart]", err);
}
}
- public IBroadcastScope getBroadcastScope(IScope scope, String name) {
- IBasicScope basicScope =
scope.getBasicScope(ScopeType.BROADCAST, name);
- if (!(basicScope instanceof IBroadcastScope)) {
- return null;
- } else {
- return (IBroadcastScope) basicScope;
- }
- }
-
/**
* This method handles the Event after a stream has been removed all
* connected Clients in the same room will get a notification
@@ -800,6 +693,9 @@ public class ScopeApplicationAdapter ext
sessionManager.updateClientByStreamId(streamId, rcl,
false, null);
// Notify all clients of the same scope (room)
sendMessageToCurrentScope("closeStream", rcl,
rcl.isMobile());
+ if (rcl.isScreenClient()) {
+ WebSocketHelper.sendRoom(new
TextRoomMessage(rcl.getRoomId(), rcl.getUserId(), RoomMessage.Type.closeStream,
rcl.getPublicSID()));
+ }
} catch (Exception e) {
log.error("[streamBroadcastClose]", e);
}
@@ -821,30 +717,6 @@ public class ScopeApplicationAdapter ext
}
}
- public long removeModerator(String publicSID) {
- try {
- log.debug("----------- removeModerator: " + publicSID);
-
- Client currentClient =
sessionManager.getClientByPublicSID(publicSID, null);
-
- if (currentClient == null) {
- return -1L;
- }
- Long roomId = currentClient.getRoomId();
-
- currentClient.setIsMod(false);
- // Put the mod-flag to true for this client
-
sessionManager.updateClientByStreamId(currentClient.getStreamid(),
currentClient, false, null);
-
- List<Client> currentMods =
sessionManager.getCurrentModeratorByRoom(roomId);
-
- sendMessageToCurrentScope("setNewModeratorByList",
currentMods, true);
- } catch (Exception err) {
- log.error("[removeModerator]", err);
- }
- return -1L;
- }
-
public long switchMicMuted(String publicSID, boolean mute) {
try {
log.debug("----------- switchMicMuted: " + publicSID);
@@ -867,282 +739,10 @@ public class ScopeApplicationAdapter ext
return 0L;
}
- public boolean getMicMutedByPublicSID(String publicSID) {
- try {
- Client currentClient =
sessionManager.getClientByPublicSID(publicSID, null);
- if (currentClient == null) {
- return true;
- }
-
- //Put the mod-flag to true for this client
- return currentClient.getMicMuted();
- } catch (Exception err) {
- log.error("[getMicMutedByPublicSID]",err);
- }
- return true;
- }
-
public static long nextBroadCastId() {
return broadCastCounter.getAndIncrement();
}
- /**
- * This method is used to set/update broadCastID of current client
- *
- * @param updateBroadcastId boolean flag
- *
- * @return BroadcastId in case of no errors, -1 otherwise
- */
- public long setUserAVSettings(boolean updateBroadcastId) {
- try {
- String streamid =
Red5.getConnectionLocal().getClient().getId();
- log.debug("----------- setUserAVSettings {}",
streamid);
- Client rcl =
sessionManager.getClientByStreamId(streamid, null);
- if (rcl == null) {
- log.warn("Failed to find appropriate clients");
- return -1;
- }
- if (updateBroadcastId) {
- rcl.setBroadCastID(nextBroadCastId());
-
sessionManager.updateAVClientByStreamId(streamid, rcl, null);
- }
- return rcl.getBroadCastID();
- } catch (Exception err) {
- log.error("[setUserAVSettings]", err);
- }
- return -1;
- }
-
- /*
- * checks if the user is allowed to apply for Moderation
- */
- public boolean checkRoomValues(Long roomId) {
- try {
-
- // appointed meeting or moderated Room?
- Room room = roomDao.get(roomId);
-
- // not really - default logic
- if (!room.isAppointment() && room.isModerated()) {
- // if this is a Moderated Room then the Room
can be only
- // locked off by the Moderator Bit
- List<Client> clientModeratorListRoom =
sessionManager.getCurrentModeratorByRoom(roomId);
-
- // If there is no Moderator yet and we are
asking for it
- // then deny it
- // cause at this moment, the user should wait
untill a
- // Moderator enters the Room
- return clientModeratorListRoom.size() != 0;
- } else {
- // FIXME: TODO: For Rooms that are created as
Appointment we
- // have to check that too
- // but I don't know yet the Logic behind it -
swagner 19.06.2009
- return true;
-
- }
- } catch (Exception err) {
- log.error("[checkRoomValues]", err);
- }
- return false;
- }
-
- /**
- * This function is called once a User enters a Room
- *
- * It contains several different mechanism depending on what roomtype
and
- * what options are available for the room to find out if the current
user
- * will be a moderator of that room or not<br/>
- * <br/>
- * Some rules:<br/>
- * <ul>
- * <li>If it is a room that was created through the calendar, the user
that
- * organized the room will be moderator, the param Boolean
becomeModerator
- * will be ignored then</li>
- * <li>In regular rooms you can use the param Boolean becomeModerator
to set
- * any user to become a moderator of the room</li>
- * </ul>
- * <br/>
- * If a new moderator is detected a Push Call to all current users of
the
- * room is invoked "setNewModeratorByList" to notify them of the new
- * moderator<br/>
- * <br/>
- * At the end of the mechanism a push call with the new client-object
- * and all the informations about the new user is send to every user of
the
- * current conference room<br/>
- * <br/>
- *
- * @param roomId - id of the room
- * @param becomeModerator - is user will become moderator
- * @param isSuperModerator - is user super moderator
- * @param groupId - group id of the user
- * @param colorObj - some color
- * @return RoomStatus object
- */
- public RoomStatus setRoomValues(Long roomId, boolean becomeModerator,
boolean isSuperModerator, String colorObj) {
- try {
- log.debug("----------- setRoomValues");
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
- Client client =
sessionManager.getClientByStreamId(streamid, null);
- client.setRoomId(roomId);
- client.setRoomEnter(new Date());
-
- client.setUsercolor(colorObj);
-
- Long userId = client.getUserId();
- User u = userId == null ? null : userDao.get(userId > 0
? userId : -userId);
- // Inject externalUserId if nothing is set yet
- if (client.getExternalUserId() == null && u != null) {
- client.setExternalUserId(u.getExternalId());
- client.setExternalUserType(u.getExternalType());
- }
-
- Room r = roomDao.get(roomId);
- if (!r.isHidden(RoomElement.MicrophoneStatus)) {
- client.setCanGiveAudio(true);
- }
- sessionManager.updateClientByStreamId(streamid, client,
true, null); // first save to get valid room count
-
- // Check for Moderation LogicalRoom ENTER
- List<Client> roomClients =
sessionManager.getClientListByRoom(roomId);
-
- // Return Object
- RoomStatus roomStatus = new RoomStatus();
- // appointed meeting or moderated Room? => Check Max
Users first
- if (isSuperModerator) {
- // This can be set without checking for
Moderation Flag
- client.setIsSuperModerator(isSuperModerator);
- client.setIsMod(isSuperModerator);
- } else {
- Set<Room.Right> rr =
AuthLevelUtil.getRoomRight(u, r, r.isAppointment() ?
appointmentDao.getByRoom(r.getId()) : null, roomClients.size());
-
client.setIsSuperModerator(rr.contains(Room.Right.superModerator));
- client.setIsMod(becomeModerator ||
rr.contains(Room.Right.moderator));
- }
- if (client.getIsMod()) {
- // Update the Client List
- sessionManager.updateClientByStreamId(streamid,
client, false, null);
-
- List<Client> modRoomList =
sessionManager.getCurrentModeratorByRoom(client.getRoomId());
-
- //Sync message to everybody
-
sendMessageToCurrentScope("setNewModeratorByList", modRoomList, false);
- }
-
- //Sync message to everybody
- sendMessageToCurrentScope("addNewUser", client, false);
-
- //Status object for Shared Browsing
- BrowserStatus browserStatus =
(BrowserStatus)current.getScope().getAttribute("browserStatus");
-
- if (browserStatus == null) {
- browserStatus = new BrowserStatus();
- }
-
- // RoomStatus roomStatus = new RoomStatus();
-
- // FIXME: Rework Client Object to DTOs
- roomStatus.setClientList(roomClients);
- roomStatus.setBrowserStatus(browserStatus);
-
- return roomStatus;
- } catch (Exception err) {
- log.error("[setRoomValues]", err);
- }
- return null;
- }
-
- /**
- * this is set initial directly after login/loading language
- *
- * @param SID - id of the session
- * @param userId - id of the user being set
- * @param username - username of the user
- * @param firstname - firstname of the user
- * @param lastname - lastname of the user
- * @return RoomClient in case of everything is OK, null otherwise
- */
- public Client setUsernameAndSession(String SID, Long userId, String
username, String firstname, String lastname) {
- try {
- log.debug("----------- setUsernameAndSession");
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
- Client currentClient =
sessionManager.getClientByStreamId(streamid, null);
-
- currentClient.setUsername(username);
- currentClient.setUserId(userId);
- SessionVariablesUtil.setUserId(current.getClient(),
userId);
- currentClient.setUserObject(userId, username,
firstname, lastname);
-
- // Update Session Data
- log.debug("UDPATE SESSION " + SID + ", " + userId);
- sessiondataDao.updateUserWithoutSession(SID, userId);
-
- User user = userDao.get(userId);
-
- if (user != null) {
-
currentClient.setExternalUserId(user.getExternalId());
-
currentClient.setExternalUserType(user.getExternalType());
- }
-
- // only fill this value from User-Record
- // cause invited users have non
- // you cannot set the firstname,lastname from the
UserRecord
- User us = userDao.get(userId);
- if (us != null && us.getPictureuri() != null) {
- // set Picture-URI
-
currentClient.setPicture_uri(us.getPictureuri());
- }
- sessionManager.updateClientByStreamId(streamid,
currentClient, false, null);
- return currentClient;
- } catch (Exception err) {
- log.error("[setUsername]", err);
- }
- return null;
- }
-
- /**
- * used by the Screen-Sharing Servlet to trigger events
- *
- * @param roomId
- * @param message
- * @return the list of room clients
- */
- public Map<String, Client> sendMessageByRoomAndDomain(Long roomId,
Object message) {
- Map<String, Client> roomClientList = new HashMap<>();
- try {
-
- log.debug("sendMessageByRoomAndDomain " + roomId);
-
- IScope scope = getRoomScope(roomId.toString());
-
- new MessageSender(scope, "newMessageByRoomAndDomain",
message, this) {
- @Override
- public boolean filter(IConnection conn) {
- IClient client = conn.getClient();
- return
SessionVariablesUtil.isScreenClient(client);
- }
- }.start();
- } catch (Exception err) {
- log.error("[getClientListBYRoomAndDomain]", err);
- }
- return roomClientList;
- }
-
- public List<Client> getCurrentModeratorList() {
- try {
- IConnection current = Red5.getConnectionLocal();
- Client client =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
- Long roomId = client.getRoomId();
- Room r = roomDao.get(roomId);
- if (r != null) {
- return
sessionManager.getCurrentModeratorByRoom(roomId);
- }
- } catch (Exception err) {
- log.error("[getCurrentModerator]", err);
- }
- return null;
- }
-
public int sendMessage(Object newMessage) {
sendMessageToCurrentScope("sendVarsToMessage", newMessage,
false);
return 1;
@@ -1154,43 +754,6 @@ public class ScopeApplicationAdapter ext
}
/**
- * send status for shared browsing to all members except self
- * @param newMessage
- * @return 1
- */
- @SuppressWarnings({ "rawtypes" })
- public int sendBrowserMessageToMembers(Object newMessage) {
- try {
- IConnection current = Red5.getConnectionLocal();
-
- List newMessageList = (List) newMessage;
-
- String action = newMessageList.get(0).toString();
-
- BrowserStatus browserStatus = (BrowserStatus)
current.getScope().getAttribute("browserStatus");
-
- if (browserStatus == null) {
- browserStatus = new BrowserStatus();
- }
-
- if (action.equals("initBrowser") ||
action.equals("newBrowserURL")) {
- browserStatus.setBrowserInited(true);
-
browserStatus.setCurrentURL(newMessageList.get(1).toString());
- } else if (action.equals("closeBrowserURL")) {
- browserStatus.setBrowserInited(false);
- }
-
- current.getScope().setAttribute("browserStatus",
browserStatus);
-
- sendMessageToCurrentScope("sendVarsToMessage",
newMessage, false);
-
- } catch (Exception err) {
- log.error("[sendMessage]", err);
- }
- return 1;
- }
-
- /**
* wrapper method
* @param newMessage
*/
@@ -1442,45 +1005,6 @@ public class ScopeApplicationAdapter ext
return 1;
}
- public void sendMessageWithClientByPublicSID(Object message, String
publicSID) {
- try {
- if (publicSID == null) {
- log.warn("'null' publicSID was passed to
sendMessageWithClientByPublicSID");
- return;
- }
-
- // Get Room Id to send it to the correct Scope
- Client currentClient =
sessionManager.getClientByPublicSID(publicSID, null);
-
- if (currentClient == null) {
- throw new Exception("Could not Find RoomClient
on List publicSID: " + publicSID);
- }
- IScope scope = getRoomScope("" +
currentClient.getRoomId());
-
- // log.debug("scopeHibernate "+scopeHibernate);
-
- if (scope != null) {
- // Notify the clients of the same scope (room)
with userId
-
- for (IConnection conn :
scope.getClientConnections()) {
- IClient client = conn.getClient();
- if
(SessionVariablesUtil.isScreenClient(client)) {
- // screen sharing clients do
not receive events
- continue;
- }
-
- if
(publicSID.equals(SessionVariablesUtil.getPublicSID(client))) {
- ((IServiceCapableConnection)
conn).invoke("newMessageByRoomAndDomain", new Object[] { message }, this);
- }
- }
- } else {
- // Scope not yet started
- }
- } catch (Exception err) {
- log.error("[sendMessageWithClientByPublicSID] ", err);
- }
- }
-
/**
* @deprecated this method should be reworked to use a single SQL query
in
* the cache to get any client in the current room that is
@@ -1635,28 +1159,6 @@ public class ScopeApplicationAdapter ext
return false;
}
- /**
- * Get all ClientList Objects of that room and domain Used in
- * lz.applyForModeration.lzx
- *
- * @return all ClientList Objects of that room
- */
- public List<Client> getClientListScope() {
- try {
- IConnection current = Red5.getConnectionLocal();
- Client currentClient =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
- return
sessionManager.getClientListByRoom(currentClient.getRoomId());
- } catch (Exception err) {
- log.debug("[getClientListScope]", err);
- }
- return new ArrayList<>();
- }
-
- public String getCryptKey() {
- return cfgDao.getCryptKey();
- }
-
public IScope getRoomScope(String room) {
if (Strings.isEmpty(room)) {
return null;
@@ -1693,8 +1195,18 @@ public class ScopeApplicationAdapter ext
return result.isEmpty() ? result : roomDao.getSipRooms(result);
}
+ /**
+ * Returns number of SIP conference participants
+ * @param roomId id of room
+ * @return number of participants
+ */
+ public Integer getSipConferenceMembersNumber(Long roomId) {
+ Room r = roomDao.get(roomId);
+ return r == null || r.getConfno() == null ? null :
sipDao.countUsers(r.getConfno());
+ }
+
private String getSipTransportLastname(Long roomId) {
- return
getSipTransportLastname(roomManager.getSipConferenceMembersNumber(roomId));
+ return
getSipTransportLastname(getSipConferenceMembersNumber(roomId));
}
private static String getSipTransportLastname(Integer c) {
@@ -1707,7 +1219,7 @@ public class ScopeApplicationAdapter ext
String streamid = current.getClient().getId();
Client client = sessionManager.getClientByStreamId(streamid,
null);
Long roomId = client.getRoomId();
- Integer count =
roomManager.getSipConferenceMembersNumber(roomId);
+ Integer count = getSipConferenceMembersNumber(roomId);
String newNumber = getSipTransportLastname(count);
log.debug("getSipConferenceMembersNumber: " + newNumber);
if (!newNumber.equals(client.getLastname())) {
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/UserService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/UserService.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/UserService.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/UserService.java
Sat Apr 15 16:49:12 2017
@@ -26,7 +26,6 @@ import java.util.List;
import java.util.Map;
import org.apache.openmeetings.IApplication;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.ServerDao;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
Sat Apr 15 16:49:12 2017
@@ -39,6 +39,7 @@ public interface IApplication {
String getOmString(long id, long languageId);
String getOmString(String key, long languageId);
String getOmString(String key, final Locale loc, String... params);
+ org.apache.openmeetings.db.entity.basic.Client getOmClient(String uid);
Client updateClient(Client rcl, boolean forceSize);
List<org.apache.openmeetings.db.entity.basic.Client>
getOmRoomClients(Long roomId);
List<org.apache.openmeetings.db.entity.basic.Client> getOmClients(Long
userId);
Modified:
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
(original)
+++
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
Sat Apr 15 16:49:12 2017
@@ -67,12 +67,16 @@ public class Core implements IPendingSer
final static String QUARTZ_GROUP_NAME = "ScreenShare";
final static String QUARTZ_REMOTE_JOB_NAME = "RemoteJob";
final static String QUARTZ_REMOTE_TRIGGER_NAME = "RemoteTrigger";
+ private static final String CONNECT_REJECTED =
"NetConnection.Connect.Rejected";
+ private static final String CONNECT_FAILED =
"NetConnection.Connect.Failed";
enum Protocol {
rtmp, rtmpt, rtmpe, rtmps
}
private IScreenShare instance = null;
- private Protocol protocol;
+ private URI url;
+ private URI fallback;
+ private boolean fallbackUsed = false;
private String host;
private String app;
private int port;
@@ -97,6 +101,7 @@ public class Core implements IPendingSer
private boolean readyToRecord = false;
private boolean audioNotify = false;
private boolean remoteEnabled = true;
+ private boolean nativeSsl = false;
private SchedulerFactory schdlrFactory;
private Scheduler schdlr;
private LinkedBlockingQueue<Map<String, Object>> remoteEvents = new
LinkedBlockingQueue<>();
@@ -121,20 +126,17 @@ public class Core implements IPendingSer
}
String[] textArray = null;
if (args.length > 8) {
- String _url = args[0];
- URI url = new URI(_url);
- protocol = Protocol.valueOf(url.getScheme());
- host = url.getHost();
- port = url.getPort();
- app = url.getPath().substring(1);
- publishName = args[1];
- String labelTexts = args[2];
- defaultQuality = Integer.parseInt(args[3]);
- defaultFPS = Integer.parseInt(args[4]);
- showFPS = bool(args[5]);
- remoteEnabled = bool(args[6]);
- allowRecording = bool(args[7]);
- allowPublishing = bool(args[8]);
+ url = new URI(args[0]);
+ fallback = new URI(args[1]);
+ publishName = args[2];
+ String labelTexts = args[3];
+ defaultQuality = Integer.parseInt(args[4]);
+ defaultFPS = Integer.parseInt(args[5]);
+ showFPS = bool(args[6]);
+ remoteEnabled = bool(args[7]);
+ allowRecording = bool(args[8]);
+ allowPublishing = bool(args[9]);
+ nativeSsl = bool(args[10]);
if (labelTexts.length() > 0) {
textArray = labelTexts.split(";");
@@ -145,30 +147,6 @@ public class Core implements IPendingSer
log.debug(i + " :: " +
textArray[i]);
}
}
- switch (protocol) {
- case rtmp:
- instance = new
RTMPScreenShare(this);
- break;
- case rtmpt:
- instance = new
RTMPTScreenShare(this);
- break;
- case rtmps:
- boolean nativeSsl =
bool(args[9]);
- if (nativeSsl) {
- RTMPSScreenShare client
= new RTMPSScreenShare(this);
- //NOT in use since
1.0.8-M3 client.setKeystoreBytes(Hex.decodeHex(args[10].toCharArray()));
-
client.setKeyStorePassword(args[11]);
- instance = client;
- } else {
- instance = new
RTMPTSScreenShare(this);
- }
- break;
- case rtmpe:
- default:
- throw new
Exception("Unsupported protocol");
- }
- instance.setServiceProvider(this);
- log.debug(String.format("host: %s, port: %s,
app: %s, publish: %s", host, port, app, publishName));
} else {
System.exit(0);
}
@@ -188,6 +166,35 @@ public class Core implements IPendingSer
}
}
+ private void setInstance(URI uri) {
+ Protocol protocol = Protocol.valueOf(uri.getScheme());
+ host = uri.getHost();
+ port = uri.getPort();
+ app = uri.getPath().substring(1);
+
+ switch (protocol) {
+ case rtmp:
+ instance = new RTMPScreenShare(this);
+ break;
+ case rtmpt:
+ instance = new RTMPTScreenShare(this);
+ break;
+ case rtmps:
+ if (nativeSsl) {
+ RTMPSScreenShare client = new
RTMPSScreenShare(this);
+ instance = client;
+ } else {
+ instance = new RTMPTSScreenShare(this);
+ }
+ break;
+ case rtmpe:
+ default:
+ throw new RuntimeException("Unsupported
protocol");
+ }
+ instance.setServiceProvider(this);
+ log.debug(String.format("host: %s, port: %s, app: %s, publish:
%s", host, port, app, publishName));
+ }
+
@SuppressWarnings("unused")
public static void main(String[] args) {
new Core(args);
@@ -298,10 +305,12 @@ public class Core implements IPendingSer
}
private void connect(String parentSid) {
+ setInstance(fallbackUsed ? fallback : url);
Map<String, Object> map =
instance.makeDefaultConnectionParams(host, port, app);
map.put("screenClient", true);
- map.put("parentSid", parentSid);
- instance.connect(host, port, map, this);
+ Map<String, Object> params = new HashMap<>();
+ params.put("uid", parentSid);
+ instance.connect(host, port, map, this, new Object[]{params});
}
private void captureScreenStart() {
@@ -491,7 +500,13 @@ public class Core implements IPendingSer
log.trace("call ### get Method Name " + method);
if ("connect".equals(method)) {
Object code = returnMap.get("code");
- if
("NetConnection.Connect.Rejected".equals(code) ||
"NetConnection.Connect.Failed".equals(code)) {
+ if (CONNECT_FAILED.equals(code) &&
!fallbackUsed) {
+ fallbackUsed = true;
+ connect(publishName);
+ frame.setStatus("Re-connecting using
fallback");
+ return;
+ }
+ if (CONNECT_FAILED.equals(code) ||
CONNECT_REJECTED.equals(code)) {
frame.setStatus(String.format("Error:
%s %s", code, returnMap.get("description")));
return;
}
Modified:
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
(original)
+++
openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
Sat Apr 15 16:49:12 2017
@@ -30,7 +30,7 @@ public interface IScreenShare extends Cl
RTMPConnection getConnection();
void invoke(String method, Object[] params, IPendingServiceCallback
callback);
Map<String, Object> makeDefaultConnectionParams(String server, int
port, String application);
- void connect(String server, int port, Map<String, Object>
connectionParams, IPendingServiceCallback connectCallback);
+ void connect(String server, int port, Map<String, Object>
connectionParams, IPendingServiceCallback connectCallback, Object[]
connectCallArguments);
void setServiceProvider(Object serviceProvider);
void disconnect();
void createStream(IPendingServiceCallback callback);
Modified:
openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
(original)
+++
openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
Sat Apr 15 16:49:12 2017
@@ -38,6 +38,7 @@
</resources>
<application-desc main-class='org.apache.openmeetings.screenshare.Core'>
<argument>$url</argument>
+ <argument>$fallback</argument>
<argument>$publicSid</argument>
<argument>$labels</argument>
<argument>$defaultQuality</argument>
@@ -47,7 +48,5 @@
<argument>$allowRecording</argument>
<argument>$allowPublishing</argument>
<argument>$native</argument>
- <argument>$keystore</argument>
- <argument>$password</argument>
</application-desc>
</jnlp>
Modified:
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
(original)
+++
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
Sat Apr 15 16:49:12 2017
@@ -43,7 +43,7 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
Modified:
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
(original)
+++
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
Sat Apr 15 16:49:12 2017
@@ -47,6 +47,8 @@ public class RoomMessage implements IWeb
, requestRightExclusive
, haveQuestion
, kick
+ , newStream
+ , closeStream
}
private final Date timestamp;
private final String uid;
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
Sat Apr 15 16:49:12 2017
@@ -42,7 +42,7 @@ import java.util.function.Predicate;
import org.apache.directory.api.util.Strings;
import org.apache.openmeetings.IApplication;
import org.apache.openmeetings.core.remote.MainService;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.label.LabelDao;
@@ -632,4 +632,9 @@ public class Application extends Authent
public String getOmString(String key, final Locale loc, String...
params) {
return getString(key, loc, params);
}
+
+ @Override
+ public Client getOmClient(String uid) {
+ return getOnlineClient(uid);
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
Sat Apr 15 16:49:12 2017
@@ -116,7 +116,7 @@ public class MainPanel extends Panel {
@Override
protected void onTimer(AjaxRequestTarget target) {
log.debug("Sending WebSocket PING");
- WebSocketHelper.sendClient(client, new byte[1]);
+ WebSocketHelper.sendClient(client, new
byte[]{getUserId().byteValue()});
}
};
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
Sat Apr 15 16:49:12 2017
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.room
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.core.session.SessionManager;
import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
import org.apache.openmeetings.db.entity.room.Client;
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
Sat Apr 15 16:49:12 2017
@@ -368,6 +368,27 @@ public class RoomPanel extends BasePanel
wb.update(handler);
}
break;
+ case newStream:
+ {
+ JSONObject obj = new
JSONObject(((TextRoomMessage)m).getText());
+ Client c =
getOnlineClient(obj.getString("uid"));
+ boolean self =
getClient().getUid().equals(c.getUid());
+ if (!self) {
+ JSONObject json =
c.toJson().put("sid", getSid()).put("self", self);
+ if
(obj.optBoolean("screenShare", false)) {
+
json.put("screenShare", true)
+
.put("uid", obj.getString("suid")) // unique screen-sharing ID
+
.put("broadcastId", obj.getString("broadcastId"))
+
.put("width", obj.getInt("width"))
+
.put("height", obj.getInt("height"));
+ }
+
handler.appendJavaScript(String.format("VideoManager.play(%s);", json));
+ }
+ }
+ break;
+ case closeStream:
+
handler.appendJavaScript(String.format("VideoManager.close('%s');",
((TextRoomMessage)m).getText()));
+ break;
case roomEnter:
sidebar.update(handler);
menu.update(handler);
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
Sat Apr 15 16:49:12 2017
@@ -18,17 +18,17 @@
*/
package org.apache.openmeetings.web.room;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_NATIVE_SSL;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_PORT;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_SECURE;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_SSL_PORT;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_NATIVE_SSL;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_PORT;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_SECURE;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_SSL_PORT;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT;
import java.net.URL;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.OmAjaxClientInfoBehavior;
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
Sat Apr 15 16:49:12 2017
@@ -18,19 +18,19 @@
*/
package org.apache.openmeetings.web.room;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_FPS;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_NATIVE_SSL;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_PORT;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_SECURE;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_SSL_PORT;
-import static
org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter.FLASH_VIDEO_CODEC;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_FPS;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_NATIVE_SSL;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_PORT;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_SECURE;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_SSL_PORT;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_VIDEO_CODEC;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
import java.net.URL;
import org.apache.directory.api.util.Strings;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.util.ExtendedClientProperties;
import org.apache.wicket.markup.head.IHeaderResponse;
@@ -48,8 +48,8 @@ public class VideoSettings extends Panel
private final static long serialVersionUID = 1L;
private final static Logger log =
Red5LoggerFactory.getLogger(VideoSettings.class, webAppRootKey);
private final static ResourceReference SETTINGS_JS_REFERENCE = new
JavaScriptResourceReference(VideoSettings.class, "settings.js");
- private final static String URL = "url";
- private final static String FALLBACK = "fallback";
+ public final static String URL = "url";
+ public final static String FALLBACK = "fallback";
public VideoSettings(String id) {
super(id);
@@ -79,8 +79,8 @@ public class VideoSettings extends Panel
URL url = new URL(cp.getCodebase());
String path = url.getPath();
path = path.substring(1, path.indexOf('/', 2) + 1) +
scope;
+ s.put(FLASH_NATIVE_SSL,
gs.getBoolean(FLASH_NATIVE_SSL));
if (gs.getBoolean(FLASH_SECURE)) {
- s.put(FLASH_NATIVE_SSL,
gs.getBoolean(FLASH_NATIVE_SSL));
s.put(URL, getUri("rtmps", url.getHost(),
gs.getString(FLASH_SSL_PORT), path));
s.put(FALLBACK, getUri("rtmps", url.getHost(),
url.getPort(), path));
} else {
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
Sat Apr 15 16:49:12 2017
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.room.menu;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.FLASH_NATIVE_SSL;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_ALLOW_REMOTE;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
@@ -26,49 +27,38 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
-import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.InputStream;
-import java.net.URI;
-import java.util.Properties;
-import org.apache.commons.codec.binary.Hex;
import org.apache.commons.io.IOUtils;
import org.apache.openmeetings.core.session.SessionManager;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.basic.Client;
import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.OmButton;
+import org.apache.openmeetings.web.room.VideoSettings;
import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import com.github.openjson.JSONObject;
+
public class StartSharingButton extends OmButton {
private static final long serialVersionUID = 1L;
private static final Logger log =
Red5LoggerFactory.getLogger(StartSharingButton.class, webAppRootKey);
private static final String CDATA_BEGIN = "<![CDATA[";
private static final String CDATA_END = "]]>";
private final AjaxDownload download;
- private final org.apache.openmeetings.db.entity.basic.Client c;
- private enum Protocol {
- rtmp
- , rtmpe
- , rtmps
- , rtmpt
- }
+ private final Client c;
- public StartSharingButton(String id,
org.apache.openmeetings.db.entity.basic.Client c) {
+ public StartSharingButton(String id, Client c) {
super(id);
this.c = c;
setOutputMarkupPlaceholderTag(true);
@@ -92,25 +82,16 @@ public class StartSharingButton extends
ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
app = IOUtils.toString(jnlp, UTF_8);
String publicSid = c.getUid();
- Client rc = getClient(publicSid);
- if (rc == null || rc.getUserId() == null) {
- throw new
RuntimeException(String.format("Unable to find client by publicSID '%s'",
publicSid));
- }
- String _url = rc.getTcUrl();
- URI url = new URI(_url);
+ JSONObject s =
VideoSettings.getInitJson(WebSession.get().getExtendedProperties(), "" +
c.getRoomId(), publicSid);
+ String _url = s.getString(VideoSettings.URL);
long roomId = c.getRoomId();
Room room = getBean(RoomDao.class).get(roomId);
SessionManager sessionManager =
getBean(SessionManager.class);
- String path = url.getPath();
- path = path.substring(path.lastIndexOf('/') + 1);
- if (Strings.isEmpty(path) || rc.getRoomId() == null ||
!path.equals(rc.getRoomId().toString()) || !rc.getRoomId().equals(roomId)) {
- throw new
RuntimeException(String.format("Invalid room id passed %s, expected, %s", path,
roomId));
- }
- Protocol protocol = Protocol.valueOf(url.getScheme());
- app = addKeystore(rc, app, protocol)
+ app = app.replace("$native", "" +
s.getBoolean(FLASH_NATIVE_SSL))
.replace("$codebase",
WebSession.get().getExtendedProperties().getCodebase())
.replace("$applicationName",
cfgDao.getAppName())
.replace("$url", _url)
+ .replace("$fallback",
s.getString(VideoSettings.FALLBACK))
.replace("$publicSid", publicSid)
.replace("$labels", getLabels(730,
731, 732, 733, 734
, 735, 737, 738,
739, 740
@@ -124,7 +105,7 @@ public class StartSharingButton extends
.replace("$defaultFps",
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS, String.class, ""))
.replace("$showFps",
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS_SHOW, String.class, "true"))
.replace("$allowRemote",
cfgDao.getConfValue(CONFIG_SCREENSHARING_ALLOW_REMOTE, String.class, "true"))
- .replace("$allowRecording", "" +
(rc.getUserId() > 0 && room.isAllowRecording() && rc.isAllowRecording() && (0
== sessionManager.getRecordingCount(roomId))))
+ .replace("$allowRecording", "" +
(room.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
.replace("$allowPublishing", "" + (0 ==
sessionManager.getPublishingCount(roomId)))
;
@@ -151,47 +132,4 @@ public class StartSharingButton extends
result.append(CDATA_END);
return result.toString();
}
-
- private static String addKeystore(Client rc, String app, Protocol
protocol) {
- log.debug("RTMP Sharer Keystore :: start");
- String keystore = "--dummy--", password = "--dummy--";
- if (Protocol.rtmps == protocol) {
- File conf = new File(OmFileHelper.getRootDir(), "conf");
- File keyStore = new File(conf, "keystore.screen");
- if (keyStore.exists()) {
- try (FileInputStream fis = new
FileInputStream(keyStore); FileInputStream ris = new FileInputStream(new
File(conf, "red5.properties"))) {
- Properties red5Props = new Properties();
- red5Props.load(ris);
-
- byte keyBytes[] = new
byte[(int)keyStore.length()];
- fis.read(keyBytes);
-
- keystore =
Hex.encodeHexString(keyBytes);
- password =
red5Props.getProperty("rtmps.screen.keystorepass");
-
- /*
- KeyStore ksIn =
KeyStore.getInstance(KeyStore.getDefaultType());
- ksIn.load(new
FileInputStream(keyStore),
red5Props.getProperty("rtmps.keystorepass").toCharArray());
- ByteArrayInputStream bin = new
ByteArrayInputStream()
-
- byte fileContent[] = new
byte[(int)file.length()];
- sb = addArgument(sb, Object arg)
- ctx.put("$KEYSTORE", users_id);
- /*
- KeyStore ksOut =
KeyStore.getInstance(KeyStore.getDefaultType());
- for (Certificate cert :
ksIn.getCertificateChain("red5")) {
- PublicKey pub =
cert.getPublicKey();
- TrustedCertificateEntry tce =
new TrustedCertificateEntry(cert);
- tce.
- }
- */
- } catch (Exception e) {
- //no op
- }
- }
- }
- return app.replace("$native", "" + rc.isNativeSsl())
- .replace("$keystore", CDATA_BEGIN + keystore +
CDATA_END)
- .replace("$password", CDATA_BEGIN + password +
CDATA_END);
- }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
Sat Apr 15 16:49:12 2017
@@ -88,24 +88,36 @@ var VideoManager = (function() {
function _getVid(uid) {
return "video" + uid;
}
- function _update(o) {
- var _id = _getVid(o.uid)
- , video = o.activities.indexOf('broadcastV') > -1
- , audio = o.activities.indexOf('broadcastA') > -1
+ function _update(c) {
+ var _id = _getVid(c.uid)
+ , video = c.activities.indexOf('broadcastV') > -1
+ , audio = c.activities.indexOf('broadcastA') > -1
, av = audio || video
, v = $('#' + _id);
- if (av && v.length != 1) {
- Video().init(box, o);
+ if (av && v.length != 1 && !!c.self) {
+ Video().init(box, c);
} else if (av && v.length == 1) {
- v.data().update(o);
+ v.data().update(c);
} else if (!av && v.length == 1) {
v.remove();
}
}
+ function _play(c) {
+ Video().init(box, c);
+ }
+ function _close(uid) {
+ var _id = _getVid(uid)
+ , v = $('#' + _id);
+ if (v.length == 1) {
+ v.remove();
+ }
+ }
self.getOptions = function() { return
JSON.parse(JSON.stringify(options)); };
self.init = _init;
self.update = _update;
+ self.play = _play;
+ self.close = _close;
self.resetSize = function(uid) { $('#' +
_getVid(uid)).data().resetSize(); };
return self;
})();
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
Sat Apr 15 16:49:12 2017
@@ -27,7 +27,7 @@ import static org.apache.wicket.ajax.att
import java.util.ArrayList;
import java.util.List;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
import org.apache.openmeetings.db.entity.basic.Client;
import org.apache.openmeetings.db.entity.basic.Client.Activity;
import org.apache.openmeetings.db.entity.basic.Client.Pod;
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml?rev=1791522&r1=1791521&r2=1791522&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
Sat Apr 15 16:49:12 2017
@@ -45,7 +45,7 @@
<context:component-scan base-package="org.apache.openmeetings" />
<!-- New Class for the Streaming Handlers -->
- <bean id="web.handler"
class="org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter" />
+ <bean id="web.handler"
class="org.apache.openmeetings.core.remote.ScopeApplicationAdapter" />
<!-- Session configuration start -->