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 2016/02/25 10:41:30 UTC

svn commit: r1732269 - in /openmeetings/application: branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/ branches/3.1.x/...

Author: solomax
Date: Thu Feb 25 09:41:30 2016
New Revision: 1732269

URL: http://svn.apache.org/viewvc?rev=1732269&view=rev
Log:
[OPENMEETINGS-1333] Screen sharing can be started by contact, recording is disabled

Modified:
    openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
    openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
    openmeetings/application/trunk/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java

Modified: openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Thu Feb 25 09:41:30 2016
@@ -161,10 +161,11 @@ public class ScopeApplicationAdapter ext
 		Map<String, Object> map = conn.getConnectParams();
 		String swfURL = map.containsKey("swfUrl") ? (String)map.get("swfUrl") : "";
 
+		Client parentClient = null;
 		//TODO add similar code for other connections
 		if (map.containsKey("screenClient")) {
 			String parentSid = (String)map.get("parentSid");
-			Client parentClient = sessionManager.getClientByPublicSID(parentSid, null);
+			parentClient = sessionManager.getClientByPublicSID(parentSid, null);
 			if (parentClient == null) {
 				rejectClient();
 			}
@@ -181,12 +182,12 @@ public class ScopeApplicationAdapter ext
 		//TODO add similar code for other connections, merge with above block
 		if (map.containsKey("screenClient")) {
 			//TODO add check for room rights
-			String parentSid = (String)map.get("parentSid");
+			String parentSid = parentClient.getPublicSID();
 			rcm.setRoomId(Long.valueOf(conn.getScope().getName()));
 			rcm.setScreenClient(true);
 			SessionVariablesUtil.setIsScreenClient(conn.getClient());
 			
-			rcm.setUserId(new Long((Integer)map.get("userId")));
+			rcm.setUserId(parentClient.getUserId());
 			SessionVariablesUtil.setUserId(conn.getClient(), rcm.getUserId());
 
 			rcm.setStreamPublishName(parentSid);
@@ -362,11 +363,9 @@ public class ScopeApplicationAdapter ext
 					returnMap.put("modus", "startPublishing");
 				}
 				return returnMap;
-
 			} else {
-				throw new Exception("Could not find Screen Sharing Client " + current.getClient().getId());
+				log.error("[setConnectionAsSharingClient] Could not find Screen Sharing Client " + current.getClient().getId());
 			}
-
 		} catch (Exception err) {
 			log.error("[setConnectionAsSharingClient]", err);
 		}

Modified: openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java Thu Feb 25 09:41:30 2016
@@ -81,7 +81,6 @@ public class CoreScreenShare implements
 	public boolean showFPS = true;
 	public boolean allowRemote = true;
 
-	public Long userId = null;
 	private boolean allowRecording = true;
 	private boolean allowPublishing = true;
 
@@ -115,23 +114,22 @@ public class CoreScreenShare implements
 				log.debug("arg: " + arg);
 			}
 			String[] textArray = null;
-			if (args.length > 9) {
+			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();
-				userId = Long.parseLong(args[1]);
-				publishName = args[2];
-				String labelTexts = args[3];
-				defaultQuality = Integer.parseInt(args[4]);
-				defaultFPS = Integer.parseInt(args[5]);
-				showFPS = bool(args[6]);
-				allowRemote = bool(args[7]);
+				publishName = args[1];
+				String labelTexts = args[2];
+				defaultQuality = Integer.parseInt(args[3]);
+				defaultFPS = Integer.parseInt(args[4]);
+				showFPS = bool(args[5]);
+				allowRemote = bool(args[6]);
 				remoteEnabled = allowRemote;
-				allowRecording = bool(args[8]);
-				allowPublishing = bool(args[9]);
+				allowRecording = bool(args[7]);
+				allowPublishing = bool(args[8]);
 
 				if (labelTexts.length() > 0) {
 					textArray = labelTexts.split(";");
@@ -153,8 +151,8 @@ public class CoreScreenShare implements
 						break;
 					case rtmps:
 						RTMPSScreenShare client = new RTMPSScreenShare(this);
-						client.setKeystoreBytes(Hex.decodeHex(args[10].toCharArray()));
-						client.setKeyStorePassword(args[11]);
+						client.setKeystoreBytes(Hex.decodeHex(args[9].toCharArray()));
+						client.setKeyStorePassword(args[10]);
 						instance = client;
 						break;
 					case rtmpe:
@@ -273,7 +271,6 @@ public class CoreScreenShare implements
 	private void connect(String parentSid) {
 		Map<String, Object> map = instance.makeDefaultConnectionParams(host, port, app);
 		map.put("screenClient", true);
-		map.put("userId", userId);
 		map.put("parentSid", parentSid);
 		instance.connect(host, port, map, this);
 	}
@@ -677,11 +674,9 @@ public class CoreScreenShare implements
 					Object modus = returnMap.get("modus");
 					if ("startStreaming".equals(modus)) {
 						frame.setSharingStatus(true, false);
-					}
-					if ("startRecording".equals(modus)) {
+					} else if ("startRecording".equals(modus)) {
 						frame.setRecordingStatus(true, false);
-					}
-					if ("startPublishing".equals(modus)) {
+					} else if ("startPublishing".equals(modus)) {
 						frame.setPublishingStatus(true, false);
 						publishClient = new RTMPClientPublish(
 							this
@@ -691,9 +686,10 @@ public class CoreScreenShare implements
 						publishClient.connect();
 					}
 				} else {
-					throw new Exception("Could not aquire modus for event setConnectionAsSharingClient");
+					String err = "Could not aquire modus for event setConnectionAsSharingClient";
+					frame.setStatus(String.format("Error: %s", err));
+					return;
 				}
-
 			} else if ("createStream".equals(method)) {
 				if (startRecording || startStreaming) {
 					if (call.getResult() != null) {

Modified: openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-screenshare/src/main/jnlp/templates/template.jnlp Thu Feb 25 09:41:30 2016
@@ -37,7 +37,6 @@
 	</resources>
 	<application-desc main-class='$mainClass'>
 		<argument>$url</argument>
-		<argument>$userId</argument>
 		<argument>$publicSid</argument>
 		<argument>$labels</argument>
 		<argument>$defaultQuality</argument>

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java Thu Feb 25 09:41:30 2016
@@ -25,7 +25,6 @@ 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.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
 import static org.apache.openmeetings.web.room.RoomPanel.PARAM_PUBLIC_SID;
 import static org.apache.openmeetings.web.room.RoomPanel.PARAM_URL;
@@ -111,7 +110,6 @@ public class StartSharingEventBehavior e
 			app = addKeystore(app, protocol).replace("$codebase", baseUrl + "screenshare")
 					.replace("$applicationName", cfgDao.getAppName())
 					.replace("$url", _url)
-					.replace("$userId", "" + getUserId())
 					.replace("$publicSid", publicSid)
 					.replace("$labels", "<![CDATA[" + getLabels(730,  731,  732,  733,  734
 							,  735,  737,  738,  739,  740
@@ -125,7 +123,7 @@ public class StartSharingEventBehavior e
 					.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", "" + (room.isAllowRecording() && rc.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
+					.replace("$allowRecording", "" + (rc.getUserId() > 0 && room.isAllowRecording() && rc.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
 					.replace("$allowPublishing", "" + (0 == sessionManager.getPublishingCount(roomId)))
 					;
 		} catch (Exception e) {

Modified: 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/red5/ScopeApplicationAdapter.java?rev=1732269&r1=1732268&r2=1732269&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/red5/ScopeApplicationAdapter.java Thu Feb 25 09:41:30 2016
@@ -152,10 +152,11 @@ public class ScopeApplicationAdapter ext
 		Map<String, Object> map = conn.getConnectParams();
 		String swfURL = map.containsKey("swfUrl") ? (String)map.get("swfUrl") : "";
 
+		Client parentClient = null;
 		//TODO add similar code for other connections
 		if (map.containsKey("screenClient")) {
 			String parentSid = (String)map.get("parentSid");
-			Client parentClient = sessionManager.getClientByPublicSID(parentSid, null);
+			parentClient = sessionManager.getClientByPublicSID(parentSid, null);
 			if (parentClient == null) {
 				rejectClient();
 			}
@@ -172,12 +173,12 @@ public class ScopeApplicationAdapter ext
 		//TODO add similar code for other connections, merge with above block
 		if (map.containsKey("screenClient")) {
 			//TODO add check for room rights
-			String parentSid = (String)map.get("parentSid");
+			String parentSid = parentClient.getPublicSID();
 			rcm.setRoomId(Long.valueOf(conn.getScope().getName()));
 			rcm.setScreenClient(true);
 			SessionVariablesUtil.setIsScreenClient(conn.getClient());
 			
-			rcm.setUserId(new Long((Integer)map.get("userId")));
+			rcm.setUserId(parentClient.getUserId());
 			SessionVariablesUtil.setUserId(conn.getClient(), rcm.getUserId());
 
 			rcm.setStreamPublishName(parentSid);
@@ -353,11 +354,9 @@ public class ScopeApplicationAdapter ext
 					returnMap.put("modus", "startPublishing");
 				}
 				return returnMap;
-
 			} else {
-				throw new Exception("Could not find Screen Sharing Client " + current.getClient().getId());
+				log.error("[setConnectionAsSharingClient] Could not find Screen Sharing Client " + current.getClient().getId());
 			}
-
 		} catch (Exception err) {
 			log.error("[setConnectionAsSharingClient]", err);
 		}

Modified: openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java (original)
+++ openmeetings/application/trunk/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java Thu Feb 25 09:41:30 2016
@@ -81,7 +81,6 @@ public class CoreScreenShare implements
 	public boolean showFPS = true;
 	public boolean allowRemote = true;
 
-	public Long userId = null;
 	private boolean allowRecording = true;
 	private boolean allowPublishing = true;
 
@@ -115,23 +114,22 @@ public class CoreScreenShare implements
 				log.debug("arg: " + arg);
 			}
 			String[] textArray = null;
-			if (args.length > 9) {
+			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();
-				userId = Long.parseLong(args[1]);
-				publishName = args[2];
-				String labelTexts = args[3];
-				defaultQuality = Integer.parseInt(args[4]);
-				defaultFPS = Integer.parseInt(args[5]);
-				showFPS = bool(args[6]);
-				allowRemote = bool(args[7]);
+				publishName = args[1];
+				String labelTexts = args[2];
+				defaultQuality = Integer.parseInt(args[3]);
+				defaultFPS = Integer.parseInt(args[4]);
+				showFPS = bool(args[5]);
+				allowRemote = bool(args[6]);
 				remoteEnabled = allowRemote;
-				allowRecording = bool(args[8]);
-				allowPublishing = bool(args[9]);
+				allowRecording = bool(args[7]);
+				allowPublishing = bool(args[8]);
 
 				if (labelTexts.length() > 0) {
 					textArray = labelTexts.split(";");
@@ -153,8 +151,8 @@ public class CoreScreenShare implements
 						break;
 					case rtmps:
 						RTMPSScreenShare client = new RTMPSScreenShare(this);
-						client.setKeystoreBytes(Hex.decodeHex(args[10].toCharArray()));
-						client.setKeyStorePassword(args[11]);
+						client.setKeystoreBytes(Hex.decodeHex(args[9].toCharArray()));
+						client.setKeyStorePassword(args[10]);
 						instance = client;
 						break;
 					case rtmpe:
@@ -273,7 +271,6 @@ public class CoreScreenShare implements
 	private void connect(String parentSid) {
 		Map<String, Object> map = instance.makeDefaultConnectionParams(host, port, app);
 		map.put("screenClient", true);
-		map.put("userId", userId);
 		map.put("parentSid", parentSid);
 		instance.connect(host, port, map, this);
 	}
@@ -677,11 +674,9 @@ public class CoreScreenShare implements
 					Object modus = returnMap.get("modus");
 					if ("startStreaming".equals(modus)) {
 						frame.setSharingStatus(true, false);
-					}
-					if ("startRecording".equals(modus)) {
+					} else if ("startRecording".equals(modus)) {
 						frame.setRecordingStatus(true, false);
-					}
-					if ("startPublishing".equals(modus)) {
+					} else if ("startPublishing".equals(modus)) {
 						frame.setPublishingStatus(true, false);
 						publishClient = new RTMPClientPublish(
 							this
@@ -691,9 +686,10 @@ public class CoreScreenShare implements
 						publishClient.connect();
 					}
 				} else {
-					throw new Exception("Could not aquire modus for event setConnectionAsSharingClient");
+					String err = "Could not aquire modus for event setConnectionAsSharingClient";
+					frame.setStatus(String.format("Error: %s", err));
+					return;
 				}
-
 			} else if ("createStream".equals(method)) {
 				if (startRecording || startStreaming) {
 					if (call.getResult() != null) {

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=1732269&r1=1732268&r2=1732269&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 Thu Feb 25 09:41:30 2016
@@ -37,7 +37,6 @@
 	</resources>
 	<application-desc main-class='$mainClass'>
 		<argument>$url</argument>
-		<argument>$userId</argument>
 		<argument>$publicSid</argument>
 		<argument>$labels</argument>
 		<argument>$defaultQuality</argument>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java?rev=1732269&r1=1732268&r2=1732269&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java Thu Feb 25 09:41:30 2016
@@ -25,7 +25,6 @@ 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.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
 
 import java.io.File;
@@ -110,7 +109,6 @@ public class StartSharingEventBehavior e
 			app = addKeystore(app, protocol).replace("$codebase", baseUrl + "screenshare")
 					.replace("$applicationName", cfgDao.getAppName())
 					.replace("$url", _url)
-					.replace("$userId", "" + getUserId())
 					.replace("$publicSid", publicSid)
 					.replace("$labels", "<![CDATA[" + getLabels(730,  731,  732,  733,  734
 							,  735,  737,  738,  739,  740
@@ -124,7 +122,7 @@ public class StartSharingEventBehavior e
 					.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", "" + (room.isAllowRecording() && rc.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
+					.replace("$allowRecording", "" + (rc.getUserId() > 0 && room.isAllowRecording() && rc.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
 					.replace("$allowPublishing", "" + (0 == sessionManager.getPublishingCount(roomId)))
 					;
 		} catch (Exception e) {