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> 


Reply via email to