openmeetings-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From solo...@apache.org
Subject [openmeetings] branch OPENMEETINGS-1649-kurento updated: [OPENMEETINGS-1649] video sending code is improved, receiving is still broken
Date Mon, 05 Mar 2018 16:32:43 GMT
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch OPENMEETINGS-1649-kurento
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/OPENMEETINGS-1649-kurento by this push:
     new 92877b3  [OPENMEETINGS-1649] video sending code is improved, receiving is still broken
92877b3 is described below

commit 92877b375770d5d6c62a747f6bc885849b00a210
Author: Maxim Solodovnik <solomax666@gmail.com>
AuthorDate: Mon Mar 5 23:32:33 2018 +0700

    [OPENMEETINGS-1649] video sending code is improved, receiving is still broken
---
 .../org/apache/openmeetings/core/remote/KRoom.java | 24 +++-----
 .../openmeetings/core/remote/KurentoHandler.java   | 38 ++++++-------
 .../apache/openmeetings/db/util/RoomHelper.java    | 16 ------
 .../openmeetings/util/OMContextListener.java       | 18 ++++--
 openmeetings-web/pom.xml                           |  8 +--
 .../apache/openmeetings/web/app/ClientManager.java |  8 ++-
 .../apache/openmeetings/web/room/RoomPanel.java    | 29 ++++++++--
 .../openmeetings/web/room/VideoSettings.java       | 23 +++-----
 .../org/apache/openmeetings/web/room/room-base.js  |  1 -
 .../apache/openmeetings/web/room/video-manager.js  | 66 ++++++----------------
 .../main/webapp/WEB-INF/classes/logback-config.xml |  4 +-
 .../main/webapp/WEB-INF/classes/rebel-remote.xml   | 24 --------
 .../src/main/webapp/WEB-INF/classes/rebel.xml      | 33 -----------
 13 files changed, 98 insertions(+), 194 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index 2ed5335..87060da 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -61,11 +61,16 @@ public class KRoom implements Closeable {
 		this.close();
 	}
 
-	public KUser join(final KurentoHandler h, String uid) {
+	public KUser addUser(final KurentoHandler h, String uid) {
 		log.info("ROOM {}: adding participant {}", roomId, uid);
 		final KUser u = new KUser(h, uid, this.roomId, this.pipeline);
-		joinRoom(h, u);
 		participants.put(u.getUid(), u);
+		h.usersByUid.put(u.getUid(), u);
+		return u;
+	}
+
+	public KUser join(final KurentoHandler h, String uid) {
+		KUser u = addUser(h, uid);
 		broadcast(h, u);
 		return u;
 	}
@@ -76,21 +81,6 @@ public class KRoom implements Closeable {
 		user.close();
 	}
 
-	private Collection<String> joinRoom(final KurentoHandler h, KUser newParticipant)
{
-		final JSONObject msg = newKurentoMsg();
-		msg.put("id", "newParticipantArrived");
-		msg.put("name", newParticipant.getUid());
-
-		final List<String> participantsList = new ArrayList<>(participants.values().size());
-		log.debug("ROOM {}: notifying other participants of new participant {}", roomId, newParticipant.getUid());
-
-		for (final KUser participant : participants.values()) {
-			h.sendClient(participant.getUid(), msg);
-			participantsList.add(participant.getUid());
-		}
-		return participantsList;
-	}
-
 	private void removeParticipant(final KurentoHandler h, String name) {
 		participants.remove(name);
 
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index 0ab11d6..607238f 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -39,7 +39,7 @@ public class KurentoHandler {
 	public final static String KURENTO_TYPE = "kurento";
 	private final KurentoClient client = KurentoClient.create();
 	private final Map<Long, KRoom> rooms = new ConcurrentHashMap<>();
-	private final Map<String, KUser> usersByUid = new ConcurrentHashMap<>();
+	final Map<String, KUser> usersByUid = new ConcurrentHashMap<>();
 
 	@Autowired
 	private IClientManager clientManager;
@@ -48,32 +48,35 @@ public class KurentoHandler {
 		final Client c = clientManager.get(uid);
 
 		if (c != null) {
-			log.debug("Incoming message from user '{}': {}", c.getUser(), msg);
+			log.debug("Incoming message from user with ID '{}': {}", c.getUserId(), msg);
 		} else {
 			log.debug("Incoming message from new user: {}", msg);
 		}
-		final KUser user = getByUid(uid);
+		KUser user = getByUid(uid);
 		switch (msg.getString("id")) {
 			case "joinRoom":
 				joinRoom(c);
 				break;
 			case "receiveVideoFrom":
-				final String senderName = msg.getString("sender");
-				final KUser sender = getByUid(senderName);
+				final String senderUid = msg.getString("sender");
+				final KUser sender = getByUid(senderUid);
 				final String sdpOffer = msg.getString("sdpOffer");
+				if (user == null) {
+					KRoom room = getRoom(c.getRoomId());
+					user = room.addUser(this, uid);
+				}
 				user.receiveVideoFrom(this, sender, sdpOffer);
 				break;
-			case "leaveRoom":
-				leaveRoom(user);
-				break;
 			case "onIceCandidate":
 				JSONObject candidate = msg.getJSONObject("candidate");
 
-				if (c != null) {
-					IceCandidate cand = new IceCandidate(candidate.getString("candidate"),
-							candidate.getString("sdpMid"), candidate.getInt("sdpMLineIndex"));
-					user.addCandidate(cand, msg.getString("name"));
+				if (user == null) {
+					KRoom room = getRoom(c.getRoomId());
+					user = room.addUser(this, uid);
 				}
+				IceCandidate cand = new IceCandidate(candidate.getString("candidate"),
+						candidate.getString("sdpMid"), candidate.getInt("sdpMLineIndex"));
+				user.addCandidate(cand, msg.getString("name"));
 				break;
 			default:
 				break;
@@ -85,22 +88,13 @@ public class KurentoHandler {
 
 		KRoom room = getRoom(c.getRoomId());
 		clientManager.update(c.addStream(c.getUid()));
-		final KUser user = room.join(this, c.getUid());
-		usersByUid.put(user.getUid(), user);
+		room.join(this, c.getUid());
 	}
 
 	void sendClient(String uid, JSONObject msg) {
 		WebSocketHelper.sendClient(clientManager.get(uid), msg);
 	}
 
-	private void leaveRoom(KUser user) {
-		final KRoom room = getRoom(user.getRoomId());
-		room.leave(this, user);
-		if (room.getParticipants().isEmpty()) {
-			removeRoom(room);
-		}
-	}
-
 	/**
 	 * Looks for a room in the active room list.
 	 *
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/RoomHelper.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/RoomHelper.java
index 47cd8cd..a71e2a0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/RoomHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/RoomHelper.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.db.util;
 
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.StreamClient;
-import org.apache.openmeetings.db.manager.IStreamClientManager;
 
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
@@ -28,21 +27,6 @@ import com.github.openjson.JSONObject;
 public class RoomHelper {
 	private RoomHelper() {}
 
-	public static JSONObject videoJson(Client c, boolean self, String sid, IStreamClientManager
mgr, String uid) {
-		StreamClient sc = mgr.get(uid);
-		if (sc == null) {
-			return new JSONObject();
-		}
-		JSONObject o = c.toJson(self)
-				.put("sid", sid)
-				.put("uid", sc.getUid())
-				.put("broadcastId", sc.getBroadcastId())
-				.put("width", sc.getWidth())
-				.put("height", sc.getHeight())
-				.put("type", sc.getType());
-		return addScreenActivities(o, sc);
-	}
-
 	public static JSONObject addScreenActivities(JSONObject o, StreamClient sc) {
 		JSONArray a = new JSONArray();
 		if (Client.Type.sharing == sc.getType()) {
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
index 9f4c1a3..6ca2c90 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.util;
 
+import java.io.InputStream;
+
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
@@ -25,24 +27,32 @@ import org.slf4j.LoggerFactory;
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.util.StatusPrinter;
 
 public class OMContextListener implements ServletContextListener {
+	private static final String LOG_DIR_PROP = "current_openmeetings_log_dir";
 
 	@Override
 	public void contextInitialized(ServletContextEvent event) {
 		String ctx = pathToName(event);
 		System.setProperty("current_openmeetings_context_name", ctx);
+		if (System.getProperty(LOG_DIR_PROP) == null) {
+			System.setProperty(LOG_DIR_PROP, "log");
+		}
 		System.setProperty("webapp.contextPath", String.format("/%s", ctx));
+		LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
 		try {
-			LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
 			JoranConfigurator configurator = new JoranConfigurator();
 			configurator.setContext(context);
 			context.reset();
-			configurator.doConfigure("logback-config.xml");
-		} catch (JoranException je) {
+			try (InputStream cfgIs = getClass().getResourceAsStream("/logback-config.xml")) {
+				configurator.doConfigure(cfgIs);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
 			// StatusPrinter will handle this
 		}
+		StatusPrinter.printInCaseOfErrorsOrWarnings(context);
 		//System.setProperty("logback.configurationFile", "logback-config.xml");
 	}
 
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index adc3bb5..ad26952 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -476,12 +476,12 @@
 					<artifactId>jetty-maven-plugin</artifactId>
 					<version>${jetty9.version}</version>
 					<configuration>
-						<!--systemProperties>
+						<systemProperties>
 							<systemProperty>
-								<name>logback.configurationFile</name>
-								<value>${project.build.directory}/${project.build.finalName}/WEB-INF/classes/logback-config.xml</value>
+								<name>current_openmeetings_log_dir</name>
+								<value>${project.build.directory}</value>
 							</systemProperty>
-						</systemProperties-->
+						</systemProperties>
 						<webApp>
 							<contextPath>/openmeetings</contextPath>
 						</webApp>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index f64d813..86162e2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -147,7 +147,6 @@ public class ClientManager implements IClientManager {
 	}
 
 	public IClient removeFromRoom(IClient _c) {
-		/*
 		Long roomId = _c.getRoomId();
 		log.debug("Removing online room client: {}, room: {}", _c.getUid(), roomId);
 		if (roomId != null) {
@@ -157,25 +156,28 @@ public class ClientManager implements IClientManager {
 				clients.remove(_c.getUid());
 				rooms.put(roomId, clients);
 			}
+			/* FIXME TODO KurentoHandler
 			if (_c instanceof StreamClient) {
 				StreamClient sc = (StreamClient)_c;
 				if (Client.Type.mobile != sc.getType() && Client.Type.sip != sc.getType()) {
 					scopeAdapter.roomLeaveByScope(_c, roomId);
 				}
 			}
+			 */
 			if (_c instanceof Client) {
-				scopeAdapter.dropSharing(_c, roomId);
+				//FIXME TODO scopeAdapter.dropSharing(_c, roomId);
 				Client c = (Client)_c;
+				/* FIXME TODO
 				IScope sc = scopeAdapter.getChildScope(roomId);
 				for (String uid : c.getStreams()) {
 					scopeAdapter.sendMessageById("quit", uid, sc);
 				}
+				*/
 				c.setRoom(null);
 				c.clear();
 				update(c);
 			}
 		}
-		*/
 		return _c;
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index f5076bb..724b6f9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.room;
 
-import static org.apache.openmeetings.db.util.RoomHelper.videoJson;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
@@ -165,9 +164,8 @@ public class RoomPanel extends BasePanel {
 			boolean hasStreams = false;
 			Client _c = getClient();
 			for (Client c: cm.listByRoom(getRoom().getId())) {
-				boolean self = _c.getUid().equals(c.getUid());
 				for (String uid : c.getStreams()) {
-					JSONObject jo = videoJson(c, self, c.getSid(), getBean(StreamClientManager.class), uid);
+					JSONObject jo = videoJson(c, c.getSid(), uid);
 					sb.append(String.format("VideoManager.play(%s);", jo));
 					hasStreams = true;
 				}
@@ -502,7 +500,7 @@ public class RoomPanel extends BasePanel {
 						boolean self = _c.getSid().equals(c.getSid());
 						StreamClientManager mgr = getBean(StreamClientManager.class);
 						if (!self || Client.Type.room != mgr.get(uid).getType()) { // stream from others or
self external video
-							JSONObject jo = videoJson(c, false, _c.getSid(), mgr, uid);
+							JSONObject jo = videoJson(c, _c.getSid(), uid);
 							handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
 						}
 						if (self) {
@@ -859,4 +857,27 @@ public class RoomPanel extends BasePanel {
 	public boolean isInterview() {
 		return interview;
 	}
+
+	public JSONObject videoJson(Client c, String sid, String uid) {
+		/*
+		TODO streams
+		StreamClient sc = mgr.get(uid);
+		if (sc == null) {
+			return new JSONObject();
+		}
+		*/
+		JSONObject o = c.toJson(getUid().equals(c.getUid()))
+				.put("sid", sid)
+				.put("uid", c.getUid())
+				 /*TODO
+				 .put("uid", sc.getUid())
+				.put("broadcastId", sc.getBroadcastId())
+				.put("width", sc.getWidth())
+				.put("height", sc.getHeight())
+				.put("type", sc.getType());
+		return addScreenActivities(o, sc);
+		*/
+				;
+		return o;
+	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
index ac99731..afcc981 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java
@@ -18,24 +18,12 @@
  */
 package org.apache.openmeetings.web.room;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_PORT;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_SECURE;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_SSL_PORT;
-import static org.apache.openmeetings.web.app.Application.NAME_ATTR_KEY;
-import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT;
 
 import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
-import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.StreamClientManager;
 import org.apache.openmeetings.web.util.ExtendedClientProperties;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
@@ -47,7 +35,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
-import com.hazelcast.core.Member;
 
 public class VideoSettings extends Panel {
 	private static final long serialVersionUID = 1L;
@@ -66,14 +53,16 @@ public class VideoSettings extends Panel {
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(SETTINGS_JS_REFERENCE)));
 	}
 
+	/* FIXME TODO
 	private static String getUri(String protocol, String host, Object port, String app) {
 		return String.format("%s://%s:%s/%s", protocol, host, port, app);
 	}
+	*/
 
 	public static JSONObject getInitJson(ExtendedClientProperties cp, Long roomId, String sid)
{
 		String scope = roomId == null ? OmFileHelper.HIBERNATE : String.valueOf(roomId);
-		JSONObject gs = OpenmeetingsVariables.getRoomSettings();
-		JSONObject s = new JSONObject(gs.toString())
+		//FIXME TODO JSONObject gs = OpenmeetingsVariables.getRoomSettings();
+		JSONObject s = new JSONObject()//FIXME TODO new JSONObject(gs.toString())
 				.put("sid", sid)
 				.put("debug", DEVELOPMENT == Application.get().getConfigurationType())
 				.put("wmode", cp.isBrowserInternetExplorer() && cp.getBrowserVersionMajor() ==
11 ? "opaque" : "direct");
@@ -81,6 +70,7 @@ public class VideoSettings extends Panel {
 			URL url = new URL(cp.getCodebase());
 			String path = url.getPath();
 			path = path.substring(1, path.indexOf('/', 2) + 1) + scope;
+			/* FIXME TODO
 			String host = getHost(roomId, url.getHost());
 			int port = url.getPort() > -1 ? url.getPort() : url.getDefaultPort();
 			if (gs.getBoolean(FLASH_SECURE)) {
@@ -90,12 +80,14 @@ public class VideoSettings extends Panel {
 				s.put(URL, getUri("rtmp", host, gs.getString(FLASH_PORT), path));
 				s.put(FALLBACK, getUri("rtmpt", host, port, path));
 			}
+			*/
 		} catch (Exception e) {
 			log.error("Error while constructing video settings parameters", e);
 		}
 		return s;
 	}
 
+	/* FIXME TODO
 	private static String getHost(Long roomId, String _host) {
 		if (roomId == null) {
 			return _host;
@@ -127,4 +119,5 @@ public class VideoSettings extends Panel {
 		}
 		return result == null ? _host : result.getAddress().getHost();
 	}
+	*/
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
index 1be25a1..7a9f0d3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
@@ -179,7 +179,6 @@ var Room = (function() {
 		}
 		if (typeof(VideoManager) === 'object') {
 			VideoManager.destroy();
-			window.VideoManager = undefined;
 		}
 		if (typeof(VideoSettings) === 'object') {
 			VideoSettings.close();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
index ed9ea1a..25e8410 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
@@ -4,10 +4,6 @@ var VideoManager = (function() {
 	let share, inited = false;
 
 /*FIXME TODO*/
-	function onNewParticipant(request) {
-		receiveVideo(request.uid);
-	}
-
 	function onVideoResponse(m) {
 		const w = $('#' + VideoUtil.getVid(m.uid))
 			, v = w.data()
@@ -49,48 +45,25 @@ var VideoManager = (function() {
 				}
 				this.generateOffer(v.offerToReceiveVideo.bind(v));
 			}));
-		// TODO FIXME msg.data.forEach(receiveVideo);
 	}
 
-	function leaveRoom() {
-		sendMessage({
-			id : 'leaveRoom'
-		});
-
-		for ( var key in participants) {
-			participants[key].dispose();
-		}
-
-		document.getElementById('join').style.display = 'block';
-		document.getElementById('room').style.display = 'none';
-	}
-
-	function receiveVideo(sender) {
-		var participant = new Participant(sender);
-		participants[sender] = participant;
-		var video = participant.getVideoElement();
-
-		var options = {
-	      remoteVideo: video,
-	      onicecandidate: participant.onIceCandidate.bind(participant)
-	    }
-
-		participant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(options,
-				function (error) {
-				  if(error) {
-					  return console.error(error);
-				  }
-				  this.generateOffer (participant.offerToReceiveVideo.bind(participant));
-		});;
-	}
-
-	function onParticipantLeft(request) {
-		console.log('Participant ' + request.uid + ' left');
-		var participant = participants[request.uid];
-		participant.dispose();
-		delete participants[request.uid];
+	function receiveVideo(uid) {
+		const w = $('#' + VideoUtil.getVid(uid))
+			, v = w.data()
+			, cl = v.client();
+		v.setPeer(new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(
+			{
+				remoteVideo: v.video()
+				, onicecandidate: v.onIceCandidate.bind(v)
+			}
+			, function (error) {
+				if(error) {
+					return console.error(error);
+				}
+				this.generateOffer(v.offerToReceiveVideo.bind(v));
+			}
+		));
 	}
-
 	/*FIXME TODO*/
 
 	function _onWsMessage(jqEvent, msg) {
@@ -106,12 +79,6 @@ var VideoManager = (function() {
 					case 'broadcast':
 						onBroadcast(m);
 						break;
-					case 'newParticipantArrived':
-						onNewParticipant(m);
-						break;
-					case 'participantLeft':
-						onParticipantLeft(m);
-						break;
 					case 'videoResponse':
 						onVideoResponse(m);
 						break;
@@ -216,6 +183,7 @@ var VideoManager = (function() {
 			});
 		} else if ('sharing' !== c.type) {
 			Video().init(c, VideoUtil.getPos(VideoUtil.getRects(VID_SEL), c.width, c.height + 25));
+			receiveVideo(c.uid);
 		}
 	}
 	function _close(uid, showShareBtn) {
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
index 6463b06..cd7cb85 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
@@ -24,7 +24,7 @@
 	<jmxConfigurator contextName="${current_openmeetings_context_name}" />
 
 	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<File>log/${current_openmeetings_context_name}.log</File>
+		<File>${current_openmeetings_log_dir}/${current_openmeetings_context_name}.log</File>
 		<Append>false</Append>
 		<Encoding>UTF-8</Encoding>
 		<BufferedIO>false</BufferedIO>
@@ -47,7 +47,7 @@
 	</appender>
 	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 		<layout class="ch.qos.logback.classic.PatternLayout">
-			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %r %L %c{15} [%.15thread] - %m%n</pattern>
+			<pattern>%highlight(%-5level) %d{MM-dd HH:mm:ss.SSS } %cyan(%c{15}:%L [%.15thread])
- %m%n</pattern>
 		</layout>
 	</appender>
 	<logger name="com.mchange.v2" level="ERROR" />
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel-remote.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel-remote.xml
deleted file mode 100644
index 25f4a7f..0000000
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel-remote.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you 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.
-
--->
-<rebel-remote>
-	<id>Openmeetings</id>
-	<url>http://localhost:5080/openmeetings/</url>
-</rebel-remote>
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
deleted file mode 100644
index a693fbe..0000000
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you 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.
-
--->
-<application
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xmlns="http://www.zeroturnaround.com"
-		xsi:schemaLocation="http://www.zeroturnaround.com https://update.zeroturnaround.com/alderaan/rebel-2_0.xsd">
-	<classpath>
-		<dir name="${project.root}/build/classes/eclipse"/>
-	</classpath>
-	<web>
-		<link target="/">
-			<dir name="${project.root}/main/webapp"/>
-		</link>
-	</web>
-</application>

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.

Mime
View raw message