Author: seba.wagner
Date: Sat Sep 20 01:53:50 2008
New Revision: 1555

Modified:
    trunk/webapp/filetest.keystore
    trunk/webapp/src/app/org/openmeetings/app/remote/Application.java
     
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
     
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java
     
trunk/webapp/src/screenviewer/org/openmeetings/webstart/beans/ConnectionBean.java
     
trunk/webapp/src/screenviewer/org/openmeetings/webstart/gui/StartScreen.java
     
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
     
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/ScreenJob.java
    trunk/webapp/src/templates/screencast_template.vm

Log:
Fixes:
Issue530:        make bandwidth warning in Screensharing less offensive
Issue526:        stop screen-sharing if user leaves the room

Modified: trunk/webapp/filetest.keystore
==============================================================================
Binary files. No diff available.

Modified: trunk/webapp/src/app/org/openmeetings/app/remote/Application.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/remote/Application.java    
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/remote/Application.java   Sat  
Sep 20 01:53:50 2008
@@ -947,8 +947,7 @@
        }
        
        /**
-        * TODO: Check if needed and remove
-        * @deprecated
+        * used by the Screen-Sharing Servlet to trigger events
         * @param room_id
         * @param message
         * @return

Modified:  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
    
(original)
+++  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
    
Sat Sep 20 01:53:50 2008
@@ -29,6 +29,9 @@
         * @see  
javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
         *      javax.servlet.http.HttpServletResponse)
         */
+       
+       //Fix for red5-0.7.x
+       
  //    @Override
  //    protected void service(HttpServletRequest httpServletRequest,
  //                    HttpServletResponse httpServletResponse) throws 
ServletException,
@@ -105,23 +108,39 @@
                        if (sid == null) {
                                sid = "default";
                        }
-                       System.out.println("sid: " + sid);
+                       log.debug("sid: " + sid);

                        Long users_id = 
Sessionmanagement.getInstance().checkSession(sid);
                        Long user_level =  
Usermanagement.getInstance().getUserLevelByID(users_id);

                        if (user_level > 0) {
+                               
+                               String publicSID = 
httpServletRequest.getParameter("publicSID");
+                               if (publicSID == null) {
+                                       log.error("publicSID is empty: 
"+publicSID);
+                                       return null;
+                               }
+                               
                                String room = 
httpServletRequest.getParameter("room");
                                if(room == null) room = "default";

                                String domain = 
httpServletRequest.getParameter("domain");
-                               if(domain == null) domain = "default";  
+                               if(domain == null) {
+                                       log.error("domain is empty: "+domain);
+                                       return null;
+                               }
                                
                                String rtmphostlocal =  
httpServletRequest.getParameter("rtmphostlocal");
-                               if (rtmphostlocal == null) 
rtmphostlocal="default";
+                               if (rtmphostlocal == null) {
+                                       log.error("rtmphostlocal is empty: 
"+rtmphostlocal);
+                                       return null;
+                               }
                                
                                String red5httpport = 
httpServletRequest.getParameter("red5httpport");
-                               if (red5httpport == null) 
red5httpport="default";
+                               if (red5httpport == null) {
+                                       log.error("red5httpport is empty: 
"+red5httpport);
+                                       return null;
+                               }
                                
                                //make a complete name out of 
domain(organisation) + roomname
                                String roomName = domain+"_"+room;
@@ -129,7 +148,7 @@
                                roomName = 
StringUtils.deleteWhitespace(roomName);
                                
                                String current_dir = 
getServletContext().getRealPath("/");
-                               System.out.println("Current_dir: 
"+current_dir);                                
+                               log.debug("Current_dir: "+current_dir);         
                
                                
                                //String jnlpString =  
ScreenCastTemplate.getInstance(current_dir).getScreenTemplate(rtmphostlocal,  
red5httpport, sid, room, domain);
                                
@@ -139,6 +158,7 @@
                        ctx.put("SID", sid);
                        ctx.put("ROOM", room);
                        ctx.put("DOMAIN", domain);
+                       ctx.put("PUBLIC_SID", publicSID);
                
                        String requestedFile = roomName+".jnlp";
                                
httpServletResponse.setContentType("application/x-java-jnlp-file");

Modified:  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java  
 
(original)
+++  
trunk/webapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java  
 
Sat Sep 20 01:53:50 2008
@@ -1,5 +1,7 @@
  package org.openmeetings.servlet.outputhandler;

+import java.util.HashMap;
+import java.util.Iterator;
  import java.util.LinkedHashMap;

  import http.utils.multipartrequest.MultipartRequest;
@@ -16,6 +18,9 @@
  import javax.servlet.http.HttpServletResponse;

  import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.openmeetings.app.conference.videobeans.RoomClient;
  import org.openmeetings.app.data.basic.Sessionmanagement;
  import org.openmeetings.app.data.user.Usermanagement;
  import org.openmeetings.utils.stringhandlers.StringComparer;
@@ -23,6 +28,8 @@
  import org.openmeetings.app.remote.Application;

  public class ScreenServlet extends HttpServlet {
+       
+       private static final Log log = LogFactory.getLog(ScreenServlet.class);

        /**
         *
@@ -45,24 +52,54 @@
                                if (sid == null) {
                                        sid = "default";
                                }
-                               System.out.println("sid: " + sid);
+                               log.debug("sid: " + sid);
+                               
+                               String publicSID = 
httpServletRequest.getParameter("publicSID");
+                               if (publicSID == null) {
+                                       log.error("publicSID is empty: 
"+publicSID);
+                                       return;
+                               }
+                               log.debug("publicSID: " + publicSID);   
                                
                                String room = 
httpServletRequest.getParameter("room");
                                if (room == null) {
                                        room = "default";
                                }
-                               System.out.println("room: " + room);    
+                               log.debug("room: " + room);     

                                String domain = 
httpServletRequest.getParameter("domain");
                                if (domain == null) {
                                        domain = "default";
                                }
-                               System.out.println("domain: " + domain);
+                               log.debug("domain: " + domain);
        
                                Long users_id = 
Sessionmanagement.getInstance().checkSession(sid);
                                Long user_level =  
Usermanagement.getInstance().getUserLevelByID(users_id);
                                
                                if (user_level > 0) {
+                                       
+                                       //check if this Client is still inside 
the Room
+                                       boolean userIsInRoom = false;
+                                       
+                                       HashMap<String, RoomClient> clientList 
= Application.getClientList();
+                                       for (Iterator iter = 
clientList.keySet().iterator();iter.hasNext();) {
+                                               RoomClient rcl = 
clientList.get(iter.next());
+                                               if 
(rcl.getPublicSID().equals(publicSID)) {
+                                                       log.debug("found 
RoomClient");
+                                                       if (rcl.getRoom_id() != 
null &&  
rcl.getRoom_id().toString().equals(room)) {
+                                                               log.debug("User 
is inside Room");
+                                                               userIsInRoom = 
true;
+                                                       } else {
+                                                               log.debug("User 
already left room, block Screen - logical Room  
Leave");
+                                                               return;
+                                                       }
+                                               }
+                                       }
+                                       
+                                       if (!userIsInRoom) {
+                                               log.debug("User already left 
room, block Screen - Browser Closed");
+                                               return;
+                                       }

                                        //make a complete name out of 
domain(organisation) + roomname
                                        String roomName = domain + "_" + room;
@@ -72,10 +109,10 @@
                                        //Get the current User-Directory

                                        String current_dir = 
getServletContext().getRealPath("/");
-                                       System.out.println("Current_dir: " + 
current_dir);
+                                       log.debug("Current_dir: " + 
current_dir);

                                        String working_dir = "";
-                                       
System.out.println(MultipartRequest.MAX_READ_BYTES);
+                                       
log.debug(MultipartRequest.MAX_READ_BYTES);

                                        working_dir = current_dir + "desktop" + 
File.separatorChar + roomName  
+ File.separatorChar;

@@ -85,7 +122,7 @@
                                                localFolder.mkdir();
                                        }

-                                       System.out.println("#### UploadHandler 
working_dir: "+ working_dir);
+                                       log.debug("#### UploadHandler 
working_dir: "+ working_dir);
                                        
                                        ServletMultipartRequest upload = new  
ServletMultipartRequest(httpServletRequest, 104857600); // max 100 mb

@@ -114,7 +151,7 @@
                                                f.delete();
                                        }

-                                       System.out.println("*****2 ***** 
completeName: "+ completeName +  
newFileSystemExtName);
+                                       log.debug("*****2 ***** completeName: 
"+ completeName +  
newFileSystemExtName);
                                        FileOutputStream fos = new 
FileOutputStream(completeName +  
newFileSystemExtName);

                                        byte[] buffer = new byte[1024];
@@ -138,12 +175,12 @@
                                         
Application.getInstance().sendMessageByRoomAndDomain(Long.valueOf(room).longValue(),hs);
        
                                } else {
-                                       System.out.println("user not logged 
in");
+                                       log.debug("user not logged in");
                                }

                        }
                } catch (Exception e) {
-                       System.out.println("ee " + e);
+                       log.error("ee " + e);
                        e.printStackTrace();
                        throw new ServletException(e);
                }

Modified:  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/beans/ConnectionBean.java
==============================================================================
---  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/beans/ConnectionBean.java
        
(original)
+++  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/beans/ConnectionBean.java
        
Sat Sep 20 01:53:50 2008
@@ -12,6 +12,8 @@
        
        public static String domain = "public";
        
+       public static String publicSID = "";
+       
        /**Intervall Settings**/
        
        public static int intervallSeconds = 3;

Modified:  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/gui/StartScreen.java
==============================================================================
---  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/gui/StartScreen.java    
 
(original)
+++  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/gui/StartScreen.java    
 
Sat Sep 20 01:53:50 2008
@@ -34,6 +34,7 @@

        JFrame t;
        JLabel textArea;
+       JLabel textWarningArea;
        JLabel textAreaQualy;
        JButton startButton;
        JButton stopButton;
@@ -83,7 +84,6 @@
                        textArea.setText("This application will publish your 
screen");
                        textArea.setBounds(10, 0, 400,24);
                        
-                       
                        startButton = new JButton( "start Sharing" );
                        startButton.addActionListener( new ActionListener(){
                                public void actionPerformed(ActionEvent arg0) {
@@ -125,6 +125,11 @@
                        //add the small screen thumb to the JFrame
                        new VirtualScreen();
                        
+                       textWarningArea = new JLabel();
+                       contentPane.add(textWarningArea);
+                       textWarningArea.setBounds(10, 310, 400,54);
+                       //textWarningArea.setBackground(Color.WHITE);
+                       
                        exitButton = new JButton( "exit" );
                        exitButton.addActionListener( new ActionListener(){
                                public void actionPerformed(ActionEvent arg0) {
@@ -168,7 +173,8 @@
        }
        
        public void showBandwidthWarning(String warning){
-               JOptionPane.showMessageDialog(t, warning);
+               textWarningArea.setText(warning);
+               //JOptionPane.showMessageDialog(t, warning);
        }
        
        void captureScreenStart(){
@@ -206,13 +212,17 @@
                }
        }
        
-       public StartScreen(String url, String SID, String room, String domain){
+       public StartScreen(String url, String SID, String room, String domain,  
String publicSID){
                System.out.println("captureScreenStop Exception: ");
                System.err.println("captureScreenStop Exception: ");
+               
+               //JOptionPane.showMessageDialog(t, "publicSID: "+publicSID);
+               
                ConnectionBean.connectionURL = url;
                ConnectionBean.SID = SID;
                ConnectionBean.room = room;
                ConnectionBean.domain = domain; 
+               ConnectionBean.publicSID = publicSID;
                instance=this;
                 
//instance.showBandwidthWarning("StartScreen: "+SID+" "+room+" "+domain+" 
"+url);
                this.initMainFrame();
@@ -223,7 +233,8 @@
                String SID = args[1];
                String room = args[2];
                String domain = args[3];
-               new StartScreen(url,SID,room,domain);
+               String publicSID = args[4];
+               new StartScreen(url,SID,room,domain,publicSID);
        }

  }

Modified:  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
==============================================================================
---  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
        
(original)
+++  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
        
Sat Sep 20 01:53:50 2008
@@ -21,16 +21,16 @@
        private Date startDate;

        public static void main(String[] args) {
-               new  
CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet","2010","1","public";);
+               new  
CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet","2010","1","public","";);
        }

-       public CaptureScreen(String url, String SID, String room, String 
domain) {
+       public CaptureScreen(String url, String SID, String room, String 
domain,  
String publicSID) {
                try {
                        System.err.println("captureScreenStart");
                        this.startDate = new Date();
-//                     StartScreen.instance.showBandwidthWarning("capture 
Start: "+url+(new  
java.util.Date()));
+                       //StartScreen.instance.showBandwidthWarning("capture  
publicSID: "+publicSID);
                        ConnectionBean.isloading = true;
-                        
this.captureScreen(url+"?sid="+SID+"&room="+room+"&domain="+domain,"myscreenRemote.jpg");
+                        
this.captureScreen(url+"?sid="+SID+"&room="+room+"&domain="+domain+"&publicSID="+publicSID,"myscreenRemote.jpg");
                } catch (Exception io) {
                        System.err.println(io);
                        System.out.println(io);

Modified:  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/ScreenJob.java
==============================================================================
---  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/ScreenJob.java   
 
(original)
+++  
trunk/webapp/src/screenviewer/org/openmeetings/webstart/screen/ScreenJob.java   
 
Sat Sep 20 01:53:50 2008
@@ -16,7 +16,8 @@
        if (ConnectionBean.isloading){
                StartScreen.instance.showBandwidthWarning("Your Bandwidth is 
bad.  
Frames have been droped. You can alter the Quality settings to reduce  
Bandwidth usage.");
        } else {
-               new  
CaptureScreen(ConnectionBean.connectionURL,ConnectionBean.SID,ConnectionBean.room,ConnectionBean.domain);
+               StartScreen.instance.showBandwidthWarning("");
+               new  
CaptureScreen(ConnectionBean.connectionURL,ConnectionBean.SID,ConnectionBean.room,ConnectionBean.domain,ConnectionBean.publicSID);
        }
      }


Modified: trunk/webapp/src/templates/screencast_template.vm
==============================================================================
--- trunk/webapp/src/templates/screencast_template.vm   (original)
+++ trunk/webapp/src/templates/screencast_template.vm   Sat Sep 20 01:53:50  
2008
@@ -29,5 +29,6 @@
        <argument>$SID</argument>
        <argument>$ROOM</argument>
        <argument>$DOMAIN</argument>
+       <argument>$PUBLIC_SID</argument>
      </application-desc>
  </jnlp>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to