Author: solomax
Date: Tue May 17 17:22:35 2016
New Revision: 1744295

URL: http://svn.apache.org/viewvc?rev=1744295&view=rev
Log:
[OPENMEETINGS-1403] basic support for external cameras is added

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-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/remote/rtmpConnection.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
    
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
    
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
    
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
    
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
    
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
    
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
    
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.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=1744295&r1=1744294&r2=1744295&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
 Tue May 17 17:22:35 2016
@@ -62,6 +62,7 @@ import org.apache.openmeetings.util.Init
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.Version;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.adapter.ApplicationAdapter;
 import org.red5.server.api.IClient;
@@ -165,6 +166,7 @@ public class ScopeApplicationAdapter ext
 
                Map<String, Object> map = conn.getConnectParams();
                String swfURL = map.containsKey("swfUrl") ? 
(String)map.get("swfUrl") : "";
+               String securityCode = params != null && params.length > 0 ? 
(String)params[0] : "";
 
                Client parentClient = null;
                //TODO add similar code for other connections
@@ -193,13 +195,13 @@ public class ScopeApplicationAdapter ext
                        
SessionVariablesUtil.setIsScreenClient(conn.getClient());
                        
                        rcm.setUserId(parentClient.getUserId());
-                       Long uid = rcm.getUserId();
-                       SessionVariablesUtil.setUserId(conn.getClient(), uid);
+                       Long userId = rcm.getUserId();
+                       SessionVariablesUtil.setUserId(conn.getClient(), 
userId);
 
                        rcm.setStreamPublishName(parentSid);
                        User u = null;
-                       if (uid != null) {
-                               long _uid = uid.longValue();
+                       if (userId != null) {
+                               long _uid = userId.longValue();
                                u = userDao.get(_uid < 0 ? -_uid : _uid);
                        }
                        if (u != null) {
@@ -210,6 +212,11 @@ public class ScopeApplicationAdapter ext
                        log.debug("publishName :: " + 
rcm.getStreamPublishName());
                        sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
                }
+               if (!Strings.isEmpty(securityCode)) {
+                       //FIXME TODO check if client by code is in this room
+                       rcm.setSecurityCode(securityCode);
+                       sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
+               }
 
                // Log the User
                conferenceLogDao.add(ConferenceLog.Type.clientConnect,
@@ -504,50 +511,50 @@ public class ScopeApplicationAdapter ext
         * This function is kind of private/protected as the client won't be 
able 
         * to call it with proper values.
         * 
-        * @param currentClient
-        * @param currentScope
+        * @param client
+        * @param scope
         */
-       public void roomLeaveByScope(Client currentClient, IScope currentScope, 
boolean removeUserFromSessionList) {
+       public void roomLeaveByScope(Client client, IScope scope, boolean 
removeUserFromSessionList) {
                try {
-                       log.debug("currentClient " + currentClient);
-                       Long roomId = currentClient.getRoomId();
+                       log.debug("currentClient " + client);
+                       Long roomId = client.getRoomId();
 
                        // Log the User
                        conferenceLogDao.add(ConferenceLog.Type.roomLeave,
-                                       currentClient.getUserId(), 
currentClient.getStreamid(),
-                                       roomId, currentClient.getUserip(), "");
+                                       client.getUserId(), 
client.getStreamid(),
+                                       roomId, client.getUserip(), "");
 
                        // Remove User from Sync List's
                        if (roomId != null) {
-                               
whiteBoardService.removeUserFromAllLists(currentScope, currentClient);
+                               whiteBoardService.removeUserFromAllLists(scope, 
client);
                        }
 
-                       log.debug("removing Username " + 
currentClient.getUsername() + " "
-                                       + currentClient.getConnectedSince() + " 
streamid: "
-                                       + currentClient.getStreamid());
+                       log.debug("removing Username " + client.getUsername() + 
" "
+                                       + client.getConnectedSince() + " 
streamid: "
+                                       + client.getStreamid());
 
                        // stop and save any recordings
-                       if (currentClient.getIsRecording()) {
+                       if (client.getIsRecording()) {
                                log.debug("*** roomLeave Current Client is 
Recording - stop that");
-                               if (currentClient.getInterviewPodId() != null) {
+                               if (client.getInterviewPodId() != null) {
                                        //interview, TODO need better check
-                                       _stopInterviewRecording(currentClient, 
currentScope);
+                                       _stopInterviewRecording(client, scope);
                                } else {
-                                       
recordingService.stopRecordAndSave(currentScope, currentClient, null);
+                                       
recordingService.stopRecordAndSave(scope, client, null);
 
                                        // set to true and overwrite the 
default one cause otherwise no
                                        // notification is send
-                                       currentClient.setIsRecording(true);
+                                       client.setIsRecording(true);
                                }
                        }
 
                        // Notify all clients of the same currentScope (room) 
with domain
                        // and room except the current disconnected cause it 
could throw an exception
-                       log.debug("currentScope " + currentScope);
+                       log.debug("currentScope " + scope);
 
-                       if (currentScope != null && 
currentScope.getClientConnections() != null) {
+                       if (scope != null && scope.getClientConnections() != 
null) {
                                // Notify Users of the current Scope
-                               for (IConnection cons : 
currentScope.getClientConnections()) {
+                               for (IConnection cons : 
scope.getClientConnections()) {
                                        if (cons != null && cons instanceof 
IServiceCapableConnection) {
                                                log.debug("sending 
roomDisconnect to {}  client id {}", cons, cons.getClient().getId());
 
@@ -560,16 +567,16 @@ public class ScopeApplicationAdapter ext
                                                }
                                                
                                                //Do not send back to sender, 
but actually all other clients should receive this message swagner 01.10.2009
-                                               if 
(!currentClient.getStreamid().equals(rcl.getStreamid())) {
+                                               if 
(!client.getStreamid().equals(rcl.getStreamid())) {
                                                        // add Notification if 
another user isrecording
-                                                       
log.debug("###########[roomLeave]");
+                                                       
log.debug("###########[roomLeaveByScope]");
                                                        if 
(rcl.getIsRecording()) {
                                                                log.debug("*** 
roomLeave Any Client is Recording - stop that");
-                                                               
recordingService.stopRecordingShowForClient(cons, currentClient);
+                                                               
recordingService.stopRecordingShowForClient(cons, client);
                                                        }
                                                        
                                                        boolean isScreen = 
rcl.isScreenClient();
-                                                       if (isScreen && 
currentClient.getPublicSID().equals(rcl.getStreamPublishName())) {
+                                                       if (isScreen && 
client.getPublicSID().equals(rcl.getStreamPublishName())) {
                                                                //going to 
terminate screen sharing started by this client
                                                                
((IServiceCapableConnection) cons).invoke("stopStream", new Object[] { },this);
                                                                continue;
@@ -579,7 +586,7 @@ public class ScopeApplicationAdapter ext
                                                        }
                                                        
                                                        // Send to all 
connected users
-                                                       
((IServiceCapableConnection) cons).invoke("roomDisconnect", new Object[] { 
currentClient },this);
+                                                       
((IServiceCapableConnection) cons).invoke("roomDisconnect", new Object[] { 
client },this);
                                                        log.debug("sending 
roomDisconnect to " + cons);
                                                }
                                        }
@@ -587,7 +594,7 @@ public class ScopeApplicationAdapter ext
                        }
 
                        if (removeUserFromSessionList) {
-                               
sessionManager.removeClient(currentClient.getStreamid(), null);
+                               
sessionManager.removeClient(client.getStreamid(), null);
                        }
                } catch (Exception err) {
                        log.error("[roomLeaveByScope]", err);
@@ -622,6 +629,19 @@ public class ScopeApplicationAdapter ext
                                currentClient.setScreenPublishStarted(true);
                                sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
                        }
+                       if (!Strings.isEmpty(currentClient.getSecurityCode())) {
+                               //FIXME TODO add better mechanism
+                               Client parent = 
sessionManager.getClientByPublicSID(currentClient.getSecurityCode(), null);
+                               if (parent == null || 
!parent.getScope().equals(stream.getScope().getName())) {
+                                       rejectClient();
+                                       return;
+                               }
+                               
currentClient.setBroadCastID(Long.parseLong(stream.getPublishedName()));
+                               currentClient.setIsBroadcasting(true);
+                               currentClient.setVWidth(320);
+                               currentClient.setVHeight(240);
+                               sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
+                       }
                        
                        log.debug("newStream SEND: " + currentClient);
 
@@ -841,7 +861,7 @@ public class ScopeApplicationAdapter ext
 
                        sendMessageToCurrentScope("setNewModeratorByList", 
currentMods, true);
                } catch (Exception err) {
-                       log.error("[addModerator]", err);
+                       log.error("[removeModerator]", err);
                }
                return -1L;
        }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 Tue May 17 17:22:35 2016
@@ -45,6 +45,7 @@ public class SipDao {
        private String sipPassword;
        private ManagerConnectionFactory factory;
        private ManagerConnection connection;
+       private ManagerConnection eventConnection;
 
        @SuppressWarnings("unused")
        private SipDao() {
@@ -58,6 +59,7 @@ public class SipDao {
                this.sipPassword = sipPassword;
                factory = new ManagerConnectionFactory(this.sipHostname, 
this.sipPort, this.sipUsername, this.sipPassword);
                connection = factory.createManagerConnection(); // TODO secure
+               eventConnection = factory.createManagerConnection(); // TODO 
secure
        }
 
        private ManagerResponse exec(ManagerAction action) {
@@ -65,38 +67,52 @@ public class SipDao {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login();
-                       ManagerResponse r = connection.sendAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.toString());
-                       }
-                       return (r instanceof ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing ManagerAction: 
" + action, e);
+               synchronized (connection) {
+                       try {
+                               connection.login();
+                               ManagerResponse r = 
connection.sendAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.toString());
+                               }
+                               return (r instanceof ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
ManagerAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       connection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
        }
 
        private ResponseEvents execEvent(EventGeneratingAction action) {
-               if (connection == null) {
+               if (eventConnection == null) {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login("on");
-                       ResponseEvents r = 
connection.sendEventGeneratingAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.getResponse().toString());
-                       }
-                       return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing 
EventGeneratingAction: " + action, e);
+               synchronized (eventConnection) {
+                       try {
+                               eventConnection.login("on");
+                               ResponseEvents r = 
eventConnection.sendEventGeneratingAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.getResponse().toString());
+                               }
+                               return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
EventGeneratingAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       eventConnection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
@@ -167,6 +183,6 @@ public class SipDao {
                oa.setPriority(1);
                oa.setTimeout(30000L);
 
-               ManagerResponse resp = exec(oa);
+               exec(oa); //TODO handle response
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 Tue May 17 17:22:35 2016
@@ -258,10 +258,10 @@ public class Client implements IDataProv
        private String lastLogin;
        
        /**
-        * @see Client#getOfficial_code()
+        * @see Client#getSecurityCode()
         */
-       @Column(name = "official_code")
-       private String official_code;
+       @Column(name = "security_code")
+       private String securityCode;
        
        /**
         * @see Client#getPicture_uri()
@@ -559,12 +559,12 @@ public class Client implements IDataProv
                this.email = email;
        }
 
-       public String getOfficial_code() {
-               return official_code;
+       public String getSecurityCode() {
+               return securityCode;
        }
 
-       public void setOfficial_code(String official_code) {
-               this.official_code = official_code;
+       public void setSecurityCode(String securityCode) {
+               this.securityCode = securityCode;
        }
 
        public String getPicture_uri() {

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
 Tue May 17 17:22:35 2016
@@ -476,8 +476,7 @@
                                hib.userobject.lastname = lName;
                                
                                canvas.setAttribute('lastLogin','');
-                               canvas.setAttribute('official_code','');
-                               
canvas.setAttribute('picture_uri',value.picture_uri);
+                               canvas.setAttribute('picture_uri', 
value.picture_uri);
                                canvas.setAttribute('language','');
                                
                                if (canvas.wicketroomid > 0) {
@@ -627,7 +626,6 @@
                                canvas.setAttribute('lastName', value.lastname 
== null ? "" : value.lastname);
                                canvas.setAttribute('mail','');
                                canvas.setAttribute('lastLogin','');
-                               canvas.setAttribute('official_code','');
                                canvas.setAttribute('picture_uri','');
                                canvas.setAttribute('language','');
                                canvas.setAttribute('currentuser',value.login);
@@ -635,11 +633,7 @@
                                        canvas.timeZoneId = value.timeZoneId;
                                }
                                if (value.rights != null) {
-                                       for (var i = 0; i < 
value.rights.length; ++i) {
-                                               if ('Admin' == value.rights[i]) 
{
-                                                       canvas.becomemoderator 
= true;
-                                               }
-                                       }
+                                       canvas.becomemoderator = 
value.rights.indexOf('Admin') > -1;
                                }
                                if ($debug) 
Debug.write("hibRtmpConnection::loginWicket -> canvas.becomemoderator", 
canvas.becomemoderator);
                                if (value.sessionData == null) {
@@ -737,7 +731,7 @@
                        if (value == null || value.screenClient) {
                                return;
                        }
-                       
canvas.commonVideoViewContent.startStream(value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight);
+                       canvas.commonVideoViewContent.startStream(value);
                </method> 
                   
                <netRemoteCallHib name="closeStream" funcname="closeStream">
@@ -802,7 +796,7 @@
                                if ($debug) 
Debug.write("canvas.currentBaseConferenceRoom._chatPanelStrict: ", 
canvas.currentBaseConferenceRoom._chatPanelStrict);
                                
canvas.currentBaseConferenceRoom._chatPanelStrict.closeprivatechat(["close", 
value.publicSID]);
                        }
-                       if (canvas.currentActivityList != null) {
+                       if (!value.securityCode && canvas.currentActivityList 
!= null) {
                                
canvas.currentActivityList.addMessageRequest(value, canvas.getLabelName(1367), 
new Date().getTime());
                        }
                        this.roomDisconnectUser(value, value.publicSID);

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
 Tue May 17 17:22:35 2016
@@ -246,7 +246,6 @@ the LAST RoomClient Object that has been
 <attribute name="lastName" value="" type="string" />
 <attribute name="mail" value="" type="string" />
 <attribute name="lastLogin" value="" type="string" />
-<attribute name="official_code" value="" type="string" />
 <attribute name="picture_uri" value="" type="string" />
 <attribute name="language" value="" type="string" />
 <attribute name="currentClient" value="null" />   

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/remote/rtmpConnection.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/remote/rtmpConnection.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/remote/rtmpConnection.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/base/remote/rtmpConnection.lzx
 Tue May 17 17:22:35 2016
@@ -52,7 +52,7 @@
             
             this._nc.proxyType = canvas.proxyType;
             
-            var ok = this._nc.connect(src == "null" ? null : src, false);
+            var ok = this._nc.connect(src == "null" ? null : src, "");
             if (this.debug) {
                if($debug) Debug.write("*** debug ***");
             }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
 Tue May 17 17:22:35 2016
@@ -95,7 +95,7 @@
                        vidContainer.setAttribute("height",281);
                }
                vidContainer.clientVars = object;
-               vidContainer.setAttribute('visibility','hidden');
+               vidContainer.setAttribute('visible', false);
                return vidContainer;
        </method>
 
@@ -362,29 +362,37 @@
        ]]>
        </method>
 
-       <method name="startStream" 
args="publicSID,broadcastId,firstname,lastname,interviewPodId,width,height">
-               <![CDATA[
-                       if ($debug) Debug.write("startStream: ", 
publicSID,broadcastId,firstname,lastname,interviewPodId,width,height);
-                       var obj = this.getVideoObjectByPublicSID(publicSID);
-                       //if ($debug) Debug.write("startStream obj: ",obj);
-                       if (obj != null ){
-                               
obj._chatvideoinner._videostream.playStream(broadcastId,-1);
-                               obj.setDefaultVideoSize(width,height);
-                               obj.setAttribute('chatpartnername',firstname+' 
'+lastname);
-                       }
-                       //we have to do this again when the stream starts, the 
initial video 
-                       //component does not know the interviewPodId as the 
user has not selected 
-                       //which interview video pod he is going to use
-                       if (canvas.isInterview && interviewPodId != null && 
interviewPodId > 0) {
-                               if ($debug) Debug.write("Is interview 
",interviewPodId,"x",canvas["interviewPod"+interviewPodId+"_x"]);
-                               obj.setAttribute("interviewPodId", 
interviewPodId);
-                               
obj.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
-                               
obj.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
-                               obj.setAttribute("width",322);
-                               obj.setAttribute("height",281);
-                       }
-                       return;
-               ]]>
+       <method name="startStream" args="value">
+       <![CDATA[
+               
//value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight
+               
+               if ($debug) Debug.write("startStream: ", value);
+               var obj = null;
+               if (!!value.securityCode) {
+                       obj = createVideoObject(value.publicSID, true, -1, 
value);
+                       obj.setAttribute('visible', true);
+               } else {
+                       obj = getVideoObjectByPublicSID(value.publicSID);
+               }
+               //if ($debug) Debug.write("startStream obj: ",obj);
+               if (obj != null ){
+                       
obj._chatvideoinner._videostream.playStream(value.broadCastID, -1);
+                       obj.setDefaultVideoSize(value.VWidth, value.VHeight);
+                       obj.setAttribute('chatpartnername', value.firstname + ' 
' + value.lastname);
+               }
+               //we have to do this again when the stream starts, the initial 
video 
+               //component does not know the interviewPodId as the user has 
not selected 
+               //which interview video pod he is going to use
+               var interviewPodId = value.interviewPodId;
+               if (canvas.isInterview && interviewPodId != null && 
interviewPodId > 0) {
+                       if ($debug) Debug.write("Is interview ", 
interviewPodId, "x", canvas["interviewPod" + interviewPodId + "_x"]);
+                       obj.setAttribute("interviewPodId", interviewPodId);
+                       obj.setAttribute("x",canvas["interviewPod" + 
interviewPodId + "_x"]);
+                       obj.setAttribute("y",canvas["interviewPod" + 
interviewPodId + "_y"]);
+                       obj.setAttribute("width", 322);
+                       obj.setAttribute("height", 281);
+               }
+       ]]>
        </method>
 
        <!---

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
 Tue May 17 17:22:35 2016
@@ -189,14 +189,6 @@
         ]]>
     </method>
         
-    <!--
-        invoked whenever a User starts to Stream Video in this Room,
-        interviewPodId has only a meaning in the Room Type Interview
-     -->
-    <method name="startStream" 
args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
-        
canvas.commonVideoViewContent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
-    </method>
-
     <method name="updateMuteStatusVideoView" args="roomClient">
         canvas.commonVideoViewContent.updateMuteStatusVideoView(roomClient);
     </method>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
 Tue May 17 17:22:35 2016
@@ -234,14 +234,6 @@
         canvas.commonVideoViewContent.resetAllValues();
     </method>
     
-    <!--
-        invoked whenever a User starts to Stream Video in this Room,
-        interviewPodId has only a meaning in the Room Type Interview
-     -->
-    <method name="startStream" 
args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
-        
canvas.commonVideoViewContent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
-    </method>
-    
        <method name="addClientItem" 
args="connectedSince,isMod,streamid,username,roomId,formatedDate,position,color,object">
        <![CDATA[
                if ($debug) Debug.write("### initializeStreams addClientItem: 
",connectedSince,isMod,streamid,username,roomId,formatedDate);

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
 Tue May 17 17:22:35 2016
@@ -235,14 +235,6 @@
         ]]>
     </method>
         
-    <!--
-        invoked whenever a User starts to Stream Video in this Room, 
-        interviewPodId has only a meaning in the Room Type Interview
-     -->        
-    <method name="startStream" 
args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
-        
canvas.commonVideoViewContent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
-    </method>
-
     <method name="setSpeakingByPos" args="publicSID,bool">
         canvas.commonVideoViewContent.setSpeakingByPos(publicSID, bool);
     </method>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
 Tue May 17 17:22:35 2016
@@ -119,7 +119,6 @@
                        canvas.setAttribute('firstName', fName);
                        canvas.setAttribute('lastName', lName);
                        canvas.setAttribute('lastLogin', invitee.lastlogin);
-                       canvas.setAttribute('official_code','');
                        canvas.setAttribute('picture_uri', invitee.pictureuri);
                        canvas.setAttribute('language', invitee.language_id);
                        

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 Tue May 17 17:22:35 2016
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.ut
 import java.io.Serializable;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.crypt.MD5Implementation;
+import org.apache.openmeetings.util.crypt.SHA256Implementation;
 
 public class InstallationConfig implements Serializable {
        private static final long serialVersionUID = 1L;
@@ -37,7 +37,7 @@ public class InstallationConfig implemen
        public String createDefaultRooms = "1";
        public String ical_timeZone = "Europe/Berlin";
        
-       public String cryptClassName = 
MD5Implementation.class.getCanonicalName();
+       public String cryptClassName = 
SHA256Implementation.class.getCanonicalName();
        //email
        public Integer smtpPort = 25;
        public String smtpServer = "localhost";

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Tue May 17 17:22:35 2016
@@ -422,7 +422,7 @@ public class WebSession extends Abstract
                if (browserTz == null) {
                        try {
                                browserTz = 
getClientInfo().getProperties().getTimeZone();
-                               if 
(!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
+                               if (browserTz != null && 
!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
                                        for (String availableID : 
AVAILABLE_TIMEZONES) {
                                                TimeZone zone = 
TimeZone.getTimeZone(availableID);
                                                if 
(zone.hasSameRules(browserTz)) {
@@ -433,6 +433,9 @@ public class WebSession extends Abstract
                                }
                                _zone = browserTz;
                        } catch (Exception e) {
+                               //no-op
+                       }
+                       if (browserTz == null) {
                                _zone = 
Calendar.getInstance(getBrowserLocale()).getTimeZone();
                        }
                }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Tue May 17 17:22:35 2016
@@ -166,6 +166,7 @@ public class ScopeApplicationAdapter ext
                String swfURL = map.containsKey("swfUrl") ? 
(String)map.get("swfUrl") : "";
                String tcUrl = map.containsKey("tcUrl") ? 
(String)map.get("tcUrl") : "";
                String uid = params != null && params.length > 0 ? 
(String)params[0] : "";
+               String securityCode = null;//FIXME TODO should named 
parameter!!!! params != null && params.length > 0 ? (String)params[0] : "";
 
                Client parentClient = null;
                //TODO add similar code for other connections
@@ -224,6 +225,11 @@ public class ScopeApplicationAdapter ext
                        log.debug("publishName :: " + 
rcm.getStreamPublishName());
                        sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
                }
+               if (!Strings.isEmpty(securityCode)) {
+                       //FIXME TODO check if client by code is in this room
+                       rcm.setSecurityCode(securityCode);
+                       sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
+               }
 
                // Log the User
                conferenceLogDao.add(ConferenceLog.Type.clientConnect,
@@ -641,6 +647,19 @@ public class ScopeApplicationAdapter ext
                                currentClient.setScreenPublishStarted(true);
                                sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
                        }
+                       if (!Strings.isEmpty(currentClient.getSecurityCode())) {
+                               //FIXME TODO add better mechanism
+                               Client parent = 
sessionManager.getClientByPublicSID(currentClient.getSecurityCode(), null);
+                               if (parent == null || 
!parent.getScope().equals(stream.getScope().getName())) {
+                                       rejectClient();
+                                       return;
+                               }
+                               
currentClient.setBroadCastID(Long.parseLong(stream.getPublishedName()));
+                               currentClient.setIsBroadcasting(true);
+                               currentClient.setVWidth(320);
+                               currentClient.setVHeight(240);
+                               sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
+                       }
                        
                        log.debug("newStream SEND: " + currentClient);
 

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 Tue May 17 17:22:35 2016
@@ -45,6 +45,7 @@ public class SipDao {
        private String sipPassword;
        private ManagerConnectionFactory factory;
        private ManagerConnection connection;
+       private ManagerConnection eventConnection;
 
        @SuppressWarnings("unused")
        private SipDao() {
@@ -58,6 +59,7 @@ public class SipDao {
                this.sipPassword = sipPassword;
                factory = new ManagerConnectionFactory(this.sipHostname, 
this.sipPort, this.sipUsername, this.sipPassword);
                connection = factory.createManagerConnection(); // TODO secure
+               eventConnection = factory.createManagerConnection(); // TODO 
secure
        }
 
        private ManagerResponse exec(ManagerAction action) {
@@ -65,38 +67,52 @@ public class SipDao {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login();
-                       ManagerResponse r = connection.sendAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.toString());
-                       }
-                       return (r instanceof ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing ManagerAction: 
" + action, e);
+               synchronized (connection) {
+                       try {
+                               connection.login();
+                               ManagerResponse r = 
connection.sendAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.toString());
+                               }
+                               return (r instanceof ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
ManagerAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       connection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
        }
 
        private ResponseEvents execEvent(EventGeneratingAction action) {
-               if (connection == null) {
+               if (eventConnection == null) {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login("on");
-                       ResponseEvents r = 
connection.sendEventGeneratingAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.getResponse().toString());
-                       }
-                       return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing 
EventGeneratingAction: " + action, e);
+               synchronized (eventConnection) {
+                       try {
+                               eventConnection.login("on");
+                               ResponseEvents r = 
eventConnection.sendEventGeneratingAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.getResponse().toString());
+                               }
+                               return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
EventGeneratingAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       eventConnection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
@@ -167,6 +183,6 @@ public class SipDao {
                oa.setPriority(1);
                oa.setTimeout(30000L);
 
-               ManagerResponse resp = exec(oa);
+               exec(oa); //TODO handle response
        }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 Tue May 17 17:22:35 2016
@@ -258,10 +258,10 @@ public class Client implements IDataProv
        private String lastLogin;
        
        /**
-        * @see Client#getOfficial_code()
+        * @see Client#getSecurityCode()
         */
-       @Column(name = "official_code")
-       private String official_code;
+       @Column(name = "security_code")
+       private String securityCode;
        
        /**
         * @see Client#getPicture_uri()
@@ -562,12 +562,12 @@ public class Client implements IDataProv
                this.email = email;
        }
 
-       public String getOfficial_code() {
-               return official_code;
+       public String getSecurityCode() {
+               return securityCode;
        }
 
-       public void setOfficial_code(String official_code) {
-               this.official_code = official_code;
+       public void setSecurityCode(String securityCode) {
+               this.securityCode = securityCode;
        }
 
        public String getPicture_uri() {

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
 Tue May 17 17:22:35 2016
@@ -34,7 +34,7 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
-@Table(name = "sipuser")
+@Table(name = "sipusers")
 @Root(name="asterisksipuser")
 public class AsteriskSipUser implements Serializable {
        private static final long serialVersionUID = 1L;

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
 Tue May 17 17:22:35 2016
@@ -457,7 +457,6 @@
                                hib.userobject.lastname = lName;
                                
                                canvas.setAttribute('lastLogin','');
-                               canvas.setAttribute('official_code','');
                                
canvas.setAttribute('picture_uri',value.picture_uri);
                                canvas.setAttribute('language','');
                                
@@ -607,7 +606,6 @@
                                canvas.setAttribute('lastName', value.lastname 
== null ? "" : value.lastname);
                                canvas.setAttribute('mail','');
                                canvas.setAttribute('lastLogin','');
-                               canvas.setAttribute('official_code','');
                                canvas.setAttribute('picture_uri','');
                                canvas.setAttribute('language','');
                                canvas.setAttribute('currentuser',value.login);
@@ -706,7 +704,7 @@
                        if (value == null || value.screenClient) {
                                return;
                        }
-                       
canvas.commonVideoViewContent.startStream(value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight);
+                       canvas.commonVideoViewContent.startStream(value);
                </method> 
                   
                <netRemoteCallHib name="closeStream" funcname="closeStream">

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainAttributes.lzx
 Tue May 17 17:22:35 2016
@@ -246,7 +246,6 @@ the LAST RoomClient Object that has been
 <attribute name="lastName" value="" type="string" />
 <attribute name="mail" value="" type="string" />
 <attribute name="lastLogin" value="" type="string" />
-<attribute name="official_code" value="" type="string" />
 <attribute name="picture_uri" value="" type="string" />
 <attribute name="language" value="" type="string" />
 <attribute name="currentClient" value="null" />   

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
 Tue May 17 17:22:35 2016
@@ -95,7 +95,7 @@
                        vidContainer.setAttribute("height",281);
                }
                vidContainer.clientVars = object;
-               vidContainer.setAttribute('visibility','hidden');
+               vidContainer.setAttribute('visible', false);
                return vidContainer;
        </method>
 
@@ -362,29 +362,37 @@
        ]]>
        </method>
 
-       <method name="startStream" 
args="publicSID,broadcastId,firstname,lastname,interviewPodId,width,height">
-               <![CDATA[
-                       if ($debug) Debug.write("startStream: ", 
publicSID,broadcastId,firstname,lastname,interviewPodId,width,height);
-                       var obj = this.getVideoObjectByPublicSID(publicSID);
-                       //if ($debug) Debug.write("startStream obj: ",obj);
-                       if (obj != null ){
-                               
obj._chatvideoinner._videostream.playStream(broadcastId,-1);
-                               obj.setDefaultVideoSize(width,height);
-                               obj.setAttribute('chatpartnername',firstname+' 
'+lastname);
-                       }
-                       //we have to do this again when the stream starts, the 
initial video 
-                       //component does not know the interviewPodId as the 
user has not selected 
-                       //which interview video pod he is going to use
-                       if (canvas.isInterview && interviewPodId != null && 
interviewPodId > 0) {
-                               if ($debug) Debug.write("Is interview 
",interviewPodId,"x",canvas["interviewPod"+interviewPodId+"_x"]);
-                               obj.setAttribute("interviewPodId", 
interviewPodId);
-                               
obj.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
-                               
obj.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
-                               obj.setAttribute("width",322);
-                               obj.setAttribute("height",281);
-                       }
-                       return;
-               ]]>
+       <method name="startStream" args="value">
+       <![CDATA[
+               
//value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight
+               
+               if ($debug) Debug.write("startStream: ", value);
+               var obj = null;
+               if (!!value.securityCode) {
+                       obj = createVideoObject(value.publicSID, true, -1, 
value);
+                       obj.setAttribute('visible', true);
+               } else {
+                       obj = getVideoObjectByPublicSID(value.publicSID);
+               }
+               //if ($debug) Debug.write("startStream obj: ",obj);
+               if (obj != null ){
+                       
obj._chatvideoinner._videostream.playStream(value.broadCastID, -1);
+                       obj.setDefaultVideoSize(value.VWidth, value.VHeight);
+                       obj.setAttribute('chatpartnername', value.firstname + ' 
' + value.lastname);
+               }
+               //we have to do this again when the stream starts, the initial 
video 
+               //component does not know the interviewPodId as the user has 
not selected 
+               //which interview video pod he is going to use
+               var interviewPodId = value.interviewPodId;
+               if (canvas.isInterview && interviewPodId != null && 
interviewPodId > 0) {
+                       if ($debug) Debug.write("Is interview ", 
interviewPodId, "x", canvas["interviewPod" + interviewPodId + "_x"]);
+                       obj.setAttribute("interviewPodId", interviewPodId);
+                       obj.setAttribute("x",canvas["interviewPod" + 
interviewPodId + "_x"]);
+                       obj.setAttribute("y",canvas["interviewPod" + 
interviewPodId + "_y"]);
+                       obj.setAttribute("width", 322);
+                       obj.setAttribute("height", 281);
+               }
+       ]]>
        </method>
 
        <!---

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
 Tue May 17 17:22:35 2016
@@ -100,7 +100,6 @@
                        canvas.setAttribute('firstName', fName);
                        canvas.setAttribute('lastName', lName);
                        canvas.setAttribute('lastLogin', invitee.lastlogin);
-                       canvas.setAttribute('official_code','');
                        canvas.setAttribute('picture_uri', invitee.pictureuri);
                        canvas.setAttribute('language', invitee.language_id);
                        

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 Tue May 17 17:22:35 2016
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.ut
 import java.io.Serializable;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.crypt.MD5Implementation;
+import org.apache.openmeetings.util.crypt.SHA256Implementation;
 
 public class InstallationConfig implements Serializable {
        private static final long serialVersionUID = 1L;
@@ -37,7 +37,7 @@ public class InstallationConfig implemen
        public String createDefaultRooms = "1";
        public String ical_timeZone = "Europe/Berlin";
        
-       public String cryptClassName = 
MD5Implementation.class.getCanonicalName();
+       public String cryptClassName = 
SHA256Implementation.class.getCanonicalName();
        //email
        public Integer smtpPort = 25;
        public String smtpServer = "localhost";

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Tue May 17 17:22:35 2016
@@ -422,7 +422,7 @@ public class WebSession extends Abstract
                if (browserTz == null) {
                        try {
                                browserTz = 
getClientInfo().getProperties().getTimeZone();
-                               if 
(!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
+                               if (browserTz != null && 
!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
                                        for (String availableID : 
AVAILABLE_TIMEZONES) {
                                                TimeZone zone = 
TimeZone.getTimeZone(availableID);
                                                if 
(zone.hasSameRules(browserTz)) {
@@ -433,6 +433,9 @@ public class WebSession extends Abstract
                                }
                                _zone = browserTz;
                        } catch (Exception e) {
+                               //no-op
+                       }
+                       if (browserTz == null) {
                                _zone = 
Calendar.getInstance(getBrowserLocale()).getTimeZone();
                        }
                }

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=1744295&r1=1744294&r2=1744295&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
 Tue May 17 17:22:35 2016
@@ -166,6 +166,7 @@ public class ScopeApplicationAdapter ext
                String swfURL = map.containsKey("swfUrl") ? 
(String)map.get("swfUrl") : "";
                String tcUrl = map.containsKey("tcUrl") ? 
(String)map.get("tcUrl") : "";
                String uid = params != null && params.length > 0 ? 
(String)params[0] : "";
+               String securityCode = null;//FIXME TODO should named 
parameter!!!! params != null && params.length > 0 ? (String)params[0] : "";
 
                Client parentClient = null;
                //TODO add similar code for other connections
@@ -224,6 +225,11 @@ public class ScopeApplicationAdapter ext
                        log.debug("publishName :: " + 
rcm.getStreamPublishName());
                        sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
                }
+               if (!Strings.isEmpty(securityCode)) {
+                       //FIXME TODO check if client by code is in this room
+                       rcm.setSecurityCode(securityCode);
+                       sessionManager.updateClientByStreamId(streamId, rcm, 
false, null);
+               }
 
                // Log the User
                conferenceLogDao.add(ConferenceLog.Type.clientConnect,
@@ -641,6 +647,19 @@ public class ScopeApplicationAdapter ext
                                currentClient.setScreenPublishStarted(true);
                                sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
                        }
+                       if (!Strings.isEmpty(currentClient.getSecurityCode())) {
+                               //FIXME TODO add better mechanism
+                               Client parent = 
sessionManager.getClientByPublicSID(currentClient.getSecurityCode(), null);
+                               if (parent == null || 
!parent.getScope().equals(stream.getScope().getName())) {
+                                       rejectClient();
+                                       return;
+                               }
+                               
currentClient.setBroadCastID(Long.parseLong(stream.getPublishedName()));
+                               currentClient.setIsBroadcasting(true);
+                               currentClient.setVWidth(320);
+                               currentClient.setVHeight(240);
+                               sessionManager.updateClientByStreamId(streamid, 
currentClient, false, null);
+                       }
                        
                        log.debug("newStream SEND: " + currentClient);
 

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
 Tue May 17 17:22:35 2016
@@ -45,6 +45,7 @@ public class SipDao {
        private String sipPassword;
        private ManagerConnectionFactory factory;
        private ManagerConnection connection;
+       private ManagerConnection eventConnection;
 
        @SuppressWarnings("unused")
        private SipDao() {
@@ -58,6 +59,7 @@ public class SipDao {
                this.sipPassword = sipPassword;
                factory = new ManagerConnectionFactory(this.sipHostname, 
this.sipPort, this.sipUsername, this.sipPassword);
                connection = factory.createManagerConnection(); // TODO secure
+               eventConnection = factory.createManagerConnection(); // TODO 
secure
        }
 
        private ManagerResponse exec(ManagerAction action) {
@@ -65,38 +67,52 @@ public class SipDao {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login();
-                       ManagerResponse r = connection.sendAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.toString());
-                       }
-                       return (r instanceof ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing ManagerAction: 
" + action, e);
+               synchronized (connection) {
+                       try {
+                               connection.login();
+                               ManagerResponse r = 
connection.sendAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.toString());
+                               }
+                               return (r instanceof ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
ManagerAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       connection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
        }
 
        private ResponseEvents execEvent(EventGeneratingAction action) {
-               if (connection == null) {
+               if (eventConnection == null) {
                        log.warn("There is no Asterisk configured");
                        return null;
                }
-               try {
-                       connection.login("on");
-                       ResponseEvents r = 
connection.sendEventGeneratingAction(action);
-                       connection.logoff();
-                       if (log.isDebugEnabled() && r != null) {
-                               log.debug(r.getResponse().toString());
-                       }
-                       return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
-               } catch (Exception e) {
-                       if (log.isDebugEnabled()) {
-                               log.error("Error while executing 
EventGeneratingAction: " + action, e);
+               synchronized (eventConnection) {
+                       try {
+                               eventConnection.login("on");
+                               ResponseEvents r = 
eventConnection.sendEventGeneratingAction(action);
+                               if (log.isDebugEnabled() && r != null) {
+                                       log.debug(r.getResponse().toString());
+                               }
+                               return (r == null || r.getResponse() instanceof 
ManagerError) ? null : r;
+                       } catch (Exception e) {
+                               if (log.isDebugEnabled()) {
+                                       log.error("Error while executing 
EventGeneratingAction: " + action, e);
+                               }
+                       } finally {
+                               try {
+                                       eventConnection.logoff();
+                               } catch (Exception e) {
+                                       // no-op
+                               }
                        }
                }
                return null;
@@ -167,6 +183,6 @@ public class SipDao {
                oa.setPriority(1);
                oa.setTimeout(30000L);
 
-               ManagerResponse resp = exec(oa);
+               exec(oa); //TODO handle response
        }
 }

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Client.java
 Tue May 17 17:22:35 2016
@@ -258,10 +258,10 @@ public class Client implements IDataProv
        private String lastLogin;
        
        /**
-        * @see Client#getOfficial_code()
+        * @see Client#getSecurityCode()
         */
-       @Column(name = "official_code")
-       private String official_code;
+       @Column(name = "security_code")
+       private String securityCode;
        
        /**
         * @see Client#getPicture_uri()
@@ -562,12 +562,12 @@ public class Client implements IDataProv
                this.email = email;
        }
 
-       public String getOfficial_code() {
-               return official_code;
+       public String getSecurityCode() {
+               return securityCode;
        }
 
-       public void setOfficial_code(String official_code) {
-               this.official_code = official_code;
+       public void setSecurityCode(String securityCode) {
+               this.securityCode = securityCode;
        }
 
        public String getPicture_uri() {

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
 Tue May 17 17:22:35 2016
@@ -34,7 +34,7 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
-@Table(name = "sipuser")
+@Table(name = "sipusers")
 @Root(name="asterisksipuser")
 public class AsteriskSipUser implements Serializable {
        private static final long serialVersionUID = 1L;

Modified: 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/InstallationConfig.java
 Tue May 17 17:22:35 2016
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.ut
 import java.io.Serializable;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.crypt.MD5Implementation;
+import org.apache.openmeetings.util.crypt.SHA256Implementation;
 
 public class InstallationConfig implements Serializable {
        private static final long serialVersionUID = 1L;
@@ -37,7 +37,7 @@ public class InstallationConfig implemen
        public String createDefaultRooms = "1";
        public String ical_timeZone = "Europe/Berlin";
        
-       public String cryptClassName = 
MD5Implementation.class.getCanonicalName();
+       public String cryptClassName = 
SHA256Implementation.class.getCanonicalName();
        //email
        public Integer smtpPort = 25;
        public String smtpServer = "localhost";

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1744295&r1=1744294&r2=1744295&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Tue May 17 17:22:35 2016
@@ -422,7 +422,7 @@ public class WebSession extends Abstract
                if (browserTz == null) {
                        try {
                                browserTz = 
getClientInfo().getProperties().getTimeZone();
-                               if 
(!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
+                               if (browserTz != null && 
!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
                                        for (String availableID : 
AVAILABLE_TIMEZONES) {
                                                TimeZone zone = 
TimeZone.getTimeZone(availableID);
                                                if 
(zone.hasSameRules(browserTz)) {
@@ -433,6 +433,9 @@ public class WebSession extends Abstract
                                }
                                _zone = browserTz;
                        } catch (Exception e) {
+                               //no-op
+                       }
+                       if (browserTz == null) {
                                _zone = 
Calendar.getInstance(getBrowserLocale()).getTimeZone();
                        }
                }


Reply via email to