<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
          
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

                                                    <meta name="author" content="OpenMeetings Team">
            <meta name="email" content="solomax@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings - SIP-Transport Integration</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
		
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
			
			<!-- Add colorbox plugin -->
			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
		
			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
			
			<script type="text/javascript">
				$(function() {
					$("#accordion").accordion({
						heightStyle: 'content',
						icons: false
					});
					var idx = location.href.lastIndexOf('/');
					if (idx > -1) {
						var url = '.' + location.href.substring(idx);
						var a = $('#accordion a[href="' + url + '"]');
						a.addClass('active');
						var id = a.parent()[0].id;
						var idx1 = id.lastIndexOf('-');
						if (idx1 > -1) {
							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
						} 
					}
					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
				});
			</script>
			
			<style type="text/css">
				.fancybox-custom .fancybox-outer {
					box-shadow: 0 0 50px #222;
				}
			</style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
        	<div class="mainbody" style="min-width: 960px; width: 94%;">
        	<div class="superbody" style="width: 100%;">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    <td width="80%" align="right" valign="top" >
	<a href="demo.html">Demo</a>
	<span>|</span> 
	<a href="downloads.html" target="_PARENT">Download</a>
	<span>|</span> 
	<a href="installation.html" target="_PARENT">Installation</a>
	<span>|</span> 
	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
	<span>&nbsp;</span>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="nowrap">

                    <!-- special ACon Logo - leave here for next time
                    <a href="http://apachecon.com/2005/US/">
                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
                             width="125" border="0" alt="ApacheCon US 2005" />
                    </a>  -->

                   <!-- regular menu -->

                    
    <!-- ============================================================ -->
    <div id="accordion" style="width: 100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div>
	        	            	            	    <a href="./index.html">Home</a>
<br/>
	        		        	            	            	    <a href="./license.html">License</a>
<br/>
	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
<br/>
	        		        	            	            	    <a href="./downloads.html">Downloads</a>
<br/>
	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
<br/>
	        		            	</div>
        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
    	<div>
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
<br/>
	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div>
	        	            	            	    <a href="./get-involved.html">Get Involved</a>
<br/>
	        		        	            	            	    <a href="./team-list.html">Committers</a>
<br/>
	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
<br/>
	        		            	</div>
        	<h3><a href="#Development">Development</a></h3>
    	<div>
	        	            	            	    <a href="./svn.html">Source Code</a>
<br/>
	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
<br/>
	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
<br/>
	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
<br/>
	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
<br/>
	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
<br/>
	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
<br/>
	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
<br/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div>
	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
<br/>
	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
<br/>
	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
<br/>
	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
<br/>
	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
<br/>
	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
<br/>
	        		            	</div>
        	<h3><a href="#Plugins">Plugins</a></h3>
    	<div>
	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
<br/>
	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
<br/>
	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
<br/>
	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
<br/>
	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
<br/>
	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
<br/>
	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div>
	        	            	            	<b>DB Sample Configurations</b><br/>
	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
<br/>
	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
<br/>
	            			            			    <a href="./OracleConfig.html">Oracle</a>
<br/>
	            			            			    <a href="./MySQLConfig.html">MySQL</a>
<br/>
	            			            			    <a href="./PostgresConfig.html">Postgres</a>
<br/>
	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
<br/>
	            			        		        	            	            	<b>Localization and languages</b><br/>
	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
<br/>
	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
<br/>
	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
<br/>
	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
<br/>
	            			        		        	            	            	<b>NAT Port Settings</b><br/>
	            			            			    <a href="./PortSettings.html">Port settings</a>
<br/>
	            			        		        	            	            	<b>Performance</b><br/>
	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
<br/>
	            			        		        	            	            	<b>User Interface</b><br/>
	            			            			    <a href="./themes-and-branding.html">Themes</a>
<br/>
	            			            			    <a href="./Dashboard.html">Dashboard</a>
<br/>
	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
<br/>
	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
<br/>
	            			            			    <a href="./HotKeys.html">Hot Keys</a>
<br/>
	            			        		        	            	            	<b>Customization</b><br/>
	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
<br/>
	            			            			    <a href="./Navigation.html">Navigation</a>
<br/>
	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
<br/>
	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
<br/>
	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
<br/>
	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
<br/>
	            			        		        	            	            	<b>Security</b><br/>
	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
<br/>
	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
<br/>
	            			        		        	            	            	<b>Converters</b><br/>
	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
<br/>
	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
<br/>
	            			        		        	            	            	<b>Clustering</b><br/>
	            			            			    <a href="./Clustering.html">Clustering</a>
<br/>
	            			        		        	            	            	<b>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>
     
    <br/>
    
                    </td>
                    <td width="80%" align="left" valign="top">
                                                                    <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="SIP-Transport Integration"><strong>SIP-Transport Integration</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>You need Apache OpenMeetings <strong>version 3.0</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>
      <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="Prerequisites"><strong>Prerequisites</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 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>
                            </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="ODBC Setup"><strong>ODBC Setup</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 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>
					<i>
						[asterisk-connector]<br />
						Description = MySQL connection to 'openmeetings' database<br />
						Driver = MySQL<br />
						Database = openmeetings<br />
						Server = localhost<br />
						USER = root<br />
						PASSWORD =<br />
						Port = 3306<br />
						Socket = /var/run/mysqld/mysqld.sock<br />
					</i>
				</blockquote><br /><br />
				Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system)
				<blockquote>
					(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br />
					<i>
						[MySQL]<br />
						Description = ODBC for MySQL<br />
						Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br />
						Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br />
						FileUsage = 1<br />
					</i>
				</blockquote><br /><br />
				Run the following command to ensure everything works as expected:
				<blockquote>
					<i>echo "select 1" | isql -v asterisk-connector</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="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/releases/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 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 />
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>:
				<blockquote>
					<i>
						[asterisk]<br />
						enabled =&gt; yes<br />
						dsn =&gt; asterisk-connector<br />
						pre-connect =&gt; yes
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				Modify <tt>/etc/asterisk/sip.conf</tt><br />
				<strong>Add/uncomment the following line</strong>:<br />
				<blockquote>
					<i>
						videosupport=yes<br />
						rtcachefriends=yes<br />
					</i>
				</blockquote>
				<strong>Increase maxexpiry value to 43200</strong>:<br />
				<blockquote>
					<i>
						maxexpiry=43200<br />
				        </i>
				</blockquote>
				<strong>Add user for the "SIP Transport"</strong>:<br />
				<blockquote>
					<i>
						[red5sip_user]<br />
						type=friend<br />
						secret=12345<br />
						disallow=all<br />
						allow=ulaw<br />
						allow=h264<br />
						host=dynamic<br />
						nat=force_rport,comedia<br />
						context=rooms-red5sip<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 />
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				Modify <tt>/etc/asterisk/extensions.conf</tt><br />
				<strong>Add the following section</strong>:<br />
				<blockquote>
					<i>
						[rooms]<br />
						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,template)=sip_user)<br />
						exten =&gt; _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<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 />
						<br />
						[rooms-originate]<br />
						exten =&gt; _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
						exten =&gt; _400X!,n,Hangup<br />
						<br />
						[rooms-out]<br />
						; *****************************************************<br />
						; Extensions for outgoing calls from Openmeetings room.<br />
						; *****************************************************<br />
						<br />
						[rooms-red5sip]<br />
						exten =&gt; _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
						exten =&gt; _400X!,n(notavail),Hangup <br />
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				Modify <tt>/etc/asterisk/confbridge.conf</tt><br />
				<strong>Add/Modify the following secions</strong>:<br />
				<blockquote>
					<i>
						[general]<br />
						<br />
						[red5sip_user]<br />
						type=user<br />
						marked=yes<br />
						dsp_drop_silence=yes<br />
						denoise=true<br />
						<br />
						[sip_user]<br />
						type=user<br />
						end_marked=yes<br />
						wait_marked=yes<br />
						music_on_hold_when_empty=yes<br />
						dsp_drop_silence=yes<br />
						denoise=true<br />
						<br />
						[default_bridge]<br />
						type=bridge<br />
						video_mode=follow_talker<br /> 
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br />
				<strong>Add/Modify the following sections</strong>:<br />
				<blockquote>
					<i>
						[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 = all<br />
					</i>
				</blockquote>
			</div>
                                                <br />
                                                <div>
				Update Openmeetings with creadentials for Asterisk manager. 
				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml</tt><br />
				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"&gt;</strong>
				uncomment its parameters and set it to your custom values.
				<p style="font-size: larger; color: blue;">
					IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore
					otherwise all SIP related room information will be lost
				</p>   
			</div>
                                                <br />
                                                <div>
				Restart asterisk:
				<blockquote>
					<i>service asterisk restart</i>
				</blockquote>
			</div>
                                                <br />
                            </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="Setup red5sip transport"><strong>Setup red5sip transport</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <div>
				Download red5sip from
				<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip_2.1</blockquote>
			</div>
                                                <div>
				Build with Apache Ant
				<blockquote>
					<i>ant</i>
				</blockquote>
			</div>
                                                <div>
				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>

				<blockquote>
					<i>
						red5.host=127.0.0.1 # red5 server address<br />
						om.context=openmeetings # Openmeetings context<br /> 
						red5.codec=asao<br />
						red5.codec.rate=22 # should correlate with mic settings in public/config.xml<br />
						sip.obproxy=127.0.0.1 # asterisk adderss<br />
						sip.phone=red5sip_user # sip phone number<br />
						sip.authid=red5sip_user # sip auth id<br />
						sip.secret=12345 # sip password<br />
						sip.realm=asterisk # sip realm<br />
						sip.proxy=127.0.0.1 # address of sip proxy <br />
						rooms.forceStart=no # TBD <br />
						rooms=1 # TBD (not in use) <br />
					</i>
				</blockquote>
			</div>
                                                <div>
				Add red5sip to autostart:
				<blockquote>
					<i>
						sudo cp /opt/red5sip/red5sip /etc/init.d/<br />
						sudo chmod a+x /etc/init.d/red5sip<br />
						sudo update-rc.d red5sip defaults
					</i>
				</blockquote>
			</div>
                                                <div>
				Start openmeetings
				<blockquote>
					<i>service red5 start</i>
				</blockquote>
			</div>
                                                <div>
				Start red5sip
				<blockquote>
					<i>service red5sip start</i>
				</blockquote>
			</div>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2014, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















