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