2010-04-03 07:10:49 +08:00
#!/bin/bash
2009-11-04 08:33:36 +08:00
#
# Copyright (c) 2008-2009 by BigBlueButton
#
# This file is part of BigBlueButton - http://www.bigbluebutton.org
#
# BigBlueButton is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
2009-12-12 05:20:34 +08:00
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
2009-11-04 08:33:36 +08:00
#
# Author(s):
# Fred Dixon <ffdixon@bigbluebutton.org>
#
# Changelog:
2009-12-12 05:20:34 +08:00
# 2009-10-18 FFD Inital Version
# 2009-11-05 FFD Updated for 0.62
# 2009-12-09 FFD Updated for 0.63
# 2009-12-11 FFD Added ability to swtich conference servers
2009-12-13 01:56:14 +08:00
# 2009-12-12 FFD Added cleaning and watching of log files
2010-01-06 07:57:22 +08:00
# 2010-01-05 FFD Added zipping of log files
2010-01-19 10:20:22 +08:00
# 2010-01-18 FFD Added resetting of environment back to using packages
2010-03-03 12:55:48 +08:00
# 2010-03-02 JRT Added trunk checkout options / fixed bbb-apps instructions
2010-04-03 01:41:51 +08:00
# 2010-04-02 FFD Updated for 0.64
2010-06-22 01:45:45 +08:00
# 2010-06-21 SEB Cleaned up some code / Updated for 0.70
2010-07-01 03:50:31 +08:00
# 2010-06-25 SEB Added ability to change the security salt
2010-07-01 03:57:39 +08:00
# 2010-06-30 SEB Added some extra errorchecking
2009-11-04 08:33:36 +08:00
2010-04-03 01:41:51 +08:00
#set -x
2009-11-04 08:33:36 +08:00
2010-01-25 23:49:56 +08:00
#
# This ensures that we checkout the 0.63 release of BigBlueButton
2010-03-03 12:55:48 +08:00
# Note that this can be overridden with the --trunk option
2010-01-25 23:49:56 +08:00
#
2010-07-01 03:50:31 +08:00
RELEASE="-r 4130"
2010-01-25 23:49:56 +08:00
2010-03-03 12:55:48 +08:00
#
# SVNPROTO is http if read-only, or https if you specify a Google code username
# SVNUSERNAME is blank if read-only, or '--username ${arg}' if you specify a Google code username
#
SVNPROTO="http"
SVNUSERNAME=""
2010-03-09 23:32:20 +08:00
GENTOO=$(uname -r | grep gentoo | cut -d- -f2);
TOMCAT=""
2010-04-03 01:37:06 +08:00
2010-02-09 05:22:16 +08:00
get_platform() {
2010-02-12 00:32:09 +08:00
if [ -f /etc/lsb-release ]; then
if grep -q Ubuntu /etc/lsb-release; then
echo "ubuntu"
fi
2010-03-09 23:32:20 +08:00
elif [ ${GENTOO} ]; then
echo "gentoo"
2010-02-09 05:22:16 +08:00
else
2010-02-12 00:32:09 +08:00
echo "redhat"
2010-02-09 05:22:16 +08:00
fi
}
2010-04-03 01:37:06 +08:00
2010-02-09 05:22:16 +08:00
PLATFORM=$(get_platform)
is_redhat() {
if [ "$PLATFORM" == "redhat" ]; then
2010-07-01 03:50:31 +08:00
echo "yes"
2010-02-09 05:22:16 +08:00
fi
}
is_ubuntu() {
if [ "$PLATFORM" == "ubuntu" ]; then
echo "yes"
fi
}
2010-03-09 23:32:20 +08:00
is_gentoo() {
if [ "$PLATFORM" == "gentoo" ]; then
echo "yes"
fi
}
2010-02-09 05:22:16 +08:00
is_vm() {
if [ -f /home/firstuser/.profile ]; then
echo $(cat /home/firstuser/.profile | grep BigBlueButton)
fi
}
2010-02-12 00:32:09 +08:00
if [ "$(is_redhat)" ]; then
2010-03-09 23:32:20 +08:00
TOMCAT="tomcat6"
RED5_DIRECTORY="/usr/share/red5"
ACTIVEMQ_DIRECTORY="/usr/share/activemq"
TOMCAT6_LOGS="/var/log/${TOMCAT}"
elif [ "$(is_gentoo)" ]; then
TOMCAT="tomcat-6"
RED5_DIRECTORY="/usr/share/red5"
ACTIVEMQ_DIRECTORY="/usr/share/activemq"
TOMCAT6_LOGS="/var/lib/${TOMCAT}/logs"
2010-02-09 05:22:16 +08:00
else
2010-02-12 00:32:09 +08:00
if [ "$(is_ubuntu)" ]; then
2010-03-09 23:32:20 +08:00
TOMCAT="tomcat6"
2010-02-09 05:22:16 +08:00
RED5_DIRECTORY="/usr/share/red5"
ACTIVEMQ_DIRECTORY="/usr/share/activemq"
2010-03-09 23:32:20 +08:00
TOMCAT6_LOGS="/var/lib/${TOMCAT}/logs"
2010-02-09 05:22:16 +08:00
fi
fi
2010-04-03 01:37:06 +08:00
2009-11-06 04:57:56 +08:00
print_header() {
if [ ! $HEADER ]; then
2010-02-09 05:22:16 +08:00
echo
2009-11-06 06:48:31 +08:00
echo "** Potential Problems **"
2009-11-06 04:57:56 +08:00
HEADER=1
fi
}
2009-11-04 08:33:36 +08:00
check_root() {
if [ $EUID == 0 ]; then
2010-03-03 12:55:48 +08:00
echo "This operation should not be run as root."
2009-11-04 08:33:36 +08:00
echo
echo "If this operation needs to execute an operation as root, you'll be asked for"
echo "your password to execute the operation using sudo."
exit 1
fi
}
2009-12-12 05:20:34 +08:00
need_root() {
if [ $EUID != 0 ]; then
2009-12-13 22:34:01 +08:00
echo "Need to be root to run this option"
2009-12-12 05:20:34 +08:00
exit 1
fi
}
2009-12-10 06:49:49 +08:00
usage() {
2010-07-02 22:30:24 +08:00
echo "BigBlueButton Configuration Utility - Version 0.70"
2010-07-05 22:39:13 +08:00
echo "http://code.google.com/p/bigbluebutton/wiki/BBBConf"
2010-04-03 01:37:06 +08:00
echo
echo "$0 [options]"
echo
echo "Configuration:"
echo " --version Display BigBlueButton version (packages)"
echo " --setip <host> Set IP/hostname for BigBlueButton"
echo " --conference [konference|meetme] Switch conference module in Asterisk"
2010-07-01 03:50:31 +08:00
echo " --salt <salt> Change the security salt in bigbluebutton.properties"
2010-04-03 01:37:06 +08:00
echo
echo "Monitoring:"
2010-04-03 03:25:02 +08:00
echo " --check Check configuration files and processes for problems"
2010-04-03 01:37:06 +08:00
echo " --debug Scan the log files for error messages"
2010-04-03 03:25:02 +08:00
echo " --watch Scan the log files for error messages every 2 seconds"
2010-04-03 01:37:06 +08:00
echo
echo "Administration":
echo " --restart Restart BigBueButton"
echo " --clean Clear all the log files and restart BigBlueButton"
echo " --zip Zip up log files for reporting an error"
echo
if [ "$(is_vm)" ]; then
echo "Development:"
echo " --setup-samba Setup samba share for development (VM only)"
2010-07-03 23:36:10 +08:00
echo " --checkout <repo> Checkout from github or passed in repository"
2010-07-01 03:50:31 +08:00
echo " --setup-dev [client|web|apps] Setup development environment "
2010-04-03 01:37:06 +08:00
echo " --reset-dev Reset environment back to using packages"
fi
echo
2009-11-04 08:33:36 +08:00
}
# utility function to make a copy of the conf file
check_and_backup () {
# can we write to the configuration file?
if [ ! -w $1 ]; then
echo "Cannot write to $1!"
exit 1
fi
# let's see if we need a copy
if [ "$TO_BACKUP" = "Y" ]; then
cp $1 $1.bak
TO_BACKUP="N"
fi
}
# 3 paramenter: the file, the variable name, the new value
change_var_value () {
check_and_backup $1
sed -i "s<^[[:blank:]#]*\(${2}\).*<\1=\"${3}\"<" $1
}
2010-07-01 03:50:31 +08:00
# same as change_var_value but without quotes
change_var_salt() {
check_and_backup $1
sed -i "s<^[[:blank:]#]*\(${2}\).*<\1="${3}"<" $1
}
2009-11-04 08:33:36 +08:00
# comment lines matching $2 ($1 is the file)
comment () {
check_and_backup $1
sed -i "s<^[[:blank:]]*\(${2}.*\)<#\1<" $1
}
# comment lines matching $2 ($1 is the file)
uncomment () {
check_and_backup $1
sed -i "s<^[#[:blank:]]*\(${2}.*\)<\1<" $1
}
2010-03-25 21:55:39 +08:00
stop_bigbluebutton () {
/etc/init.d/red5 stop
/etc/init.d/${TOMCAT} stop
/etc/init.d/nginx stop
/etc/init.d/asterisk stop
/etc/init.d/activemq stop
}
start_bigbluebutton () {
/etc/init.d/asterisk start
/etc/init.d/activemq start
sleep 5
/etc/init.d/nginx start
/etc/init.d/red5 start
/etc/init.d/${TOMCAT} start
}
display_bigbluebutton_status () {
/etc/init.d/asterisk status
/etc/init.d/activemq status
/etc/init.d/nginx status
/etc/init.d/red5 status
/etc/init.d/${TOMCAT} status
}
2009-11-04 08:33:36 +08:00
if [ $# -eq 0 ]; then
usage
exit 1
fi
# Parse the parameters
while [ $# -gt 0 ]; do
2009-11-06 02:33:28 +08:00
if [ "$1" = "-check" -o "$1" = "--check" -o "$1" = "-c" ]; then
2009-11-04 08:33:36 +08:00
CHECK=1
2009-11-06 02:33:28 +08:00
shift
2009-11-05 12:08:22 +08:00
continue
2009-11-04 08:33:36 +08:00
fi
2009-11-04 09:18:58 +08:00
if [ "$1" = "--setup-samba" -o "$1" = "-setup-samba" ]; then
SAMBA=1
2009-11-06 02:33:28 +08:00
shift
continue
fi
if [ "$1" = "--version" -o "$1" = "-version" -o "$1" = "-v" ]; then
VERSION=1
shift
2009-11-04 09:18:58 +08:00
continue
fi
2009-12-10 06:49:49 +08:00
if [ "$1" = "--debug" -o "$1" = "-debug" -o "$1" = "-d" ]; then
DEBUG=1
shift
continue
fi
2010-01-16 22:28:53 +08:00
if [ "$1" = "--clean" -o "$1" = "-clean" ]; then
2009-12-13 01:56:14 +08:00
CLEAN=1
shift
continue
fi
if [ "$1" = "--watch" -o "$1" = "-watch" -o "$1" = "-w" ]; then
WATCH=1
shift
continue
fi
2009-12-13 22:34:01 +08:00
if [ "$1" = "--network" -o "$1" = "-network" -o "$1" = "-n" ]; then
NETWORK=1
shift
continue
fi
2010-01-06 07:57:22 +08:00
if [ "$1" = "--zip" -o "$1" = "-zip" -o "$1" = "-z" ]; then
ZIP=1
shift
continue
fi
2010-01-19 10:20:22 +08:00
if [ "$1" = "--reset-dev" -o "$1" = "-reset-dev" -o "$1" = "-r" ]; then
RESET_DEV=1
shift
continue
fi
2010-03-25 21:55:39 +08:00
if [ "$1" = "--restart" -o "$1" = "-restart" ]; then
RESTART=1
shift
continue
fi
2010-07-01 03:50:31 +08:00
if [ "$1" = "--checkout" -o "$1" = "-checkout" ]; then
echo "# Request to checkout BigBlueButton"
2010-07-03 23:36:10 +08:00
if [ $# -lt 2 ]; then
CHECKOUT="git://github.com/bigbluebutton/bigbluebutton.git"
else
CHECKOUT="${2}"
fi
2010-07-01 03:50:31 +08:00
shift; shift
continue
fi
2009-11-04 08:33:36 +08:00
#
# all other parameters requires at least 1 argument
#
if [ $# -lt 2 ]; then
usage
exit 1
fi
if [ "$1" = "-setip" -o "$1" = "--setip" ]; then
2009-11-05 12:08:22 +08:00
HOST="${2}"
2010-03-09 23:32:20 +08:00
if echo $HOST|grep -q ":"; then
HOST=`echo ${2}|cut -d: -f1`
PORT=`echo ${2}|cut -d: -f2`
fi
2009-11-04 08:33:36 +08:00
shift; shift
continue
fi
2010-07-01 03:50:31 +08:00
if [ "$1" = "--setup-dev" -o "$1" = "-setup-dev" ]; then
SETUPDEV="${2}"
shift; shift
continue
fi
2010-07-01 03:28:54 +08:00
if [ "$1" = "--conference" -o "$1" = "-conference" ]; then
CONFERENCE="${2}"
2010-06-26 00:11:36 +08:00
shift; shift
continue
2010-07-01 03:28:54 +08:00
fi
2010-07-01 03:50:31 +08:00
if [ "$1" = "--salt" -o "$1" = "-salt" ]; then
SALT="${2}"
shift; shift
continue
fi
2009-12-12 05:20:34 +08:00
2009-11-04 08:33:36 +08:00
usage
exit 1
done
#
# Version
#
if [ $VERSION ]; then
2010-02-12 00:32:09 +08:00
if [ "$(is_redhat)" ]; then
2010-02-09 05:22:16 +08:00
echo "$(yum list installed | grep bbb-conf)"
else
2010-02-12 00:32:09 +08:00
if [ "$(is_ubuntu)" ]; then
2010-02-09 05:22:16 +08:00
echo
dpkg -l | grep bbb
fi
fi
2009-11-04 08:33:36 +08:00
exit 0
fi
2009-11-04 09:18:58 +08:00
#
# Setup samba
#
2010-07-01 03:50:31 +08:00
if [ $SALT ]; then
need_root
# echo $SALT;
change_var_salt /var/lib/$TOMCAT/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties beans.dynamicConferenceService.securitySalt $SALT
echo "Changed the security salt to $SALT";
fi
2009-11-04 09:18:58 +08:00
if [ $SAMBA ]; then
2010-01-24 12:00:01 +08:00
check_root
2009-11-04 09:18:58 +08:00
#
# Instal Samba
#
if ! dpkg-query -s samba > /dev/null 2>&1; then
2009-11-07 00:15:45 +08:00
sudo apt-get install -y --force-yes samba ant
2009-11-04 09:18:58 +08:00
fi
#
# Add a share to samba
#
if ! grep -q $USER /etc/samba/smb.conf; then
2010-01-24 03:31:34 +08:00
IP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
2009-11-04 09:18:58 +08:00
echo ";
; BigBlueButton: Share the development directory
[$USER]
comment = BigBlueButton Development share
path = /home/$USER
browseable = yes
read only = no
create mask = 0755
directory mask = 0775
guest ok = yes
force user = $USER
" | sudo tee -a /etc/samba/smb.conf > /dev/null 2>&1
sudo /etc/init.d/samba restart
echo "
You can now access your development folder through:
2010-01-24 12:00:01 +08:00
\\\\${IP}\\$USER
2009-11-04 09:18:58 +08:00
If you are running a development environment on Windows (such as using Eclipse or FlexBuilder),
you can map the above path to a drive letter.
"
else
echo "Already detected a definition for $USER in /etc/samba/smb.conf"
echo "No changes were made to /etc/samba/smb.conf"
fi
fi
2009-11-04 08:33:36 +08:00
#
# Setup the development environemnt.
#
2010-07-01 03:50:31 +08:00
if [ $CHECKOUT ]; then
2009-11-04 08:33:36 +08:00
check_root
2010-01-06 07:57:22 +08:00
# This is a step towards setting up a development environment on a non-BigBlueButton VM
2010-07-01 03:50:31 +08:00
which git
2010-01-06 07:57:22 +08:00
if [ $? != 0 ]; then
2010-07-01 03:50:31 +08:00
echo "# Installing git and ant"
sudo apt-get install git ant -y --force-yes
2010-01-06 07:57:22 +08:00
fi
2010-07-01 03:50:31 +08:00
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
2010-01-06 07:57:22 +08:00
2009-11-04 09:18:58 +08:00
if [ ! -d ~/dev ]; then
2010-07-01 03:50:31 +08:00
echo "# Creating dev directory"
2009-11-04 09:18:58 +08:00
mkdir ~/dev
fi
2010-07-01 03:50:31 +08:00
echo "# Changing to the dev directory"
cd ~/dev
if [ ! -d ~/dev/source ]; then
echo "# Creating source directory"
mkdir ~/dev/source
fi
echo "# Changing to the dev directory"
cd ~/dev/source
echo "# "
2010-07-03 23:36:10 +08:00
echo "# Checking out BigBlueButton."
2010-07-01 03:50:31 +08:00
echo "# "
echo "# "
2010-07-03 23:36:10 +08:00
git clone $CHECKOUT
2010-07-01 03:50:31 +08:00
echo "# "
echo "# "
2010-07-03 23:36:10 +08:00
echo "# Checked out BigBlueButton. "
2010-07-01 03:50:31 +08:00
echo "# "
echo " You can now run 'bbb-conf --setup-dev [client|web|apps]' to setup dev environment "
echo "# "
fi
if [ $SETUPDEV ]; then
check_root
2009-11-04 08:33:36 +08:00
2010-07-01 03:50:31 +08:00
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
2009-11-04 08:33:36 +08:00
2010-01-24 03:31:34 +08:00
2010-07-01 03:50:31 +08:00
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
2009-11-04 08:33:36 +08:00
2010-07-01 03:50:31 +08:00
IP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
2010-04-03 01:37:06 +08:00
2010-07-01 03:50:31 +08:00
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
2010-04-03 01:37:06 +08:00
2010-07-01 03:50:31 +08:00
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
2010-06-29 04:10:29 +08:00
2010-07-01 03:50:31 +08:00
echo "# Enabling $USER to write to /var/bigbluebutton to upload slides"
sudo chmod -R ugo+rwx /var/bigbluebutton
2010-06-29 04:10:29 +08:00
2010-07-01 03:50:31 +08:00
echo "# Enabling $USER to write to /var/log/bigbluebutton to write log files"
sudo chmod -R ugo+rwx /var/log/bigbluebutton
2010-06-29 04:10:29 +08:00
2010-07-01 03:50:31 +08:00
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 "
2009-11-06 02:33:28 +08:00
# Done. To run your local build of bbb-web:
2010-07-01 03:50:31 +08:00
sudo /etc/init.d/${TOMCAT} stop
cd ${BBBWEBHOME}
ant
2009-11-06 02:33:28 +08:00
"
2010-07-01 03:50:31 +08:00
fi
2009-11-04 10:23:54 +08:00
2009-11-04 09:18:58 +08:00
2010-07-01 03:50:31 +08:00
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
2009-11-04 09:18:58 +08:00
2010-07-01 03:50:31 +08:00
#
# 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
2009-11-04 10:23:54 +08:00
2010-07-01 03:50:31 +08:00
if [ ! -d $BBBCLIENTHOME/conf ]; then
mkdir -p $BBBCLIENTHOME/bin/conf
fi
2009-11-04 10:23:54 +08:00
2010-07-01 03:50:31 +08:00
if [ ! -h $BBBCLIENTHOME/client ]; then
ln -s $BBBCLIENTHOME/bin $BBBCLIENTHOME/client
fi
2009-11-04 09:18:58 +08:00
2010-07-01 03:50:31 +08:00
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
2009-11-04 10:23:54 +08:00
2010-07-05 21:16:33 +08:00
echo "# Copying /var/www/bigbluebutton/client/conf/config.xml to ${BBBCLIENTHOME}/bin/conf/config.xml"
cp /var/www/bigbluebutton/client/conf/config.xml $BBBCLIENTHOME/bin/conf/config.xml
2010-01-06 07:57:22 +08:00
2010-07-01 03:50:31 +08:00
cd $BBBCLIENTHOME
2010-07-01 03:28:54 +08:00
2010-07-01 03:50:31 +08:00
echo "
2009-11-06 02:33:28 +08:00
# Done. To build your local build of bbb-client:
2009-11-05 12:08:22 +08:00
2010-07-01 03:50:31 +08:00
cd ${BBBCLIENTHOME}
ant
2009-11-06 02:33:28 +08:00
2010-07-01 03:50:31 +08:00
# The nginx server now loads the BigBlueButton Flash client from
# ${BBBCLIENTHOME}.
2009-11-05 12:08:22 +08:00
"
2010-07-01 03:50:31 +08:00
fi
2009-11-04 10:23:54 +08:00
2010-07-01 03:50:31 +08:00
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
2010-06-29 04:10:29 +08:00
2010-07-01 03:50:31 +08:00
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/
2010-04-03 03:44:51 +08:00
else
echo "# $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/lib/bbb-common-message-0.64.jar does NOT exist!"
fi
fi
2009-11-05 12:08:22 +08:00
2010-07-01 03:50:31 +08:00
#
# 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
2010-06-29 04:10:29 +08:00
2010-07-01 03:50:31 +08:00
if [ ! -f ~/.bbb-apps-build.properties ]; then
echo "#
2009-11-05 12:08:22 +08:00
# Override the default properties for bbb-apps
#
2010-02-09 05:22:16 +08:00
red5.home = $RED5_DIRECTORY
2009-11-05 12:08:22 +08:00
" > ~/.bbb-apps-build.properties
2010-07-01 03:50:31 +08:00
fi
2009-11-05 12:08:22 +08:00
2010-07-01 03:50:31 +08:00
#
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
# local copy of the client
#
echo "
2009-11-05 12:08:22 +08:00
# Done. To run your local build of bbb-apps:
sudo /etc/init.d/red5 stop
2010-07-01 03:50:31 +08:00
cd ${BBBAPPSHOME}
2010-03-05 04:38:08 +08:00
gradle war deploy
2010-07-01 03:50:31 +08:00
cd $RED5_DIRECTORY
sudo -u red5 ./red5.sh
2009-11-05 12:08:22 +08:00
# To restore the packaged version of bbb-apps:
2010-02-09 05:22:16 +08:00
rm -rf $RED5_DIRECTORY/webapps/bigbluebutton
2010-04-03 06:56:28 +08:00
sudo apt-get install bigbluebutton
2009-11-05 12:08:22 +08:00
sudo /etc/init.d/red5 start
"
2010-07-01 03:50:31 +08:00
fi
2009-11-04 08:33:36 +08:00
fi
2010-01-19 10:20:22 +08:00
if [ $RESET_DEV ]; then
check_root
echo "Reseting /etc/nginx/sites-available/bigbluebutton to point to /var/www/bigbluebutton"
2010-07-01 03:27:01 +08:00
sudo sed -i "s/\/home\/firstuser\/dev\/source\/bigbluebutton\/bigbluebutton-client;/\/var\/www\/bigbluebutton;/g" \
2010-01-19 10:20:22 +08:00
/etc/nginx/sites-available/bigbluebutton
sudo /etc/init.d/nginx restart
fi
2010-01-16 10:40:58 +08:00
check_state() {
2009-11-05 12:08:22 +08:00
2010-01-16 22:28:53 +08:00
echo
2009-11-06 06:48:31 +08:00
#
# Check for potential problems
#
2010-02-09 05:22:16 +08:00
if ! ps aux | grep "$ACTIVEMQ_DIRECTORY" > /dev/null; then
2009-11-06 04:57:56 +08:00
print_header
echo " activeMQ: -- not running --"
fi
if ! ps aux | grep 'org.red5.server.Bootstrap' > /dev/null; then
print_header
echo " red5: -- not running --"
fi
if ! ps aux | grep '[/]usr/sbin/asterisk' > /dev/null; then
print_header
echo " asterisk: -- not running --"
fi
2009-11-06 07:14:17 +08:00
if ! ps aux | grep '[/]usr/sbin/nginx' > /dev/null; then
print_header
echo " ngingx: -- not running --"
fi
2009-11-06 04:57:56 +08:00
if ! netstat -ant | grep '8080' > /dev/null; then
print_header
2010-05-08 01:48:30 +08:00
echo " ${TOMCAT} or grails: -- not running --"
2009-12-12 05:20:34 +08:00
else
if ps aux | ps -aef | grep grails | grep run-app > /dev/null; then
print_header
2010-03-09 23:32:20 +08:00
echo " ${TOMCAT}: noticed you are running grails run-app instead of tomcat"
2009-12-12 05:20:34 +08:00
fi
fi
2009-11-06 04:57:56 +08:00
if [ ! -L /etc/nginx/sites-enabled/bigbluebutton ]; then
print_header
echo " nginx (conf): no symbolic link in /etc/nginx/sites-enabled for bigbluebutton"
fi
2009-12-13 22:34:01 +08:00
if grep -v \# /etc/nginx/sites-available/bigbluebutton | grep /home/firstuser/dev/bbb-client > /dev/null; then
2009-12-12 05:20:34 +08:00
print_header
echo " nginx (conf): noticed that location for cient is /home/firstuser/dev/bbb-client"
echo " instead of the usual /var/www/bigbluebutton"
fi
2009-11-06 06:48:31 +08:00
DIRECTORIES="bigbluebutton sip video"
for dir in $DIRECTORIES ; do
2010-02-09 05:22:16 +08:00
if [ ! -d $RED5_DIRECTORY/webapps/$dir ]; then
echo " missing red5 app: $RED5_DIRECTORY/webapps/$dir "
2009-11-06 06:48:31 +08:00
fi
done
2010-02-09 05:22:16 +08:00
RED5_LOG_FILES="bigbluebutton red5 sip video"
2009-11-06 06:48:31 +08:00
for file in $RED5_LOG_FILES ; do
2010-02-09 05:22:16 +08:00
if [ ! -f $RED5_DIRECTORY/log/$file.log ]; then
echo " missing red5 log: $RED5_DIRECTORY/log/$file.demo"
2009-11-06 06:48:31 +08:00
fi
done
2010-01-16 10:40:58 +08:00
#
# Make sure the salt for the API matches the server
#
2010-03-09 23:32:20 +08:00
SALT_PROPERTIES=$(cat /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | tr -d '\r' | sed -n '/securitySalt/{s/.*=//;p}')
SALT_DEMO=$(cat /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp | tr -d '\r' | sed -n '/salt =/{s/.* = "//;s/".*//g;p}')
2010-01-04 01:45:31 +08:00
if [ "$SALT_PROPERTIES" != "$SALT_DEMO" ]; then
2010-01-24 08:08:15 +08:00
echo " salt mismatch: salt in bigbluebutton.properties and bbb_api_conf.jsp do not match"
2010-01-04 01:45:31 +08:00
fi
2010-01-16 10:40:58 +08:00
#
# Look for properties with no values set
#
2010-02-09 05:22:16 +08:00
CONFIG_FILES="$RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties \
2010-03-09 23:32:20 +08:00
/var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties \
2010-02-09 05:22:16 +08:00
$RED5_DIRECTORY/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
2010-01-13 11:44:50 +08:00
for file in $CONFIG_FILES ; do
2010-01-16 10:40:58 +08:00
if grep -q "^[^=]*=[ ]*$" $file; then
echo " empty parameter(s) found: $(grep '^[^=]*=[ ]*$' $file | sed 's/=//g') ($file)"
2010-01-13 11:44:50 +08:00
fi
done
2010-07-01 03:57:39 +08:00
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
2010-01-16 10:40:58 +08:00
#
# Check that tomcat6 started properly and has created log files
#
2010-02-09 05:22:16 +08:00
if [ -z "$(ls -A $TOMCAT6_LOGS)" ]; then
echo " empty directory: $TOMCAT6_LOGS contains no logs"
2010-01-15 11:00:52 +08:00
fi
2010-01-13 11:44:50 +08:00
2010-01-16 10:40:58 +08:00
#
# Check that bigbluebutton in red5 has started propertly
#
2010-02-09 05:22:16 +08:00
BIGBLUEBUTTON_RED5_LOG=$(stat -c%s $RED5_DIRECTORY/log/bigbluebutton.log)
2010-01-16 10:40:58 +08:00
if [ $BIGBLUEBUTTON_RED5_LOG -lt 100 ]; then
2010-02-09 05:22:16 +08:00
echo " bigbluebutton failed to start: $RED5_DIRECTORY/log/bigbluebutton.log (red5)"
2010-01-16 10:40:58 +08:00
fi
2010-01-16 10:55:12 +08:00
HOST_IP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
NGINX_IP=$(cat /etc/nginx/sites-available/bigbluebutton | sed -n '/server_name/{s/.*name[ ]*//;s/;//;p}')
2010-01-24 03:31:34 +08:00
if [ "$HOST_IP" != "$NGINX_IP" ]; then
2010-02-09 06:24:21 +08:00
echo "Host IP does not match BigBlueButton: ${HOST_IP} != ${NGINX_IP}"
2010-01-16 10:55:12 +08:00
fi
2010-07-06 01:02:04 +08:00
VARFolder=$(cat /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | grep swfToolsDir | cut -d= -f2)
if [ -x $VARFolder/pdf2swf ] && [ -x $VARFolder/jpeg2swf ] && [ -x $VARFolder/png2swf ]; then
echo "pdf2swf, jpeg2swf and png2swf are installed in $VARFolder"
fi
VARFolder=$(cat /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | grep imageMagickDir | cut -d= -f2)
if [ -x $VARFolder/convert ]; then
echo "imageMagick's convert is installed in $VARFolder"
fi
VARFolder=$(cat /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | grep ghostScriptExec | cut -d= -f2)
if [ -x $VARFolder ]; then
echo "Ghostscript is installd in $VARFolder"
fi
2009-11-06 06:48:31 +08:00
echo
2009-12-10 06:49:49 +08:00
exit 0
}
2009-11-06 06:48:31 +08:00
2009-12-10 06:49:49 +08:00
#
# Check current setup
#
if [ $CHECK ]; then
echo "Current Configuration:"
2010-07-05 21:16:33 +08:00
echo "Kernel version: " `uname -r`
if [ `uname -m` == "x86_64" ]; then
echo "The architecture is 64bit."
elif [ `uname -m` == "x86" ]; then
echo "The architecture is 32bit."
fi
2009-12-10 06:49:49 +08:00
IP=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/porttest /{s/.*host="//;s/".*//;p}')
echo
echo "/var/www/bigbluebutton/client/conf/config.xml (bbb-client)"
echo " IP for tunnel check: $IP"
IP=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/uri.*video/{s/.*rtmp:\/\///;s/\/.*//;p}')
echo " IP for rtmp (red5): $IP"
HOST=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/recordingHost/{s/.*recordingHost="http:\/\///;s/"//;p}')
echo " host for bbb-web interface: $HOST"
IP=$(cat /etc/nginx/sites-available/bigbluebutton | sed -n '/server_name/{s/.*name[ ]*//;s/;//;p}')
echo
echo "/etc/nginx/sites-available/bigbluebutton (configuration file nginx)"
echo " server_name: $IP"
PORT=$(cat /etc/nginx/sites-available/bigbluebutton | sed -n '/listen/{s/.*listen[ ]*//;s/;//;p}')
echo " port: $PORT"
BBB_CLINET_DOC_ROOT=$(cat /etc/nginx/sites-available/bigbluebutton | grep \/client -A 1 | grep root | sed -n '{s/[ ]*root[ ]*//;s/;//;p}')
echo " client document root: $BBB_CLINET_DOC_ROOT"
2010-03-09 23:32:20 +08:00
HOST=$(cat /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}')
2009-12-10 06:49:49 +08:00
echo
2010-03-09 23:32:20 +08:00
echo "/var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties (bbb-web)"
2009-12-10 06:49:49 +08:00
echo " host: $HOST"
2010-03-09 23:32:20 +08:00
if [ -f /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp ]; then
HOST=$(cat /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp | sed -n '/String BigBlueButtonURL/{s/.*http:\/\///;s/\/.*//;p}' | tr -d '\015')
2009-12-24 11:02:55 +08:00
echo
2010-03-09 23:32:20 +08:00
echo "/var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp (API demos)"
2009-12-24 11:02:55 +08:00
echo " host: $HOST"
fi
2010-01-16 22:28:53 +08:00
if ps aux | grep '[/]usr/sbin/asterisk' > /dev/null; then
2010-02-09 05:22:16 +08:00
CONFERENCING_MODULE=$(cat $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties | sed -n '/asterisk.application/{s/.*=[ ]*//g;p}')
2010-01-16 22:28:53 +08:00
echo
echo "/etc/asterisk/bbb_extensions.conf (asterisk)"
2010-01-21 00:57:33 +08:00
echo " conference module: $CONFERENCING_MODULE"
2010-01-16 22:28:53 +08:00
fi
check_state
2009-12-10 06:49:49 +08:00
exit 0
fi
2010-01-06 07:57:22 +08:00
#
# Check current setup
#
if [ $ZIP ]; then
need_root
LOG_FILE="$(date +'%Y%m%d')-$(date +%H)"
#
# Check log files
#
rm -f /tmp/$LOG_FILE.tar
rm -f /tmp/$LOG_FILE.tar.gz
rm -f /tmp/a
2010-01-15 11:00:52 +08:00
touch /tmp/empty
tar cf /tmp/$LOG_FILE.tar /tmp/empty > /dev/null 2>&1
2010-02-09 05:22:16 +08:00
tar rf /tmp/$LOG_FILE.tar $RED5_DIRECTORY/log > /dev/null 2>&1
2010-03-09 23:32:20 +08:00
tar rf /tmp/$LOG_FILE.tar $TOMCAT6_LOGS > /dev/null 2>&1
2010-01-13 11:44:50 +08:00
tar rf /tmp/$LOG_FILE.tar /var/log/bigbluebutton/* > /dev/null 2>&1
2010-01-06 07:57:22 +08:00
tar rf /tmp/$LOG_FILE.tar /var/log/nginx/error.log > /dev/null 2>&1
tar rf /tmp/$LOG_FILE.tar /var/log/syslog > /dev/null 2>&1
tar tf /tmp/$LOG_FILE.tar
gzip /tmp/$LOG_FILE.tar
2010-01-15 11:00:52 +08:00
mv /tmp/$LOG_FILE.tar.gz /root/$LOG_FILE.tar.gz
echo
echo " Created: /root/$LOG_FILE.tar.gz"
2010-01-06 07:57:22 +08:00
echo
fi
2009-12-10 06:49:49 +08:00
#
# Check current setup
#
if [ $DEBUG ]; then
2009-12-12 05:20:34 +08:00
need_root
2009-12-09 10:37:32 +08:00
#
# Check log files
#
rm -rf /tmp/t
2010-02-09 05:22:16 +08:00
grep ERROR $RED5_DIRECTORY/log/* > /tmp/t
2009-12-09 10:37:32 +08:00
if [ -s /tmp/t ]; then
2010-02-09 05:22:16 +08:00
echo " -- ERRORS found in $RED5_DIRECTORY/log/* -- "
2009-12-09 10:37:32 +08:00
cat /tmp/t
echo
fi
rm -rf /tmp/t
2010-02-09 05:22:16 +08:00
grep Exception $RED5_DIRECTORY/log/* > /tmp/t
2009-12-09 10:37:32 +08:00
if [ -s /tmp/t ]; then
2010-02-09 05:22:16 +08:00
echo " -- Exceptions found in $RED5_DIRECTORY/log/* -- "
2009-12-09 10:37:32 +08:00
cat /tmp/t
echo
fi
rm -rf /tmp/t
find /var/log/asterisk -exec grep -H -i "Unable to register" '{}' \; > /tmp/t
if [ -s /tmp/t ]; then
echo " -- Registration errors found in /var/log/asterisk/ -- "
echo "Found $(cat /tmp/t | wc -l) errors in /var/log/asterisk/* containing string \"Unable to register\""
echo
fi
rm -rf /tmp/t
2010-02-09 05:22:16 +08:00
sudo grep Exception $TOMCAT6_LOGS/* > /tmp/t
2009-12-09 10:37:32 +08:00
if [ -s /tmp/t ]; then
2010-02-09 05:22:16 +08:00
echo " -- Exceptions found in $TOMCAT6_LOGS/ -- "
2009-12-09 10:37:32 +08:00
cat /tmp/t
echo
fi
2010-01-02 10:17:11 +08:00
rm -rf /tmp/t
if [ -s /var/log/nginx/error.log ]; then
cat /var/log/nginx/error.log | grep -v "/fcs/ident2" > /tmp/t
if [ -s /tmp/t ]; then
echo " -- Errors found in /var/log/nginx/error.log -- "
cat /tmp/t
echo
fi
fi
2009-12-12 05:20:34 +08:00
2009-12-13 22:34:01 +08:00
rm -rf /tmp/t
2010-03-09 23:32:20 +08:00
if [ ! is_gentoo ]; then sudo grep -v "No Voicetronix cards detected" /var/log/asterisk/* | grep ERROR > /tmp/t
if [ -s /tmp/t ]; then
2009-12-13 22:34:01 +08:00
echo " -- Errors found in /var/log/asterisk/* -- "
cat /tmp/t
echo
2010-03-09 23:32:20 +08:00
fi
2009-12-13 22:34:01 +08:00
fi
2009-12-12 05:20:34 +08:00
2009-12-20 07:33:29 +08:00
rm -rf /tmp/t
2010-03-09 23:32:20 +08:00
if [ ! is_gentoo ]; then sudo grep -i exception /var/log/syslog > /tmp/t
if [ -s /tmp/t ]; then
2009-12-20 07:33:29 +08:00
echo " -- Errors found in /var/log/syslog -- "
cat /tmp/t
echo
2010-03-09 23:32:20 +08:00
fi
2009-12-20 07:33:29 +08:00
fi
2009-12-24 11:02:55 +08:00
rm -rf /tmp/t
if [ -d /var/log/bigbluebutton ]; then
2010-03-09 23:32:20 +08:00
if [ ! is_gentoo ]; then
sudo grep ERROR /var/log/bigbluebutton/* > /tmp/t
if [ -s /tmp/t ]; then
2009-12-24 11:02:55 +08:00
echo " -- Errors found in /var/log/bigbluebutton -- "
cat /tmp/t
echo
2010-03-09 23:32:20 +08:00
fi
2009-12-24 11:02:55 +08:00
fi
fi
2009-12-20 07:33:29 +08:00
2010-01-08 01:52:48 +08:00
rm -rf /tmp/t
if [ -d /var/log/bigbluebutton ]; then
2010-03-09 23:32:20 +08:00
if [ ! is_gentoo ]; then
sudo grep -i exception /var/log/bigbluebutton/* > /tmp/t
if [ -s /tmp/t ]; then
2010-01-08 01:52:48 +08:00
echo " -- Exceptions found in /var/log/bigbluebutton -- "
cat /tmp/t
echo
2010-03-09 23:32:20 +08:00
fi
2010-01-08 01:52:48 +08:00
fi
fi
2009-11-04 08:33:36 +08:00
exit 0
fi
# if asked to print the version that's all we do
2009-11-05 12:08:22 +08:00
if [ -n "$HOST" ]; then
2009-11-04 08:33:36 +08:00
#
# Just use the IP for port test in /var/www/bigbluebutton/client/conf/config.xml
#
echo "Assigning $HOST for testing for firewall in /var/www/bigbluebutton/client/conf/config.xml"
sudo sed -i "s/porttest host=\(\"[^\"]*\"\)/porttest host=\"$HOST\"/g" /var/www/bigbluebutton/client/conf/config.xml
echo "Assigning $HOST for rtmp:// in /var/www/bigbluebutton/client/conf/config.xml"
sudo sed -i "s/rtmp:\/\/\([^\"\/]*\)\([\"\/]\)/rtmp:\/\/$HOST\2/g" /var/www/bigbluebutton/client/conf/config.xml
echo "Assigning $HOST for servername in /etc/nginx/sites-available/bigbluebutton"
sudo sed -i "s/server_name .*/server_name $HOST;/g" /etc/nginx/sites-available/bigbluebutton
#
# Use port for remaining substitutions
#
if [ $PORT ]; then
HOST="$HOST:$PORT"
fi
#
# Update configuration for BigBlueButton client
#
echo "Assigning $HOST for http:// in /var/www/bigbluebutton/client/conf/config.xml"
sudo sed -i "s/http:\/\/\([^\"\/]*\)\([\"\/]\)/http:\/\/$HOST\2/g" /var/www/bigbluebutton/client/conf/config.xml
#
# Update configuration for BigBlueButton web app
#
2010-03-09 23:32:20 +08:00
echo "Assigning $HOST for web application URL in /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties"
2009-11-04 08:33:36 +08:00
sudo sed -i "s/bigbluebutton.web.serverURL=http:\/\/.*/bigbluebutton.web.serverURL=http:\/\/$HOST/g" \
2010-03-09 23:32:20 +08:00
/var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
2009-11-04 08:33:36 +08:00
2010-03-09 23:32:20 +08:00
# cat /var/lib/${TOMCAT}/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
2009-11-04 08:33:36 +08:00
#
# Update nginx
#
if [ $PORT ]; then
echo "Assigning $PORT for listen in /etc/nginx/sites-available/bigbluebutton"
sudo sed -i "s/listen .*/listen $PORT;/g" /etc/nginx/sites-available/bigbluebutton
fi
if ! grep -q server_names_hash_bucket_size /etc/nginx/nginx.conf; then
sudo sed -i "s/gzip on;/gzip on;\n server_names_hash_bucket_size 64;/g" /etc/nginx/nginx.conf
fi
2009-12-24 11:02:55 +08:00
#
# Update api demos
#
2010-03-09 23:32:20 +08:00
if [ -f /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp ]; then
echo "Assigning $HOST for api demos in /var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp"
2009-12-31 04:53:15 +08:00
sudo sed -i "s/BigBlueButtonURL = \"http:\/\/\([^\"\/]*\)\([\"\/]\)/BigBlueButtonURL = \"http:\/\/$HOST\2/g" \
2010-03-09 23:32:20 +08:00
/var/lib/${TOMCAT}/webapps/bigbluebutton/demo/bbb_api_conf.jsp
2009-12-24 11:02:55 +08:00
fi
2010-03-09 23:32:20 +08:00
echo "Restarting ${TOMCAT} and nginx ..."
sudo /etc/init.d/${TOMCAT} restart > /tmp/result 2>&1;cat /tmp/result;rm /tmp/result
2009-11-04 08:33:36 +08:00
sudo /etc/init.d/nginx restart
exit 0
fi
2009-12-12 05:20:34 +08:00
if [ $CONFERENCE ]; then
2010-01-16 22:28:53 +08:00
need_root
2010-02-09 05:22:16 +08:00
if [ ! -f $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bbb-voice-app.xml ]; then
echo "Error: Unable to find $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bbb-voice-app.xml"
2009-12-12 05:20:34 +08:00
exit 1
fi
if [ ! -f /etc/asterisk/bbb_extensions.conf ]; then
echo "Error: Unable to find /etc/asterisk/bbb_extensions.conf"
exit 1
fi
2010-01-16 22:28:53 +08:00
if [ "$CONFERENCE" = "meetme" ]; then
2009-12-12 05:20:34 +08:00
CONFERENCE=meetme
else
2010-01-16 22:28:53 +08:00
if [ "$CONFERENCE" = "konference" ]; then
2009-12-13 22:34:01 +08:00
CONFERENCE=app_konference
2009-12-12 05:20:34 +08:00
else
2010-01-16 22:28:53 +08:00
echo "Error: Valid options for --conference are: meetme, konference"
2010-02-09 05:22:16 +08:00
exit 1
2009-12-12 05:20:34 +08:00
fi
fi
if [ $CONFERENCE = "meetme" ]; then
2010-01-16 22:28:53 +08:00
#
2010-02-09 05:22:16 +08:00
# update $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties
2010-01-16 22:28:53 +08:00
#
sudo sed -i "s/asterisk.application[ ]*=.*/asterisk.application=meetme/g" \
2010-02-09 05:22:16 +08:00
$RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties
2009-12-12 05:20:34 +08:00
2010-01-21 04:53:47 +08:00
#
# update /etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${EXTEN},H)/; exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
2010-01-21 04:53:47 +08:00
/etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/;[ ]*exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
2010-01-21 04:53:47 +08:00
/etc/asterisk/bbb_extensions.conf
2009-12-12 05:20:34 +08:00
2010-01-16 22:28:53 +08:00
#
# update /etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/; exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
2009-12-12 05:20:34 +08:00
/etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/^exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/; exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
2009-12-12 05:20:34 +08:00
/etc/asterisk/bbb_extensions.conf
fi
2009-12-13 22:34:01 +08:00
if [ $CONFERENCE = "app_konference" ]; then
2010-01-16 22:28:53 +08:00
#
2010-02-09 05:22:16 +08:00
# update $RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties
2010-01-16 22:28:53 +08:00
#
sudo sed -i "s/asterisk.application[ ]*=.*/asterisk.application=konference/g" \
2010-02-09 05:22:16 +08:00
$RED5_DIRECTORY/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties
2009-12-12 05:20:34 +08:00
2010-01-21 04:53:47 +08:00
#
# update /etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/;[ ]*exten => _XXXX.,n,Konference(\${EXTEN},H)/exten => _XXXX.,n,Konference(\${EXTEN},H)/g" \
2010-01-21 04:53:47 +08:00
/etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/; exten => _XXXX.,n,MeetMe(\${EXTEN},cdMsT)/g" \
2010-01-21 04:53:47 +08:00
/etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/^exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/; exten => _XXXX.,n,MeetMe(\${CONFERENCE_FOUND},cdMsT)/g" \
2009-12-12 05:20:34 +08:00
/etc/asterisk/bbb_extensions.conf
2010-07-01 03:50:31 +08:00
sudo sed -i "s/; exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/exten => _XXXX.,n,Konference(\${CONFERENCE_FOUND},H)/g" \
2009-12-12 05:20:34 +08:00
/etc/asterisk/bbb_extensions.conf
fi
2010-02-09 05:22:16 +08:00
echo "Switching to $CONFERENCE ... "
2009-12-12 05:20:34 +08:00
sudo /etc/init.d/asterisk restart
sudo /etc/init.d/red5 restart
fi
2010-03-25 21:55:39 +08:00
if [ $RESTART ]; then
need_root
echo "Restarting BigBlueButton ..."
stop_bigbluebutton
echo
display_bigbluebutton_status
echo
start_bigbluebutton
fi
2009-12-13 01:56:14 +08:00
if [ $CLEAN ]; then
need_root
2010-03-09 23:32:20 +08:00
2010-01-06 07:57:22 +08:00
echo "Doing a clean restart of BigBlueButton ..."
2009-12-13 22:34:01 +08:00
2010-03-25 21:55:39 +08:00
stop_bigbluebutton
2009-12-13 01:56:14 +08:00
#
# Clean log files
#
echo
2010-01-06 07:57:22 +08:00
echo "Cleaning Log Files ..."
2009-12-13 22:42:44 +08:00
rm -f /var/log/asterisk/event*
rm -f /var/log/asterisk/messages*
rm -f /var/log/asterisk/queue*
2010-03-09 23:32:20 +08:00
if [ $RED5_DIRECTORY ]; then
rm -rf $RED5_DIRECTORY/log/*
fi
if [ $TOMCAT6_LOGS ]; then
rm -rf $TOMCAT6_LOGS/*
fi
2009-12-13 01:56:14 +08:00
rm -rf /var/log/nginx/*
2009-12-20 07:33:29 +08:00
mv /var/log/syslog /tmp/syslog.$$
echo "" > /var/log/syslog
2009-12-13 01:56:14 +08:00
2010-03-25 21:55:39 +08:00
display_bigbluebutton_status
2009-12-14 02:11:05 +08:00
2009-12-13 22:34:01 +08:00
echo
2010-03-25 21:55:39 +08:00
start_bigbluebutton
2009-12-13 01:56:14 +08:00
fi
2009-12-13 22:34:01 +08:00
if [ $NETWORK ]; then
2009-12-14 02:11:05 +08:00
netstat -ant | egrep ":1935|:9123|:80\ " | egrep -v ":::|0.0.0.0" > /tmp/t_net
2009-12-13 22:34:01 +08:00
REMOTE=$(cat /tmp/t_net | cut -c 45-68 | cut -d ":" -f1 | sort | uniq)
if [ "$REMOTE" != "" ]; then
2009-12-14 02:11:05 +08:00
echo -e "netstat\t\t\t80\t1935\t9123"
2009-12-13 22:34:01 +08:00
for IP in $REMOTE ; do
2009-12-14 02:11:05 +08:00
PORT_1935=$(cat /tmp/t_net | grep :1935 | cut -c 45-68 | cut -d ":" -f1 | grep $IP | wc -l)
PORT_9123=$(cat /tmp/t_net | grep :9123 | cut -c 45-68 | cut -d ":" -f1 | grep $IP | wc -l )
PORT_80=$(cat /tmp/t_net | grep :80 | cut -c 45-68 | cut -d ":" -f1 | grep $IP | wc -l )
#if cat /tmp/t_net | grep 9123 | cut -c 45-68 | cut -d ":" -f1 | grep $IP > /dev/null; then
# DESKSHARE=" XXX"
#fi
echo -e "$IP\t\t$PORT_80\t$PORT_1935\t$PORT_9123"
2009-12-13 22:34:01 +08:00
done
fi
fi
2009-12-13 01:56:14 +08:00
if [ $WATCH ]; then
need_root
2010-01-02 10:17:11 +08:00
watch -n 2 "top -n 1 -b | head -n 5; echo; asterisk -r -x \"core show channels\"; echo; bbb-conf --network; bbb-conf --debug"
2009-12-13 01:56:14 +08:00
fi