You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/04/30 17:29:41 UTC

[29/50] [abbrv] openmeetings git commit: [OPENMEETINGS-551] screen-sharing is displayed in room

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e7bab5bc/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
index bf8c141..64801fa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
@@ -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.util.OpenmeetingsVariables.CONFIG_SCREENSH
 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 OmButton {
 			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 OmButton {
 					.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 OmButton {
 		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);
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e7bab5bc/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index ffbfc79..2b9e9e4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -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;
 })();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e7bab5bc/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 62aaf2d..168bea9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -27,7 +27,7 @@ import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
 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;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e7bab5bc/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index a4ade15..dce1914 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -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 -->