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 -->
 

Reply via email to