mirror of
https://github.com/York-Labs/OneClickDesktop.git
synced 2026-02-21 16:47:24 +08:00
Create AudioRedirectionSetup.sh
This commit is contained in:
parent
1463725400
commit
0e5603f60c
255
plugins/Audio/AudioRedirectionSetup.sh
Normal file
255
plugins/Audio/AudioRedirectionSetup.sh
Normal file
@ -0,0 +1,255 @@
|
||||
#!/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
|
||||
Loading…
Reference in New Issue
Block a user