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>