<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed 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.
 -->
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
	<properties>
		<title>SIP-Transport Integration</title>
		<author email="solomax@apache.org">OpenMeetings Team</author>
	</properties>
	<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 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="Prerequisites">
			<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>
		</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>
					<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>
		</section>
		<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/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>
		</section>
		<section name="Configure Asterisk">
			<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 => res_odbc.so<br />
						preload => 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 => yes<br />
						dsn => asterisk-connector<br />
						pre-connect => 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 => 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 => _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,template)=sip_user)<br />
						exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br />
						exten => _400X!,n,Hangup<br />
						exten => _400X!,n(notavail),Answer()<br />
						exten => _400X!,n,Playback(invalid)<br />
						exten => _400X!,n,Hangup<br />
						<br />
						[rooms-originate]<br />
						exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
						exten => _400X!,n,Hangup<br />
						<br />
						[rooms-out]<br />
						; *****************************************************<br />
						; Extensions for outgoing calls from Openmeetings room.<br />
						; *****************************************************<br />
						<br />
						[rooms-red5sip]<br />
						exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
						exten => _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/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.
				<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 />
		</section>

		<section name="Setup red5sip transport">
			<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>
		</section>
	</body>
</document>
