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 &amp;&amp; 
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 
&amp;&amp; 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 =&gt; res_odbc.so<br />
                                                preload =&gt; 
res_config_odbc.so<br />
-                                               load =&gt; 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 =&gt; res_config_odbc.so</i>
+                                       <i>
+                                               [asterisk]<br />
+                                               enabled =&gt; yes<br />
+                                               dsn =&gt; asterisk-connector<br 
/>
+                                               pre-connect =&gt; 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 =&gt; 
odbc,asterisk,sipusers<br />
-                                               meetme =&gt; 
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 =&gt; Realtime/@<br 
/><br />
-                                               exten =&gt; 
_400X!,1,MeetMe(${EXTEN},dM)<br /><br />
-                                               exten =&gt; 
&lt;extension&gt;,1,Set(SIP_NO=&lt;number to call with sipnet&gt;)<br />
-                                               exten =&gt; 
&lt;extension&gt;,2,Goto(sipnet-out,s,1)<br /><br />
-                                               exten =&gt; _.,1,Answer<br />
-                                               exten =&gt; 
_.,2,Playback(invalid)<br />
-                                               exten =&gt; _.,3,Hangup<br 
/><br />
-                                               [sipnet-out]<br /><br />
-                                               exten =&gt; s,1,Answer<br />
-                                               exten =&gt; 
s,n,Dial(SIP/${SIP_NO}@SIPNET,30)<br />
-                                               exten =&gt; s,n,HangUp
+                                               exten =&gt; 
_400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+                                               exten =&gt; 
_400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+                                               exten =&gt; 
_400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+                                               exten =&gt; 
_400X!,n,Confbridge(${EXTEN},,default_user)<br />
+                                               exten =&gt; _400X!,n,Hangup<br 
/>
+                                               exten =&gt; 
_400X!,n(notavail),Answer()<br />
+                                               exten =&gt; 
_400X!,n,Playback(invalid)<br />
+                                               exten =&gt; _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 =&gt; yes<br />
-                                               dsn =&gt; asterisk-connector<br 
/>
-                                               pre-connect =&gt; 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>&lt;bean id="sipDao" 
class="org.apache.openmeetings.data.conference.dao.SipDao"&gt;</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 &amp;&amp; 
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 
&amp;&amp; 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 => 
&lt;extension&gt;,1,Set(SIP_NO=&lt;number to call with sipnet&gt;)<br />
-                                               exten => 
&lt;extension&gt;,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>&lt;bean id="sipDao" 
class="org.apache.openmeetings.data.conference.dao.SipDao"&gt;</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>


Reply via email to