diff --git a/bigbluebutton-config/bin/bbb-conf b/bigbluebutton-config/bin/bbb-conf index f767943003019c196cee7160567f7489a1906502..b269115319f7c5e6d94271e42cc2f0c0609729d9 100644 --- a/bigbluebutton-config/bin/bbb-conf +++ b/bigbluebutton-config/bin/bbb-conf @@ -1,8 +1,8 @@ #!/bin/bash # -# BlueButton open source conferencing system - http://www.bigbluebutton.org/ +# BlueButton open source conferencing system - https://www.bigbluebutton.org/ # -# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). +# Copyright (c) 2020 BigBlueButton Inc. and by respective authors (see below). # # This program 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 @@ -14,7 +14,7 @@ # 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 -# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. +# with BigBlueButton; if not, see <https://www.gnu.org/licenses/>. # # Author(s): # Fred Dixon <ffdixon@bigbluebutton.org> @@ -66,6 +66,7 @@ # 2019-11-09 GTR Keep HTML5 client logs permissions when cleaning logs # 2020-05-20 NJH Add port 443 to --Network and clean up tmp file. # 2020-06-23 JFS Remove defaultGuestPolicy warning for HTML5 client +# 2020-10-22 AGG Removing Flash/Red5 related code #set -x #set -e @@ -120,9 +121,6 @@ FREESWITCH_EXTERNAL=/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml FREESWITCH_PID=/opt/freeswitch/var/run/freeswitch/freeswitch.pid FREESWITCH_EVENT_SOCKET=/opt/freeswitch/etc/freeswitch/autoload_configs/event_socket.conf.xml -RED5=red5 -RED5_DIR=/usr/share/$RED5 - LTI_DIR=/usr/share/bbb-lti if [ -f /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties ]; then @@ -138,7 +136,6 @@ if [ -f $SERVLET_DIR/WEB-INF/classes/bigbluebutton.properties ]; then PROTOCOL=https fi fi -PROTOCOL_RTMP=rtmp RECORD_CONFIG=/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml @@ -308,10 +305,6 @@ stop_bigbluebutton () { WEBHOOKS=bbb-webhooks fi - if [ -f /lib/systemd/system/bbb-transcode-akka.service ]; then - BBB_TRANSCODE_AKKA=bbb-transcode-akka - fi - if [ -f /usr/share/etherpad-lite/settings.json ]; then ETHERPAD=etherpad fi @@ -324,15 +317,11 @@ stop_bigbluebutton () { BBB_LTI=bbb-lti fi - if [ -f /usr/share/red5/red5-server.jar ]; then - BBB_RED5="red5" - fi - if [ -d $TOMCAT_DIR ]; then TOMCAT_SERVICE=$TOMCAT_USER fi - systemctl stop $BBB_RED5 $TOMCAT_SERVICE nginx freeswitch $REDIS_SERVICE bbb-apps-akka $BBB_TRANSCODE_AKKA bbb-fsesl-akka bbb-rap-resque-worker.service bbb-rap-starter.service bbb-rap-caption-inbox.service $HTML5 $WEBHOOKS $ETHERPAD $BBB_WEB $BBB_LTI + systemctl stop $TOMCAT_SERVICE nginx freeswitch $REDIS_SERVICE bbb-apps-akka bbb-fsesl-akka bbb-rap-resque-worker.service bbb-rap-starter.service bbb-rap-caption-inbox.service $HTML5 $WEBHOOKS $ETHERPAD $BBB_WEB $BBB_LTI } start_bigbluebutton () { @@ -348,17 +337,12 @@ start_bigbluebutton () { if [ -f /opt/freeswitch/var/log/freeswitch/freeswitch.log ]; then if grep -q "Failure to connect to CORE_DB sofia_reg_external" /opt/freeswitch/var/log/freeswitch/freeswitch.log; then - # See: http://docs.bigbluebutton.org/install/install.html#freeswitch-fails-to-bind-to-ipv4 + # See: https://docs.bigbluebutton.org/install/install.html#freeswitch-fails-to-bind-to-ipv4 echo "Clearing the FreeSWITCH database." rm -rf /opt/freeswitch/var/lib/freeswitch/db/* fi fi - # Clear any previous registration errors - if [ -f /usr/share/red5/log/sip.log ]; then - sed -i 's/Failed to register with Sip Server/Failed to register with Sip server/g' /usr/share/red5/log/sip.log - fi - echo "Starting BigBlueButton" if [ -f /usr/lib/systemd/system/bbb-html5.service ]; then HTML5="mongod bbb-html5 bbb-webrtc-sfu kurento-media-server" @@ -368,10 +352,6 @@ start_bigbluebutton () { WEBHOOKS=bbb-webhooks fi - if [ -f /lib/systemd/system/bbb-transcode-akka.service ]; then - BBB_TRANSCODE_AKKA=bbb-transcode-akka - fi - if [ -f /usr/share/etherpad-lite/settings.json ]; then ETHERPAD=etherpad fi @@ -384,74 +364,19 @@ start_bigbluebutton () { BBB_LTI=bbb-lti fi - if [ -f /usr/share/red5/red5-server.jar ]; then - BBB_RED5="red5" - fi - - systemctl start $BBB_RED5 $TOMCAT_SERVICE nginx freeswitch $REDIS_SERVICE bbb-apps-akka $BBB_TRANSCODE_AKKA bbb-fsesl-akka bbb-rap-resque-worker bbb-rap-starter.service bbb-rap-caption-inbox.service $HTML5 $WEBHOOKS $ETHERPAD $BBB_WEB $BBB_LTI + systemctl start $TOMCAT_SERVICE nginx freeswitch $REDIS_SERVICE bbb-apps-akka bbb-fsesl-akka bbb-rap-resque-worker bbb-rap-starter.service bbb-rap-caption-inbox.service $HTML5 $WEBHOOKS $ETHERPAD $BBB_WEB $BBB_LTI if [ -f /usr/lib/systemd/system/bbb-html5.service ]; then systemctl start mongod sleep 3 systemctl start bbb-html5 fi - - # - # Look for Starting up context to be recently added to the log files - # - if [ -f /usr/share/red5/red5-server.jar ]; then - COUNT=0 - while [ $COUNT -lt 20 ]; do - let COUNT=COUNT+1 - if [ -f $RED5_DIR/log/sip.log ] && [ -f $RED5_DIR/log/bigbluebutton.log ] && [ -f $RED5_DIR/log/red5.log ] && [ -f $RED5_DIR/log/video.log ] && [ -f $RED5_DIR/log/screenshare-slf.log ]; then - let COUNT=20 - else - echo -n "." - sleep 1 - fi - done - - - # - # All the log files exist, now check for the text "Starting up context" - # - COUNT=0 - while [ $COUNT -lt 20 ]; do - let COUNT=COUNT+1 - if [ -f $RED5_DIR/log/video.log ]; then - if ! cat $RED5_DIR/log/video.log | tail -n100 | grep -q "Starting up context"; then - echo -n "." - sleep 1 - else - let COUNT=20 - fi - fi - done - - if [ -f /usr/share/red5/red5-server.jar ]; then - echo - BBB_APPS="sip video bigbluebutton screenshare-slf" - for bbb_app in $BBB_APPS ; do - if [ -a $RED5_DIR/log/$bbb_app.log ]; then - if ! grep -q "Starting up context" $RED5_DIR/log/$bbb_app.log; then - echo "# $bbb_app may not have started properly" - fi - else - echo "# $RED5_DIR/log/$bbb_app.log not found" - fi - done - fi - fi } display_bigbluebutton_status () { units="nginx freeswitch $REDIS_SERVICE bbb-apps-akka bbb-fsesl-akka" - if [ -f /usr/share/red5/red5-server.jar ]; then - units="$units red5" - fi - if [ -d $TOMCAT_DIR ]; then units="$units $TOMCAT_USER" fi @@ -620,11 +545,21 @@ while [ $# -gt 0 ]; do exit 1 done +print_bigbluebutton_version() { + echo + if [ $DISTRIB_ID == "centos" ]; then + echo "BigBlueButton Server $BIGBLUEBUTTON_RELEASE ($(rpm -qa | grep bbb | grep -v bbb-demo | grep -v bbb-lti | grep -v bbb-redis | grep -v bbb-tomcat | grep -v freeswitch | sed 's/.*[0-9].[0-9].[0-9]-//g' | sed 's/\..*//g' | awk '{ sum+=$1} END {print sum}'))" + else + echo "BigBlueButton Server $BIGBLUEBUTTON_RELEASE ($(dpkg -l | grep bbb | grep -v bbb-demo | grep -v bbb-lti | sed -n '/[0-9].[0-9].[0-9]-/{s/.*[0-9].[0-9].[0-9]-//;s/;//;p}' | awk '{ sum+=$1} END {print sum}'))" + fi +} + # # Version # if [[ $VERSION ]]; then + print_bigbluebutton_version echo dpkg -l | grep bbb exit 0 @@ -672,22 +607,6 @@ check_configuration() { if [ -f $FREESWITCH_EVENT_SOCKET ]; then FREESWITCH_ESL_IP=$(cat $FREESWITCH_EVENT_SOCKET | grep 'name="listen-ip"' | cut -d\" -f4 | awk '{print $1}') check_no_value event_socket $FREESWITCH_EVENT_SOCKET $FREESWITCH_ESL_IP - - if [ -f /usr/share/red5/red5-server.jar ]; then - ESL_HOST=$(cat /usr/share/red5/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties | grep -v '#' | grep esl.host | sed 's/freeswitch.esl.host=//g') - check_no_value esl.host /usr/share/red5/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties $ESL_HOST - - if [ "$FREESWITCH_ESL_IP" != "::" ]; then - if [ "$FREESWITCH_ESL_IP" != "$ESL_HOST" ]; then - echo - echo "# The values for listen-ip in " - echo "# $FREESWITCH_EVENT_SOCKET" - echo "# do not match the settings for esl.host in" - echo "# /usr/share/red5/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties" - echo - fi - fi - fi fi # @@ -701,10 +620,6 @@ check_configuration() { # # Look for properties with no values set # - #CONFIG_FILES="$RED5_DIR/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties \ - #${SERVLET_DIR}/WEB-INF/classes/bigbluebutton.properties" - # \ - # $RED5_DIR/webapps/sip/WEB-INF/bigbluebutton-sip.properties" CONFIG_FILES="$SERVLET_DIR/WEB-INF/classes/bigbluebutton.properties" for file in $CONFIG_FILES ; do @@ -735,20 +650,22 @@ check_configuration() { fi fi - if [ "$IP" != "$NGINX_IP" ] && [ "_" != "$NGINX_IP" ]; then - if [ "$IP" != "$HOSTS" ]; then - echo "# IP does not match:" - echo "# IP from ifconfig: $IP" - echo "# /etc/nginx/sites-available/bigbluebutton: $NGINX_IP" - fi - fi + # Depreciated: BigBlueButton must be installed with a valid hostname, so comparing a hostnae to IP address + # does not provide any useful information. + #if [ "$IP" != "$NGINX_IP" ]; then + # if [ "$IP" != "$HOSTS" ]; then + # echo "# IP does not match:" + # echo "# IP from ifconfig: $IP" + # echo "# /etc/nginx/sites-available/bigbluebutton: $NGINX_IP" + # fi + #fi if [ -f /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp ]; then # # Make sure the shared secret for the API matches the server # SECRET_PROPERTIES=$(cat ${SERVLET_DIR}/WEB-INF/classes/bigbluebutton.properties | grep -v '#' | tr -d '\r' | sed -n '/securitySalt/{s/.*=//;p}') - SECRET_DEMO=$(cat /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp | grep -v '^//' | tr -d '\r' | sed -n '/salt[ ]*=/{s/.*=[ ]*"//;s/".*//g;p}') + SECRET_DEMO=$(cat ${TOMCAT_DIR}/webapps/demo/bbb_api_conf.jsp | grep -v '^//' | tr -d '\r' | sed -n '/salt[ ]*=/{s/.*=[ ]*"//;s/".*//g;p}') if [ "$SECRET_PROPERTIES" != "$SECRET_DEMO" ]; then echo "#" @@ -762,12 +679,12 @@ check_configuration() { echo fi - API_IP=$(cat /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp | grep -v '^//' | sed -n '/String BigBlueButtonURL/{s/.*http[s]*:\/\///;s/\/.*//;p}' | tr -d '\015') - if [ "$IP" != "$API_IP" ]; then - echo "# Warning: API URL IPs do not match host:" + if ! grep -q https ${TOMCAT_DIR}/webapps/demo/bbb_api_conf.jsp; then + echo + echo "# Warning: Did not detect https for API demos in " + echo "#" + echo "# ${TOMCAT_DIR}/webapps/demo/bbb_api_conf.jsp" echo "#" - echo "# IP from ifconfig: $IP" - echo "# ${TOMCAT_DIR}/demo/bbb_api_conf.jsp: $API_IP" echo fi fi @@ -834,18 +751,16 @@ check_configuration() { fi fi - if [ -f /usr/share/red5/red5-server.jar ]; then - if [ "$(ls -ld /var/bigbluebutton/screenshare | cut -d' ' -f3)" != "red5" ]; then - echo "# Warning: Detected the directory" - echo "# /var/bigbluebutton/screenshare" - echo "# is not owned by red5" - fi - - if [ "$(ls -ld /usr/share/red5/webapps/video/streams | cut -d' ' -f3)" != "red5" ]; then - echo "# Warning: Detected the directory" - echo "# /usr/share/red5/webapps/video/streams" - echo "# is not owned by red5" - fi + if [ $DISTRIB_ID == "xenial" ]; then + libreoffice_version=$(dpkg-query -W --showformat='${Version}\n' libreoffice | sed 's/.*://g' | sed 's/\.[^\.]*$//g') + if [[ "$libreoffice_version" > 1.0 ]]; then + if [[ "$libreoffice_version" < 4.4 ]]; then + echo "# Warning: Detected you are running an older version of LibreOffice: $libreoffice_version" + echo "#" + echo "# Recommend updated to the latest version of LibreOffice 4.x (4.4 or later)" + echo + fi + fi fi if [ "$(ls -ld /var/freeswitch/meetings | cut -d' ' -f3)" != "freeswitch" ]; then @@ -860,16 +775,6 @@ check_configuration() { echo "# is not owned by $BBB_USER" fi - if [ $PROTOCOL == "https" ]; then - if [ -f /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties ]; then - if ! grep jnlpUrl /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties | grep -q https; then - echo "# Warning: Detected the value for jnlpUrl is not configured for HTTPS" - echo "# /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties" - echo "#" - fi - fi - fi - if [ -f $HTML5_CONFIG ]; then SVG_IMAGES_REQUIRED=$(cat $BBB_WEB_CONFIG | grep -v '#' | sed -n '/^svgImagesRequired/{s/.*=//;p}') if [ "$SVG_IMAGES_REQUIRED" != "true" ]; then @@ -885,21 +790,12 @@ check_configuration() { fi fi - if [ -f /usr/share/red5/red5-server.jar ]; then - if find /usr/share /var/lib/red5 -name "*bbb-common-message*" | sed 's/\([^_]*_\).*/\1/g' | sort | uniq -c | grep -v 1 > /dev/null; then echo - echo - echo "# Warning: detected multiple bbb-common-message in the same directory" - find /usr/share /var/lib/red5 -name "*bbb-common-message*" | sed 's/\([^_]*_\).*/\1/g' | sort | uniq -c | grep -v 1 - echo - fi - fi - CHECK_STUN=$(xmlstarlet sel -t -m '//X-PRE-PROCESS[@cmd="set" and starts-with(@data, "external_rtp_ip=")]' -v @data $FREESWITCH_VARS | sed 's/external_rtp_ip=stun://g') if [ "$CHECK_STUN" == "stun.freeswitch.org" ]; then echo echo "# Warning: Detected FreeSWITCH is using default stun.freeswitch.org server. See" echo "#" - echo "# http://docs.bigbluebutton.org/2.2/troubleshooting.html#freeswitch-using-default-stun-server" + echo "# https://docs.bigbluebutton.org/2.2/troubleshooting.html#freeswitch-using-default-stun-server" echo "#" echo fi @@ -908,7 +804,7 @@ check_configuration() { echo echo "# Warning: No firewall detected. Recommend using setting up a firewall for your server" echo "#" - echo "# https://docs.bigbluebutton.org/2.2/customize.html#setup-a-firewall" + echo "# https://docs.bigbluebutton.org/2.2/troubleshooting.html#freeswitch-using-default-stun-server" echo "#" echo fi @@ -935,7 +831,6 @@ update_gstreamer() { fi } - check_state() { echo print_header @@ -948,15 +843,6 @@ check_state() { RUNNING_APPS="" NOT_RUNNING_APPS="" - if [ -f /usr/share/red5/red5-server.jar ]; then - if ! ps aux | grep -v grep | grep 'org.red5.server.Bootstrap' > /dev/null; then - print_header - NOT_RUNNING_APPS="${NOT_RUNNING_APPS} red5" - else - RUNNING_APPS="${RUNNING_APPS} red5" - fi - fi - if [[ -a $FREESWITCH_PID ]]; then if ! ps aux | grep -v grep | grep '[/]opt/freeswitch/bin/freeswitch' > /dev/null; then print_header @@ -986,13 +872,6 @@ check_state() { fi fi - if ! netstat -ant | grep '8201' > /dev/null; then - print_header - NOT_RUNNING_APPS="${NOT_RUNNING_APPS} LibreOffice" - else - RUNNING_APPS="${RUNNING_APPS} LibreOffice" - fi - if ! ps aux | grep -v grep | grep '[/]usr/[s]*bin/redis-server' > /dev/null; then print_header NOT_RUNNING_APPS="${NOT_RUNNING_APPS} redis-server" @@ -1005,32 +884,6 @@ check_state() { fi - # - # Check if running development environment - # - - if [ -f /etc/bigbluebutton/nginx/client.nginx ]; then - if ! grep /var/www/bigbluebutton /etc/bigbluebutton/nginx/client.nginx > /dev/null; then - NEW_LOCATION=$(cat /etc/bigbluebutton/nginx/client.nginx | grep -v '#' | sed -n '/root/{s/[ \t]*root[ \t]*//;s/;//;p}' | head -n 1) - echo "# Warning: nginx is not serving the client from /var/www/bigbluebutton/." - echo "# Instead, it's being served from" - echo "#" - echo "# $NEW_LOCATION" - echo "#" - echo "# (This is OK if you have setup a development environment.) " - echo - - if [ ! -d $NEW_LOCATION ]; then - echo "# Warning: The directory" - echo "#" - echo "# $NEW_LOCATION" - echo "#" - echo "# does not exist. The BigBlueButton client will not load." - echo - fi - fi - fi - # # Check if running development environment # @@ -1043,62 +896,6 @@ check_state() { fi - # - # Check red5 applications - # - if [ -f /usr/share/red5/red5-server.jar ]; then - AVAIL_RED5_APPS="" - UNAVAIL_RED5_APPS="" - DIRECTORIES="bigbluebutton sip video screenshare video-broadcast" - for dir in $DIRECTORIES ; do - if [ ! -d $RED5_DIR/webapps/$dir ]; then - UNAVAIL_RED5_APPS="${UNAVAIL_RED5_APPS} $dir" - else - AVAIL_RED5_APPS="${AVAIL_RED5_APPS} $dir" - fi - done - - if [ "$UNAVAIL_RED5_APPS" != "" ]; then - echo "# Unavailable red5 apps ($RED5_DIR/webapps/): ${UNAVAIL_RED5_APPS}" - fi - fi - - # - # Checking red5 apps log - # - - if [ -f /usr/share/red5/red5-server.jar ]; then - # Give the files a chance to be created (in case we got started with a clean) - COUNT=0 - while [ $COUNT -lt 20 ]; do - let COUNT=COUNT+1 - if [ -f $RED5_DIR/log/sip.log ] && [ -f $RED5_DIR/log/bigbluebutton.log ] && [ -f $RED5_DIR/log/red5.log ] && [ -f $RED5_DIR/log/video.log ] && [ -f $RED5_DIR/log/screenshare-slf.log ]; then - let COUNT=20 - else - echo -n "." - sleep 1 - fi - done - - RED5_LOG_FILES="bigbluebutton red5 sip video screenshare-slf" - AVAIL_RED5_LOG="" - UNAVAIL_RED5_LOG="" - for file in $RED5_LOG_FILES ; do - if [ ! -f $RED5_DIR/log/$file.log ]; then - UNAVAIL_RED5_LOG="${UNAVAIL_RED5_LOG} $file.log" - else - AVAIL_RED5_LOG="${AVAIL_RED5_LOG} $file.log" - fi - done - - if [ "$UNAVAIL_RED5_LOG" != "" ]; then - echo "# Error: Red5 log files not found" - echo - echo "# Unavailable red5 logs ($RED5_DIR/log): $UNAVAIL_RED5_LOG" - echo - fi - fi - # # Check FreeSWITCH # @@ -1162,35 +959,6 @@ check_state() { esac - if [ -f /usr/share/red5/red5-server.jar ]; then - if [[ -f /usr/share/red5/log/sip.log ]]; then - # - # Checking if voice app registered successfully - # - if cat /usr/share/red5/log/sip.log | grep -q "Failed to register with Sip Server"; then - echo "# Warning: The voice application may not have registered with the sip server." - echo "# Try running: " - echo "#" - echo "# $SUDO bbb-conf --clean" - echo "#" - echo - fi - - # - # 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 "# Error: The voice app is not registered with SIP server. Audio might not be working correctly." - echo - fi - else - echo "# Error: The following log file was not found" - echo "# /usr/share/red5/log/sip.log " - echo - fi - fi - # # Check that the servlet container has started properly and has created log files # @@ -1200,21 +968,6 @@ check_state() { fi fi - # - # Check that bigbluebutton in red5 has started properly (less than 100 lines indicates that it - # didn't start) - # - if [ -f /usr/share/red5/red5-server.jar ]; then - if [ -f $RED5_DIR/log/bigbluebutton.log ]; then - BBB_RED5_LOG=$(stat -c%s $RED5_DIR/log/bigbluebutton.log) - if [ $BBB_RED5_LOG -lt 100 ]; then - echo "# Log file too short (less than 100 lines): $RED5_DIR/log/bigbluebutton.log (red5)" - fi - else - echo "# No $RED5_DIR/log/bigbluebutton.log" - fi - fi - # # Check if the user is running their own bbb-web # @@ -1255,49 +1008,8 @@ check_state() { echo fi - # - # Check that BigBlueButton can connect to port 1935 - # - if [ -f /usr/share/red5/red5-server.jar ]; then - if [[ ! -z $RED5_IP && $DISTRIB_ID != "centos" ]]; then - if ! nc -w 3 $RED5_IP 1935 > /dev/null; then - echo "# Error: Unable to connect to port 1935 (RTMP) on $RED5_IP" - echo - fi - fi - fi - - - if [ -f /usr/share/red5/red5-server.jar ]; then - BBB_SIP_APP_IP=$(cat /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties | grep -v '#' | sed -n '/^bbb.sip.app.ip=/{s/.*=//;s/;//;p}') - if [ $BBB_SIP_APP_IP != "127.0.0.1" ]; then - if [ "$BBB_SIP_APP_IP" != $IP ]; then - echo "# Warning: The setting of $BBB_SIP_APP_IP for bbb.sip.app.ip in" - echo "#" - echo "# /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties" - echo "#" - echo "# does not match the local IP address ($IP)." - echo "# (This is OK if you've manually changed the values to an external " - echo "# FreeSWITCH server.)" - echo - fi - - SIP_IP=$(netstat -ant | grep 5060 | head -n1 | awk -F" " '{print $4}' | cut -d: -f1) - if [ -z $SIP_IP ]; then - echo "# Error: Could not detect FreeSWITCH listening on port 5060" - echo - else - if [ "$BBB_SIP_APP_IP" != $SIP_IP ]; then - echo "# Error: FreeSWITCH is listening on IP address $SIP_IP for SIP calls, but " - echo "# The IP address ($BBB_SIP_APP_IP) set bbb.sip.app.ip." - echo "#" - echo - fi - fi - fi - fi - - if [ "$SIP_NGINX_IP" != $IP ]; then + if [ "$(yq r /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml public.media.sipjsHackViaWs)" == "false" ]; then + if [ "$SIP_NGINX_IP" != $IP ]; then if [ "$SIP_NGINX_IP" != "\$freeswitch_addr" ]; then echo "# Warning: The setting of $SIP_NGINX_IP for proxy_pass in" echo "#" @@ -1307,6 +1019,7 @@ check_state() { echo "# (This is OK if you've manually changed the values)" echo fi + fi fi VARS_IP=$(cat $FREESWITCH_VARS | sed -n '/"local_ip_v4/{s/.*local_ip_v4=//;s/".*//;p}') @@ -1356,16 +1069,6 @@ check_state() { echo fi - if [ -f /var/www/bigbluebutton/check/conf/config.xml ]; then - CHECK_HOST=$(cat /var/www/bigbluebutton/check/conf/config.xml | grep "<uri>rtmp" | head -1 | sed 's/.*rtmp[s]*:\/\///g' | sed 's/\/.*//g' | tr -d '\015') - BBB_WEB_URL=$(cat ${SERVLET_DIR}/WEB-INF/classes/bigbluebutton.properties | grep -v '#' | sed -n '/^bigbluebutton.web.serverURL/{s/.*=//;p}') - echo "# Warning: The client self check is installed and accessible from:" - echo "#" - echo "# $BBB_WEB_URL/check" - echo "#" - echo - fi - if [ -f ${LTI_DIR}/WEB-INF/classes/lti-config.properties ]; then LTI_URL="${PROTOCOL}://"$(cat ${LTI_DIR}/WEB-INF/classes/lti-config.properties | grep -v '#' | sed -n '/^ltiEndPoint/{s/^.*=//;p}')'/lti/tool' echo "# Warning: The IMS Learning Tools Integration (LTI) is accessible from:" @@ -1400,29 +1103,6 @@ check_state() { fi fi - if [ -f /var/run/red5.pid ]; then - RED5_PID_PS=$(ps -u red5 | grep java | sed 's/^[ ]*//g' | cut -d" " -f1) - RED5_PID_FILE=$(cat /var/run/red5.pid) - if [[ "$RED5_PID_PS" != "$RED5_PID_FILE" ]]; then - if [ "$(ps -aef | grep "su -p -s /bin/sh red5 " | wc --lines)" == "2" ]; then - RED5_PID_PS=$(ps -aef | grep "su -p -s /bin/sh red5 " | head -n 1 | awk '{print $2}') - if [[ "$RED5_PID_PS" != "$RED5_PID_FILE" ]]; then - echo "# Error: red5 process ID does not match value in PID file" - echo "#" - echo "# pid from top: $RED5_PID_PS" - echo "# /var/run/red5.pid: $RED5_PID_FILE" - echo "#" - fi - else - echo "# Error: red5 process ID does not match value in PID file" - echo "#" - echo "# pid from top: $RED5_PID_PS" - echo "# /var/run/red5.pid: $RED5_PID_FILE" - echo "#" - fi - fi - fi - if [ "$(cat /usr/share/bbb-apps-akka/conf/application.conf | sed -n '/sharedSecret.*/{s/[^"]*"//;s/".*//;p}')" == "changeme" ]; then BBB_WEB_IP=$(cat ${SERVLET_DIR}/WEB-INF/classes/bigbluebutton.properties | grep -v '#' | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}') echo "# Error: Detected that /usr/share/bbb-apps-akka/conf/application.conf has the default" @@ -1432,15 +1112,6 @@ check_state() { echo "#" fi - if [ -f /usr/share/red5/red5-server.jar ]; then - if [ -z $(cat /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties | tr -d '\r' | sed -n "/useH264[ ]*=[ ]*/{s/useH264[ ]*=[ ]*//;p}") ]; then - echo "# Error: Detected there is no value set for useH264 in" - echo "#" - echo "# /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties" - echo "#" - fi - fi - if bbb-conf --status | grep -q inactive; then echo "# Error: Detected some processes have not started correctly" echo "#" @@ -1451,7 +1122,7 @@ check_state() { if systemctl status freeswitch | grep -q SETSCHEDULER; then echo "# Error: FreeSWITCH failed to start with SETSCHEDULER error, see" echo "#" - echo "# http://docs.bigbluebutton.org/2.2/troubleshooting.html#freeswitch-fails-to-start-with-a-setscheduler-error" + echo "# https://docs.bigbluebutton.org/2.2/troubleshooting.html#freeswitch-fails-to-start-with-a-setscheduler-error" echo "#" fi @@ -1464,7 +1135,7 @@ check_state() { echo "#" fi - if [ "$(yq r /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml public.media.sipjsHackViaWs)" != "true" ]; then + if [ "$(yq r /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml public.media.sipjsHackViaWs)" != "true" ]; then if [ "$PROTOCOL" == "https" ]; then if ! cat $SIP_CONFIG | grep -v '#' | grep proxy_pass | head -n 1 | grep -q https; then echo "# Warning: You have this server defined for https, but in" @@ -1563,12 +1234,7 @@ check_state() { if [ $CHECK ]; then need_root - echo - if [ $DISTRIB_ID == "centos" ]; then - echo "BigBlueButton Server $BIGBLUEBUTTON_RELEASE ($(rpm -qa | grep bbb | grep -v bbb-demo | grep -v bbb-lti | grep -v bbb-redis | grep -v bbb-tomcat | grep -v freeswitch | sed 's/.*[0-9].[0-9].[0-9]-//g' | sed 's/\..*//g' | awk '{ sum+=$1} END {print sum}'))" - else - echo "BigBlueButton Server $BIGBLUEBUTTON_RELEASE ($(dpkg -l | grep bbb | grep -v bbb-demo | grep -v bbb-lti | sed -n '/[0-9].[0-9].[0-9]-/{s/.*[0-9].[0-9].[0-9]-//;s/;//;p}' | awk '{ sum+=$1} END {print sum}'))" - fi + print_bigbluebutton_version echo " Kernel version:" $(uname -r) @@ -1596,7 +1262,7 @@ if [ $CHECK ]; then echo echo "/etc/nginx/sites-available/bigbluebutton (nginx)" - echo " server name: $NGINX_IP" + echo " server_name: $NGINX_IP" PORT=$(cat /etc/nginx/sites-available/bigbluebutton | grep -v '#' | sed -n '/listen/{s/.*listen[ ]*//;s/;//;p}' | grep -v ssl | tr --delete '\n' | sed 's/\[/, \[/g' | sed 's/0$/0\n/g') echo " port: $PORT" @@ -1604,21 +1270,6 @@ if [ $CHECK ]; then echo " port: 443 ssl" fi - if [ -f /etc/bigbluebutton/nginx/client.nginx ]; then - BBB_CLIENT_DOC_ROOT=$(cat /etc/bigbluebutton/nginx/client.nginx | grep -v '#' | grep \/client -A 1 | head -n 2 | grep root | sed -n '{s/[ \t]*root[ ]*//;s/;//;p}') - echo " bbb-client dir: $BBB_CLIENT_DOC_ROOT" - - echo - echo "/var/www/bigbluebutton/client/conf/config.xml (bbb-client)" - PORT_IP=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/porttest /{s/.*host="//;s/".*//;p}') - echo " Port test (tunnel): $PORT_IP" - - RED5_IP=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/uri.*video/{s/.*rtmp[s]*:\/\///;s/\/.*//;p}') - WEBRTC_ENABLED_CLIENT=$(xmlstarlet sel -t -m "config/modules/module[@name='PhoneModule']" -v @useWebRTCIfAvailable /var/www/bigbluebutton/client/conf/config.xml) - echo " red5: $RED5_IP" - echo " useWebrtcIfAvailable: $WEBRTC_ENABLED_CLIENT" - fi - echo echo "$FREESWITCH_VARS (FreeSWITCH)" echo " local_ip_v4: $(xmlstarlet sel -t -m '//X-PRE-PROCESS[@cmd="set" and starts-with(@data, "local_ip_v4=")]' -v @data $FREESWITCH_VARS | sed 's/local_ip_v4=//g')" @@ -1646,13 +1297,6 @@ if [ $CHECK ]; then # echo " api url: $LTI_URL" # fi - if [ -f /var/www/bigbluebutton/check/conf/config.xml ]; then - CHECK_URL=$(cat /var/www/bigbluebutton/check/conf/config.xml | grep "<uri>rtmp" | head -1 | sed 's/.*rtmp[s]*:\/\///g' | sed 's/\/.*//g' | tr -d '\015') - echo - echo "/var/www/bigbluebutton/check/conf/config.xml (client check)" - echo " client check: $CHECK_URL" - fi - if [ -f $RECORD_CONFIG ]; then echo echo "$RECORD_CONFIG (record and playback)" @@ -1665,6 +1309,7 @@ if [ $CHECK ]; then echo echo "$SIP_CONFIG (sip.nginx)" echo " proxy_pass: $SIP_NGINX_IP" + echo " protocol: $(cat /etc/bigbluebutton/nginx/sip.nginx | grep -v \# | sed -n '/proxy_pass/{s/.*proxy_pass [ ]*//;s/:.*//;p}' | head -n 1)" fi if [ -f $KURENTO_CONFIG ]; then @@ -1680,7 +1325,7 @@ if [ $CHECK ]; then echo " codec_video_content: $(yq r $KURENTO_CONFIG conference-media-specs.codec_video_content)" fi - if [ -f $HTML5_CONFIG ]; then + if [ -f $HTML5_CONFIG ]; then echo echo "/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml (HTML5 client)" echo " build: $(yq r $HTML5_CONFIG public.app.html5ClientBuild)" @@ -1731,18 +1376,16 @@ if [ $ZIP ]; then touch /tmp/empty tar cf $TMP_LOG_FILE /tmp/empty > /dev/null 2>&1 - tar rfh $TMP_LOG_FILE $RED5_DIR/log > /dev/null 2>&1 tar rfh $TMP_LOG_FILE $SERVLET_LOGS > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/bigbluebutton/* > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/bbb-apps-akka > /dev/null 2>&1 - tar rf $TMP_LOG_FILE /var/log/bbb-transcode-akka > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/bbb-fsesl-akka > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/bbb-webrtc-sfu > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/kurento-media-server > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/mongodb > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/redis > /dev/null 2>&1 tar rf $TMP_LOG_FILE /var/log/nginx/error.log* > /dev/null 2>&1 - tar rf $TMP_LOG_FILE /var/log/nginx/bigbluebutton.access.log* > /dev/null 2>&1 + tar rf $TMP_LOG_FILE /var/log/nginx/bigbluebutton.access.log* > /dev/null 2>&1 tar rfh $TMP_LOG_FILE /opt/freeswitch/var/log/freeswitch/ > /dev/null 2>&1 if [ -f /var/log/nginx/html5-client.log ]; then @@ -1786,16 +1429,6 @@ if [ $DEBUG ]; then echo fi - rm -rf /tmp/t - if [ -d /var/log/red5 ]; then - find /var/log/red5 -type f -exec grep -H ERROR '{}' \; >> /tmp/t - if [ -s /tmp/t ]; then - echo " -- ERRORS found in $RED5_DIR/log/* -- " - cat /tmp/t - echo - fi - fi - if [ -d $SERVLET_LOGS ]; then rm -rf /tmp/t $SUDO grep --directories=skip Exception $SERVLET_LOGS/* | grep -v CacheExceptionHandlerFactory > /tmp/t @@ -1863,39 +1496,6 @@ fi if [ -n "$HOST" ]; then need_root - # - # Just use the IP for port test in /var/www/bigbluebutton/client/conf/config.xml - # - if [ -f /var/www/bigbluebutton/client/conf/config.xml ]; then - echo "Assigning $HOST for testing for firewall in /var/www/bigbluebutton/client/conf/config.xml" - $SUDO sed -i "s/porttest host=\(\"[^\"]*\"\)/porttest host=\"$PROTOCOL_RTMP:\/\/$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[s]*:\/\/\([^\"\/]*\)\([\"\/]\)/$PROTOCOL_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 - - # - # Update configuration for BigBlueButton client (and preserve hostname for chromeExtensionLink if exists) - # - - # Extract the chrome store URL before updating config.xml. We will be able to restore it. - chromeExtensionLinkURL=$(cat /var/www/bigbluebutton/client/conf/config.xml | sed -n '/chromeExtensionLink/{s/.*https*:\/\///;s/\/.*//;p}') - - echo "Assigning $HOST for http[s]:// in /var/www/bigbluebutton/client/conf/config.xml" - $SUDO sed -i "s/http[s]*:\/\/\([^\"\/]*\)\([\"\/]\)/$PROTOCOL:\/\/$HOST\2/g" \ - /var/www/bigbluebutton/client/conf/config.xml - - if ! echo "$chromeExtensionLinkURL" | grep -q '""'; then - $SUDO sed -i "s/chromeExtensionLink=\"https:\/\/[^\/]*/chromeExtensionLink=\"https:\/\/$chromeExtensionLinkURL/g" \ - /var/www/bigbluebutton/client/conf/config.xml - fi - - echo "Assigning $HOST for publishURI in /var/www/bigbluebutton/client/conf/config.xml" - $SUDO sed -i "s/publishURI=\"[^\"]*\"/publishURI=\"$HOST\"/" /var/www/bigbluebutton/client/conf/config.xml - fi - # # Update configuration for BigBlueButton web app # @@ -1907,12 +1507,6 @@ if [ -n "$HOST" ]; then $SUDO sed -i "s/screenshareRtmpServer=.*/screenshareRtmpServer=$HOST/g" \ ${SERVLET_DIR}/WEB-INF/classes/bigbluebutton.properties - if [ -f /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties ]; then - change_var_value /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties streamBaseUrl rtmp://$HOST/screenshare - change_var_value /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties jnlpUrl $PROTOCOL://$HOST/screenshare - change_var_value /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties jnlpFile $PROTOCOL://$HOST/screenshare/screenshare.jnlp - 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 @@ -1989,12 +1583,6 @@ if [ -n "$HOST" ]; then done echo - if [ -f /var/www/bigbluebutton/check/conf/config.xml ]; then - echo "Assigning $HOST for client self check to /var/www/bigbluebutton/check/conf/config.xml" - sed -i "s/rtmp[s]*:\/\/\([^\"\/]*\)\//$PROTOCOL_RTMP:\/\/$HOST\//g" /var/www/bigbluebutton/check/conf/config.xml - sed -i "s/rtmpt:\/\/\([^\"\/]*\)\//rtmpt:\/\/$HOST\//g" /var/www/bigbluebutton/check/conf/config.xml - fi - # # Update HTML5 client # @@ -2088,14 +1676,6 @@ if [ $CLEAN ]; then rm -f /var/log/bigbluebutton/presentation/* fi - if [ -d /var/log/bigbluebutton/screenshare ]; then - rm -f /var/log/bigbluebutton/screenshare/* - fi - - if [[ $RED5_DIR ]]; then - rm -rf $RED5_DIR/log/* - fi - if [[ $SERVLET_LOGS ]]; then rm -rf $SERVLET_LOGS/* fi @@ -2125,14 +1705,10 @@ if [ $CLEAN ]; then rm -f /var/log/bbb-fsesl-akka/* fi - if [ -d /var/log/bbb-apps-akka ]; then + if [ -d /var/log/bbb-apps-akka ]; then rm -f /var/log/bbb-apps-akka/* fi - if [ -d /var/log/bbb-transcode-akka ]; then - rm -f /var/log/bbb-transcode-akka/* - fi - if [ -d /var/log/bbb-webrtc-sfu ]; then rm -f /var/log/bbb-webrtc-sfu/* fi