Merge branch 'master' of github.com:bigbluebutton/bigbluebutton
This commit is contained in:
commit
72be813349
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/main/java"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
3
bbb-common-message/.gitignore
vendored
3
bbb-common-message/.gitignore
vendored
@ -1,2 +1,5 @@
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
bin
|
||||
build
|
||||
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>bbb-common-messaging</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,12 +0,0 @@
|
||||
#Thu Feb 25 09:24:46 EST 2010
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
@ -1,4 +1 @@
|
||||
- common code between bbb-apps and bbb-web
|
||||
|
||||
test
|
||||
|
||||
see http://code.google.com/p/bigbluebutton/wiki/DevelopingBBB
|
||||
|
@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/main/java"/>
|
||||
<classpathentry excluding="org/bigbluebutton/webconference/voice/asterisk/" kind="src" path="src/main/groovy"/>
|
||||
<classpathentry kind="src" path="test/commandline/src"/>
|
||||
<classpathentry excluding="src/" kind="src" path="test/commandline"/>
|
||||
<classpathentry kind="src" path="src/main/scala"/>
|
||||
<classpathentry kind="lib" path="lib/bbb-common-message-0.64.jar"/>
|
||||
<classpathentry kind="lib" path="lib/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/servlet-api-2.5.jar"/>
|
||||
<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
|
||||
<classpathentry kind="lib" path="lib/jcip-annotations-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jyaml-1.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-tx-2.5.6.jar"/>
|
||||
<classpathentry kind="lib" path="lib/activemq-core-5.1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/groovy-all-1.6.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/asterisk-java-1.0.0.M3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-integration-spring-1.1.7.jar"/>
|
||||
<classpathentry kind="lib" path="lib/red5-0.91.jar"/>
|
||||
<classpathentry kind="lib" path="lib/aopalliance-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/log4j-over-slf4j-1.5.10.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-classic-0.9.18.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-core-0.9.18.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-core-2.0.0-RC1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/slf4j-api-1.5.10.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-aop-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-beans-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-context-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-core-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-jms-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-web-3.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-integration-adapter-2.0.0.M2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-integration-core-2.0.0.M2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-integration-file-2.0.0.M2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-integration-jms-2.0.0.M2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-integration-stream-2.0.0.M2.jar"/>
|
||||
<classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/bbb-common-message"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
3
bigbluebutton-apps/.gitignore
vendored
3
bigbluebutton-apps/.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
build
|
||||
lib
|
||||
.scala_dependencies
|
||||
|
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>w-bbb-apps</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>ch.epfl.lamp.sdt.core.scalabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>ch.epfl.lamp.sdt.core.scalanature</nature>
|
||||
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,4 +0,0 @@
|
||||
#Mon Nov 30 11:36:41 EST 2009
|
||||
eclipse.preferences.version=1
|
||||
groovy.compiler.output.path=bin-groovy
|
||||
support.groovy=true
|
@ -1,13 +0,0 @@
|
||||
#Mon Nov 30 10:59:11 EST 2009
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.groovy
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
@ -1,165 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
1
bigbluebutton-apps/README
Normal file
1
bigbluebutton-apps/README
Normal file
@ -0,0 +1 @@
|
||||
- see http://code.google.com/p/bigbluebutton/wiki/DevelopingBBB
|
@ -43,3 +43,4 @@
|
||||
</modules>
|
||||
<buildCSSFiles/>
|
||||
</actionScriptProperties>
|
||||
|
||||
|
@ -1,2 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<flexProperties enableServiceManager="false" flexServerFeatures="0" flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="1"/>
|
||||
|
||||
|
81
bigbluebutton-client/build.xml
Executable file → Normal file
81
bigbluebutton-client/build.xml
Executable file → Normal file
@ -2,10 +2,12 @@
|
||||
<!-- BigBlueButton Client build.xml for use by Hudson builds. -->
|
||||
<project name="BigBlueButton Client" basedir="." default="clean-build-all" >
|
||||
<property environment="env" />
|
||||
<property name="BUILD_ENV" value="DEV" />
|
||||
<property name="FLEX_HOME" value="${env.FLEX_HOME}" />
|
||||
<property name="LOCALE_DIR" value="${FLEX_HOME}/frameworks/locale"/>
|
||||
<property name="BASE_DIR" value="${basedir}" />
|
||||
<property name="RESOURCES_DIR" value="${BASE_DIR}/resources" />
|
||||
<property name="PROD_RESOURCES_DIR" value="${RESOURCES_DIR}/prod" />
|
||||
<property name="SRC_DIR" value="${BASE_DIR}/src" />
|
||||
|
||||
<property name="OUTPUT_DIR" value="${BASE_DIR}/bin" />
|
||||
@ -125,14 +127,20 @@
|
||||
<build-module src="${SRC_DIR}" target="${PRESENT}" />
|
||||
</target>
|
||||
|
||||
<target name="build-deskshare-standalone" depends="build-deskshare" description="Compile Deskshare Standalone Module">
|
||||
<build-module src="${SRC_DIR}" target="${DESKSHARE_SA}" />
|
||||
<target name="build-deskshare-standalone" depends="build-deskshare-no-linker" description="Compile Deskshare Standalone Module">
|
||||
<echo message="Compiling deskshare standalone without optimization." />
|
||||
<build-module-no-link src="${SRC_DIR}" target="${DESKSHARE_SA}" />
|
||||
</target>
|
||||
|
||||
<target name="build-deskshare-no-linker" description="Compile Deskshare Module without the linker">
|
||||
<echo message="Compiling deskshare without optimization." />
|
||||
<build-module-no-link src="${SRC_DIR}" target="${DESKSHARE}" />
|
||||
</target>
|
||||
|
||||
<target name="build-deskshare" description="Compile Deskshare Module">
|
||||
<build-module src="${SRC_DIR}" target="${DESKSHARE}" />
|
||||
<echo message="Copying deskshare applet for Deskshare Module" />
|
||||
<copy file="${RESOURCES_DIR}/bbb-deskshare-applet-0.64.jar" todir="${OUTPUT_DIR}"/>
|
||||
<copy file="${PROD_RESOURCES_DIR}/bbb-deskshare-applet-0.64.jar" todir="${OUTPUT_DIR}"/>
|
||||
</target>
|
||||
|
||||
<target name="build-phone" description="Compile Phone Module">
|
||||
@ -164,7 +172,7 @@
|
||||
|
||||
<!-- just a grouping of modules to compile -->
|
||||
<target name="build-deskshare-phone-video-highlighter-dyn"
|
||||
depends="build-deskshare-standalone, build-phone, build-video, build-highlighter, build-dyn"
|
||||
depends="build-deskshare, build-phone, build-video, build-highlighter, build-dyn"
|
||||
description="Compile deskshare, phone, video, highlighter, dynamic info modules">
|
||||
</target>
|
||||
|
||||
@ -192,6 +200,30 @@
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="build-module-no-link">
|
||||
<attribute name="target" description="Module to compile" />
|
||||
<attribute name="flex" default="${FLEX_HOME}" description="Location of the Flex install." />
|
||||
<attribute name="app" default="."/>
|
||||
<attribute name="src" default="${SRC_DIR}" description="Path to the module to compile" />
|
||||
<sequential>
|
||||
<mxmlc file="@{src}/@{target}.mxml" output="${OUTPUT_DIR}/@{target}.swf" debug="false">
|
||||
<load-config filename="@{flex}/frameworks/flex-config.xml" />
|
||||
<source-path path-element="@{flex}/frameworks" />
|
||||
<compiler.library-path dir="@{flex}/frameworks" append="true">
|
||||
<include name="libs" />
|
||||
<include name="../bundles/{locale}" />
|
||||
</compiler.library-path>
|
||||
|
||||
<compiler.library-path dir="@{app}" append="true">
|
||||
<include name="libs" />
|
||||
<include name="libs/generated" />
|
||||
</compiler.library-path>
|
||||
|
||||
<default-size width="500" height="600" />
|
||||
</mxmlc>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="build-module">
|
||||
<attribute name="target" description="Module to compile" />
|
||||
<attribute name="flex" default="${FLEX_HOME}" description="Location of the Flex install." />
|
||||
@ -215,24 +247,36 @@
|
||||
</mxmlc>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="compile-deskshare-standalone" depends="build-deskshare-standalone"
|
||||
description="Compiling standalone desktop sharing">
|
||||
<echo message="Deskshare standalone built without optimization." />
|
||||
</target>
|
||||
|
||||
<target name="compile-bbb"
|
||||
depends="build-main-chat-viewers-listeners-present, build-deskshare-phone-video-highlighter-dyn, copy-resource-files"
|
||||
<target name="compile-bbb" depends="build-main-chat-viewers-listeners-present, build-deskshare-phone-video-highlighter-dyn, copy-resource-files"
|
||||
description="Compiling the BBB without copying config.xml">
|
||||
</target>
|
||||
|
||||
<target name="copy-resource-files">
|
||||
<copy todir="${OUTPUT_DIR}/conf" >
|
||||
<fileset dir="${BASE_DIR}/src/conf" />
|
||||
</copy>
|
||||
|
||||
<copy todir="${OUTPUT_DIR}/swfobject/" >
|
||||
<fileset dir="${BASE_DIR}/src/swfobject/" />
|
||||
</copy>
|
||||
<copy file="${RESOURCES_DIR}/BigBlueButton.html" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
<copy file="${RESOURCES_DIR}/DeskshareStandalone.html" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
<copy file="${RESOURCES_DIR}/bbb.gif" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
|
||||
<copy file="${PROD_RESOURCES_DIR}/BigBlueButton.html" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
<copy file="${PROD_RESOURCES_DIR}/DeskshareStandalone.html" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
<copy file="${PROD_RESOURCES_DIR}/bbb.gif" todir="${OUTPUT_DIR}" overwrite="true"/>
|
||||
<copy file="${PROD_RESOURCES_DIR}/locales.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
|
||||
<copy file="${PROD_RESOURCES_DIR}/example-info-data.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
|
||||
<if>
|
||||
<equals arg1="${BUILD_ENV}" arg2="DEV"/>
|
||||
<then>
|
||||
<echo message="Copying config.xml for development environment"/>
|
||||
<copy file="${BASE_DIR}/src/conf/config.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
|
||||
</then>
|
||||
<else>
|
||||
<echo message="Need to copy config.xml.template for production environment"/>
|
||||
<copy file="${RESOURCES_DIR}/config.xml.template" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="check-config-xml">
|
||||
@ -267,9 +311,12 @@
|
||||
<mkdir dir="${OUTPUT_DIR}"/>
|
||||
</target>
|
||||
|
||||
<target name="clean-build-bbb" depends="clean, generate-html-wrapper, compile-bbb" description="Build BBB client skipping compiling of locales"/>
|
||||
|
||||
<target name="clean-build-all" depends="clean, generate-html-wrapper, localization, compile-bbb" description="Build BBB client including locales"/>
|
||||
<!-- NOTE: compile-deskshare-standalone MUST come first before compile-bbb as we need the deskshare-standalone
|
||||
to be compiled withouth being optimized by using the linker -->
|
||||
<target name="clean-build-bbb" depends="clean, generate-html-wrapper, compile-deskshare-standalone, compile-bbb"
|
||||
description="Build BBB client skipping compiling of locales"/>
|
||||
<target name="clean-build-all" depends="clean, generate-html-wrapper, localization, compile-deskshare-standalone, compile-bbb"
|
||||
description="Build BBB client including locales"/>
|
||||
|
||||
<target name="cleanandmake" depends="clean-build-all" description="Build BBB client including locales"/>
|
||||
</project>
|
||||
|
20
bigbluebutton-client/src/conf/config.xml.template → bigbluebutton-client/resources/config.xml.template
Executable file → Normal file
20
bigbluebutton-client/src/conf/config.xml.template → bigbluebutton-client/resources/config.xml.template
Executable file → Normal file
@ -1,26 +1,26 @@
|
||||
<?xml version="1.0" ?>
|
||||
<config>
|
||||
<localeversion>0.7</localeversion>
|
||||
<localeversion>0.7</localeversion>
|
||||
<version>VERSION</version>
|
||||
<help url="http://HOST/help.html"/>
|
||||
<porttest host="HOST" application="video"/>
|
||||
<modules>
|
||||
|
||||
<module name="ChatModule" url="ChatModule-VERSION.swf"
|
||||
<module name="ChatModule" url="ChatModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
loadNextModule="ListenersModule"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
|
||||
<module name="ViewersModule" url="ViewersModule-VERSION.swf"
|
||||
<module name="ViewersModule" url="ViewersModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
host="http://HOST/bigbluebutton/conference-session/enter"
|
||||
onAppInitEvent="LOAD" loadNextModule="ChatModule"
|
||||
onAppStartEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
<module name="ListenersModule" url="ListenersModule-VERSION.swf"
|
||||
<module name="ListenersModule" url="ListenersModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
recordingHost="http://HOST"
|
||||
loadNextModule="DeskShareModule"
|
||||
@ -28,30 +28,30 @@
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
|
||||
<module name="DeskShareModule" url="DeskShareModule-VERSION.swf" uri="rtmp://HOST/deskShare" onUserJoinedEvent="START" onUserLogoutEvent="STOP" loadNextModule="PhoneModule" />
|
||||
<module name="DeskShareModule" url="DeskShareModule.swf?v=VERSION" uri="rtmp://HOST/deskShare" onUserJoinedEvent="START" onUserLogoutEvent="STOP" loadNextModule="PhoneModule" />
|
||||
|
||||
<module name="PhoneModule" url="PhoneModule-VERSION.swf"
|
||||
<module name="PhoneModule" url="PhoneModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/sip"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="VideoconfModule"
|
||||
/>
|
||||
|
||||
<module name="VideoconfModule" url="VideoconfModule-VERSION.swf"
|
||||
<module name="VideoconfModule" url="VideoconfModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/video"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="HighlighterModule"
|
||||
/>
|
||||
|
||||
<module name="HighlighterModule" url="HighlighterModule-VERSION.swf"
|
||||
<module name="HighlighterModule" url="HighlighterModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="PresentModule"
|
||||
/>
|
||||
|
||||
<module name="PresentModule" url="PresentModule-VERSION.swf"
|
||||
<module name="PresentModule" url="PresentModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
host="http://HOST"
|
||||
onUserJoinedEvent="START"
|
||||
@ -59,7 +59,7 @@
|
||||
/>
|
||||
|
||||
<!-- new module in development:
|
||||
<module name="DynamicInfoModule" url="DynamicInfoModule-VERSION.swf"
|
||||
<module name="DynamicInfoModule" url="DynamicInfoModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/bigbluebutton"
|
||||
host="http://HOST"
|
||||
infoURL="http://HOST/client/conf/example-info-data.xml?user={userID}&role={role}&meetingID={meetingID}"
|
6
bigbluebutton-client/resources/BigBlueButton.html → bigbluebutton-client/resources/prod/BigBlueButton.html
Executable file → Normal file
6
bigbluebutton-client/resources/BigBlueButton.html → bigbluebutton-client/resources/prod/BigBlueButton.html
Executable file → Normal file
@ -66,7 +66,7 @@ if ( hasProductInstall && !hasRequestedVersion ) {
|
||||
// see. http://stackoverflow.com/questions/313966/mousewheel-not-working-when-published-movie-has-wmodetransparent
|
||||
// ralam (mar 31, 2010)
|
||||
AC_FL_RunContent(
|
||||
"src", "BigBlueButton-VERSION",
|
||||
"src", "BigBlueButton.swf?v=VERSION",
|
||||
"width", "100%",
|
||||
"height", "100%",
|
||||
"align", "middle",
|
||||
@ -182,12 +182,12 @@ function getLanguage(){
|
||||
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
||||
id="BigBlueButton" width="100%" height="100%"
|
||||
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
|
||||
<param name="movie" value="BigBlueButton-VERSION.swf" />
|
||||
<param name="movie" value="BigBlueButton.swf?v=VERSION" />
|
||||
<param name="quality" value="high" />
|
||||
<param name="bgcolor" value="#869ca7" />
|
||||
<param name="allowScriptAccess" value="sameDomain" />
|
||||
<param name="allowFullScreen" value="true" />
|
||||
<embed src="BigBlueButton-VERSION.swf" quality="high" bgcolor="#869ca7"
|
||||
<embed src="BigBlueButton.swf?v=VERSION" quality="high" bgcolor="#869ca7"
|
||||
width="100%" height="100%" name="BigBlueButton" align="middle"
|
||||
play="true"
|
||||
loop="false"
|
6
bigbluebutton-client/resources/DeskshareStandalone.html → bigbluebutton-client/resources/prod/DeskshareStandalone.html
Executable file → Normal file
6
bigbluebutton-client/resources/DeskshareStandalone.html → bigbluebutton-client/resources/prod/DeskshareStandalone.html
Executable file → Normal file
@ -66,7 +66,7 @@ if ( hasProductInstall && !hasRequestedVersion ) {
|
||||
// see. http://stackoverflow.com/questions/313966/mousewheel-not-working-when-published-movie-has-wmodetransparent
|
||||
// ralam (mar 31, 2010)
|
||||
AC_FL_RunContent(
|
||||
"src", "DeskshareStandalone-VERSION",
|
||||
"src", "DeskshareStandalone.swf?v=VERSION",
|
||||
"width", "100%",
|
||||
"height", "100%",
|
||||
"align", "middle",
|
||||
@ -182,12 +182,12 @@ function getLanguage(){
|
||||
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
||||
id="DeskshareStandalone" width="100%" height="100%"
|
||||
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
|
||||
<param name="movie" value="DeskshareStandalone-VERSION.swf" />
|
||||
<param name="movie" value="DeskshareStandalone.swf?v=VERSION" />
|
||||
<param name="quality" value="high" />
|
||||
<param name="bgcolor" value="#869ca7" />
|
||||
<param name="allowScriptAccess" value="sameDomain" />
|
||||
<param name="allowFullScreen" value="true" />
|
||||
<embed src="DeskshareStandalone-VERSION.swf" quality="high" bgcolor="#869ca7"
|
||||
<embed src="DeskshareStandalone.swf?v=VERSION" quality="high" bgcolor="#869ca7"
|
||||
width="100%" height="100%" name="DeskshareStandalone" align="middle"
|
||||
play="true"
|
||||
loop="false"
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -1,21 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Setup the locale for BigBlueButton
|
||||
#
|
||||
NEW_LANG=$(cat ./src/org/bigbluebutton/util/i18n/ResourceUtil.as | tr -d '\r' | sed -n "/localeChain:Array/{s/.*\[[ ]*//g;s/[ ]*\];//g;s/\"//g;s/,//g;p}")
|
||||
echo "Checking languages: $NEW_LANG"
|
||||
|
||||
CUR_DIR=$(pwd)
|
||||
|
||||
cd "${FLEX_HOME}/frameworks/locale"
|
||||
|
||||
for v in $NEW_LANG; do
|
||||
if [ ! -d ${v} ]; then
|
||||
echo "Creating locale for: ${v}"
|
||||
$FLEX_HOME/bin/copylocale en_US ${v}
|
||||
fi
|
||||
done
|
||||
|
||||
cd $CUR_DIR
|
||||
|
1
bigbluebutton-client/src/conf/.gitignore
vendored
1
bigbluebutton-client/src/conf/.gitignore
vendored
@ -1 +1,2 @@
|
||||
config.xml
|
||||
join-mock.xml
|
||||
|
@ -1,72 +0,0 @@
|
||||
<?xml version="1.0" ?>
|
||||
<config>
|
||||
<version>dev build</version>
|
||||
<help url="http://192.168.0.120/help.html"/>
|
||||
<porttest host="192.168.0.120" application="video"/>
|
||||
<modules>
|
||||
|
||||
<module name="ChatModule" url="ChatModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
loadNextModule="ListenersModule"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
<!--host="http://192.168.0.172/bigbluebutton/conference-session/enter"-->
|
||||
<!--host="conf/join-mock.xml"-->
|
||||
<module name="ViewersModule" url="ViewersModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
host="conf/join-mock.xml"
|
||||
onAppInitEvent="LOAD" loadNextModule="ChatModule"
|
||||
onAppStartEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
<module name="ListenersModule" url="ListenersModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
recordingHost="http://192.168.0.120"
|
||||
loadNextModule="DeskShareModule"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
|
||||
<module name="DeskShareModule" url="DeskShareModule.swf" uri="rtmp://192.168.0.120/deskShare" onUserJoinedEvent="START" onUserLogoutEvent="STOP" loadNextModule="PhoneModule" />
|
||||
|
||||
<module name="PhoneModule" url="PhoneModule.swf"
|
||||
uri="rtmp://192.168.0.120/sip"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="VideoconfModule"
|
||||
/>
|
||||
|
||||
<module name="VideoconfModule" url="VideoconfModule.swf"
|
||||
uri="rtmp://192.168.0.120/video"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="HighlighterModule"
|
||||
/>
|
||||
|
||||
<module name="HighlighterModule" url="HighlighterModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
loadNextModule="PresentModule"
|
||||
/>
|
||||
|
||||
<module name="PresentModule" url="PresentModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
host="http://192.168.0.120"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
|
||||
<!-- new module in development:
|
||||
<module name="DynamicInfoModule" url="DynamicInfoModule.swf"
|
||||
uri="rtmp://192.168.0.120/bigbluebutton"
|
||||
host="http://192.168.0.120"
|
||||
infoURL="http://192.168.0.120/client/conf/example-info-data.xml?user={userID}&role={role}&meetingID={meetingID}"
|
||||
onUserJoinedEvent="START"
|
||||
onUserLogoutEvent="STOP"
|
||||
/>
|
||||
-->
|
||||
|
||||
</modules>
|
||||
</config>
|
@ -175,8 +175,8 @@
|
||||
video.attachNetStream(ns);
|
||||
ns.play(stream);
|
||||
this.stream = stream;
|
||||
|
||||
this.title = UserManager.getInstance().getPresenter().name + " is sharing their desktop with you";
|
||||
this.title = "Blah";
|
||||
// this.title = UserManager.getInstance().getPresenter().name + " is sharing their desktop with you";
|
||||
}
|
||||
|
||||
public function stopViewing():void {
|
||||
|
@ -149,7 +149,7 @@
|
||||
this.x = this.parent.width - this.width;
|
||||
} else {
|
||||
// Move window so that it won't overlap with Participant's window.
|
||||
this.x = DEFAULT_X_POSITION;
|
||||
this.x = ((Capabilities.screenResolutionX / 20) * 3) + 10;
|
||||
}
|
||||
}
|
||||
|
||||
@ -433,7 +433,7 @@
|
||||
|
||||
private function clearPresentation(e:UploadEvent):void{
|
||||
slideView.visible = false;
|
||||
slideView.swfSlideLoader.source = null;
|
||||
slideView.slideLoader.source = null;
|
||||
slideView.selectedSlide = 0;
|
||||
btnSlideNum.label = "";
|
||||
displaySlideNavigationControls(false);
|
||||
|
@ -106,9 +106,9 @@
|
||||
|
||||
private var dispatcher:Dispatcher = new Dispatcher();
|
||||
|
||||
private function onCreationComplete():void{
|
||||
swfSlideLoader.width = this.width;
|
||||
swfSlideLoader.height = this.height;
|
||||
private function onCreationComplete():void {
|
||||
slideLoader.width = this.width;
|
||||
slideLoader.height = this.height;
|
||||
|
||||
cursor = new Shape();
|
||||
cursor.graphics.lineStyle(6, 0xFF0000, 0.6);
|
||||
@ -123,135 +123,172 @@
|
||||
|
||||
this.setChildIndex(thumbnailView, this.numChildren - 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function setSlides(slides:ArrayCollection):void{
|
||||
|
||||
public function setSlides(slides:ArrayCollection):void {
|
||||
this.slides = slides;
|
||||
thumbnailView.dataProvider = this.slides.toArray();
|
||||
}
|
||||
|
||||
private function changeSlide():void{
|
||||
private function changeSlide():void {
|
||||
dispatchEvent(new PresenterCommands(PresenterCommands.GOTO_SLIDE, thumbnailView.selectedIndex));
|
||||
thumbnailView.visible = false;
|
||||
showOverlayCanvas(true);
|
||||
dispatchEvent(new Event(THUMBNAILS_CLOSED));
|
||||
}
|
||||
|
||||
private function changeIndex(e:ListEvent):void{
|
||||
private function changeIndex(e:ListEvent):void {
|
||||
dispatchEvent(e);
|
||||
}
|
||||
|
||||
private function onMouseDown(e:MouseEvent):void{
|
||||
|
||||
/**
|
||||
* Triggered when the presenter clicks on the slides with the intent of moving it.
|
||||
*/
|
||||
private function onMouseDown(e:MouseEvent):void {
|
||||
canvasMouseXOnMouseDown = this.mouseX;
|
||||
canvasMouseYOnMouseDown = this.mouseY;
|
||||
loaderXOnMouseDown = swfSlideLoader.x;
|
||||
loaderYOnMouseDown = swfSlideLoader.y;
|
||||
loaderXOnMouseDown = slideLoader.x;
|
||||
loaderYOnMouseDown = slideLoader.y;
|
||||
|
||||
addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when the mouse had been clicked and dragged to move the slide.
|
||||
*/
|
||||
private function onMouseMove(e:MouseEvent):void {
|
||||
// Compute the change in mouse position from where the mouse was clicked.
|
||||
var deltaCanvasMouseX:Number = this.mouseX - canvasMouseXOnMouseDown;
|
||||
var deltaCanvasMouseY:Number = this.mouseY - canvasMouseYOnMouseDown;
|
||||
|
||||
swfSlideLoader.x = loaderXOnMouseDown + deltaCanvasMouseX/2;
|
||||
swfSlideLoader.y = loaderYOnMouseDown + deltaCanvasMouseY/2;
|
||||
// Now we move the slide by the amount of mouse location change.
|
||||
slideLoader.x = loaderXOnMouseDown + deltaCanvasMouseX;
|
||||
slideLoader.y = loaderYOnMouseDown + deltaCanvasMouseY;
|
||||
|
||||
// Move the slide within the loader.
|
||||
fitSlideToLoader();
|
||||
notifyOtherParticipantsOfSlideMoving();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to other participants indicating the presenter has moved the slide.
|
||||
*/
|
||||
private function notifyOtherParticipantsOfSlideMoving():void {
|
||||
var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.MOVE);
|
||||
presentEvent.xOffset = swfSlideLoader.x/swfSlideLoader.width;
|
||||
presentEvent.yOffset = swfSlideLoader.y/swfSlideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = swfSlideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = swfSlideLoader.height/this.height;
|
||||
presentEvent.xOffset = slideLoader.x/slideLoader.width;
|
||||
presentEvent.yOffset = slideLoader.y/slideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = slideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = slideLoader.height/this.height;
|
||||
dispatchEvent(presentEvent);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Triggered when the presenter releases the mouse button.
|
||||
*/
|
||||
private function onMouseUp(e:MouseEvent):void{
|
||||
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when the presenter has dragged the cursor outside the presetation window.
|
||||
*/
|
||||
private function onMouseOut(e:MouseEvent):void{
|
||||
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the resizing of the presenter's window. This is for the presenter resizing
|
||||
* his/her window.
|
||||
*/
|
||||
private function handleWindowResizeEvent(event:WindowResizedEvent):void {
|
||||
this.width = event.width;
|
||||
this.height = event.height;
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resize and moves the slide loader within the canvas container.
|
||||
*/
|
||||
private function resizeAndMoveLoaderInRelationToCanvas():void {
|
||||
swfSlideLoader.width = this.width * presentersLoaderCanvasWidthRatio;
|
||||
swfSlideLoader.height = this.height * presentersLoaderCanvasHeightRatio;
|
||||
slideLoader.width = this.width * presentersLoaderCanvasWidthRatio;
|
||||
slideLoader.height = this.height * presentersLoaderCanvasHeightRatio;
|
||||
|
||||
swfSlideLoader.x = swfSlideLoader.width * presentersLoaderXOffsetFromCanvas;
|
||||
swfSlideLoader.y = swfSlideLoader.width * presentersLoaderYOffsetFromCanvas;
|
||||
slideLoader.x = slideLoader.width * presentersLoaderXOffsetFromCanvas;
|
||||
slideLoader.y = slideLoader.height * presentersLoaderYOffsetFromCanvas;
|
||||
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fit the slide inside the loader.
|
||||
*/
|
||||
private function fitSlideToLoader():void {
|
||||
if (noSlideContentLoaded()) return;
|
||||
|
||||
swfSlideLoader.content.x = swfSlideLoader.x;
|
||||
swfSlideLoader.content.y = swfSlideLoader.y;
|
||||
swfSlideLoader.content.width = swfSlideLoader.width;
|
||||
swfSlideLoader.content.height = swfSlideLoader.height;
|
||||
slideLoader.content.x = slideLoader.x;
|
||||
slideLoader.content.y = slideLoader.y;
|
||||
slideLoader.content.width = slideLoader.width;
|
||||
slideLoader.content.height = slideLoader.height;
|
||||
|
||||
zoomCanvas(swfSlideLoader.width, swfSlideLoader.height);
|
||||
zoomCanvas(slideLoader.width, slideLoader.height);
|
||||
}
|
||||
|
||||
private function fitLoaderToCanvas():void{
|
||||
if (noSlideContentLoaded()) return;
|
||||
|
||||
swfSlideLoader.width = this.width;
|
||||
swfSlideLoader.height = this.height;
|
||||
swfSlideLoader.x = this.x;
|
||||
swfSlideLoader.y = this.y;
|
||||
slideLoader.width = this.width;
|
||||
slideLoader.height = this.height;
|
||||
slideLoader.x = this.x;
|
||||
slideLoader.y = this.y;
|
||||
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function resizeAndMoveLoaderBy(percent:Number):void {
|
||||
// Save the old loader dimensions. We need these to calculate
|
||||
// the new position of the loader;
|
||||
var oldLoaderHeight:int = swfSlideLoader.height;
|
||||
var oldLoaderWidth:int = swfSlideLoader.width;
|
||||
var oldLoaderHeight:int = slideLoader.height;
|
||||
var oldLoaderWidth:int = slideLoader.width;
|
||||
|
||||
swfSlideLoader.width = this.width * percent/100;
|
||||
swfSlideLoader.height = this.height * percent/100;
|
||||
slideLoader.width = this.width * percent/100;
|
||||
slideLoader.height = this.height * percent/100;
|
||||
|
||||
swfSlideLoader.x = calculateNewLoaderX(oldLoaderWidth);
|
||||
swfSlideLoader.y = calculateNewLoaderY(oldLoaderHeight);
|
||||
slideLoader.x = calculateNewLoaderX(oldLoaderWidth);
|
||||
slideLoader.y = calculateNewLoaderY(oldLoaderHeight);
|
||||
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the new y coordinate of the loader. This determines if the location has
|
||||
* changed because the slide was resized or moved.
|
||||
*/
|
||||
private function calculateNewLoaderY(oldLoaderHeight:int):int {
|
||||
var deltaPercentHeight:Number = (swfSlideLoader.height - oldLoaderHeight) /oldLoaderHeight;
|
||||
var deltaPercentHeight:Number = (slideLoader.height - oldLoaderHeight) /oldLoaderHeight;
|
||||
|
||||
var newLoaderY:int = (swfSlideLoader.y/swfSlideLoader.height) * deltaPercentHeight;
|
||||
var newLoaderY:int = (slideLoader.y/slideLoader.height) * deltaPercentHeight;
|
||||
if (newLoaderY == 0) {
|
||||
newLoaderY = swfSlideLoader.y - (deltaPercentHeight * 100);
|
||||
newLoaderY = slideLoader.y - (deltaPercentHeight * 100);
|
||||
} else {
|
||||
newLoaderY = swfSlideLoader.y - newLoaderY;
|
||||
newLoaderY = slideLoader.y - newLoaderY;
|
||||
}
|
||||
|
||||
return newLoaderY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the new y coordinate of the loader. This determines if the location has
|
||||
* changed because the slide was resized or moved.
|
||||
*/
|
||||
private function calculateNewLoaderX(oldLoaderWidth:int):int {
|
||||
var deltaPercentWidth:Number = (swfSlideLoader.width - oldLoaderWidth) / oldLoaderWidth;
|
||||
var newLoaderX:int = (swfSlideLoader.x/swfSlideLoader.width) * deltaPercentWidth;
|
||||
var deltaPercentWidth:Number = (slideLoader.width - oldLoaderWidth) / oldLoaderWidth;
|
||||
var newLoaderX:int = (slideLoader.x/slideLoader.width) * deltaPercentWidth;
|
||||
if (newLoaderX == 0) {
|
||||
newLoaderX = swfSlideLoader.x - (deltaPercentWidth * 100);
|
||||
newLoaderX = slideLoader.x - (deltaPercentWidth * 100);
|
||||
} else {
|
||||
newLoaderX = swfSlideLoader.x - newLoaderX;
|
||||
newLoaderX = slideLoader.x - newLoaderX;
|
||||
}
|
||||
|
||||
return newLoaderX;
|
||||
@ -278,6 +315,9 @@
|
||||
notifyOthersOfZoomEvent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when the presenter uses the mouse wheel to zoom in/out of the slide.
|
||||
*/
|
||||
private function onMouseWheelZoomEvent(e:MouseEvent):void {
|
||||
if (presenterIsZoomingOut(e.delta)) {
|
||||
zoomPercentage -= ZOOM_STEP;
|
||||
@ -297,10 +337,10 @@
|
||||
|
||||
private function notifyOthersOfZoomEvent():void {
|
||||
var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.ZOOM);
|
||||
presentEvent.xOffset = swfSlideLoader.x/swfSlideLoader.width;
|
||||
presentEvent.yOffset = swfSlideLoader.y/swfSlideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = swfSlideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = swfSlideLoader.height/this.height;
|
||||
presentEvent.xOffset = slideLoader.x/slideLoader.width;
|
||||
presentEvent.yOffset = slideLoader.y/slideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = slideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = slideLoader.height/this.height;
|
||||
dispatchEvent(presentEvent);
|
||||
}
|
||||
|
||||
@ -309,43 +349,58 @@
|
||||
return delta < 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles notification from presenter that the slide has moved.
|
||||
*/
|
||||
private function handleMoveEvent(e:MoveEvent):void{
|
||||
savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
if (!isPresenter) {
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
}
|
||||
|
||||
moveCanvas(swfSlideLoader.x, swfSlideLoader.y);
|
||||
moveCanvas(slideLoader.x, slideLoader.y);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle notification from presenter that the slide has been zoomed.
|
||||
*/
|
||||
private function handleZoomEvent(e:ZoomEvent):void {
|
||||
savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
if (!isPresenter) {
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
}
|
||||
|
||||
zoomCanvas(swfSlideLoader.width, swfSlideLoader.height);
|
||||
zoomCanvas(slideLoader.width, slideLoader.height);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle notification from loader that a slide has been loaded.
|
||||
*/
|
||||
private function handleSlideLoadedEvent(e:SlideEvent):void{
|
||||
swfSlideLoader.source = e.slide;
|
||||
slideLoader.source = e.slide;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle the event where this presenter becomes a viewer because another attendee became presenter.
|
||||
*/
|
||||
private function handleSwitchToViewerEvent(e:MadePresenterEvent):void{
|
||||
participantIsNowPresenter(false);
|
||||
removeEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelZoomEvent);
|
||||
swfSlideLoader.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
swfSlideLoader.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
swfSlideLoader.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
|
||||
slideLoader.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
slideLoader.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
slideLoader.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
|
||||
removeEventListener(MouseEvent.MOUSE_MOVE, mouseCursorUpdateListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes the attendee the presenter.
|
||||
*/
|
||||
private function handleSwitchToPresenterEvent(e:MadePresenterEvent):void{
|
||||
participantIsNowPresenter(true);
|
||||
addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelZoomEvent);
|
||||
swfSlideLoader.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
swfSlideLoader.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
swfSlideLoader.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
|
||||
addEventListener(MouseEvent.MOUSE_MOVE, mouseCursorUpdateListener);
|
||||
}
|
||||
|
||||
@ -353,11 +408,17 @@
|
||||
this.isPresenter = presenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Listen for mouse events to track the cursor.
|
||||
*/
|
||||
public function mouseCursorUpdateListener(e:MouseEvent):void{
|
||||
if (noSlideContentLoaded()) return;
|
||||
notifyOthersOfPresentersCursorPosition(this.mouseX, this.mouseY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcast to other participants the location fo the mouse cursor.
|
||||
*/
|
||||
private function notifyOthersOfPresentersCursorPosition(cursorXPosition:int, cursorYPosition:int):void {
|
||||
var command:PresenterCommands = new PresenterCommands(PresenterCommands.SEND_CURSOR_UPDATE);
|
||||
command.xPercent = cursorXPosition / this.width;
|
||||
@ -365,6 +426,9 @@
|
||||
dispatchEvent(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle notification from presenter about the location of the mouse cursor.
|
||||
*/
|
||||
private function handleUpdateCursorEvent(e:CursorEvent):void{
|
||||
if (noSlideContentLoaded()) return;
|
||||
|
||||
@ -379,9 +443,12 @@
|
||||
}
|
||||
|
||||
private function noSlideContentLoaded():Boolean {
|
||||
return swfSlideLoader.content == null
|
||||
return slideLoader.content == null
|
||||
}
|
||||
|
||||
/**
|
||||
* Keep track of the presenter's x,y coordinates and the size of his/her presentation window.
|
||||
*/
|
||||
private function savePresentersSettings(xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void {
|
||||
presentersLoaderXOffsetFromCanvas = xOffset;
|
||||
presentersLoaderYOffsetFromCanvas = yOffset;
|
||||
@ -389,20 +456,16 @@
|
||||
presentersLoaderCanvasHeightRatio = heightRatio;
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
* Helper functions to determine offsets
|
||||
******************************************************/
|
||||
|
||||
/*
|
||||
* Fire an event when a single slide has been loaded.
|
||||
*/
|
||||
private function listenForSlideLoadedCompleteEvent():void {
|
||||
swfSlideLoader.addEventListener(Event.COMPLETE, handleSlideLoadedCompleteEvent);
|
||||
slideLoader.addEventListener(Event.COMPLETE, handleSlideLoadedCompleteEvent);
|
||||
}
|
||||
|
||||
private function handleSlideLoadedCompleteEvent(event:Event):void {
|
||||
var slideRealWidth:int = swfSlideLoader.content.width;
|
||||
var slideRealHeight:int = swfSlideLoader.content.height;
|
||||
var slideRealWidth:int = slideLoader.content.width;
|
||||
var slideRealHeight:int = slideLoader.content.height;
|
||||
fitLoaderToCanvas();
|
||||
dispatchNewSlideDisplayedEvent(slideRealWidth, slideRealHeight);
|
||||
}
|
||||
@ -448,8 +511,8 @@
|
||||
}
|
||||
|
||||
public function moveCanvas(x:int, y:int):void{
|
||||
overlayChildrenHolder.x = swfSlideLoader.x * 2;
|
||||
overlayChildrenHolder.y = swfSlideLoader.y * 2;
|
||||
overlayChildrenHolder.x = slideLoader.x * 2;
|
||||
overlayChildrenHolder.y = slideLoader.y * 2;
|
||||
|
||||
if (overlayCanvas != null) overlayCanvas.moveCanvas(overlayChildrenHolder.x, overlayChildrenHolder.y);
|
||||
}
|
||||
@ -457,7 +520,7 @@
|
||||
public function zoomCanvas(width:int, height:int):void{
|
||||
overlayChildrenHolder.width = width;
|
||||
overlayChildrenHolder.height = height;
|
||||
moveCanvas(swfSlideLoader.x, swfSlideLoader.y);
|
||||
moveCanvas(slideLoader.x, slideLoader.y);
|
||||
if (overlayCanvas != null) overlayCanvas.zoomCanvas(width, height);
|
||||
}
|
||||
|
||||
@ -472,7 +535,7 @@
|
||||
]]>
|
||||
</mx:Script>
|
||||
|
||||
<mx:SWFLoader id="swfSlideLoader" width="100%" height="100%" creationComplete="listenForSlideLoadedCompleteEvent()"
|
||||
<mx:SWFLoader id="slideLoader" width="100%" height="100%" creationComplete="listenForSlideLoadedCompleteEvent()"
|
||||
scaleContent="false" maintainAspectRatio="true" showBusyCursor="true" completeEffect="Fade"/>
|
||||
|
||||
<mx:HorizontalList id="thumbnailView" itemRenderer="org.bigbluebutton.modules.present.views.Thumbnail" itemRollOver="changeIndex(event)"
|
||||
|
@ -31,6 +31,7 @@
|
||||
# 2010-04-02 FFD Updated for 0.64
|
||||
# 2010-06-21 SEB Cleaned up some code / Updated for 0.70
|
||||
# 2010-06-25 SEB Added ability to change the security salt
|
||||
# 2010-06-30 SEB Added some extra errorchecking
|
||||
|
||||
#set -x
|
||||
|
||||
@ -135,7 +136,8 @@ need_root() {
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "BigBlueButton Server Utility - Version 0.64"
|
||||
echo "BigBlueButton Configuration Utility - Version 0.70"
|
||||
echo "http://code.google.com/p/bigbluebutton/wiki/BBBConf"
|
||||
echo
|
||||
echo "$0 [options]"
|
||||
echo
|
||||
@ -158,11 +160,9 @@ usage() {
|
||||
if [ "$(is_vm)" ]; then
|
||||
echo "Development:"
|
||||
echo " --setup-samba Setup samba share for development (VM only)"
|
||||
echo " --setup-dev [bbb-web|bbb-client|bbb-apps] "
|
||||
echo " --checkout Checkout BigBlueButton from github "
|
||||
echo " --setup-dev [client|web|apps] Setup development environment "
|
||||
echo " --reset-dev Reset environment back to using packages"
|
||||
echo " --trunk Checkout trunk instead of last release"
|
||||
echo " --svn-username [user] Your Google code username if you want to "
|
||||
echo " commit from the checked out code"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
@ -236,11 +236,6 @@ fi
|
||||
|
||||
# Parse the parameters
|
||||
while [ $# -gt 0 ]; do
|
||||
if [ "$1" = "-h" -o "$1" = "-help" -o "$1" = "?" -o "$1" = "--help" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "-check" -o "$1" = "--check" -o "$1" = "-c" ]; then
|
||||
CHECK=1
|
||||
shift
|
||||
@ -301,6 +296,13 @@ while [ $# -gt 0 ]; do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--checkout" -o "$1" = "-checkout" ]; then
|
||||
echo "# Request to checkout BigBlueButton"
|
||||
CHECKOUT="1"
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
#
|
||||
# all other parameters requires at least 1 argument
|
||||
#
|
||||
@ -320,26 +322,11 @@ while [ $# -gt 0 ]; do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--setup-dev" -o "$1" = "-setup-dev" ]; then
|
||||
SETUPDEV="${2}"
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--svn-username" -o "$1" = "-svn-username" ]; then
|
||||
SVNUSERNAME="--username ${2}"
|
||||
SVNPROTO="https"
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--trunk" -o "$1" = "-trunk" ]; then
|
||||
# replace the value for for RELEASE because we don't want
|
||||
# a particular release
|
||||
RELEASE=""
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
if [ "$1" = "--setup-dev" -o "$1" = "-setup-dev" ]; then
|
||||
SETUPDEV="${2}"
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--conference" -o "$1" = "-conference" ]; then
|
||||
CONFERENCE="${2}"
|
||||
@ -378,7 +365,7 @@ fi
|
||||
# Setup samba
|
||||
#
|
||||
|
||||
if [ -n $SALT ]; then
|
||||
if [ $SALT ]; then
|
||||
need_root
|
||||
# echo $SALT;
|
||||
change_var_salt /var/lib/$TOMCAT/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties beans.dynamicConferenceService.securitySalt $SALT
|
||||
@ -436,158 +423,219 @@ fi
|
||||
# Setup the development environemnt.
|
||||
#
|
||||
|
||||
if [ $SETUPDEV ]; then
|
||||
if [ $CHECKOUT ]; then
|
||||
check_root
|
||||
|
||||
# This is a step towards setting up a development environment on a non-BigBlueButton VM
|
||||
which svn
|
||||
which git
|
||||
if [ $? != 0 ]; then
|
||||
sudo apt-get install subversion ant -y --force-yes
|
||||
echo "# Installing git and ant"
|
||||
sudo apt-get install git ant -y --force-yes
|
||||
fi
|
||||
|
||||
BBBSRCGIT="~/dev/source/bigbluebutton"
|
||||
if [ -d $BBBSRCGIT ]; then
|
||||
echo "# "
|
||||
echo "**** ERROR: ${BBBSRCGIT} exists. ***"
|
||||
echo "**** ERROR: You have already checked-out bigbluebutton. Please delete ${BBBSRCGIT} and try again. ***"
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ~/dev ]; then
|
||||
echo "# Creating dev directory"
|
||||
mkdir ~/dev
|
||||
fi
|
||||
|
||||
if [ $SETUPDEV == "bbb-web" ]; then
|
||||
if [ ! -d ~/dev/bbb-web ]; then
|
||||
echo "# Changing to the dev directory"
|
||||
cd ~/dev
|
||||
|
||||
if [ ! -d ~/dev/source ]; then
|
||||
echo "# Creating source directory"
|
||||
mkdir ~/dev/source
|
||||
fi
|
||||
|
||||
echo "# Setting up ~/dev/bbb-web"
|
||||
echo " svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-web bbb-web ${RELEASE} ${SVNUSERNAME}"
|
||||
echo "# Changing to the dev directory"
|
||||
cd ~/dev/source
|
||||
|
||||
cd ~/dev
|
||||
svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-web bbb-web $RELEASE $SVNUSERNAME
|
||||
echo "# "
|
||||
echo "# Checking out READ-ONLY code from github."
|
||||
echo "# "
|
||||
echo "# "
|
||||
git clone git://github.com/bigbluebutton/bigbluebutton.git
|
||||
echo "# "
|
||||
echo "# "
|
||||
echo "# Checked out READ-ONLY code from github. "
|
||||
echo "# "
|
||||
echo " You can now run 'bbb-conf --setup-dev [client|web|apps]' to setup dev environment "
|
||||
echo "# "
|
||||
fi
|
||||
|
||||
IP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
|
||||
if [ $SETUPDEV ]; then
|
||||
check_root
|
||||
|
||||
echo "# Copying the bigbluebutton.properites in /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ~/.grails/bigbluebutton-config.properties"
|
||||
mkdir -p ~/.grails
|
||||
cp /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties ~/.grails/bigbluebutton-config.properties
|
||||
if [ ! -d ~/dev/source/bigbluebutton ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "# Copying the bbb_api_conf.jsp into /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ~/dev/bbb-web/web-app/demo"
|
||||
cp /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp ~/dev/bbb-web/web-app/demo
|
||||
|
||||
echo "# Enabling $USER to write to /var/bigbluebutton to upload slides"
|
||||
sudo chmod -R ugo+rwx /var/bigbluebutton
|
||||
if [ $SETUPDEV == "web" ]; then
|
||||
BBBWEBHOME=~/dev/source/bigbluebutton/bigbluebutton-web
|
||||
if [ ! -d $BBBWEBHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBWEBHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "# Enabling $USER to write to /var/log/bigbluebutton to write log files"
|
||||
sudo chmod -R ugo+rwx /var/log/bigbluebutton
|
||||
IP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
|
||||
|
||||
echo "# Copying bbb-common-message-0.64.jar into ~/dev/bbb-web/lib"
|
||||
if [ -f $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ]; then
|
||||
cp /usr/share/red5/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ~/dev/bbb-web/lib
|
||||
fi
|
||||
echo "# Copying the bigbluebutton.properites in /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ~/.grails/bigbluebutton-config.properties"
|
||||
mkdir -p ~/.grails
|
||||
cp /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties ~/.grails/bigbluebutton-config.properties
|
||||
|
||||
echo "
|
||||
echo "# Copying the bbb_api_conf.jsp into /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ${BBBWEBHOME}/web-app/demo"
|
||||
cp /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp ${BBBWEBHOME}/web-app/demo
|
||||
|
||||
echo "# Enabling $USER to write to /var/bigbluebutton to upload slides"
|
||||
sudo chmod -R ugo+rwx /var/bigbluebutton
|
||||
|
||||
echo "# Enabling $USER to write to /var/log/bigbluebutton to write log files"
|
||||
sudo chmod -R ugo+rwx /var/log/bigbluebutton
|
||||
|
||||
echo "# Copying bbb-common-message-0.64.jar into ${BBBWEBHOME}/lib"
|
||||
if [ -f $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ]; then
|
||||
cp /usr/share/red5/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ${BBBWEBHOME}/lib
|
||||
fi
|
||||
|
||||
echo "
|
||||
# Done. To run your local build of bbb-web:
|
||||
|
||||
sudo /etc/init.d/${TOMCAT} stop
|
||||
cd ~/dev/bbb-web
|
||||
ant
|
||||
sudo /etc/init.d/${TOMCAT} stop
|
||||
cd ${BBBWEBHOME}
|
||||
ant
|
||||
"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $SETUPDEV == "bbb-client" ]; then
|
||||
if [ ! -d ~/dev/bbb-client ]; then
|
||||
|
||||
echo "# Setting up ~/dev/bbb-client"
|
||||
echo " svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-client bbb-client ${RELEASE} ${SVNUSERNAME}"
|
||||
if [ $SETUPDEV == "client" ]; then
|
||||
BBBCLIENTHOME=~/dev/source/bigbluebutton/bigbluebutton-client
|
||||
if [ ! -d $BBBCLIENTHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBCLIENTHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ~/dev
|
||||
svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-client bbb-client $RELEASE $SVNUSERNAME
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
#
|
||||
if [ ! -d $BBBCLIENTHOME/bin ]; then
|
||||
mkdir -p $BBBCLIENTHOME/bin
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
#
|
||||
if [ ! -d ~/dev/bbb-client/bin ]; then
|
||||
mkdir -p ~/dev/bbb-client/bin
|
||||
if [ ! -d $BBBCLIENTHOME/conf ]; then
|
||||
mkdir -p $BBBCLIENTHOME/bin/conf
|
||||
fi
|
||||
|
||||
if [ ! -h $BBBCLIENTHOME/client ]; then
|
||||
ln -s $BBBCLIENTHOME/bin $BBBCLIENTHOME/client
|
||||
fi
|
||||
|
||||
echo "Modifying /etc/nginx/sites-available/bigbluebutton to point to your local copy of bbb-client"
|
||||
sudo sed -i "s/\/var\/www\/bigbluebutton;/\/home\/firstuser\/dev\/source\/bigbluebutton\/bigbluebutton-client;/g" \
|
||||
/etc/nginx/sites-available/bigbluebutton
|
||||
sudo /etc/init.d/nginx restart
|
||||
|
||||
if [ -f /var/www/bigbluebutton/client/conf/config.xml ]; then
|
||||
echo "# Copying /var/www/bigbluebutton/client/conf/config.xml to ${BBBCLIENTHOME}/src/conf/config.xml"
|
||||
cp /var/www/bigbluebutton/client/conf/config.xml $BBBCLIENTHOME/src/conf/config.xml
|
||||
else
|
||||
echo "# Copying ${BBBCLIENTHOME}/resources/config.xml.template to ${BBBCLIENTHOME}/src/conf/config.xml.template"
|
||||
cp $BBBCLIENTHOME/resources/config.xml.template $BBBCLIENTHOME/src/conf/config.xml.template
|
||||
echo "# Generating ${BBBCLIENTHOME}/src/conf/config.xml"
|
||||
cat $BBBCLIENTHOME/src/conf/config.xml.template | sed "s/VERSION/dev/" > $BBBCLIENTHOME/src/conf/config.xml
|
||||
rm $BBBCLIENTHOME/src/conf/config.xml.template
|
||||
fi
|
||||
|
||||
if [ ! -d ~/dev/bbb-client/bin/conf ]; then
|
||||
mkdir -p ~/dev/bbb-client/bin/conf
|
||||
fi
|
||||
echo "# Copying ${BBBCLIENTHOME}/resources/dev/join-mock.xml to ${BBBCLIENTHOME}/src/conf/join-mock.xml"
|
||||
cp $BBBCLIENTHOME/resources/dev/join-mock.xml $BBBCLIENTHOME/src/conf/config.xml
|
||||
|
||||
if [ ! -h ~/dev/bbb-client/client ]; then
|
||||
ln -s ~/dev/bbb-client/bin ~/dev/bbb-client/client
|
||||
fi
|
||||
cd $BBBCLIENTHOME
|
||||
|
||||
echo "Modifying /etc/nginx/sites-available/bigbluebutton to point to your local copy of bbb-client"
|
||||
sudo sed -i "s/\/var\/www\/bigbluebutton;/\/home\/firstuser\/dev\/bbb-client;/g" \
|
||||
/etc/nginx/sites-available/bigbluebutton
|
||||
sudo /etc/init.d/nginx restart
|
||||
|
||||
echo "# Copying /var/www/bigbluebutton/client/conf/config.xml to ~/dev/bbb-client/bin/conf/config.xml"
|
||||
cp /var/www/bigbluebutton/client/conf/config.xml ~/dev/bbb-client/bin/conf/config.xml
|
||||
|
||||
cd bbb-client
|
||||
|
||||
echo "
|
||||
echo "
|
||||
# Done. To build your local build of bbb-client:
|
||||
|
||||
cd ~/dev/bbb-client
|
||||
ant
|
||||
cd ${BBBCLIENTHOME}
|
||||
ant
|
||||
|
||||
# The nginx server now loads the BigBlueButton Flash client from
|
||||
# /home/firstuser/dev/bbb-client.
|
||||
# The nginx server now loads the BigBlueButton Flash client from
|
||||
# ${BBBCLIENTHOME}.
|
||||
"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $SETUPDEV == "bbb-apps" ]; then
|
||||
if [ ! -d ~/dev/bbb-apps ]; then
|
||||
if [ $SETUPDEV == "apps" ]; then
|
||||
BBBAPPSHOME=~/dev/source/bigbluebutton/bigbluebutton-apps
|
||||
if [ ! -d $BBBAPPSHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBAPPSHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "# Setting up ~/dev/bbb-apps:"
|
||||
echo " svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-apps bbb-apps ${RELEASE} ${SVNUSERNAME}"
|
||||
|
||||
cd ~/dev
|
||||
svn checkout ${SVNPROTO}://bigbluebutton.googlecode.com/svn/trunk/bigbluebutton-apps bbb-apps $RELEASE $SVNUSERNAME
|
||||
|
||||
echo "# Checking if ~/dev/repo/bbb-common-message-0.64.jar is present"
|
||||
if [ ! -f ~/dev/repo/bbb-common-message-0.64.jar ]; then
|
||||
echo "# Copying bbb-common-message-0.64.jar into ~/dev/repo/"
|
||||
if [ -f $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ]; then
|
||||
cp /usr/share/red5/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ~/dev/repo/
|
||||
echo "# Checking if ~/dev/repo/bbb-common-message-0.64.jar is present"
|
||||
if [ ! -f ~/dev/repo/bbb-common-message-0.64.jar ]; then
|
||||
echo "# Copying bbb-common-message-0.64.jar into ${BBBAPPSHOME}"
|
||||
if [ -f $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ]; then
|
||||
if [ ! -d ~/dev/repo ]; then
|
||||
mkdir -p ~/dev/repo
|
||||
fi
|
||||
cp /usr/share/red5/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar ~/dev/repo/
|
||||
else
|
||||
echo "# $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar does NOT exist!"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# We're going to make it easier to deploy by giving write access to others to
|
||||
# $RED5_DIRECTORY/webapps
|
||||
#
|
||||
sudo chmod o+w $RED5_DIRECTORY/webapps
|
||||
#
|
||||
# We're going to make it easier to deploy by giving write access to others to
|
||||
# $RED5_DIRECTORY/webapps
|
||||
#
|
||||
sudo chmod o+w $RED5_DIRECTORY/webapps
|
||||
|
||||
#
|
||||
# Let's remove the existing bbb-apps
|
||||
#
|
||||
if dpkg-query -s bbb-apps | grep "install ok installed" > /dev/null 2>&1; then
|
||||
sudo apt-get purge --yes bbb-apps
|
||||
fi
|
||||
#
|
||||
# Let's remove the existing bbb-apps
|
||||
#
|
||||
if dpkg-query -s bbb-apps | grep "install ok installed" > /dev/null 2>&1; then
|
||||
sudo apt-get purge --yes bbb-apps
|
||||
fi
|
||||
|
||||
if [ ! -f ~/.bbb-apps-build.properties ]; then
|
||||
echo "#
|
||||
if [ ! -f ~/.bbb-apps-build.properties ]; then
|
||||
echo "#
|
||||
# Override the default properties for bbb-apps
|
||||
#
|
||||
red5.home = $RED5_DIRECTORY
|
||||
" > ~/.bbb-apps-build.properties
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
#
|
||||
echo "
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
#
|
||||
echo "
|
||||
# Done. To run your local build of bbb-apps:
|
||||
|
||||
sudo /etc/init.d/red5 stop
|
||||
cd ~/dev/bbb-apps
|
||||
cd ${BBBAPPSHOME}
|
||||
gradle war deploy
|
||||
cd $RED5_DIRECTORY
|
||||
sudo -u red5 ./red5.sh
|
||||
cd $RED5_DIRECTORY
|
||||
sudo -u red5 ./red5.sh
|
||||
|
||||
# To restore the packaged version of bbb-apps:
|
||||
|
||||
@ -596,27 +644,19 @@ red5.home = $RED5_DIRECTORY
|
||||
sudo /etc/init.d/red5 start
|
||||
"
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $RESET_DEV ]; then
|
||||
check_root
|
||||
|
||||
echo "Reseting /etc/nginx/sites-available/bigbluebutton to point to /var/www/bigbluebutton"
|
||||
sudo sed -i "s/\/home\/firstuser\/dev\/bbb-client;/\/var\/www\/bigbluebutton;/g" \
|
||||
sudo sed -i "s/\/home\/firstuser\/dev\/source\/bigbluebutton\/bigbluebutton-client;/\/var\/www\/bigbluebutton;/g" \
|
||||
/etc/nginx/sites-available/bigbluebutton
|
||||
sudo /etc/init.d/nginx restart
|
||||
|
||||
fi
|
||||
|
||||
getIPOfDomain() {
|
||||
ipOfDomain=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
|
||||
|
||||
if [ $ipOfDomain != "out;" ]; then
|
||||
echo $ipOfDomain
|
||||
fi
|
||||
}
|
||||
|
||||
check_state() {
|
||||
|
||||
echo
|
||||
@ -702,6 +742,28 @@ $RED5_DIRECTORY/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
fi
|
||||
done
|
||||
|
||||
LOGG_FILES="$RED5_DIRECTORY/log/sip.log \
|
||||
$RED5_DIRECTORY/log/video.log \
|
||||
$RED5_DIRECTORY/log/bigbluebutton.log \
|
||||
$RED5_DIRECTORY/log/deskshare.log"
|
||||
|
||||
for file in $LOGG_FILES ; do
|
||||
if [ -a $file ]; then
|
||||
if cat $file | tail -n1 | grep -q "Starting up context"; then
|
||||
echo "BigBlueButton did not start up correctly"
|
||||
fi
|
||||
else
|
||||
echo "File" $file "not found"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
# check if sip.log has warnings where the user is not registered
|
||||
if cat /usr/share/red5/log/sip.log | tail -n1 | grep -q "Call request for default but not registered"; then
|
||||
echo "The User is not registered in SIP. Audio might not be working correctly."
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Check that tomcat6 started properly and has created log files
|
||||
#
|
||||
@ -721,15 +783,9 @@ $RED5_DIRECTORY/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
NGINX_IP=$(cat /etc/nginx/sites-available/bigbluebutton | sed -n '/server_name/{s/.*name[ ]*//;s/;//;p}')
|
||||
|
||||
if [ "$HOST_IP" != "$NGINX_IP" ]; then
|
||||
NGINX_DOMAIN_IP=$($getIPOfDomain $NGINX_IP)
|
||||
|
||||
if [ "$HOST_IP" != "$NGINX_DOMAIN_IP" ]; then
|
||||
echo "Host IP does not match BigBlueButton: ${HOST_IP} != ${NGINX_IP}"
|
||||
fi
|
||||
fi
|
||||
|
||||
x=$(host demo.bigbluebutton.org | cut -d\ -f 4)
|
||||
|
||||
echo
|
||||
exit 0
|
||||
}
|
||||
@ -1019,18 +1075,18 @@ if [ $CONFERENCE ]; then
|
||||
|
||||
#
|
||||
# update /etc/asterisk/bbb_extensions.conf
|
||||
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${EXTEN},H)/# exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
|
||||
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${EXTEN},H)/; exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
sudo sed -i "s/#[ ]*exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
|
||||
sudo sed -i "s/;[ ]*exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
#
|
||||
# update /etc/asterisk/bbb_extensions.conf
|
||||
sudo sed -i "s/# exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
|
||||
sudo sed -i "s/; exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/# exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
|
||||
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/; exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
fi
|
||||
|
||||
@ -1043,17 +1099,17 @@ if [ $CONFERENCE ]; then
|
||||
|
||||
#
|
||||
# update /etc/asterisk/bbb_extensions.conf
|
||||
sudo sed -i "s/#[ ]*exten => _XXXX.,n,Konference(\${EXTEN},H)/exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
|
||||
sudo sed -i "s/;[ ]*exten => _XXXX.,n,Konference(\${EXTEN},H)/exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/# exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
|
||||
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/; exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
|
||||
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/# exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
|
||||
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/; exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
|
||||
sudo sed -i "s/# exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
|
||||
sudo sed -i "s/; exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
|
||||
/etc/asterisk/bbb_extensions.conf
|
||||
fi
|
||||
|
||||
|
10
bigbluebutton-web/grails-app/conf/bigbluebutton.properties
Normal file → Executable file
10
bigbluebutton-web/grails-app/conf/bigbluebutton.properties
Normal file → Executable file
@ -64,19 +64,19 @@ beans.presentationService.presentationDir=${presentationDir}
|
||||
beans.dynamicConferenceService.serviceEnabled=true
|
||||
beans.dynamicConferenceService.apiVersion=0.7-SNAPSHOT
|
||||
beans.dynamicConferenceService.minutesElapsedBeforeMeetingExpiration=60
|
||||
beans.dynamicConferenceService.securitySalt=639259d4-9dd8-4b25-bf01-95f9567eaf4b
|
||||
beans.dynamicConferenceService.securitySalt=5e5ff0968546b8aaacce0462a99bca30
|
||||
beans.dynamicConferenceService.defaultWelcomeMessage=${defaultWelcomeMessage}
|
||||
beans.dynamicConferenceService.defaultDialAccessNumber=${defaultDialAccessNumber}
|
||||
|
||||
#----------------------------------------------------
|
||||
# This URL is where the BBB client is accessible. When a user sucessfully
|
||||
# enters a name and password, she is redirected here to load the client.
|
||||
bigbluebutton.web.serverURL=http://192.168.0.120
|
||||
bigbluebutton.web.serverURL=http://192.168.0.101
|
||||
|
||||
#----------------------------------------------------
|
||||
# URL where the logged-out participant will be redirected after sign-out.
|
||||
# Assign URL where the logged-out participant will be redirected after sign-out.
|
||||
# If commented-out, it returns to bigbluebutton.web.serverURL
|
||||
#bigbluebutton.web.logoutURL=http://www.bigbluebutton.org
|
||||
# bigbluebutton.web.logoutURL=http://www.bigbluebutton.org
|
||||
|
||||
#------------------------------------------------------
|
||||
# Setting to enable the old scheduling mechanism. This is temporary
|
||||
@ -96,4 +96,4 @@ beans.presentationService.testPresentationName=appkonference
|
||||
# Uploaded presentation file
|
||||
beans.presentationService.testUploadedPresentation=appkonference.txt
|
||||
# Test voiceBridge number
|
||||
beans.dynamicConferenceService.testVoiceBridge=99999
|
||||
beans.dynamicConferenceService.testVoiceBridge=99999
|
||||
|
@ -1,2 +1,2 @@
|
||||
<p/>
|
||||
<small>These demos use the <a href="http://code.google.com/p/bigbluebutton/wiki/API">BigBlueButton API</a>. The source code for these demos is available <a href="http://code.google.com/p/bigbluebutton/source/browse/#svn/trunk/bigbluebutton-web/web-app/demo">here</a>.</small>
|
||||
<small>These demos use the <a href="http://code.google.com/p/bigbluebutton/wiki/API">BigBlueButton API</a>. The source code for these demos is available <a href="http://github.com/bigbluebutton/bigbluebutton/tree/master/bigbluebutton-web/web-app/demo/"> here</a>.</small>
|
||||
|
Loading…
Reference in New Issue
Block a user