Code is updated according to latest wicket changes
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/e227dd4c Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/e227dd4c Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/e227dd4c Branch: refs/heads/master Commit: e227dd4c13d7ba034738affa4847e330d67597b6 Parents: b1c6009 Author: Maxim Solodovnik <[email protected]> Authored: Thu Apr 13 01:23:25 2017 +0000 Committer: Maxim Solodovnik <[email protected]> Committed: Thu Apr 13 01:23:25 2017 +0000 ---------------------------------------------------------------------- .../src/site/xdoc/red5sip-integration_4.0.xml | 304 +++++++++++++++++++ .../web/util/FileItemResourceReference.java | 2 +- .../web/util/GroupLogoResourceReference.java | 6 +- 3 files changed, 308 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e227dd4c/openmeetings-server/src/site/xdoc/red5sip-integration_4.0.xml ---------------------------------------------------------------------- diff --git a/openmeetings-server/src/site/xdoc/red5sip-integration_4.0.xml b/openmeetings-server/src/site/xdoc/red5sip-integration_4.0.xml new file mode 100644 index 0000000..fb9b7f0 --- /dev/null +++ b/openmeetings-server/src/site/xdoc/red5sip-integration_4.0.xml @@ -0,0 +1,304 @@ +<?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="http://maven.apache.org/XDOC/2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> + <properties> + <title>SIP-Transport Integration</title> + <author email="[email protected]">Apache OpenMeetings Team</author> + </properties> + <body> + <section name="SIP-Transport Integration"> + <p>You need Apache OpenMeetings <strong>version 3.1+</strong> to apply this guide!</p> + <p>You need Asterisk <strong>version 13+</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 + <source> +<![CDATA[ +sudo apt-get update && sudo apt-get upgrade +]]> + </source> + </div> + </section> + <section name="Building and setting up Asterisk"> + <div> + Run the commands + <source> +<![CDATA[ +sudo mkdir /usr/src/asterisk && cd /usr/src/asterisk +sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-13.9.0.tar.gz +sudo tar -xvzf asterisk-13.9.0.tar.gz +cd ./asterisk-13.9.0 +sudo make clean +sudo contrib/scripts/install_prereq install +sudo ./configure +sudo make menuconfig +]]> + </source> + Make sure you have selected <tt>Add-ons -> res_config_mysql</tt>, Press F12 to save + <source> +<![CDATA[ +sudo make +sudo make install +sudo make samples +sudo make config +sudo service asterisk start +]]> + </source> + </div> + </section> + <section name="Configure Asterisk"> + <div> + Enable asterisk MySQL module:<br /><br /> + Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br /> + <strong>Add/uncomment the following lines</strong> + <source> +<![CDATA[ +preload => res_config_mysql.so +]]> + </source> + </div><br /> + <div> + Configure MySQL module:<br /><br /> + Set valid data for MySQL in <tt>/etc/asterisk/res_config_mysql.conf</tt> :<br /> + <strong>Example</strong> + <source> +<![CDATA[ +[general] +dbhost = 127.0.0.1 +dbname = openmeetings +dbuser = root +dbpass = +dbport = 3306 +dbsock = /var/lib/mysql/mysql.sock +dbcharset = utf8 +requirements=warn +]]> + </source> + </div><br /> + <div> + Modify <tt>/etc/asterisk/sip.conf</tt><br /> + <strong>Add/uncomment the following line</strong>:<br /> + <source> +<![CDATA[ +videosupport=yes +rtcachefriends=yes +]]> + </source> + <strong>Increase maxexpiry value to 43200</strong>:<br /> + <source> +<![CDATA[ +maxexpiry=43200 +]]> + </source> + <strong>Add user for the "SIP Transport"</strong>:<br /> + <source> +<![CDATA[ +[red5sip_user] +type=friend +secret=12345 +disallow=all +allow=ulaw +allow=h263 +host=dynamic +nat=force_rport,comedia +context=rooms-red5sip +]]> + </source> + </div><br /> + <div> + Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>: + <source> +<![CDATA[ +[settings] +sippeers => mysql,general,sipusers +]]> + </source> + </div><br /> + <div> + Modify <tt>/etc/asterisk/extensions.conf</tt><br /> + <strong>Add the following section</strong>:<br /> + <source> +<![CDATA[ +; ***************************************************** +; The below dial plan is used to dial into a Openmeetings Conference room +; The first line DB_EXISTS(openmeetings/room/ does not belong to the openmeetings application but is the name of astDB containing the astDB family/key pair and values +; To Check if your astDB has been created do the following in a terminal window type the following: +; asterisk ârx âdatabase showâ +; If you do not receive an output with that resembles openmeetings/rooms/400## where â##â will equal the extension assigned when you created your room +; If you do not receive the above output check your parameters in /opt/red5/webapps/openmeetings/WEB-INF/classes/applicationContext.xml +; Go back into the Administrator Panel and remove the PIN number in each room save the record with no PIN number and then re-enter the pin again resave the record. +; ***************************************************** + +[rooms] +exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail) +exten => _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})}) +exten => _400X!,n,Set(CONFBRIDGE(user,template)=sip_user) +exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN}) +exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,) +exten => _400X!,n,Hangup +exten => _400X!,n(notavail),Answer() +exten => _400X!,n,Playback(invalid) +exten => _400X!,n,Hangup + +[rooms-originate] +exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user) +exten => _400X!,n,Hangup + +[rooms-out] +; ***************************************************** +; Extensions for outgoing calls from Openmeetings room. +; ***************************************************** + +[rooms-red5sip] +exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail) +exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user) +exten => _400X!,n(notavail),Hangup +]]> + </source> + </div><br /> + <div> + Modify <tt>/etc/asterisk/confbridge.conf</tt><br /> + <strong>Add/Modify the following secions</strong>:<br /> + <source> +<![CDATA[ +[general] + +[red5sip_user] +type=user +marked=yes +dsp_drop_silence=yes +denoise=true + +[sip_user] +type=user +end_marked=yes +wait_marked=yes +music_on_hold_when_empty=yes +dsp_drop_silence=yes +denoise=true + +[default_bridge] +type=bridge +video_mode=follow_talker +]]> + </source> + </div><br /> + <div> + To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br /> + <strong>Add/Modify the following sections</strong>:<br /> + <source> +<![CDATA[ +[general] +enabled = yes +webenabled = no +port = 5038 +bindaddr = 127.0.0.1 + +[openmeetings] +secret = 12345 +deny=0.0.0.0/0.0.0.0 +permit=127.0.0.1/255.255.255.0 +read = all +write = all +]]> + </source> + </div><br /> + <div> + Update OpenMeetings with credentials for Asterisk manager. + Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/applicationContext.xml</tt><br /> + find <strong><bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"></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: + <source> +<![CDATA[ +service asterisk restart +]]> + </source> + </div><br /> + </section> + + <section name="Setup red5sip transport"> + <ul> + <li>Download red5sip from <tt>https://github.com/openmeetings/red5sip</tt> + <source> +<![CDATA[ +git clone https://github.com/openmeetings/red5sip.git +]]> + </source> + </li> + <li>Build with Apache Maven + <source> +<![CDATA[ +cd red5sip +mvn clean package +]]> + </source> + </li> + <li>All necessary files will be available in <tt>target</tt> folder, copy/move it to /opt/red5sip/</li> + <li>Insert proper values to the <tt>/opt/red5sip/settings.properties</tt> + <source> +<![CDATA[ +red5.host=127.0.0.1 # red5 server address +om.context=openmeetings # Openmeetings context +red5.codec=asao +red5.codec.rate=22 # should correlate with mic settings in public/config.xml +sip.obproxy=127.0.0.1 # asterisk adderss +sip.phone=red5sip_user # sip phone number +sip.authid=red5sip_user # sip auth id +sip.secret=12345 # sip password +sip.realm=asterisk # sip realm +sip.proxy=127.0.0.1 # address of sip proxy +rooms.forceStart=no # TBD +rooms=1 # TBD (not in use) +]]> + </source> + </li> + <li>Add red5sip to autostart: + <source> +<![CDATA[ +sudo cp /opt/red5sip/red5sip /etc/init.d/ +sudo chmod a+x /etc/init.d/red5sip +sudo update-rc.d red5sip defaults +]]> + </source> + </li> + <li>Start openmeetings + <source> +<![CDATA[ +service red5 start +]]> + </source> + </li> + <li>Start red5sip + <source> +<![CDATA[ +service red5sip start +]]> + </source> + </li> + </ul> + </section> + </body> +</document> http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e227dd4c/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java index d2f5ac0..7082563 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java @@ -58,7 +58,7 @@ public abstract class FileItemResourceReference<T extends FileItem> extends File r = getFileItem(attr); if (r != null) { file = getFile(r, attr); - ResourceResponse rr = createResourceResponse(file.toPath()); + ResourceResponse rr = createResourceResponse(attr, file.toPath()); rr.setFileName(getFileName(r)); return rr; } else { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e227dd4c/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java index a022e6e..c79c867 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java @@ -49,8 +49,8 @@ public class GroupLogoResourceReference extends FileSystemResourceReference { } @Override - protected ResourceResponse newResourceResponse(Attributes attributes) { - PageParameters params = attributes.getParameters(); + protected ResourceResponse newResourceResponse(Attributes attrs) { + PageParameters params = attrs.getParameters(); StringValue _id = params.get("id"); Long id = null; try { @@ -58,7 +58,7 @@ public class GroupLogoResourceReference extends FileSystemResourceReference { } catch (Exception e) { //no-op expected } - return createResourceResponse(getGroupLogo(id, true).toPath()); + return createResourceResponse(attrs, getGroupLogo(id, true).toPath()); } }; }
