OneClickDesktop/plugins/Audio/AudioRedirectionSetup.sh
2021-12-07 19:44:37 -08:00

256 lines
9.1 KiB
Bash

#!/bin/bash
###########################################################################################
# Audio Redirection Setup Script for OneClickDesktop #
# Written by shc (https://qing.su) #
# Github link: https://github.com/Har-Kuun/OneClickDesktop #
# Contact me: https://t.me/hsun94 E-mail: hi@qing.su #
# #
# This script is distributed in the hope that it will be #
# useful, but ABSOLUTELY WITHOUT ANY WARRANTY. #
# #
# The author thanks c-energy for providing detailed #
# instructions on pulseaudio setup. #
# https://c-nergy.be/blog/?p=16817 #
# #
# Thank you for using this script. #
###########################################################################################
exec > >(tee -i OneClickDesktop_AudioRedirection.log)
exec 2>&1
function check_OS
{
if [ -f /etc/lsb-release ] ; then
cat /etc/lsb-release | grep "DISTRIB_RELEASE=18." >/dev/null
if [ $? = 0 ] ; then
OS=bionic
else
cat /etc/lsb-release | grep "DISTRIB_RELEASE=20." >/dev/null
if [ $? = 0 ] ; then
OS=focal
else
say "Sorry, this script only supports Ubuntu 18/20, and Debian 10." red
echo
exit 1
fi
fi
elif [ -f /etc/debian_version ] ; then
cat /etc/debian_version | grep "^10." >/dev/null
if [ $? = 0 ] ; then
OS=DEBIAN10
else
say "Sorry, this script only supports Ubuntu 18/20, and Debian 10." red
echo
exit 1
fi
else
say "Sorry, this script only supports Ubuntu 18/20, and Debian 10." red
echo
exit 1
fi
}
function say
{
#This function is a colored version of the built-in "echo."
#https://github.com/Har-Kuun/useful-shell-functions/blob/master/colored-echo.sh
echo_content=$1
case $2 in
black | k ) colorf=0 ;;
red | r ) colorf=1 ;;
green | g ) colorf=2 ;;
yellow | y ) colorf=3 ;;
blue | b ) colorf=4 ;;
magenta | m ) colorf=5 ;;
cyan | c ) colorf=6 ;;
white | w ) colorf=7 ;;
* ) colorf=N ;;
esac
case $3 in
black | k ) colorb=0 ;;
red | r ) colorb=1 ;;
green | g ) colorb=2 ;;
yellow | y ) colorb=3 ;;
blue | b ) colorb=4 ;;
magenta | m ) colorb=5 ;;
cyan | c ) colorb=6 ;;
white | w ) colorb=7 ;;
* ) colorb=N ;;
esac
if [ "x${colorf}" != "xN" ] ; then
tput setaf $colorf
fi
if [ "x${colorb}" != "xN" ] ; then
tput setab $colorb
fi
printf "${echo_content}" | sed -e "s/@B/$(tput bold)/g"
tput sgr 0
printf "\n"
}
function check_OneClickDesktop_installation
{
ss -lnpt | grep xrdp > /dev/null
if [ $? = 0 ] ; then
ss -lnpt | grep guacd > /dev/null
if [ $? = 0 ] ; then
say @B"OneClickDesktop is installed and running." green
else
say "OneClickDesktop seems to be installed, but not running!" red
say @B"Please check your installation, then run this script again." yellow
echo "Thank you!"
exit 1
fi
echo
else
say "OneClickDesktop is not installed, or not running!" red
say @B"Please install OneClickDesktop first, then run this script again." yellow
echo "Thank you!"
exit 1
fi
}
function display_license
{
echo
echo '*******************************************************************'
echo '* Audio Redirection Setup Script for OneClickDesktop *'
echo '* Version 0.0.1 *'
echo '* Author: shc (Har-Kuun) https://qing.su *'
echo '* https://github.com/Har-Kuun/OneClickDesktop *'
echo '* Thank you for using this script. E-mail: hi@qing.su *'
echo '*******************************************************************'
echo
}
function AudioRedirectionSetup_Ubuntu
{
apt-get install software-properties-common -y
apt-add-repository -s -y 'deb http://archive.ubuntu.com/ubuntu/ '$OS' main restricted'
apt-add-repository -s -y 'deb http://archive.ubuntu.com/ubuntu/ '$OS' restricted universe main multiverse'
apt-add-repository -s -y 'deb http://archive.ubuntu.com/ubuntu/ '$OS'-updates restricted universe main multiverse'
apt-add-repository -s -y 'deb http://archive.ubuntu.com/ubuntu/ '$OS'-backports main restricted universe multiverse'
apt-add-repository -s -y 'deb http://archive.ubuntu.com/ubuntu/ '$OS'-security main restricted universe main multiverse'
apt-get update -y
apt-get install git libpulse-dev autoconf m4 intltool dpkg-dev libtool libsndfile-dev libcap-dev libjson-c-dev -y
apt-get build-dep pulseaudio -y
apt source pulseaudio
pulsever=$(pulseaudio --version | awk '{print $2}')
cd pulseaudio-$pulsever
./configure
if [ -f $CurrentDir/pulseaudio-$pulsever/config.status ] ; then
say @B"Dependencies met!" green
say @B"Compiling pulseaudio now..." green
echo
else
echo
say "Missing dependencies." red
echo "Please check log, install required dependencies, reboot, and run this script again."
echo "Please also consider to report your log here https://github.com/Har-Kuun/OneClickDesktop/issues so that I can fix this issue."
echo "Thank you!"
echo
exit 1
fi
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
cd pulseaudio-module-xrdp
./bootstrap
./configure PULSE_DIR="$CurrentDir/pulseaudio-$pulsever"
if [ -f $CurrentDir/pulseaudio-$pulsever/pulseaudio-module-xrdp/config.status ] ; then
say @B"Dependencies met!" green
say @B"Compiling pulseaudio-xrdp now..." green
echo
else
echo
say "Missing dependencies." red
echo "Please check log, install required dependencies, reboot, and run this script again."
echo "Please also consider to report your log here https://github.com/Har-Kuun/OneClickDesktop/issues so that I can fix this issue."
echo "Thank you!"
echo
exit 1
fi
make
cd $CurrentDir/pulseaudio-$pulsever/pulseaudio-module-xrdp/src/.libs
install -t "/var/lib/xrdp-pulseaudio-installer" -D -m 644 *.so
install -t "/usr/lib/pulse-$pulsever/modules" -D -m 644 *.so
}
function AudioRedirectionSetup_Debian
{
apt-get install git libpulse-dev autoconf m4 intltool dpkg-dev screen libtool libsndfile-dev libcap-dev libjson-c-dev -y
apt-get build-dep pulseaudio -y
apt source pulseaudio
pulsever=$(pulseaudio --version | awk '{print $2}')
cd pulseaudio-$pulsever
./configure
if [ -f $CurrentDir/pulseaudio-$pulsever/config.status ] ; then
say @B"Dependencies met!" green
say @B"Compiling pulseaudio now..." green
echo
else
echo
say "Missing dependencies." red
echo "Please check log, install required dependencies, reboot, and run this script again."
echo "Please also consider to report your log here https://github.com/Har-Kuun/OneClickDesktop/issues so that I can fix this issue."
echo "Thank you!"
echo
exit 1
fi
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
cd pulseaudio-module-xrdp
./bootstrap
./configure PULSE_DIR="$CurrentDir/pulseaudio-$pulsever"
if [ -f $CurrentDir/pulseaudio-$pulsever/pulseaudio-module-xrdp/config.status ] ; then
say @B"Dependencies met!" green
say @B"Compiling pulseaudio-xrdp now..." green
echo
else
echo
say "Missing dependencies." red
echo "Please check log, install required dependencies, reboot, and run this script again."
echo "Please also consider to report your log here https://github.com/Har-Kuun/OneClickDesktop/issues so that I can fix this issue."
echo "Thank you!"
echo
exit 1
fi
make
cd $CurrentDir/pulseaudio-$pulsever/pulseaudio-module-xrdp/src/.libs
install -t "/var/lib/xrdp-pulseaudio-installer" -D -m 644 *.so
install -t "/usr/lib/pulse-$pulsever/modules" -D -m 644 *.so
}
function main
{
display_license
check_OS
echo "This script is going to set up audio redirection on a VPS."
say @B"You must have OneClickDesktop installed in xrdp mode on your VPS before running this script." yellow
echo
say @B"Would you like to proceed? [Y/N]" yellow
read confirm_installation
if [ "x$confirm_installation" = "xY" ] || [ "x$confirm_installation" = "xy" ] ; then
check_OneClickDesktop_installation
CurrentDir=$(pwd)
if [ "$OS" = "DEBIAN10" ] ; then
AudioRedirectionSetup_Debian
else
AudioRedirectionSetup_Ubuntu
fi
echo
say @B"Audio Redirection successfully set up!" green
say @B"Please reboot, then visit https://github.com/Har-Kuun/OneClickDesktop/tree/master/plugins/Audio for next steps!" yellow
fi
echo
echo "Thank you for using this script written by https://qing.su!"
echo "Have a nice day!"
}
###############################################################
# #
# The main function starts here. #
# #
###############################################################
main
exit 0