diff --git a/README.md b/README.md index c5cdc4d..3142dac 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +Quick Jibri installer based for Xenial servers. +======= # Quick Jibri Installer Bash installer for Jibri on *buntu 16.04 LTS based systems diff --git a/jitsi-updater.sh b/jitsi-updater.sh new file mode 100644 index 0000000..aa420d0 --- /dev/null +++ b/jitsi-updater.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# Jitsi Meet upgrade and custom keeper for Debian/*buntu binaries. +# 2018 - SwITNet Ltd +# GNU GPLv3 or later. + +Blue='\e[0;34m' +Purple='\e[0;35m' +Color_Off='\e[0m' +support="https://switnet.net/support" +apt_repo="/etc/apt/sources.list.d" +jibri_packages=$(grep Package /var/lib/apt/lists/download.jitsi.org_*_Packages | sort -u | awk '{print $2}' | paste -s -d ' ') +CHD_LST=$(curl -sL https://chromedriver.storage.googleapis.com/LATEST_RELEASE) +CHDB=/usr/local/bin/chromedriver +DOMAIN=$(ls /etc/prosody/conf.d/ | grep -v localhost | cut -d "." -f "1-3") +if [ -f $apt_repo/google-chrome.list ]; then + google_package=$(grep Package /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-amd64_Packages | sort -u | cut -d ' ' -f2 | paste -s -d ' ') +else + echo "Seems no Google repo installed" +fi +if [ -f $CHDB ]; then + CHD_AVB=$(chromedriver -v | awk '{print $2}' | cut -d . -f "1,2") +else + echo "Seems no chromedriver installed" +fi + +version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } + +check_jibri() { +if [ "$(dpkg-query -W -f='${Status}' "jibri" 2>/dev/null | grep -c "ok installed")" == "1" ] +then + service jibri restart + service jibri-icewm restart + service jibri-xorg restart +else + echo "Jibri service not installed" +fi +} + +# Restarting services +restart_services() { + service jitsi-videobridge restart + service jicofo restart + check_jibri + service prosody restart +} + +upgrade_cd() { +if version_gt $CHD_LST $CHD_AVB +then + echo "Upgrading ..." + wget https://chromedriver.storage.googleapis.com/$CHD_LST/chromedriver_linux64.zip + unzip chromedriver_linux64.zip + sudo cp chromedriver $CHDB + rm -rf chromedriver chromedriver_linux64.zip + chromedriver -v +else + echo "No need to upgrade Chromedriver" + printf "Current version: ${Green} $CHD_AVB ${Color_Off}\n" +fi +} + +update_jitsi_repo() { + apt-get update -o Dir::Etc::sourcelist="sources.list.d/jitsi-$1.list" \ + -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" + apt-get install -qq --only-upgrade $jibri_packages +} + +update_google_repo() { + if [ -f $apt_repo/google-chrome.list ]; then + apt-get update -o Dir::Etc::sourcelist="sources.list.d/google-chrome.list" \ + -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" + apt-get install -qq --only-upgrade $google_package + else + echo "No Google repository found" + fi +} + +check_lst_cd() { +printf "${Purple}Checking for the latest Chromedriver${Color_Off}\n" +if [ -f $CHDB ]; then + printf "Current installed Chromedriver: ${Yellow} $CHD_AVB ${Color_Off}\n" + printf "Latest Chromedriver version available: ${Green} $CHD_LST ${Color_Off}\n" + upgrade_cd +else + printf "${Yellow} -> Seems there is no Chromedriver installed${Color_Off}\n" +fi +} + +printf "${Blue}Update & upgrade Jitsi and components - v2.3${Color_Off}\n" +if [ -f $apt_repo/jitsi-unstable.list ]; then + update_jitsi_repo unstable + update_google_repo + check_lst_cd +elif [ -f $apt_repo/jitsi-stable.list ]; then + update_jitsi_repo stable + update_google_repo + check_lst_cd +else + echo "Please check your repositories, something is not right." + exit 1 +fi + +######################################################################## +# Keeping changes # +######################################################################## +printf "${Purple}========== Setting Static Avatar ==========${Color_Off}\n" +avatar="$(grep -r avatar /etc/*/sites-*/ 2>/dev/null)" +if ($avatar) < /dev/null > /dev/null 2>&1; then + echo "Moving on..." +else + echo "Setting Static Avatar" + sed -i "/RANDOM_AVATAR_URL_PREFIX/ s|false|\'http://$DOMAIN/avatar/\'|" /usr/share/jitsi-meet/interface_config.js + sed -i "/RANDOM_AVATAR_URL_SUFFIX/ s|false|\'.png\'|" /usr/share/jitsi-meet/interface_config.js +fi + +printf "${Purple}========== Setting Support Link ==========${Color_Off}\n" +if ($support) < /dev/null > /dev/null 2>&1; then + echo "Moving on..." +else + echo "Setting Support custom link" + sed -i "s|https://jitsi.org/live|$support|g" /usr/share/jitsi-meet/interface_config.js +fi + +restart_services +printf "${Blue}Script completed \o/! ${Color_Off}\n" diff --git a/quick_jibri_installer.sh b/quick_jibri_installer.sh index 9fb8c22..ee260b2 100644 --- a/quick_jibri_installer.sh +++ b/quick_jibri_installer.sh @@ -10,7 +10,6 @@ APACHE_2=$(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok instal NGINX=$(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") DIST=$(lsb_release -sc) GOOGL_REPO="/etc/apt/sources.list.d/dl_google_com_linux_chrome_deb.list" -CHD_VER=$(curl -sL https://chromedriver.storage.googleapis.com/LATEST_RELEASE) if [ $DIST = flidas ]; then DIST="xenial" @@ -122,7 +121,7 @@ fi echo "snd-aloop" | tee -a /etc/modules check_snd_driver - +CHD_VER=$(curl -sL https://chromedriver.storage.googleapis.com/LATEST_RELEASE) echo "# Installing Google Chrome / ChromeDriver" if [ -f $GOOGL_REPO ]; then echo "Google repository already set." @@ -224,8 +223,8 @@ fi restart_services() { service jitsi-videobridge restart service jicofo restart - check_jibri service prosody restart + check_jibri } # Configure Jibri @@ -265,7 +264,7 @@ org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90 BREWERY # Jibri tweaks for /etc/jitsi/meet/$DOMAIN-config.js -sed -i "s|guest.example.com|guest.$DOMAIN|" $MEET_CONF +sed -i "s|// anonymousdomain: 'guest.example.com'|anonymousdomain: \'guest.$DOMAIN\'|" $MEET_CONF sed -i "s|conference.$DOMAIN|internal.auth.$DOMAIN|" $MEET_CONF sed -i "s|// fileRecordingsEnabled: false,|fileRecordingsEnabled: true,| " $MEET_CONF sed -i "s|// liveStreamingEnabled: false,|liveStreamingEnabled: true,\\ @@ -364,21 +363,14 @@ cat << CONF_JSON > $CONF_JSON } CONF_JSON -#Tune webserver for Jitsi App control. +#Tune webserver for Jitsi App control if [ -f /etc/apache2/sites-available/$DOMAIN.conf ]; then WS_CONF=/etc/apache2/sites-available/$DOMAIN.conf sed -i '$ d' $WS_CONF cat << NG_APP >> $WS_CONF Alias "/external_api.js" "/usr/share/jitsi-meet/libs/external_api.min.js" - - Require all granted - - Alias "/external_api.min.js" "/usr/share/jitsi-meet/libs/external_api.min.js" - - Require all granted - NG_APP @@ -406,13 +398,45 @@ else -> https://github.com/switnet-ltd/quick-jibri-installer/issues" fi +#Enable static avatar +while [[ "$ENABLE_SA" != "yes" && "$ENABLE_SA" != "no" ]] +do +read -p "Do you want to enable static avatar?: (yes or no)"$'\n' -r ENABLE_SA +if [ "$ENABLE_SA" = "no" ]; then + echo "Static avatar won't be enable" +elif [ "$ENABLE_SA" = "yes" ] && [ -f /etc/apache2/sites-available/$DOMAIN.conf ]; then + echo "Static avatar are being enable" + wget https://switnet.net/static/avatar.png -O /usr/share/jitsi-meet/images/avatar2.png + WS_CONF=/etc/apache2/sites-available/$DOMAIN.conf + sed -i "/Alias \"\/external_api.js\"/i \ \ AliasMatch \^\/avatar\/\(.\*\)\\\.png /usr/share/jitsi-meet/images/avatar2.png" $WS_CONF + service apache2 reload + sed -i "/RANDOM_AVATAR_URL_PREFIX/ s|false|\'https://$DOMAIN/avatar/\'|" $INT_CONF + sed -i "/RANDOM_AVATAR_URL_SUFFIX/ s|false|\'.png\'|" $INT_CONF +elif [ "$ENABLE_SA" = "yes" ] && [ -f /etc/nginx/sites-available/$DOMAIN.conf ]; then + wget https://switnet.net/static/avatar.png -O /usr/share/jitsi-meet/images/avatar2.png + WS_CONF=/etc/nginx/sites-available/$DOMAIN.conf + sed -i "/location \/external_api.min.js/i \ \ \ \ location \~ \^\/avatar\/\(.\*\)\\\.png {\\ +\ +\ \ \ \ \ \ \ \ alias /usr/share/jitsi-meet/images/avatar2.png;\\ +\ +\ \ \ \ }\\ +\ " $WS_CONF + service nginx reload + sed -i "/RANDOM_AVATAR_URL_PREFIX/ s|false|\'http://$DOMAIN/avatar/\'|" $INT_CONF + sed -i "/RANDOM_AVATAR_URL_SUFFIX/ s|false|\'.png\'|" $INT_CONF +else + echo "No app configuration done to server file, please report to: + -> https://github.com/switnet-ltd/quick-jibri-installer/issues" +fi +done + #Enable secure rooms? -while [[ $ENABLE_SC != yes && $ENABLE_SC != no ]] +while [[ "$ENABLE_SC" != "yes" && "$ENABLE_SC" != "no" ]] do read -p "Do you want to enable secure rooms?: (yes or no)"$'\n' -r ENABLE_SC -if [ $ENABLE_SC = no ]; then +if [ "$ENABLE_SC" = "no" ]; then echo "Secure rooms won't be enable" -elif [ $ENABLE_SC = yes ]; then +elif [ "$ENABLE_SC" = "yes" ]; then echo "Secure rooms are being enable" cat << P_SR >> $PROSODY_FILE VirtualHost "$DOMAIN" @@ -425,6 +449,15 @@ P_SR fi done +#Set main language (Spanish) +sed -i "s|// defaultLanguage: 'en',|defaultLanguage: 'es',|" $MEET_CONF + +#Start with video muted by default +sed -i "s|// startWithVideoMuted: false,|startWithVideoMuted: true,|" $MEET_CONF + +#Start with audio muted but admin +sed -i "s|// startAudioMuted: 10,|startAudioMuted: 1,|" $MEET_CONF + #Enable jibri services systemctl enable jibri systemctl enable jibri-xorg