Author: solomax
Date: Tue Feb 26 06:19:48 2013
New Revision: 1450042
URL: http://svn.apache.org/r1450042
Log:
SIP: Asterisk version is updated to be 11; MeetMe was replaced with Confbridge;
SipDao was added to create/update Asterisk rooms;
documentation was updated;
code clean-up
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
Removed:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/MeetMe.java
Modified:
openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml
openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml
openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml
openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml
openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/AsteriskSipUser.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml
Modified:
openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
(original)
+++
openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
Tue Feb 26 06:19:48 2013
@@ -18,72 +18,59 @@
under the License.
-->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
+<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
+ xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
- <bean id="entityManagerFactory"
-
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
+ <bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="openmeetings" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
- <bean
-
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>
+ <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>
<bean id="jpaTransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
- <bean id="multipartResolver"
-
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
+ <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
- <tx:annotation-driven transaction-manager="jpaTransactionManager"
proxy-target-class="true"/>
+ <tx:annotation-driven transaction-manager="jpaTransactionManager"
proxy-target-class="true" />
<context:annotation-config />
<context:component-scan base-package="org.apache.openmeetings" />
<!-- New Class for the Streaming Handlers -->
- <bean id="web.handler"
-
class="org.apache.openmeetings.remote.red5.ScopeApplicationAdapter" />
-
+ <bean id="web.handler"
class="org.apache.openmeetings.remote.red5.ScopeApplicationAdapter" />
+
<!-- Session configuration start -->
-
- <bean id="openmeetings.SessionManager"
- class="org.apache.openmeetings.session.SessionManager">
+
+ <bean id="openmeetings.SessionManager"
class="org.apache.openmeetings.session.SessionManager">
<property name="cache">
- <ref bean="openmeetings.HashMapStore"/> <!-- Memory based
session cache by default -->
- </property>
+ <ref bean="openmeetings.HashMapStore" /> <!-- Memory
based session cache by default -->
+ </property>
</bean>
- <bean id="openmeetings.EmoticonsManager"
-
class="org.apache.openmeetings.data.whiteboard.EmoticonsManager" />
-
- <!-- Singletons for memory based cache -->
- <bean id="openmeetings.HashMapStore" scope="singleton"
- class="org.apache.openmeetings.session.store.HashMapStore" />
- <bean id="whiteBoardObjectListManagerById" scope="singleton"
-
class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectListManagerById"
/>
+ <bean id="openmeetings.EmoticonsManager"
class="org.apache.openmeetings.data.whiteboard.EmoticonsManager" />
+
+ <!-- Singletons for memory based cache -->
+ <bean id="openmeetings.HashMapStore" scope="singleton"
class="org.apache.openmeetings.session.store.HashMapStore" />
+ <bean id="whiteBoardObjectListManagerById" scope="singleton"
+
class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectListManagerById"
/>
<!-- WhiteBoardObjectSyncManager can stay in the memory, even on
cluster! -->
- <bean id="whiteBoardObjectSyncManager" scope="singleton"
-
class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectSyncManager" />
-
+ <bean id="whiteBoardObjectSyncManager" scope="singleton"
class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectSyncManager" />
+
<!-- Database cache -->
- <bean id="openmeetings.DatabaseStore"
- class="org.apache.openmeetings.session.store.DatabaseStore" />
-
- <bean id="openmeetings.ServerUtil" scope="singleton"
- class="org.apache.openmeetings.session.ServerUtil">
- <!--
- Need to be uncommented and set to the real ID if in
cluster mode
- <property name="serverId" value="1" />
- -->
- </bean>
-
+ <bean id="openmeetings.DatabaseStore"
class="org.apache.openmeetings.session.store.DatabaseStore" />
+
+ <bean id="openmeetings.ServerUtil" scope="singleton"
class="org.apache.openmeetings.session.ServerUtil">
+ <!-- Need to be uncommented and set to the real ID if in
cluster mode <property name="serverId" value="1" /> -->
+ </bean>
+
<!-- Cluster related config start -->
<!-- Start of Services -->
@@ -99,30 +86,22 @@
<bean id="userservice.service"
class="org.apache.openmeetings.remote.UserService" />
<bean id="fileservice.service"
class="org.apache.openmeetings.remote.ConferenceLibrary" />
<bean id="openmeetings.FileProcessor"
class="org.apache.openmeetings.data.file.FileProcessor" />
- <bean id="openmeetings.FlvExplorerConverter"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvExplorerConverter" />
+ <bean id="openmeetings.FlvExplorerConverter"
class="org.apache.openmeetings.data.flvrecord.converter.FlvExplorerConverter" />
<bean id="errorservice.service"
class="org.apache.openmeetings.remote.ErrorService" />
<bean id="conferenceservice.service"
class="org.apache.openmeetings.remote.ConferenceService" />
<bean id="configservice.service"
class="org.apache.openmeetings.remote.ConfigurationService" />
<bean id="chatservice.service"
class="org.apache.openmeetings.remote.ChatService" />
<bean id="calendarservice.service"
class="org.apache.openmeetings.remote.CalendarService" />
<bean id="flvrecorderservice.service"
class="org.apache.openmeetings.remote.FLVRecorderService" />
- <bean id="openmeetings.FlvRecorderConverterTask"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask"
/>
- <bean id="openmeetings.FlvInterviewConverterTask"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask"
/>
- <bean id="openmeetings.FlvInterviewReConverterTask"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask"
/>
- <bean id="openmeetings.FlvInterviewConverter"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverter"
/>
- <bean id="openmeetings.FlvRecorderConverter"
-
class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverter" />
- <bean id="openmeetings.SlaveHTTPConnectionManager"
-
class="org.apache.openmeetings.cluster.SlaveHTTPConnectionManager" />
-
+ <bean id="openmeetings.FlvRecorderConverterTask"
class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask"
/>
+ <bean id="openmeetings.FlvInterviewConverterTask"
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask"
/>
+ <bean id="openmeetings.FlvInterviewReConverterTask"
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask"
/>
+ <bean id="openmeetings.FlvInterviewConverter"
class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverter"
/>
+ <bean id="openmeetings.FlvRecorderConverter"
class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverter" />
+ <bean id="openmeetings.SlaveHTTPConnectionManager"
class="org.apache.openmeetings.cluster.SlaveHTTPConnectionManager" />
+
<bean id="openmeetings.SessionClearJob"
class="org.apache.openmeetings.quartz.scheduler.SessionClearJob" />
- <bean id="sessionClearJob"
-
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <bean id="sessionClearJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="openmeetings.SessionClearJob" />
</property>
@@ -145,11 +124,9 @@
<value>300000</value>
</property>
</bean>
-
- <bean id="openmeetings.MeetingReminderJob"
-
class="org.apache.openmeetings.quartz.scheduler.MeetingReminderJob" />
- <bean id="meetingReminderClear"
-
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+
+ <bean id="openmeetings.MeetingReminderJob"
class="org.apache.openmeetings.quartz.scheduler.MeetingReminderJob" />
+ <bean id="meetingReminderClear"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="openmeetings.MeetingReminderJob" />
</property>
@@ -172,7 +149,7 @@
<value>100000</value>
</property>
</bean>
- <bean id="testSetupCleanupJob"
class="org.apache.openmeetings.quartz.scheduler.TestSetupCleanupJob"/>
+ <bean id="testSetupCleanupJob"
class="org.apache.openmeetings.quartz.scheduler.TestSetupCleanupJob" />
<bean id="testSetupCleanup"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="testSetupCleanupJob" />
@@ -187,13 +164,13 @@
<ref bean="testSetupCleanup" />
</property>
<property name="startDelay">
- <value>1800000</value> <!-- 30 minutes -->
+ <value>1800000</value> <!-- 30 minutes -->
</property>
<property name="repeatInterval">
- <value>1800000</value> <!-- 30 minutes -->
+ <value>1800000</value> <!-- 30 minutes -->
</property>
</bean>
-
+
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
@@ -206,12 +183,18 @@
<!-- End of Services -->
<!-- Interface Transactional -->
- <bean id="appointmentReminderTypDaoImpl"
-
class="org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao" />
- <bean id="appointmentCategoryDaoImpl"
-
class="org.apache.openmeetings.data.calendar.daos.AppointmentCategoryDao" />
+ <bean id="appointmentReminderTypDaoImpl"
class="org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao" />
+ <bean id="appointmentCategoryDaoImpl"
class="org.apache.openmeetings.data.calendar.daos.AppointmentCategoryDao" />
<bean id="roommanagement"
class="org.apache.openmeetings.data.conference.RoomManager" />
- <bean id="roomDao"
class="org.apache.openmeetings.data.conference.dao.RoomDao" />
+ <bean id="roomDao"
class="org.apache.openmeetings.data.conference.dao.RoomDao"/>
+ <bean id="sipDao"
class="org.apache.openmeetings.data.conference.dao.SipDao">
+ <!-- Should be uncommented and updated with real values for Asterisk
+ <constructor-arg><value>127.0.0.1</value></constructor-arg>
+ <constructor-arg><value>5038</value></constructor-arg>
+ <constructor-arg><value>openmeetings</value></constructor-arg>
+ <constructor-arg><value>12345</value></constructor-arg>
+ -->
+ </bean>
<bean id="organisationmanagement"
class="org.apache.openmeetings.data.user.OrganisationManager" />
<bean id="organisationDao"
class="org.apache.openmeetings.data.user.dao.OrganisationDao" />
<bean id="organisationUserDao"
class="org.apache.openmeetings.data.user.dao.OrganisationUserDao" />
@@ -226,48 +209,36 @@
<bean id="fieldLanguagesValuesDAO"
class="org.apache.openmeetings.data.basic.FieldLanguagesValuesDao" />
<bean id="fieldmanagment"
class="org.apache.openmeetings.data.basic.FieldManager" />
<bean id="configurationDaoImpl"
class="org.apache.openmeetings.data.basic.dao.ConfigurationDao" />
- <bean id="appointmentDao"
-
class="org.apache.openmeetings.data.calendar.daos.AppointmentDao" />
- <bean id="appointmentLogic"
-
class="org.apache.openmeetings.data.calendar.management.AppointmentLogic" />
- <bean id="meetingMemberLogic"
-
class="org.apache.openmeetings.data.calendar.management.MeetingMemberLogic" />
+ <bean id="appointmentDao"
class="org.apache.openmeetings.data.calendar.daos.AppointmentDao" />
+ <bean id="appointmentLogic"
class="org.apache.openmeetings.data.calendar.management.AppointmentLogic" />
+ <bean id="meetingMemberLogic"
class="org.apache.openmeetings.data.calendar.management.MeetingMemberLogic" />
<bean id="sessionManagement"
class="org.apache.openmeetings.data.basic.SessiondataDao" />
<bean id="userManagement"
class="org.apache.openmeetings.data.user.UserManager" />
- <bean id="roomModeratorsDao"
-
class="org.apache.openmeetings.data.conference.dao.RoomModeratorsDao" />
+ <bean id="roomModeratorsDao"
class="org.apache.openmeetings.data.conference.dao.RoomModeratorsDao" />
<bean id="conferenceLogDao"
class="org.apache.openmeetings.data.logs.ConferenceLogDao" />
<bean id="conferenceLogTypeDao"
class="org.apache.openmeetings.data.logs.ConferenceLogTypeDao" />
<bean id="emailManagement"
class="org.apache.openmeetings.data.user.EmailManager" />
- <bean id="fileExplorerItemDao"
-
class="org.apache.openmeetings.data.file.dao.FileExplorerItemDao" />
+ <bean id="fileExplorerItemDao"
class="org.apache.openmeetings.data.file.dao.FileExplorerItemDao" />
<bean id="flvRecordingDao"
class="org.apache.openmeetings.data.flvrecord.FlvRecordingDao" />
- <bean id="flvRecordingLogDao"
-
class="org.apache.openmeetings.data.flvrecord.FlvRecordingLogDao" />
- <bean id="flvRecordingMetaDataDao"
-
class="org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao" />
- <bean id="flvRecordingMetaDeltaDao"
-
class="org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDeltaDao" />
+ <bean id="flvRecordingLogDao"
class="org.apache.openmeetings.data.flvrecord.FlvRecordingLogDao" />
+ <bean id="flvRecordingMetaDataDao"
class="org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao" />
+ <bean id="flvRecordingMetaDeltaDao"
class="org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDeltaDao" />
<bean id="ldapConfigDao"
class="org.apache.openmeetings.data.basic.dao.LdapConfigDao" />
- <bean id="invitationManagement"
-
class="org.apache.openmeetings.data.conference.InvitationManager" />
- <bean id="meetingMemberDao"
-
class="org.apache.openmeetings.data.calendar.daos.MeetingMemberDao" />
- <bean id="privateMessageFolderDao"
-
class="org.apache.openmeetings.data.user.dao.PrivateMessageFolderDao" />
- <bean id="privateMessagesDao"
-
class="org.apache.openmeetings.data.user.dao.PrivateMessagesDao" />
+ <bean id="invitationManagement"
class="org.apache.openmeetings.data.conference.InvitationManager" />
+ <bean id="meetingMemberDao"
class="org.apache.openmeetings.data.calendar.daos.MeetingMemberDao" />
+ <bean id="privateMessageFolderDao"
class="org.apache.openmeetings.data.user.dao.PrivateMessageFolderDao" />
+ <bean id="privateMessagesDao"
class="org.apache.openmeetings.data.user.dao.PrivateMessagesDao" />
<bean id="soapLoginDao"
class="org.apache.openmeetings.data.basic.dao.SOAPLoginDao" />
<bean id="userContactsDao"
class="org.apache.openmeetings.data.user.dao.UserContactsDao" />
<bean id="usersDao"
class="org.apache.openmeetings.data.user.dao.UsersDao" />
<bean id="serverDao"
class="org.apache.openmeetings.data.basic.dao.ServerDao" />
<bean id="chatDao" class="org.apache.openmeetings.data.chat.ChatDao" />
<bean id="clientDao"
class="org.apache.openmeetings.data.conference.dao.ClientDao" />
-
+
<!-- No Interface -->
<bean id="manageCryptStyle"
class="org.apache.openmeetings.utils.crypt.ManageCryptStyle" />
- <bean id="generateImage"
class="org.apache.openmeetings.documents.GenerateImage" />
+ <bean id="generateImage"
class="org.apache.openmeetings.documents.GenerateImage" />
<bean id="generateThumbs"
class="org.apache.openmeetings.documents.GenerateThumbs" />
<bean id="generatePDF"
class="org.apache.openmeetings.documents.GeneratePDF" />
<bean id="mailHandler"
class="org.apache.openmeetings.utils.mail.MailHandler" />
@@ -284,33 +255,31 @@
<bean id="ldapLoginManagement"
class="org.apache.openmeetings.ldap.LdapLoginManagement" />
<bean id="timezoneUtil"
class="org.apache.openmeetings.utils.math.TimezoneUtil" />
<bean id="whiteboardManagement"
class="org.apache.openmeetings.data.whiteboard.WhiteboardManager" />
-
+
<!-- Templates -->
<bean id="registerUserTemplate"
class="org.apache.openmeetings.templates.RegisterUserTemplate" />
<bean id="feedbackTemplate"
class="org.apache.openmeetings.templates.FeedbackTemplate" />
<bean id="invitationTemplate"
class="org.apache.openmeetings.templates.InvitationTemplate" />
<bean id="requestContactTemplate"
class="org.apache.openmeetings.templates.RequestContactTemplate" />
- <bean id="requestContactConfirmTemplate"
-
class="org.apache.openmeetings.templates.RequestContactConfirmTemplate" />
+ <bean id="requestContactConfirmTemplate"
class="org.apache.openmeetings.templates.RequestContactConfirmTemplate" />
<bean id="resetPasswordTemplate"
class="org.apache.openmeetings.templates.ResetPasswordTemplate" />
<!-- Thread Executor -->
- <bean id="taskExecutor"
-
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
+ <bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
- <bean id="mailThread"
class="org.apache.openmeetings.utils.mail.MailThread"/>
- <bean id="mailiCalThread"
class="org.apache.openmeetings.utils.mail.MailiCalThread"/>
+ <bean id="mailThread"
class="org.apache.openmeetings.utils.mail.MailThread" />
+ <bean id="mailiCalThread"
class="org.apache.openmeetings.utils.mail.MailiCalThread" />
<!-- Axis2 Service Proxy's -->
<bean id="userWebService"
class="org.apache.openmeetings.axis.services.UserWebService" />
<bean id="roomWebService"
class="org.apache.openmeetings.axis.services.RoomWebService" />
<bean id="fileWebService"
class="org.apache.openmeetings.axis.services.FileWebService" />
<bean id="calendarWebService"
class="org.apache.openmeetings.axis.services.CalendarWebService" />
- <bean id="jabberWebService"
class="org.apache.openmeetings.axis.services.JabberWebService" />
+ <bean id="jabberWebService"
class="org.apache.openmeetings.axis.services.JabberWebService" />
<bean id="serverWebService"
class="org.apache.openmeetings.axis.services.ServerWebService" />
<!-- Servlet Facade Beans -->
Modified: openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html (original)
+++ openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html Tue Feb
26 06:19:48 2013
@@ -639,7 +639,7 @@ limitations under the License.
<tr><td>
<blockquote>
<p>You need Apache OpenMeetings
<strong>version 2.1</strong> to apply this guide!</p>
- <p>You need Asterisk
<strong>version 1.8</strong> to apply this guide!</p>
+ <p>You need Asterisk
<strong>version 11</strong> to apply this guide!</p>
<p>Here is instruction how-to
set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
</blockquote>
</td></tr>
@@ -648,7 +648,7 @@ limitations under the License.
<table border="0"
cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td ><!-- bgcolor="#EEEEEE" -->
<font color="#000000" face="verdana,arial,helvetica,sanserif">
- <a name="Installing packages for everything"><strong>Installing
packages for everything</strong></a>
+ <a name="Prerequisites"><strong>Prerequisites</strong></a>
</font>
<hr style="width:100%; color:#999999; background-color:#999999;
height:1px; border:0px;"/>
</td></tr>
@@ -658,8 +658,8 @@ limitations under the License.
Run the commands
<blockquote>
<i>
- sudo apt-get update<br />
- sudo apt-get install
linux-headers-`uname -r` asterisk unixODBC unixODBC-dev libmyodbc asterisk-dahdi
+ sudo apt-get update &&
sudo apt-get upgrade<br />
+ sudo apt-get install
build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev
libsqlite3-dev sqlite3 openssl libssl-dev<br />
</i>
</blockquote>
</div>
@@ -677,6 +677,15 @@ limitations under the License.
<tr><td>
<blockquote>
<div>
+ Run the commands
+ <blockquote>
+ <i>
+ sudo apt-get update<br />
+ sudo apt-get install unixODBC
unixODBC-dev libmyodbc
+ </i>
+ </blockquote>
+ </div>
+ <div>
Set up Asterisk connector:<br /><br />
Modify file <tt>/etc/odbc.ini</tt> as follows:
(replace USER, PASSWORD and Socket with values relative to your system)
<blockquote>
@@ -715,95 +724,165 @@ limitations under the License.
<table border="0"
cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td ><!-- bgcolor="#EEEEEE" -->
<font color="#000000" face="verdana,arial,helvetica,sanserif">
- <a name="Setup Asterisk"><strong>Setup Asterisk</strong></a>
+ <a name="Building and setting up Asterisk"><strong>Building and
setting up Asterisk</strong></a>
+ </font>
+ <hr style="width:100%; color:#999999; background-color:#999999;
height:1px; border:0px;"/>
+ </td></tr>
+ <tr><td>
+ <blockquote>
+ <div>
+ Run the commands
+ <blockquote>
+ <i>
+ sudo mkdir /usr/src/asterisk
&& cd /usr/src/asterisk<br />
+ sudo wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11.2.1.tar.gz<br
/>
+ sudo tar -xvzf
asterisk-11.2.1.tar.gz<br />
+ cd ./asterisk-11.2.1<br />
+ sudo make clean<br />
+ sudo ./configure<br />
+ sudo make<br />
+ sudo make install<br />
+ sudo make samples<br />
+ sudo make config<br />
+ sudo service asterisk start<br
/>
+ </i>
+ </blockquote>
+ </div>
+ </blockquote>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ </table>
+ <table border="0"
cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr><td ><!-- bgcolor="#EEEEEE" -->
+ <font color="#000000" face="verdana,arial,helvetica,sanserif">
+ <a name="Configure Asterisk"><strong>Configure Asterisk</strong></a>
</font>
<hr style="width:100%; color:#999999; background-color:#999999;
height:1px; border:0px;"/>
</td></tr>
<tr><td>
<blockquote>
<div>
- Enable asterisk ODBC and MeetMe modules:<br
/><br />
+ Enable asterisk ODBC module:<br /><br />
Modify "[modules]" section of
<tt>/etc/asterisk/modules.conf</tt> as follows:<br />
<strong>Add/uncomment the following
lines</strong>
<blockquote>
<i>
preload => res_odbc.so<br />
preload =>
res_config_odbc.so<br />
- load => app_meetme.so<br />
</i>
</blockquote>
- <strong>Remove/comment the following
lines</strong>
+ </div>
+ <br />
+ <div>
+ Create/update "[asterisk]" section in
<tt>/etc/asterisk/res_odbc.conf</tt>:
<blockquote>
- <i>noload => res_config_odbc.so</i>
+ <i>
+ [asterisk]<br />
+ enabled => yes<br />
+ dsn => asterisk-connector<br
/>
+ pre-connect => yes
+ </i>
</blockquote>
</div>
+ <br />
<div>
- Enable caching of SIP users:<br /><br />
- Modify "[general]" section of
<tt>/etc/asterisk/sip.conf</tt> uncomment the following line:
+ Modify <tt>/etc/asterisk/sip.conf</tt><br />
+ <strong>Add/uncomment the following
line</strong>:<br />
<blockquote>
- <i>rtcachefriends=yes</i>
+ <i>
+ videosupport=yes<br />
+ rtcachefriends=yes<br />
+ </i>
</blockquote>
- add following section to create internal user
for red5sip:
+ <strong>Add user for the "SIP
Transport"</strong>:<br />
<blockquote>
<i>
[red5sip_user]<br />
type=friend<br />
- user=red5sip_user<br />
- context=rooms<br />
secret=12345<br />
disallow=all<br />
allow=ulaw<br />
+ allow=h264<br />
host=dynamic<br />
- nat=yes
+ nat=force_rport,comedia<br />
+ context=rooms<br />
</i>
</blockquote>
</div>
+ <br />
<div>
Add next lines into the
<tt>/etc/asterisk/extconfig.conf</tt>:
<blockquote>
<i>
[settings]<br />
sippeers =>
odbc,asterisk,sipusers<br />
- meetme =>
odbc,asterisk,meetme<br />
</i>
</blockquote>
</div>
+ <br />
<div>
- Add next lines into the
<tt>/etc/asterisk/extensions.conf</tt>:
+ Modify
<tt>/etc/asterisk/confbridge.conf</tt><br />
+ <strong>Add/uncomment the following line in
<tt>[default_bridge]</tt> section</strong>:<br />
+ <blockquote>
+ <i>
+ video_mode = follow_talker<br />
+ </i>
+ </blockquote>
+ </div>
+ <br />
+ <div>
+ Modify
<tt>/etc/asterisk/extensions.conf</tt><br />
+ <strong>Add the following section</strong>:<br
/>
<blockquote>
<i>
[rooms]<br />
- switch => Realtime/@<br
/><br />
- exten =>
_400X!,1,MeetMe(${EXTEN},dM)<br /><br />
- exten =>
<extension>,1,Set(SIP_NO=<number to call with sipnet>)<br />
- exten =>
<extension>,2,Goto(sipnet-out,s,1)<br /><br />
- exten => _.,1,Answer<br />
- exten =>
_.,2,Playback(invalid)<br />
- exten => _.,3,Hangup<br
/><br />
- [sipnet-out]<br /><br />
- exten => s,1,Answer<br />
- exten =>
s,n,Dial(SIP/${SIP_NO}@SIPNET,30)<br />
- exten => s,n,HangUp
+ exten =>
_400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+ exten =>
_400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+ exten =>
_400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+ exten =>
_400X!,n,Confbridge(${EXTEN},,default_user)<br />
+ exten => _400X!,n,Hangup<br
/>
+ exten =>
_400X!,n(notavail),Answer()<br />
+ exten =>
_400X!,n,Playback(invalid)<br />
+ exten => _400X!,n,Hangup<br
/>
</i>
</blockquote>
</div>
+ <br />
<div>
- Create/update "[asterisk]" section in
<tt>/etc/asterisk/res_odbc.conf</tt>:
+ To enable Asterisk Manager API modify
<tt>/etc/asterisk/manager.conf</tt><br />
+ <strong>Add/Modify the following
sections</strong>:<br />
<blockquote>
<i>
- [asterisk]<br />
- enabled => yes<br />
- dsn => asterisk-connector<br
/>
- pre-connect => yes
+ [general]<br />
+ enabled = yes<br />
+ webenabled = no<br />
+ port = 5038<br />
+ bindaddr = 127.0.0.1<br />
+ <br />
+ [openmeetings]<br />
+ secret = 12345<br />
+ deny=0.0.0.0/0.0.0.0<br />
+
permit=127.0.0.1/255.255.255.0<br />
+ read = all<br />
+ write =
system,call,command,originate<br />
</i>
</blockquote>
</div>
+ <br />
+ <div>
+ Update Openmeetings with creadentials for
Asterisk manager.
+ Modify
<tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt><br
/>
+ find <strong><bean id="sipDao"
class="org.apache.openmeetings.data.conference.dao.SipDao"></strong>
+ uncomment its parameters and set it to your
custom values.
+ </div>
+ <br />
<div>
Restart asterisk:
<blockquote>
<i>service asterisk restart</i>
</blockquote>
</div>
+ <br />
<div>
Ensure dahdi was installed successfully:
<blockquote>
Modified: openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml (original)
+++ openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml Tue Feb 26
06:19:48 2013
@@ -70,7 +70,6 @@
<class>org.apache.openmeetings.persistence.beans.user.User</class>
<class>org.apache.openmeetings.persistence.beans.files.FileExplorerItem</class>
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUser</class>
-
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses"
value="unsupported"/>
Modified: openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml
(original)
+++ openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml Tue Feb
26 06:19:48 2013
@@ -70,7 +70,6 @@
<class>org.apache.openmeetings.persistence.beans.user.User</class>
<class>org.apache.openmeetings.persistence.beans.files.FileExplorerItem</class>
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUser</class>
-
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses"
value="unsupported" />
Modified: openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml
(original)
+++ openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml Tue Feb
26 06:19:48 2013
@@ -70,7 +70,6 @@
<class>org.apache.openmeetings.persistence.beans.user.User</class>
<class>org.apache.openmeetings.persistence.beans.files.FileExplorerItem</class>
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUser</class>
-
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses"
value="unsupported"/>
Modified: openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml
(original)
+++ openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml Tue Feb
26 06:19:48 2013
@@ -70,7 +70,6 @@
<class>org.apache.openmeetings.persistence.beans.user.User</class>
<class>org.apache.openmeetings.persistence.beans.files.FileExplorerItem</class>
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUser</class>
-
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses"
value="unsupported" />
Modified: openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml
(original)
+++ openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml Tue
Feb 26 06:19:48 2013
@@ -70,7 +70,6 @@
<class>org.apache.openmeetings.persistence.beans.user.User</class>
<class>org.apache.openmeetings.persistence.beans.files.FileExplorerItem</class>
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUser</class>
-
<class>org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses"
value="unsupported"/>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
Tue Feb 26 06:19:48 2013
@@ -37,6 +37,7 @@ import org.apache.openmeetings.data.basi
import org.apache.openmeetings.data.beans.basic.SearchResult;
import org.apache.openmeetings.data.conference.dao.RoomDao;
import org.apache.openmeetings.data.conference.dao.RoomModeratorsDao;
+import org.apache.openmeetings.data.conference.dao.SipDao;
import org.apache.openmeetings.data.user.OrganisationManager;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
@@ -78,6 +79,8 @@ public class RoomManager {
private ConfigurationDao configurationDao;
@Autowired
private RoomDao roomDao;
+ @Autowired
+ private SipDao sipDao;
/**
* add a new Record to the table roomtypes
@@ -575,8 +578,8 @@ public class RoomManager {
* @return number of participants
*/
public Integer getSipConferenceMembersNumber(Long rooms_id) {
- Room rooms = roomDao.get(rooms_id);
- return rooms.getMeetme() != null ? rooms.getMeetme().getMembers() :
null;
+ Room r = roomDao.get(rooms_id);
+ return sipDao.countUsers(r.getConfno());
}
/**
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
Tue Feb 26 06:19:48 2013
@@ -28,20 +28,20 @@ import javax.persistence.TypedQuery;
import org.apache.openmeetings.data.IDataProviderDao;
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.persistence.beans.room.Room;
-import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
import org.apache.openmeetings.utils.DaoHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class RoomDao implements IDataProviderDao<Room> {
-
public final static String[] searchFields = {"name"};
@PersistenceContext
private EntityManager em;
@Autowired
private ConfigurationDao cfgDao;
+ @Autowired
+ private SipDao sipDao;
public Room get(long id) {
TypedQuery<Room> q = em.createNamedQuery("getRoomById",
Room.class);
@@ -108,7 +108,7 @@ public class RoomDao implements IDataPro
}
public Room update(Room entity, Long userId) {
- return update(entity, userId, entity.getMeetme() == null ? null
: entity.getMeetme().getPin());
+ return update(entity, userId, null);
}
public Room update(Room entity, Long userId, String pin) {
@@ -120,17 +120,15 @@ public class RoomDao implements IDataPro
}
if (entity.isSipEnabled() && isSipEnabled()) {
String sipNumber = getSipNumber(entity.getRooms_id());
- if (entity.getMeetme() == null ||
!sipNumber.equals(entity.getMeetme().getConfno())) {
- MeetMe m = new MeetMe();
- m.setConfno(sipNumber);
- entity.setMeetme(m);
+ if (!sipNumber.equals(entity.getConfno())) {
+ sipDao.update(sipNumber, pin);
+ entity.setConfno(sipNumber);
+ entity.setPin(pin);
}
- entity.getMeetme().setPin(pin);
} else {
- if (entity.getMeetme() != null) {
- em.remove(entity.getMeetme());
- }
- entity.setMeetme(null);
+ sipDao.delete(entity.getConfno());
+ entity.setConfno(null);
+ entity.setPin(null);
}
entity = em.merge(entity);
return entity;
@@ -138,7 +136,6 @@ public class RoomDao implements IDataPro
public void delete(Room entity, Long userId) {
entity.setDeleted(true);
- entity.setMeetme(null);
entity.setSipEnabled(false);
update(entity, userId);
}
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java?rev=1450042&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
(added)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
Tue Feb 26 06:19:48 2013
@@ -0,0 +1,86 @@
+package org.apache.openmeetings.data.conference.dao;
+
+import org.asteriskjava.manager.ManagerConnection;
+import org.asteriskjava.manager.ManagerConnectionFactory;
+import org.asteriskjava.manager.action.ConfbridgeListAction;
+import org.asteriskjava.manager.action.DbDelAction;
+import org.asteriskjava.manager.action.DbDelTreeAction;
+import org.asteriskjava.manager.action.DbGetAction;
+import org.asteriskjava.manager.action.DbPutAction;
+import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.response.ManagerResponse;
+
+public class SipDao {
+ public static final String ASTERISK_OM_FAMILY = "openmeetings";
+ public static final String ASTERISK_OM_KEY = "rooms";
+ private String sipHostname;
+ private int sipPort;
+ private String sipUsername;
+ private String sipPassword;
+ private ManagerConnectionFactory factory;
+ private ManagerConnection connection;
+
+ @SuppressWarnings("unused")
+ private SipDao() {
+ //prohibited default constructor
+ }
+
+ public SipDao(String sipHostname, int sipPort, String sipUsername, String
sipPassword) {
+ this.sipHostname = sipHostname;
+ this.sipPort = sipPort;
+ this.sipUsername = sipUsername;
+ this.sipPassword = sipPassword;
+ factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort,
this.sipUsername, this.sipPassword);
+ connection = factory.createManagerConnection(); //TODO secure
+ }
+
+ private ManagerResponse exec(ManagerAction action) {
+ try {
+ connection.login();
+ ManagerResponse r = connection.sendAction(action);
+ connection.logoff();
+ return r;
+ } catch (Exception e) {
+ //
+ }
+ return null;
+ }
+
+ public String get(String confno) {
+ String pin = null;
+ DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY +
"/" + confno);
+ ManagerResponse r = exec(da);
+ if (r != null) {
+ pin = r.getResponse();
+ }
+ return pin;
+ }
+
+ public void update(String confno, String pin) {
+ delete(confno);
+ DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY,
ASTERISK_OM_KEY + "/" + confno, pin);
+ exec(da);
+ }
+
+ public void delete() {
+ DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY,
ASTERISK_OM_KEY);
+ exec(da);
+ }
+
+ public void delete(String confno) {
+ DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY +
"/" + confno);
+ exec(da);
+ }
+
+ public Integer countUsers(String confno) {//TODO fixme
+ if (confno == null) {
+ return null;
+ }
+ ConfbridgeListAction da = new ConfbridgeListAction(confno);
+ ManagerResponse r = exec(da);
+ if (r != null) {
+
+ }
+ return 0;//TBD
+ }
+}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
Tue Feb 26 06:19:48 2013
@@ -39,6 +39,7 @@ import org.apache.openmeetings.data.cale
import org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao;
import org.apache.openmeetings.data.conference.PollManager;
import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.data.conference.dao.SipDao;
import org.apache.openmeetings.data.user.OrganisationManager;
import org.apache.openmeetings.data.user.UserManager;
import org.apache.openmeetings.data.user.dao.SalutationDao;
@@ -92,6 +93,8 @@ public class ImportInitvalues {
private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
@Autowired
private PollManager pollManager;
+ @Autowired
+ private SipDao sipDao;
public void loadMainMenu() {
@@ -994,6 +997,7 @@ public class ImportInitvalues {
if (!force && usersDao.getAllUsers().size() > 0) {
log.debug("System contains users, no need to install
data one more time.");
}
+ sipDao.delete();
loadMainMenu();
loadErrorMappingsFromXML();
loadInitLanguages();
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
Tue Feb 26 06:19:48 2013
@@ -36,15 +36,12 @@ import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.apache.openjpa.persistence.ElementDependent;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
import org.apache.openmeetings.persistence.beans.IDataProviderEntity;
-import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
@@ -237,16 +234,18 @@ public class Room implements Serializabl
@ElementList(name = "room_moderators", required=false)
private List<RoomModerator> moderators;
- @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
- @PrimaryKeyJoinColumn(name="confno", referencedColumnName="confno")
- @ForeignKey(enabled = true)
- @Element(name = "meetme", required = false)
- private MeetMe meetme;
-
@Column(name = "sip_enabled")
@Element(data = true, required = false)
private boolean sipEnabled;
+ @Column(name = "confno")
+ @Element(data = true, required = false)
+ private String confno;
+
+ @Column(name = "pin")
+ @Element(data = true, required = false)
+ private String pin;
+
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "rooms_id", insertable = true, updatable = true)
@ElementDependent
@@ -560,14 +559,6 @@ public class Room implements Serializabl
this.autoVideoSelect = autoVideoSelect;
}
- public MeetMe getMeetme() {
- return meetme;
- }
-
- public void setMeetme(MeetMe meetme) {
- this.meetme = meetme;
- }
-
public boolean isSipEnabled() {
return sipEnabled;
}
@@ -575,4 +566,20 @@ public class Room implements Serializabl
public void setSipEnabled(boolean sipEnabled) {
this.sipEnabled = sipEnabled;
}
+
+ public String getConfno() {
+ return confno;
+ }
+
+ public void setConfno(String confno) {
+ this.confno = confno;
+ }
+
+ public String getPin() {
+ return pin;
+ }
+
+ public void setPin(String pin) {
+ this.pin = pin;
+ }
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/AsteriskSipUser.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/AsteriskSipUser.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/AsteriskSipUser.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/sip/asterisk/AsteriskSipUser.java
Tue Feb 26 06:19:48 2013
@@ -100,7 +100,11 @@ public class AsteriskSipUser implements
@Column(name = "nat", nullable=false)
@Element(data=true, required = false)
- private String nat = "yes";
+ private String nat = "force_rport,comedia";
+
+ @Column(name = "callbackextension", nullable=true, length=250)
+ @Element(data=true, required = false)
+ private String callbackextension;
public long getId() {
return id;
@@ -229,4 +233,12 @@ public class AsteriskSipUser implements
public void setNat(String nat) {
this.nat = nat;
}
+
+ public String getCallbackextension() {
+ return callbackextension;
+ }
+
+ public void setCallbackextension(String callbackextension) {
+ this.callbackextension = callbackextension;
+ }
}
\ No newline at end of file
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
Tue Feb 26 06:19:48 2013
@@ -2838,10 +2838,10 @@ public class ScopeApplicationAdapter ext
}
public synchronized String getSipNumber(Long room_id) {
- Room rooms = roomDao.get(room_id);
- if(rooms != null && rooms.getMeetme() != null) {
- log.debug("getSipNumber: room_id: {}, sipNumber: {}", new
Object[]{room_id, rooms.getMeetme().getConfno()});
- return rooms.getMeetme().getConfno();
+ Room r = roomDao.get(room_id);
+ if(r != null && r.getConfno() != null) {
+ log.debug("getSipNumber: room_id: {}, sipNumber: {}", new
Object[]{room_id, r.getConfno()});
+ return r.getConfno();
}
return null;
}
Modified: openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml?rev=1450042&r1=1450041&r2=1450042&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml (original)
+++ openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml Tue Feb
26 06:19:48 2013
@@ -14,22 +14,31 @@
<body>
<section name="SIP-Transport Integration">
<p>You need Apache OpenMeetings <strong>version
2.1</strong> to apply this guide!</p>
- <p>You need Asterisk <strong>version 1.8</strong> to
apply this guide!</p>
+ <p>You need Asterisk <strong>version 11</strong> to
apply this guide!</p>
<p>Here is instruction how-to set up red5sip transport
integration with OpenMeetings on Ubuntu 12.10.</p>
</section>
- <section name="Installing packages for everything">
+ <section name="Prerequisites">
<div>
Run the commands
<blockquote>
<i>
- sudo apt-get update<br />
- sudo apt-get install
linux-headers-`uname -r` asterisk unixODBC unixODBC-dev libmyodbc asterisk-dahdi
+ sudo apt-get update &&
sudo apt-get upgrade<br />
+ sudo apt-get install
build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev
libsqlite3-dev sqlite3 openssl libssl-dev<br />
</i>
</blockquote>
</div>
</section>
<section name="ODBC Setup">
<div>
+ Run the commands
+ <blockquote>
+ <i>
+ sudo apt-get update<br />
+ sudo apt-get install unixODBC
unixODBC-dev libmyodbc
+ </i>
+ </blockquote>
+ </div>
+ <div>
Set up Asterisk connector:<br /><br />
Modify file <tt>/etc/odbc.ini</tt> as follows:
(replace USER, PASSWORD and Socket with values relative to your system)
<blockquote>
@@ -62,91 +71,140 @@
</blockquote>
</div>
</section>
- <section name="Setup Asterisk">
+ <section name="Building and setting up Asterisk">
+ <div>
+ Run the commands
+ <blockquote>
+ <i>
+ sudo mkdir /usr/src/asterisk
&& cd /usr/src/asterisk<br />
+ sudo wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11.2.1.tar.gz<br
/>
+ sudo tar -xvzf
asterisk-11.2.1.tar.gz<br />
+ cd ./asterisk-11.2.1<br />
+ sudo make clean<br />
+ sudo ./configure<br />
+ sudo make<br />
+ sudo make install<br />
+ sudo make samples<br />
+ sudo make config<br />
+ sudo service asterisk start<br
/>
+ </i>
+ </blockquote>
+ </div>
+ </section>
+ <section name="Configure Asterisk">
<div>
- Enable asterisk ODBC and MeetMe modules:<br
/><br />
+ Enable asterisk ODBC module:<br /><br />
Modify "[modules]" section of
<tt>/etc/asterisk/modules.conf</tt> as follows:<br />
<strong>Add/uncomment the following
lines</strong>
<blockquote>
<i>
preload => res_odbc.so<br />
preload =>
res_config_odbc.so<br />
- load => app_meetme.so<br />
</i>
</blockquote>
- <strong>Remove/comment the following
lines</strong>
+ </div><br />
+ <div>
+ Create/update "[asterisk]" section in
<tt>/etc/asterisk/res_odbc.conf</tt>:
<blockquote>
- <i>noload => res_config_odbc.so</i>
+ <i>
+ [asterisk]<br />
+ enabled => yes<br />
+ dsn => asterisk-connector<br />
+ pre-connect => yes
+ </i>
</blockquote>
- </div>
+ </div><br />
<div>
- Enable caching of SIP users:<br /><br />
- Modify "[general]" section of
<tt>/etc/asterisk/sip.conf</tt> uncomment the following line:
+ Modify <tt>/etc/asterisk/sip.conf</tt><br />
+ <strong>Add/uncomment the following
line</strong>:<br />
<blockquote>
- <i>rtcachefriends=yes</i>
+ <i>
+ videosupport=yes<br />
+ rtcachefriends=yes<br />
+ </i>
</blockquote>
- add following section to create internal user
for red5sip:
+ <strong>Add user for the "SIP
Transport"</strong>:<br />
<blockquote>
<i>
[red5sip_user]<br />
type=friend<br />
- user=red5sip_user<br />
- context=rooms<br />
secret=12345<br />
disallow=all<br />
allow=ulaw<br />
+ allow=h264<br />
host=dynamic<br />
- nat=yes
+ nat=force_rport,comedia<br />
+ context=rooms<br />
</i>
</blockquote>
- </div>
+ </div><br />
<div>
Add next lines into the
<tt>/etc/asterisk/extconfig.conf</tt>:
<blockquote>
<i>
[settings]<br />
sippeers =>
odbc,asterisk,sipusers<br />
- meetme =>
odbc,asterisk,meetme<br />
</i>
</blockquote>
- </div>
+ </div><br />
<div>
- Add next lines into the
<tt>/etc/asterisk/extensions.conf</tt>:
+ Modify
<tt>/etc/asterisk/confbridge.conf</tt><br />
+ <strong>Add/uncomment the following line in
<tt>[default_bridge]</tt> section</strong>:<br />
+ <blockquote>
+ <i>
+ video_mode = follow_talker<br />
+ </i>
+ </blockquote>
+ </div><br />
+ <div>
+ Modify
<tt>/etc/asterisk/extensions.conf</tt><br />
+ <strong>Add the following section</strong>:<br
/>
<blockquote>
<i>
[rooms]<br />
- switch => Realtime/@<br /><br />
- exten =>
_400X!,1,MeetMe(${EXTEN},dM)<br /><br />
- exten =>
<extension>,1,Set(SIP_NO=<number to call with sipnet>)<br />
- exten =>
<extension>,2,Goto(sipnet-out,s,1)<br /><br />
- exten => _.,1,Answer<br />
- exten =>
_.,2,Playback(invalid)<br />
- exten => _.,3,Hangup<br /><br />
- [sipnet-out]<br /><br />
- exten => s,1,Answer<br />
- exten =>
s,n,Dial(SIP/${SIP_NO}@SIPNET,30)<br />
- exten => s,n,HangUp
+ exten =>
_400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+ exten =>
_400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+ exten =>
_400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+ exten =>
_400X!,n,Confbridge(${EXTEN},,default_user)<br />
+ exten => _400X!,n,Hangup<br />
+ exten =>
_400X!,n(notavail),Answer()<br />
+ exten =>
_400X!,n,Playback(invalid)<br />
+ exten => _400X!,n,Hangup<br />
</i>
</blockquote>
- </div>
+ </div><br />
<div>
- Create/update "[asterisk]" section in
<tt>/etc/asterisk/res_odbc.conf</tt>:
+ To enable Asterisk Manager API modify
<tt>/etc/asterisk/manager.conf</tt><br />
+ <strong>Add/Modify the following
sections</strong>:<br />
<blockquote>
<i>
- [asterisk]<br />
- enabled => yes<br />
- dsn => asterisk-connector<br />
- pre-connect => yes
+ [general]<br />
+ enabled = yes<br />
+ webenabled = no<br />
+ port = 5038<br />
+ bindaddr = 127.0.0.1<br />
+ <br />
+ [openmeetings]<br />
+ secret = 12345<br />
+ deny=0.0.0.0/0.0.0.0<br />
+
permit=127.0.0.1/255.255.255.0<br />
+ read = all<br />
+ write =
system,call,command,originate<br />
</i>
</blockquote>
- </div>
-
+ </div><br />
+ <div>
+ Update Openmeetings with creadentials for
Asterisk manager.
+ Modify
<tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt><br
/>
+ find <strong><bean id="sipDao"
class="org.apache.openmeetings.data.conference.dao.SipDao"></strong>
+ uncomment its parameters and set it to your
custom values.
+ </div><br />
<div>
Restart asterisk:
<blockquote>
<i>service asterisk restart</i>
</blockquote>
- </div>
+ </div><br />
<div>
Ensure dahdi was installed successfully:
<blockquote>