You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/05/17 12:52:32 UTC

svn commit: r1339547 - in /incubator/openmeetings/trunk/singlewebapp: ./ src/ src/org/openmeetings/screen/webstart/ src/org/openmeetings/servlet/outputhandler/

Author: solomax
Date: Thu May 17 10:52:32 2012
New Revision: 1339547

URL: http://svn.apache.org/viewvc?rev=1339547&view=rev
Log:
OPENMEETINGS-97 incomplete fix

Modified:
    incubator/openmeetings/trunk/singlewebapp/.classpath
    incubator/openmeetings/trunk/singlewebapp/.project
    incubator/openmeetings/trunk/singlewebapp/ivy.xml
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/CoreScreenShare.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
    incubator/openmeetings/trunk/singlewebapp/src/screenshare.vm

Modified: incubator/openmeetings/trunk/singlewebapp/.classpath
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/.classpath?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/.classpath (original)
+++ incubator/openmeetings/trunk/singlewebapp/.classpath Thu May 17 10:52:32 2012
@@ -11,7 +11,6 @@
 	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="lib" path="build/lib/java_16_tools.jar"/>
 	<classpathentry kind="lib" path="build/lib/om/activation-jar-1.1.jar"/>
-	<classpathentry kind="lib" path="build/lib/om/commons-codec-jar-1.3.jar"/>
 	<classpathentry kind="lib" path="build/lib/om/commons-httpclient-jar-3.1.jar"/>
 	<classpathentry kind="lib" path="build/lib/om/geronimo-activation_1.1_spec-jar-1.0.2.jar"/>
 	<classpathentry kind="lib" path="build/lib/om/geronimo-annotation_1.0_spec-jar-1.1.jar"/>

Modified: incubator/openmeetings/trunk/singlewebapp/.project
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/.project?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/.project (original)
+++ incubator/openmeetings/trunk/singlewebapp/.project Thu May 17 10:52:32 2012
@@ -41,7 +41,7 @@
 	</natures>
 	<filteredResources>
 		<filter>
-			<id>1335328265197</id>
+			<id>1337248316784</id>
 			<name></name>
 			<type>26</type>
 			<matcher>
@@ -50,7 +50,7 @@
 			</matcher>
 		</filter>
 		<filter>
-			<id>1335328265218</id>
+			<id>1337248316804</id>
 			<name></name>
 			<type>10</type>
 			<matcher>
@@ -59,7 +59,7 @@
 			</matcher>
 		</filter>
 		<filter>
-			<id>1335328265238</id>
+			<id>1337248316807</id>
 			<name></name>
 			<type>26</type>
 			<matcher>
@@ -68,7 +68,7 @@
 			</matcher>
 		</filter>
 		<filter>
-			<id>1335328265260</id>
+			<id>1337248316833</id>
 			<name></name>
 			<type>26</type>
 			<matcher>
@@ -77,7 +77,52 @@
 			</matcher>
 		</filter>
 		<filter>
-			<id>1335328265291</id>
+			<id>1337248316859</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/bin</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1337248317098</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-name-matches-false-false-.svn</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1337248317140</id>
+			<name></name>
+			<type>10</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-dist</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1337248317144</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/classes/openmeetings</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1337248317166</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/openlaszlo</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1337248317188</id>
 			<name></name>
 			<type>30</type>
 			<matcher>

Modified: incubator/openmeetings/trunk/singlewebapp/ivy.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/ivy.xml?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/ivy.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/ivy.xml Thu May 17 10:52:32 2012
@@ -186,6 +186,10 @@
 		<dependency org="commons-lang" name="commons-lang" rev="2.6" conf="openmeetings->*" transitive="false">
 			<include type="jar" />
 		</dependency>
+		<!--  added to avoid downloading version 1.3 with Axis2 -->
+		<dependency org="commons-codec" name="commons-codec" rev="1.6" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
 		<dependency org="com.thoughtworks.xstream" name="xstream" rev="1.4.2" conf="openmeetings->*" transitive="false">
 			<include type="jar" />
 		</dependency>

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/CoreScreenShare.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/CoreScreenShare.java?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/CoreScreenShare.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/CoreScreenShare.java Thu May 17 10:52:32 2012
@@ -111,7 +111,7 @@ public class CoreScreenShare {
 				logger.debug("arg: " + arg);
 			}
 			String[] textArray = null;
-			if (args.length == 9) {
+			if (args.length > 9) {
 				host = args[0];
 				app = args[1];
 				port = Integer.parseInt(args[2]);

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java Thu May 17 10:52:32 2012
@@ -18,9 +18,11 @@
  */
 package org.openmeetings.screen.webstart;
 
+import org.apache.geronimo.mail.util.Hex;
 import org.red5.client.net.rtmp.ClientExceptionHandler;
 import org.red5.client.net.rtmps.RTMPSClient;
 import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
 import org.red5.server.net.rtmp.Channel;
 import org.red5.server.net.rtmp.RTMPConnection;
 import org.red5.server.net.rtmp.codec.RTMP;
@@ -41,7 +43,23 @@ public class RTMPSScreenShare extends RT
 	};
 
 	public static void main(String[] args) {
-		new RTMPSScreenShare().core.main(args);
+		RTMPSScreenShare client = new RTMPSScreenShare();
+		if (args.length < 11) {
+			System.exit(0);
+		}
+		client.setKeystoreBytes(Hex.decode(args[9]));
+		client.setKeyStorePassword(args[10]);
+		client.core.main(args);
+	}
+	
+	@Override
+	public void connect(String server, int port, String application,
+			IPendingServiceCallback connectCallback) {
+		try { //FIXME need to be removed
+			super.connect(server, port, application, connectCallback);
+		} catch (NullPointerException npe) {
+			//no op, since RTMPSClient throws NPE
+		}
 	}
 	
 	// ------------------------------------------------------------------------

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java Thu May 17 10:52:32 2012
@@ -20,10 +20,14 @@ package org.openmeetings.servlet.outputh
 
 import java.io.File;
 import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.lang.StringUtils;
 import org.apache.velocity.Template;
 import org.apache.velocity.context.Context;
@@ -49,7 +53,7 @@ public class ScreenRequestHandler extend
 			if (ScopeApplicationAdapter.initComplete) {
 				ApplicationContext context = WebApplicationContextUtils
 						.getWebApplicationContext(getServletContext());
-				return (Sessionmanagement) context.getBean("sessionManagement");
+				return context.getBean(Sessionmanagement.class);
 			}
 		} catch (Exception err) {
 			log.error("[getSessionManagement]", err);
@@ -62,8 +66,7 @@ public class ScreenRequestHandler extend
 			if (ScopeApplicationAdapter.initComplete) {
 				ApplicationContext context = WebApplicationContextUtils
 						.getWebApplicationContext(getServletContext());
-				return (Configurationmanagement) context
-						.getBean("cfgManagement");
+				return context.getBean(Configurationmanagement.class);
 			}
 		} catch (Exception err) {
 			log.error("[getCfgManagement]", err);
@@ -76,7 +79,7 @@ public class ScreenRequestHandler extend
 			if (ScopeApplicationAdapter.initComplete) {
 				ApplicationContext context = WebApplicationContextUtils
 						.getWebApplicationContext(getServletContext());
-				return (Fieldmanagment) context.getBean("fieldmanagment");
+				return context.getBean(Fieldmanagment.class);
 			}
 		} catch (Exception err) {
 			log.error("[getFieldmanagment]", err);
@@ -121,6 +124,9 @@ public class ScreenRequestHandler extend
 			log.debug("sid: " + sid);
 
 			Long users_id = getSessionManagement().checkSession(sid);
+			if (users_id < 0) {
+				throw new Exception("Request from invalid user " + users_id);
+			}
 
 			String publicSID = httpServletRequest.getParameter("publicSID");
 			if (publicSID == null) {
@@ -237,6 +243,7 @@ public class ScreenRequestHandler extend
 				})) {
 					libs.append("\t\t<jar href=\"").append(jar.getName()).append("\"/>\n");
 				}
+				addKeystore(ctx);
 				ctx.put("LIBRARIES", libs);
 				log.debug("RTMP Sharer labels :: " + label_sharer);
 
@@ -317,4 +324,58 @@ public class ScreenRequestHandler extend
 		return null;
 	}
 
+	private StringBuilder addArgument(StringBuilder sb, Object arg) {
+		return sb.append("\t\t<argument>").append(arg).append("</argument>\n");
+	}
+	
+	private void addKeystore(Context ctx) {
+		log.debug("RTMP Sharer Keystore :: start");
+		FileInputStream fis = null;
+		try {
+			//FIXME hack !!!!
+			File root = new File(ScopeApplicationAdapter.webAppPath).getParentFile().getParentFile();
+			File conf = new File(root, "conf");
+
+			File keyStore = new File(conf, "keystore.screen");
+			if (keyStore.exists()) {
+				Properties red5Props = new Properties();
+				red5Props.load(new FileInputStream(new File(conf, "red5.properties")));
+				
+				byte keyBytes[] = new byte[(int)keyStore.length()];
+				fis = new FileInputStream(keyStore);
+				fis.read(keyBytes);
+				
+				StringBuilder sb = new StringBuilder();
+				sb = addArgument(addArgument(sb, Hex.encodeHexString(keyBytes)), red5Props.getProperty("rtmps.keystorepass"));
+				ctx.put("KEYSTORE", sb);
+				
+				/*
+				KeyStore ksIn = KeyStore.getInstance(KeyStore.getDefaultType());
+				ksIn.load(new FileInputStream(keyStore), red5Props.getProperty("rtmps.keystorepass").toCharArray());
+				ByteArrayInputStream bin = new ByteArrayInputStream()
+				
+				byte fileContent[] = new byte[(int)file.length()];
+				sb = addArgument(sb, Object arg)
+				ctx.put("$KEYSTORE", users_id);
+				/*
+				KeyStore ksOut = KeyStore.getInstance(KeyStore.getDefaultType());
+				for (Certificate cert : ksIn.getCertificateChain("red5")) {
+					PublicKey pub = cert.getPublicKey();
+					TrustedCertificateEntry tce = new TrustedCertificateEntry(cert);
+					tce.
+				}
+				*/
+			}
+		} catch (Exception e) {
+			//no op
+		} finally {
+			if (fis != null) {
+				try {
+					fis.close();
+				} catch (IOException e) {
+					// no op
+				}
+			}
+		}
+	}
 }

Modified: incubator/openmeetings/trunk/singlewebapp/src/screenshare.vm
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/screenshare.vm?rev=1339547&r1=1339546&r2=1339547&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/screenshare.vm (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/screenshare.vm Thu May 17 10:52:32 2012
@@ -29,7 +29,7 @@ limitations under the License.
 	</security>	
 	<resources> 
 		<j2se version='1.4+'/>
-$LIBRARIES 
+$LIBRARIES
     </resources> 
     <application-desc main-class='$startUpClass'>
     	<argument>$red5-host</argument> 
@@ -40,6 +40,7 @@ $LIBRARIES 
     	<argument>$organization_id</argument> 
     	<argument>$default_quality_screensharing</argument>
     	<argument>$user_id</argument>   
-    	<argument>$allowRecording</argument>   
+    	<argument>$allowRecording</argument>
+$KEYSTORE
     </application-desc> 
 </jnlp>