Revision: 2824
Author: seba.wagner
Date: Thu Jan 21 09:27:32 2010
Log: Update Issue 1094
Add new Wrapper Servlet for SIP switch
http://code.google.com/p/openmeetings/source/detail?r=2824
Added:
/trunk/singlewebapp/WebContent/sip-applet/webdial_jnt.html
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/DefaultIndex.java
/trunk/singlewebapp/src/templates/sip_template.vm
Modified:
/trunk/singlewebapp/WebContent/WEB-INF/web.xml
/trunk/singlewebapp/WebContent/conf/hibernate.cfg.xml
/trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/web.xml
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
=======================================
--- /dev/null
+++ /trunk/singlewebapp/WebContent/sip-applet/webdial_jnt.html Thu Jan 21
09:27:32 2010
@@ -0,0 +1,135 @@
+<html>
+ <head>
+ <meta http-equiv="cache-control" content="no-cache" />
+ <meta http-equiv="pragma" content="no-cache" />
+ <script type="text/javascript" src="jquery-1.2.6.min.js"></script>
+ <script type="text/javascript" src="uiie.js"></script>
+ <script type="text/javascript" src="blie.js"></script>
+ <script type="text/javascript" src="custom.js"></script>
+ </head>
+ <body onload="initialize();" onunload="logOff();">
+ <applet id="PHDial" archive="idial.jar"
code="com.sesca.voip.ua.AppletUANG.class" width="0" height="0">
+ <param name="mayscript" value="true" />
+ <param name="scriptable" value="true" />
+ <param name="callTo" value="" />
+ <param name="username" value="" />
+ <param name="password" value="" />
+ <param name="realm" value="multi.fi" />
+ <param name="port" value="5060" />
+ <param name="proxyname" value="sip.multi.fi" />
+ <param name="tunnel" value="194.79.17.140:443" />
+ <param name="codebaseUrl"
value="http://192.168.0.4:8080/sip-applet/" />
+ <param name="forceTunnel" value="true"/>
+ <param name="privacy" value="false"/>
+ <param name="allowOutsideProxyConnections" value="true"/>
+
+ </applet>
+ <div id="signature">-={Applet-Phone}=-</div>
+ <br/>
+ <div id="login">
+ Username:
+ <input id="username" type="text" tabindex="1"
value="webdial1"/>
+ <input type="checkbox" name="authIdBox" value="auid"
onclick="toggleAuthbox();" tabindex="4"/>
+ Use separate authentication id:
+ <div style="display: inline" id="authbox">
+ <input id="authid" type="text" tabindex="2"/>
+ </div>
+ <br/>
+ Password:
+ <input id="password" type="password" tabindex="3"
value="******"/>
+ <div id="registerbuttontext" >
+ <button type="button" onclick="preCustomRegister();
register();">Login</button>
+ </div>
+ </div>
+ <div id="callbuttons">
+ Recipient:
+ <input id="callto" type="text"
value="[email protected]">
+ <br/>
+ <div id="callbutton">
+ <div id="startbuttontext" >
+ <button type="button" onclick="preCustomStartCall();
startCall();">Call</button>
+ </br/>
+ </div>
+ </div>
+ <div id="stopcallbutton">
+ <div id="stopbuttontext" ">
+ <button type="button" onclick="preCustomEndCall(); endCall();">Hang
up</button>
+ </div>
+ </div>
+ </div>
+ <div id="toolbar">
+ <table>
+ <tr>
+ <td><button type="button"
onclick="toggleIM();">Chat</button></td>
+ <td><button type="button"
onclick="togglePad();">Keypad</button></td>
+ </tr>
+ </table>
+ </div>
+ <!-- div for IM-message -->
+ <div id="immessagewindow">
+ <form id="immessageform" name="mail" method="post"
action="">
+ <table width="300" border="1" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td>
+ <div id="immessages" style="width: 300px; height: 150px;
overflow-y: scroll;
+
scrollbar-arrow-color: blue; scrollbar- face-color: #e7e7e7;
+ scrollbar-3dlight-color: #a0a0a0;
scrollbar-darkshadow-color:#888888">
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td id="typingStateField" align="left"
valign="top">
+
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <textarea id="imMessageArea" name="message" cols="40" rows="4"
maxlength="250"></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <input id="sendIMButton" type="submit" name="Submit"
value="Lähetä" onclick="onIMSend(); return false;" />
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <!-- /div for IM-message -->
+ <!-- div for keypad -->
+ <div id="keypadwindow">
+ <form id="keypadform" name="pad" method="post"
action="">
+ <table width="300" border="1" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><button type="button"
onclick="DTMFButton(1);">1</button></td>
+ <td><button type="button"
onclick="DTMFButton(2);">2</button></td>
+ <td><button type="button"
onclick="DTMFButton(3);">3</button></td>
+ </tr>
+ <tr>
+ <td><button type="button"
onclick="DTMFButton(4);">4</button></td>
+ <td><button type="button"
onclick="DTMFButton(5);">5</button></td>
+ <td><button type="button"
onclick="DTMFButton(6);">6</button></td>
+ </tr>
+ <tr>
+ <td><button type="button"
onclick="DTMFButton(7);">7</button></td>
+ <td><button type="button"
onclick="DTMFButton(8);">8</button></td>
+ <td><button type="button"
onclick="DTMFButton(9);">9</button></td>
+ </tr>
+ <tr>
+ <td><button type="button"
onclick="DTMFButton(10);">*</button></td>
+ <td><button type="button"
onclick="DTMFButton(0);">0</button></td>
+ <td><button type="button"
onclick="DTMFButton(11);">#</button></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <!-- /div for keypad -->
+ <div id="statusbar">
+ </div>
+ <div id="footer">Make sure that microphone and speakers are
connected and turned on.</div>
+ </div>
+ <div id="noscript">Testing browser's JavaScript support... If this
message won't go away, check the JavaScript settings of your browser.</div>
+
+
+ </body>
+</html>
=======================================
--- /dev/null
+++
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/DefaultIndex.java
Thu Jan 21 09:27:32 2010
@@ -0,0 +1,132 @@
+package org.openmeetings.servlet.outputhandler;
+
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.context.Context;
+import org.apache.velocity.tools.view.servlet.VelocityViewServlet;
+import org.openmeetings.app.data.basic.Configurationmanagement;
+import org.openmeetings.app.hibernate.beans.basic.Configuration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class DefaultIndex extends VelocityViewServlet {
+
+ private static final Logger log =
Red5LoggerFactory.getLogger(DefaultIndex.class, "openmeetings");
+
+ @Override
+ public Template handleRequest(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse, Context ctx) throws
ServletException,
+ IOException {
+
+ try {
+
+ String template = "sip_template.vm";
+
+ //SIP_REALM
+ Configuration SIP_REALM =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_REALM");
+ if (SIP_REALM == null) {
+ ctx.put("SIP_REALM", "");
+ } else {
+ ctx.put("SIP_REALM", SIP_REALM.getConf_value());
+ }
+
+ //SIP_PORT
+ Configuration SIP_PORT =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_PORT");
+ if (SIP_PORT == null) {
+ ctx.put("SIP_PORT", "");
+ } else {
+ ctx.put("SIP_PORT", SIP_PORT.getConf_value());
+ }
+
+ //SIP_PROXYNAME
+ Configuration SIP_PROXYNAME =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_PROXYNAME");
+ if (SIP_PROXYNAME == null) {
+ ctx.put("SIP_PROXYNAME", "");
+ } else {
+ ctx.put("SIP_PROXYNAME",
SIP_PROXYNAME.getConf_value());
+ }
+
+ //SIP_TUNNEL
+ Configuration SIP_TUNNEL =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_TUNNEL");
+ if (SIP_TUNNEL == null) {
+ ctx.put("SIP_TUNNEL", "");
+ } else {
+ ctx.put("SIP_TUNNEL",
SIP_TUNNEL.getConf_value());
+ }
+
+ //SIP_CODEBASE
+ Configuration SIP_CODEBASE =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_CODEBASE");
+ if (SIP_CODEBASE == null) {
+ ctx.put("SIP_CODEBASE", "");
+ } else {
+ ctx.put("SIP_CODEBASE",
SIP_CODEBASE.getConf_value());
+ }
+
+ //SIP_FORCETUNNEL
+ Configuration SIP_FORCETUNNEL =
Configurationmanagement.getInstance().getConfKey(3L, "SIP_FORCETUNNEL");
+ if (SIP_FORCETUNNEL == null) {
+ ctx.put("SIP_FORCETUNNEL", "");
+ } else {
+ ctx.put("SIP_FORCETUNNEL",
SIP_FORCETUNNEL.getConf_value());
+ }
+
+ String swf = httpServletRequest.getParameter("swf");
+ if (swf == null) {
+ ctx.put("SWF_URL", "main.swf8.swf");
+ } else {
+ ctx.put("SWF_URL", swf);
+ }
+
+ String SWF_PARAMS = "";
+ String SWF_FLASHVARS = "";
+
+ //We fake oen param that is needed for all
+ if (httpServletRequest.getParameterMap() != null) {
+ for (Iterator<String> iter =
httpServletRequest.getParameterMap().keySet().iterator();iter.hasNext();) {
+ String paramKey = iter.next();
+ SWF_FLASHVARS +=
paramKey+"="+httpServletRequest.getParameterMap().get(paramKey)+"&";
+
+ }
+ }
+
+ HashMap<String,String> defaultValuesMap = new
HashMap<String,String>();
+
+ defaultValuesMap.put("lzt","swf");
+ defaultValuesMap.put("lzproxied","solo");
+ defaultValuesMap.put("lzr","swf8");
+ defaultValuesMap.put("bgcolor","%23ffffff");
+ defaultValuesMap.put("width","100%25");
+ defaultValuesMap.put("height","100%25");
+
defaultValuesMap.put("__lzurl","maindebug.lzx%3Flzt%3Dswf%26lzproxied%3Dsolo%26lzr%3Dswf8");
+ defaultValuesMap.put("__lzminimumversion","8");
+ defaultValuesMap.put("id","lzapp");
+
+ for (Iterator<String> iter =
defaultValuesMap.keySet().iterator();iter.hasNext();) {
+ String paramKey = iter.next();
+ SWF_PARAMS +=
paramKey+"="+defaultValuesMap.get(paramKey)+"&";
+ SWF_FLASHVARS +=
paramKey+"="+defaultValuesMap.get(paramKey)+"&";
+ }
+
+ //SWF_FLASHVARS
+= "lzt=swf&lzproxied=solo&lzr=swf8&bgcolor=%23ffffff&width=100%25&height=100%25&__lzurl=maindebug.lzx%3Flzt%3Dswf%26lzproxied%3Dsolo%26lzr%3Dswf8&__lzminimumversion=8&id=lzapp";
+
+ ctx.put("SWF_PARAMS", SWF_PARAMS);
+ ctx.put("SWF_FLASHVARS", SWF_FLASHVARS);
+
+ return getVelocityEngine().getTemplate(template);
+
+ } catch (Exception er) {
+ System.out.println("Error downloading: " + er);
+ er.printStackTrace();
+ log.error("[Calendar :: service]",er);
+ }
+ return null;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/templates/sip_template.vm Thu Jan 21 09:27:32
2010
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+
+<meta http-equiv="cache-control" content="no-cache">
+
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
+<meta name="viewport" content="width=device-width; initial-scale=1.0;">
+<title>OpenLaszlo Application</title>
+<script type="text/javascript">
+ // If loaded bare into a browser, set the browser size to the canvas size
+ if (window === top) {
+ (function (width, height) {
+ // Cf. http://www.quirksmode.org/viewport/compatibility.html
+ if (window.innerHeight) {
+ // Sadly, innerHeight/Width is not r/w on some browsers, and
resizeTo is for outerHeight/Width
+ window.resizeTo(width ? (width + window.outerWidth -
window.innerWidth) : window.outerWidth,
+ height ? (height + window.outerHeight -
window.innerHeight) : window.outerHeight);
+ } else if (document.documentElement &&
document.documentElement.clientHeight) {
+ if (width) {
+ document.documentElement.clientWidth = width;
+ }
+ if (height) {
+ document.documentElement.clientHeight = height;
+ }
+ } else {
+ if (width) {
+ document.body.clientWidth = width;
+ }
+ if (height) {
+ document.body.clientHeight = height;
+ }
+ }
+ })(null, null);
+ }
+</script>
+
+<script type="text/javascript"
src="sip-applet/jquery-1.2.6.min.js"></script>
+<script type="text/javascript" src="sip-applet/uiie.js"></script>
+<script type="text/javascript" src="sip-applet/blie.js"></script>
+<script type="text/javascript" src="sip-applet/custom.js"></script>
+
+<script type="text/javascript"
+ src="embed-compressed.js"></script>
+<script type="text/javascript">
+
+function getBrowserInfo() {
+ //alert(navigator.userAgent);
+ return navigator.userAgent;
+}
+
+</script>
+
+<style type="text/css">
+html,body { /* http://www.quirksmode.org/css/100percheight.html */
+ height: 100%;
+ /* prevent scrollbars */
+ margin: 0;
+ padding: 0;
+ border: 0 none;
+ overflow: hidden;
+}
+
+body {
+ background-color: #ffffff;
+}
+
+img {
+ border: 0 none;
+}
+</style>
+</head>
+<body>
+
+<applet id="PHDial" archive="sip-applet/idial.jar"
+ code="com.sesca.voip.ua.AppletUANG.class" width="0" height="0">
+ <param name="mayscript" value="true" />
+ <param name="scriptable" value="true" />
+ <param name="callTo" value="" />
+ <param name="username" value="" />
+ <param name="password" value="" />
+ <param name="realm" value="$SIP_REALM" />
+ <param name="port" value="$SIP_PORT" />
+ <param name="proxyname" value="$SIP_PROXYNAME" />
+ <param name="tunnel" value="$SIP_TUNNEL" />
+ <param name="codebaseUrl" value="$SIP_CODEBASE" />
+ <param name="forceTunnel" value="$SIP_FORCETUNNEL" />
+ <param name="privacy" value="false" />
+ <param name="allowOutsideProxyConnections" value="true" />
+</applet>
+
+<script type="text/javascript">
+ lz.embed.swf({url: '$SWF_URL?$SWF_PARAMS', allowfullscreen: 'true',
bgcolor: '#ffffff', width: '100%', height: '100%', id: 'lzapp',
accessible: 'false'});
+
+ lz.embed.lzapp.onloadstatus = function loadstatus(p) {
+ // called with a percentage (0-100) indicating load progress
+ }
+
+ lz.embed.lzapp.onload = function loaded() {
+ // called when this application is done loading
+ }
+ initialize();
+</script>
+
+
+
+<div style="width: 100%; height: 100%;" id="lzappContainer"><embed
+ src="maindebug.lzx-Dateien/maindebug.lzx" quality="high"
+ bgcolor="#ffffff" wmode="window" allowfullscreen="false" id="lzapp"
+ name="lzapp"
+ flashvars="$SWF_FLASHVARS"
+ swliveconnect="true" allowscriptaccess="sameDomain"
+ type="application/x-shockwave-flash"
+ pluginspage="http://www.macromedia.com/go/getflashplayer"
+ align="middle" height="100%" width="100%"></div>
+<noscript>Please enable JavaScript in order to use this
+application.</noscript>
+</body>
+</html>
=======================================
--- /trunk/singlewebapp/WebContent/WEB-INF/web.xml Mon Nov 2 04:34:03 2009
+++ /trunk/singlewebapp/WebContent/WEB-INF/web.xml Thu Jan 21 09:27:32 2010
@@ -141,6 +141,12 @@
<servlet-name>MethodGateway</servlet-name>
<servlet-class>org.openmeetings.servlet.outputhandler.MethodGateway</servlet-class>
</servlet>
+ <servlet>
+ <description>DefaultIndex</description>
+ <display-name>DefaultIndex</display-name>
+ <servlet-name>DefaultIndex</servlet-name>
+
<servlet-class>org.openmeetings.servlet.outputhandler.DefaultIndex</servlet-class>
+ </servlet>
<servlet-mapping>
<servlet-name>DownloadHandler</servlet-name>
<url-pattern>/DownloadHandler</url-pattern>
@@ -229,6 +235,10 @@
<servlet-name>MethodGateway</servlet-name>
<url-pattern>/MethodGateway</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>DefaultIndex</servlet-name>
+ <url-pattern>/sipindex.html</url-pattern>
+ </servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
=======================================
--- /trunk/singlewebapp/WebContent/conf/hibernate.cfg.xml Thu Jan 21
05:58:03 2010
+++ /trunk/singlewebapp/WebContent/conf/hibernate.cfg.xml Thu Jan 21
09:27:32 2010
@@ -10,13 +10,13 @@
<!-- User / Password -->
<property name="connection.username">root</property>
- <property name="connection.password"></property>
+ <property name="connection.password">admin</property>
<!-- Database Settings -->
<property
name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- for performance reasons changed to MyISAM from
org.hibernate.dialect.MySQLInnoDBDialect -->
<property
name="dialect">org.hibernate.dialect.MySQLMyISAMDialect</property>
- <property
name="connection.url">jdbc:mysql://localhost/openmeetings?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
+ <property
name="connection.url">jdbc:mysql://192.168.0.3/openmeetings_max_test4?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
<property name="hibernate.connection.CharSet">utf8</property>
<property
name="hibernate.connection.characterEncoding">utf8</property>
=======================================
--- /trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/web.xml
Tue Jan 5 08:27:13 2010
+++ /trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/web.xml
Thu Jan 21 09:27:32 2010
@@ -172,6 +172,12 @@
<servlet-name>MethodGateway</servlet-name>
<servlet-class>org.openmeetings.servlet.outputhandler.MethodGateway</servlet-class>
</servlet>
+ <servlet>
+ <description>DefaultIndex</description>
+ <display-name>DefaultIndex</display-name>
+ <servlet-name>DefaultIndex</servlet-name>
+
<servlet-class>org.openmeetings.servlet.outputhandler.DefaultIndex</servlet-class>
+ </servlet>
<servlet-mapping>
<servlet-name>DownloadHandler</servlet-name>
<url-pattern>/DownloadHandler</url-pattern>
@@ -261,6 +267,10 @@
<servlet-name>MethodGateway</servlet-name>
<url-pattern>/MethodGateway</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>DefaultIndex</servlet-name>
+ <url-pattern>/sipindex.html</url-pattern>
+ </servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
Sat Jan 9 04:21:42 2010
+++
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenRequestHandler.java
Thu Jan 21 09:27:32 2010
@@ -115,7 +115,7 @@
ctx.put("rtmphostlocal", rtmphostlocal);
//rtmphostlocal
ctx.put("red5httpport", red5httpport);
//red5httpport
- System.out.println("httpRootKey "+httpRootKey);
+ log.debug("httpRootKey "+httpRootKey);
String codebase
= "http://"+rtmphostlocal+":"+red5httpport+httpRootKey+"screen";
--
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.