mirror of
https://github.com/York-Labs/OneClickDesktop.git
synced 2026-02-21 08:37:23 +08:00
258 lines
9.2 KiB
Bash
258 lines
9.2 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
|
|
{
|
|
sed -i 's/# deb-src/deb-src/' /etc/apt/sources.list
|
|
apt-get update -y
|
|
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
|