2017-07-20 19:46:08 +02:00
#!/bin/bash
2018-09-01 16:33:32 +02:00
# Check if user is root or sudo
if ! [ $( id -u) = 0 ] ; then echo "Please run this script as sudo or root" ; exit 1 ; fi
2018-03-12 22:54:36 +01:00
# Version number of Guacamole to install
2020-02-05 21:24:52 +01:00
GUACVERSION = "1.1.0"
2017-07-20 19:46:08 +02:00
2020-02-17 21:06:47 +01:00
# Latest Version of MySQL Connector/J if manuall install is required
# Manuall install is required if libmysql-java is not available via apt
MCJVER = "8.0.19"
2018-08-29 15:18:29 +02:00
# Colors to use for output
YELLOW = '\033[1;33m'
BLUE = '\033[0;34m'
RED = '\033[0;31m'
GREEN = '\033[0;32m'
2020-02-05 21:24:52 +01:00
CYAN = '\033[0;36m'
2018-08-29 15:18:29 +02:00
NC = '\033[0m' # No Color
2018-09-13 19:21:33 +02:00
# Log Location
2018-08-29 15:18:29 +02:00
LOG = " /tmp/guacamole_ ${ GUACVERSION } _build.log "
2018-09-13 19:21:33 +02:00
2020-02-10 00:40:11 +01:00
# Initialize variable values
installTOTP = ""
installDuo = ""
installMySQL = ""
mysqlHost = ""
mysqlPort = ""
mysqlRootPwd = ""
guacDb = ""
guacUser = ""
guacPwd = ""
PROMPT = ""
2020-02-17 21:56:15 +01:00
MYSQL = ""
2020-02-05 21:24:52 +01:00
2018-03-09 22:51:48 +01:00
# Get script arguments for non-interactive mode
while [ " $1 " != "" ] ; do
case $1 in
2020-02-10 00:40:11 +01:00
# Install MySQL selection
-i | --installmysql )
installMySQL = true
; ;
-n | --nomysql )
installMySQL = false
; ;
# MySQL server/root information
-h | --mysqlhost )
2018-03-09 22:51:48 +01:00
shift
2020-02-10 00:40:11 +01:00
mysqlHost = " $1 "
2018-03-09 22:51:48 +01:00
; ;
2020-02-10 00:40:11 +01:00
-p | --mysqlport )
2018-03-09 22:51:48 +01:00
shift
2020-02-10 00:40:11 +01:00
mysqlPort = " $1 "
; ;
-r | --mysqlpwd )
shift
mysqlRootPwd = " $1 "
2018-03-09 22:51:48 +01:00
; ;
2020-02-10 00:40:11 +01:00
# Guac database/user information
-db | --guacdb )
2019-04-04 19:06:13 +02:00
shift
2020-02-10 00:40:11 +01:00
guacDb = " $1 "
2019-04-04 19:06:13 +02:00
; ;
2020-02-10 00:40:11 +01:00
-gu | --guacuser )
2019-04-04 19:06:13 +02:00
shift
2020-02-10 00:40:11 +01:00
guacUser = " $1 "
2019-04-04 19:06:13 +02:00
; ;
2020-02-10 00:40:11 +01:00
-gp | --guacpwd )
shift
guacpwd = " $1 "
; ;
# MFA selection
2020-02-05 21:24:52 +01:00
-t | --totp )
installTOTP = true
; ;
2020-02-10 00:40:11 +01:00
-d | --duo )
2020-02-05 21:24:52 +01:00
installDuo = true
2018-03-09 22:51:48 +01:00
esac
shift
2017-11-29 21:50:18 +01:00
done
2018-03-09 22:51:48 +01:00
2020-02-17 21:06:47 +01:00
# We can't install TOTP and Duo at the same time...
if [ [ ! -z $installTOTP ] ] && [ [ ! -z $installDuo ] ] ; then
echo " ${ RED } The script does not support installing TOTP and Duo at the same time. ${ NC } "
exit 1
fi
if [ [ -z $installTOTP ] ] && [ [ -z $installDuo ] ] ; then
# Prompt the user if they would like to install TOTP MFA, default of no
echo -e -n " ${ CYAN } Would you like to install TOTP? (y/N): ${ NC } "
2020-02-10 00:40:11 +01:00
read PROMPT
2020-02-17 21:06:47 +01:00
if [ [ $PROMPT = ~ ^[ Yy] $ ] ] ; then
installTOTP = true
2020-02-17 21:56:15 +01:00
installDuo = false
2020-02-17 21:06:47 +01:00
else
installTOTP = false
fi
2019-04-04 19:06:13 +02:00
fi
2020-02-17 21:06:47 +01:00
if [ [ -z $installDuo ] ] && [ [ -z $installTOTP ] ] ; then
# Prompt the user if they would like to install Duo MFA, default of no
echo -e -n " ${ CYAN } Would you like to install Duo (configuration values must be set after install in guacamole.properties)? (y/N): ${ NC } "
2020-02-10 00:40:11 +01:00
read PROMPT
2020-02-17 21:06:47 +01:00
if [ [ $PROMPT = ~ ^[ Yy] $ ] ] ; then
installDuo = true
2020-02-17 21:56:15 +01:00
installTOTP = false
2020-02-17 21:06:47 +01:00
else
installDuo = false
fi
2019-04-04 19:06:13 +02:00
fi
2020-02-10 00:40:11 +01:00
if [ [ -z $installMySQL ] ] ; then
# Prompt the user to see if they would like to install MySQL, default of yes
2020-02-17 21:06:47 +01:00
echo -e "MySQL is required for installation, if you're using a remote MySQL Server select 'N/n'"
echo -e -n " ${ CYAN } Would you like to install MySQL? (Y/n): ${ NC } "
2020-02-10 00:40:11 +01:00
read PROMPT
2020-02-17 21:06:47 +01:00
if [ [ $PROMPT = ~ ^[ Nn] $ ] ] ; then
installMySQL = false
else
installMySQL = true
fi
2020-02-10 00:40:11 +01:00
fi
if [ " $installMySQL " = false ] ; then
# We need to get additional values
read -p "Enter MySQL server hostname or IP: " mysqlHost
read -p "Enter MySQL server port [3306]: " mysqlPort
read -p "Enter Guacamole database name [guacamole_db]: " guacDb
read -p "Enter Guacamole user [guacamole_user]: " guacUser
fi
# Get MySQL Root password and Guacamole User password
echo
while true
do
read -s -p "Enter a MySQL ROOT Password: " mysqlRootPwd
2018-08-29 15:18:29 +02:00
echo
2020-02-10 00:40:11 +01:00
read -s -p "Confirm MySQL ROOT Password: " PROMPT2
2017-11-29 21:50:18 +01:00
echo
2020-02-10 00:40:11 +01:00
[ " $mysqlRootPwd " = " $PROMPT2 " ] && break
echo "Passwords don't match. Please try again."
echo
done
echo
while true
do
read -s -p "Enter a Guacamole User Database Password: " guacPwd
2017-11-29 21:50:18 +01:00
echo
2020-02-10 00:40:11 +01:00
read -s -p "Confirm Guacamole User Database Password: " PROMPT2
echo
[ " $guacPwd " = " $PROMPT2 " ] && break
echo "Passwords don't match. Please try again."
echo
done
echo
if [ " $installMySQL " = true ] ; then
# Seed MySQL install values
debconf-set-selections <<< " mysql-server mysql-server/root_password password $mysqlRootPwd "
debconf-set-selections <<< " mysql-server mysql-server/root_password_again password $mysqlRootPwd "
fi
# Checking if mysql host given
if [ -z " $mysqlHost " ] ; then
mysqlHost = "localhost"
fi
# Checking if mysql port given
if [ -z " $mysqlPort " ] ; then
mysqlPort = "3306"
fi
# Checking if mysql user given
if [ -z " $guacUser " ] ; then
guacUser = "guacamole_user"
2018-03-09 22:51:48 +01:00
fi
2017-11-29 21:50:18 +01:00
2020-02-10 00:40:11 +01:00
# Checking if database name given
if [ -z " $guacDb " ] ; then
guacDb = "guacamole_db"
fi
2017-07-20 19:46:08 +02:00
2020-02-17 21:06:47 +01:00
# Ubuntu > 18.04 does not include universe repo by default
# Different version of Ubuntu and Debian have different package names...
2018-01-20 15:23:04 +01:00
source /etc/os-release
2020-02-05 21:24:52 +01:00
if [ [ " ${ NAME } " = = "Ubuntu" ] ] ; then
2020-02-17 21:06:47 +01:00
# Add the "Universe" repo, don't update
add-apt-repository -yn universe
# Set package names depending on version
2017-07-29 21:33:15 +02:00
JPEGTURBO = "libjpeg-turbo8-dev"
2020-02-05 21:24:52 +01:00
if [ [ " ${ VERSION_ID } " = = "16.04" ] ] ; then
2018-01-20 15:23:04 +01:00
LIBPNG = "libpng12-dev"
else
LIBPNG = "libpng-dev"
fi
2020-02-17 21:56:15 +01:00
if [ " $installMySQL " = true ] ; then
MYSQL = "mysql-server mysql-client mysql-common mysql-utilities"
else
MYSQL = "mysql-client"
fi
2020-02-05 21:24:52 +01:00
elif [ [ " ${ NAME } " = = *"Debian" * ] ] || [ [ " ${ NAME } " = = *"Raspbian GNU/Linux" * ] ] ; then
2017-07-29 21:33:15 +02:00
JPEGTURBO = "libjpeg62-turbo-dev"
2020-02-17 21:06:47 +01:00
if [ [ " ${ PRETTY_NAME } " = = *"stretch" * ] ] || [ [ " ${ PRETTY_NAME } " = = *"buster" * ] ] ; then
2018-01-20 15:23:04 +01:00
LIBPNG = "libpng-dev"
else
LIBPNG = "libpng12-dev"
2018-01-20 21:32:22 +01:00
fi
2020-02-17 21:56:15 +01:00
if [ " $installMySQL " = true ] ; then
MYSQL = "default-mysql-server default-mysql-client mysql-common"
else
MYSQL = "default-mysql-client"
fi
2018-01-20 15:23:04 +01:00
else
2020-02-17 21:06:47 +01:00
echo "Unsupported Distro - Ubuntu, Debian, or Raspbian Only"
2018-09-13 19:21:33 +02:00
exit 1
2017-07-29 21:33:15 +02:00
fi
2020-02-17 21:06:47 +01:00
# Update apt so we can search apt-cache for newest tomcat version supported & libmysql-java
echo -e " ${ BLUE } Updating apt... ${ NC } "
2018-09-13 20:47:37 +02:00
apt-get -qq update
2020-02-17 21:06:47 +01:00
# Check if libmysql-java is available
if [ [ $( apt-cache show libmysql-java 2> /dev/null | egrep "Version:" | wc -l) -gt 0 ] ] ; then
LIBJAVA = "libmysql-java"
else
LIBJAVA = ""
echo -e " ${ YELLOW } libmysql-java not available. Will download ${ MCJVER } and install manually ${ NC } "
fi
# tomcat9 is the latest version
# tomcat8.0 is end of life, but tomcat8.5 is current
# fallback is tomcat7
if [ [ $( apt-cache show tomcat9 2> /dev/null | egrep "Version: 9" | wc -l) -gt 0 ] ] ; then
TOMCAT = "tomcat9"
elif [ [ $( apt-cache show tomcat8 2> /dev/null | egrep "Version: 8.[5-9]" | wc -l) -gt 0 ] ] ; then
2018-01-20 15:23:04 +01:00
TOMCAT = "tomcat8"
2017-09-20 16:44:39 +02:00
else
2018-01-20 15:23:04 +01:00
TOMCAT = "tomcat7"
2017-09-20 16:44:39 +02:00
fi
2018-01-20 15:23:04 +01:00
# Uncomment to manually force a tomcat version
#TOMCAT=""
2017-08-22 04:54:27 +02:00
# Install features
2019-01-24 00:01:36 +01:00
echo -e " ${ BLUE } Installing dependencies. This might take a few minutes... ${ NC } "
2018-08-29 15:18:29 +02:00
2019-07-02 16:27:59 +02:00
export DEBIAN_FRONTEND = noninteractive
2019-01-23 23:15:59 +01:00
apt-get -y install build-essential libcairo2-dev ${ JPEGTURBO } ${ LIBPNG } libossp-uuid-dev libavcodec-dev libavutil-dev \
2020-02-05 21:24:52 +01:00
libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev \
2020-02-17 21:06:47 +01:00
libvorbis-dev libwebp-dev ${ MYSQL } ${ LIBJAVA } ${ TOMCAT } freerdp2-x11 libtool-bin libwebsockets-dev \
2019-01-23 23:15:59 +01:00
ghostscript wget dpkg-dev & >> ${ LOG }
if [ $? -ne 0 ] ; then
2019-01-23 23:57:57 +01:00
echo -e " ${ RED } Failed. See ${ LOG } ${ NC } "
2019-01-23 23:15:59 +01:00
exit 1
2019-01-23 23:57:57 +01:00
else
2019-01-23 23:15:59 +01:00
echo -e " ${ GREEN } OK ${ NC } "
fi
2017-07-20 19:46:08 +02:00
2017-11-11 17:03:42 +01:00
# Set SERVER to be the preferred download server from the Apache CDN
2018-01-21 01:34:58 +01:00
SERVER = " http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/ ${ GUACVERSION } "
2018-09-13 20:47:37 +02:00
echo -e " ${ BLUE } Downloading Files... ${ NC } "
2018-01-20 22:54:25 +01:00
2017-11-29 21:50:18 +01:00
# Download Guacamole Server
2018-08-29 15:18:29 +02:00
wget -q --show-progress -O guacamole-server-${ GUACVERSION } .tar.gz ${ SERVER } /source/guacamole-server-${ GUACVERSION } .tar.gz
2018-01-21 01:34:58 +01:00
if [ $? -ne 0 ] ; then
2018-09-13 19:21:33 +02:00
echo -e " ${ RED } Failed to download guacamole-server- ${ GUACVERSION } .tar.gz "
echo -e " ${ SERVER } /source/guacamole-server- ${ GUACVERSION } .tar.gz ${ NC } "
exit 1
2020-02-17 21:56:15 +01:00
else
tar -xzf guacamole-server-${ GUACVERSION } .tar.gz
2017-11-29 21:50:18 +01:00
fi
2018-09-13 19:21:33 +02:00
echo -e " ${ GREEN } Downloaded guacamole-server- ${ GUACVERSION } .tar.gz ${ NC } "
2017-11-29 21:50:18 +01:00
# Download Guacamole Client
2018-08-29 15:18:29 +02:00
wget -q --show-progress -O guacamole-${ GUACVERSION } .war ${ SERVER } /binary/guacamole-${ GUACVERSION } .war
2018-01-21 01:34:58 +01:00
if [ $? -ne 0 ] ; then
2018-09-13 19:21:33 +02:00
echo -e " ${ RED } Failed to download guacamole- ${ GUACVERSION } .war "
echo -e " ${ SERVER } /binary/guacamole- ${ GUACVERSION } .war ${ NC } "
exit 1
2017-11-29 21:50:18 +01:00
fi
2018-09-13 19:21:33 +02:00
echo -e " ${ GREEN } Downloaded guacamole- ${ GUACVERSION } .war ${ NC } "
2017-11-29 21:50:18 +01:00
2019-05-18 20:53:48 +02:00
# Download Guacamole authentication extensions (Database)
2018-08-29 15:18:29 +02:00
wget -q --show-progress -O guacamole-auth-jdbc-${ GUACVERSION } .tar.gz ${ SERVER } /binary/guacamole-auth-jdbc-${ GUACVERSION } .tar.gz
2018-01-21 01:34:58 +01:00
if [ $? -ne 0 ] ; then
2018-09-13 19:21:33 +02:00
echo -e " ${ RED } Failed to download guacamole-auth-jdbc- ${ GUACVERSION } .tar.gz "
echo -e " ${ SERVER } /binary/guacamole-auth-jdbc- ${ GUACVERSION } .tar.gz "
exit 1
2020-02-17 21:56:15 +01:00
else
tar -xzf guacamole-auth-jdbc-${ GUACVERSION } .tar.gz
2017-11-29 21:50:18 +01:00
fi
2018-09-13 19:21:33 +02:00
echo -e " ${ GREEN } Downloaded guacamole-auth-jdbc- ${ GUACVERSION } .tar.gz ${ NC } "
2020-02-10 00:40:11 +01:00
2020-02-05 21:24:52 +01:00
# Download Guacamole authentication extensions
2020-02-17 21:06:47 +01:00
# TOTP
2020-02-05 21:24:52 +01:00
if [ " $installTOTP " = true ] ; then
2020-02-17 21:06:47 +01:00
wget -q --show-progress -O guacamole-auth-totp-${ GUACVERSION } .tar.gz ${ SERVER } /binary/guacamole-auth-totp-${ GUACVERSION } .tar.gz
if [ $? -ne 0 ] ; then
echo -e " ${ RED } Failed to download guacamole-auth-totp- ${ GUACVERSION } .tar.gz "
echo -e " ${ SERVER } /binary/guacamole-auth-totp- ${ GUACVERSION } .tar.gz "
exit 1
2020-02-17 21:56:15 +01:00
else
tar -xzf guacamole-auth-totp-${ GUACVERSION } .tar.gz
2020-02-17 21:06:47 +01:00
fi
echo -e " ${ GREEN } Downloaded guacamole-auth-totp- ${ GUACVERSION } .tar.gz ${ NC } "
2019-05-18 20:53:48 +02:00
fi
2020-02-17 21:06:47 +01:00
# Duo
2020-02-05 21:24:52 +01:00
if [ " $installDuo " = true ] ; then
2020-02-17 21:06:47 +01:00
wget -q --show-progress -O guacamole-auth-duo-${ GUACVERSION } .tar.gz ${ SERVER } /binary/guacamole-auth-duo-${ GUACVERSION } .tar.gz
if [ $? -ne 0 ] ; then
echo -e " ${ RED } Failed to download guacamole-auth-duo- ${ GUACVERSION } .tar.gz "
echo -e " ${ SERVER } /binary/guacamole-auth-duo- ${ GUACVERSION } .tar.gz "
exit 1
2020-02-17 21:56:15 +01:00
else
tar -xzf guacamole-auth-duo-${ GUACVERSION } .tar.gz
2020-02-17 21:06:47 +01:00
fi
echo -e " ${ GREEN } Downloaded guacamole-auth-duo- ${ GUACVERSION } .tar.gz ${ NC } "
fi
2020-02-05 21:24:52 +01:00
2020-02-17 21:06:47 +01:00
# Deal with Missing MySQL Connector/J
if [ [ -z $JAVALIB ] ] ; then
# Download MySQL Connector/J
wget -q --show-progress -O mysql-connector-java-${ MCJVER } .tar.gz https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${ MCJVER } .tar.gz
if [ $? -ne 0 ] ; then
echo -e " ${ RED } Failed to download mysql-connector-java- ${ MCJVER } .tar.gz "
echo -e " https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java- ${ MCJVER } .tar.gz ${ NC } "
exit 1
2020-02-17 21:56:15 +01:00
else
tar -xzf mysql-connector-java-${ MCJVER } .tar.gz
2020-02-17 21:06:47 +01:00
fi
echo -e " ${ GREEN } Downloaded mysql-connector-java- ${ MCJVER } .tar.gz ${ NC } "
2020-02-05 21:24:52 +01:00
fi
2020-02-10 00:40:11 +01:00
2020-02-17 21:06:47 +01:00
echo -e " ${ GREEN } Downloading complete. ${ NC } "
2017-08-22 04:54:27 +02:00
# Make directories
2017-08-22 04:46:45 +02:00
mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions
2017-07-20 19:46:08 +02:00
2018-03-12 23:15:26 +01:00
# Install guacd
2018-01-21 01:34:58 +01:00
cd guacamole-server-${ GUACVERSION }
2018-03-12 23:15:26 +01:00
2019-01-23 23:15:59 +01:00
echo -e " ${ BLUE } Building Guacamole with GCC $( gcc --version | head -n1 | grep -oP '\)\K.*' | awk '{print $1}' ) ${ NC } "
2018-08-29 15:18:29 +02:00
2019-05-18 20:53:48 +02:00
echo -e " ${ BLUE } Configuring. This might take a minute... ${ NC } "
2019-01-23 23:15:59 +01:00
./configure --with-init-dir= /etc/init.d & >> ${ LOG }
if [ $? -ne 0 ] ; then
2019-01-23 23:57:57 +01:00
echo -e " ${ RED } Failed. See ${ LOG } ${ NC } "
2019-01-23 23:15:59 +01:00
exit 1
2018-03-12 23:15:26 +01:00
else
2019-01-23 23:15:59 +01:00
echo -e " ${ GREEN } OK ${ NC } "
2018-03-12 23:15:26 +01:00
fi
2019-01-23 23:15:59 +01:00
2019-01-24 00:01:36 +01:00
echo -e " ${ BLUE } Running Make. This might take a few minutes... ${ NC } "
2019-01-23 23:15:59 +01:00
make & >> ${ LOG }
if [ $? -ne 0 ] ; then
2019-01-23 23:57:57 +01:00
echo -e " ${ RED } Failed. See ${ LOG } ${ NC } "
2019-01-23 23:15:59 +01:00
exit 1
else
echo -e " ${ GREEN } OK ${ NC } "
fi
echo -e " ${ BLUE } Running Make Install... ${ NC } "
make install & >> ${ LOG }
if [ $? -ne 0 ] ; then
2019-01-23 23:57:57 +01:00
echo -e " ${ RED } Failed. See ${ LOG } ${ NC } "
2019-01-23 23:15:59 +01:00
exit 1
else
echo -e " ${ GREEN } OK ${ NC } "
fi
2017-07-20 19:46:08 +02:00
ldconfig
systemctl enable guacd
cd ..
# Move files to correct locations
2018-01-21 01:34:58 +01:00
mv guacamole-${ GUACVERSION } .war /etc/guacamole/guacamole.war
2020-02-17 21:06:47 +01:00
mv guacamole-auth-jdbc-${ GUACVERSION } /mysql/guacamole-auth-jdbc-mysql-${ GUACVERSION } .jar /etc/guacamole/extensions/
# Create Symbolic Link for Tomcat
2017-08-02 13:24:36 +02:00
ln -s /etc/guacamole/guacamole.war /var/lib/${ TOMCAT } /webapps/
2017-07-20 19:46:08 +02:00
2020-02-17 21:06:47 +01:00
# Deal with MySQL Connector/J
if [ [ -z $JAVALIB ] ] ; then
mv mysql-connector-java-${ MCJVER } /mysql-connector-java-${ MCJVER } .jar /etc/guacamole/lib/mysql-connector-java.jar
else
ln -s /usr/share/java/mysql-connector-java.jar /etc/guacamole/lib/
fi
# Move TOTP Files
2020-02-05 21:24:52 +01:00
if [ " $installTOTP " = true ] ; then
2020-02-17 21:06:47 +01:00
mv guacamole-auth-totp-${ GUACVERSION } /guacamole-auth-totp-${ GUACVERSION } .jar /etc/guacamole/extensions/
2019-10-28 17:08:49 +01:00
fi
2020-02-17 21:06:47 +01:00
# Move Duo Files
2020-02-05 21:24:52 +01:00
if [ " $installDuo " = true ] ; then
2020-02-17 21:06:47 +01:00
mv guacamole-auth-duo-${ GUACVERSION } /guacamole-auth-duo-${ GUACVERSION } .jar /etc/guacamole/extensions/
2020-02-05 21:24:52 +01:00
fi
2017-07-20 19:46:08 +02:00
# Configure guacamole.properties
2019-06-09 20:17:01 +02:00
rm -f /etc/guacamole/guacamole.properties
touch /etc/guacamole/guacamole.properties
2020-02-10 00:40:11 +01:00
echo " mysql-hostname: ${ mysqlHost } " >> /etc/guacamole/guacamole.properties
echo " mysql-port: ${ mysqlPort } " >> /etc/guacamole/guacamole.properties
echo " mysql-database: ${ guacDb } " >> /etc/guacamole/guacamole.properties
echo " mysql-username: ${ guacUser } " >> /etc/guacamole/guacamole.properties
echo " mysql-password: ${ guacPwd } " >> /etc/guacamole/guacamole.properties
# Output Duo configuration settings but comment them out for now
2020-02-05 21:24:52 +01:00
if [ " $installDuo " = true ] ; then
2020-02-17 21:06:47 +01:00
echo "# duo-api-hostname: " >> /etc/guacamole/guacamole.properties
echo "# duo-integration-key: " >> /etc/guacamole/guacamole.properties
echo "# duo-secret-key: " >> /etc/guacamole/guacamole.properties
echo "# duo-application-key: " >> /etc/guacamole/guacamole.properties
echo -e " ${ YELLOW } Duo is installed, it will need to be configured via guacamole.properties ${ NC } "
2020-02-05 21:24:52 +01:00
fi
2017-07-20 19:46:08 +02:00
# restart tomcat
2018-09-13 19:21:33 +02:00
echo -e " ${ BLUE } Restarting tomcat... ${ NC } "
2018-08-29 15:18:29 +02:00
2017-08-02 13:24:36 +02:00
service ${ TOMCAT } restart
2018-08-29 15:18:29 +02:00
if [ $? -ne 0 ] ; then
2018-09-13 19:21:33 +02:00
echo -e " ${ RED } Failed ${ NC } "
exit 1
else
echo -e " ${ GREEN } OK ${ NC } "
fi
2017-07-20 19:46:08 +02:00
2020-02-10 00:40:11 +01:00
# Create $guacDb and grant $guacUser permissions to it
2017-07-20 19:46:08 +02:00
2017-08-22 04:54:27 +02:00
# SQL code
2020-02-10 00:40:11 +01:00
guacUserHost = "localhost"
if [ [ " $mysqlHost " != "localhost" ] ] ; then
guacUserHost = "%"
echo -e " ${ YELLOW } MySQL Guacamole user is set to accept login from any host, please change this for security reasons if possible. ${ NC } "
fi
2017-07-20 19:46:08 +02:00
SQLCODE = "
2020-02-10 00:40:11 +01:00
create database ${ guacDb } ;
create user if not exists '${guacUser}' @'${guacUserHost}' identified by \" ${ guacPwd } \" ;
GRANT SELECT,INSERT,UPDATE,DELETE ON ${ guacDb } .* TO '${guacUser}' @'${guacUserHost}' ;
2017-07-20 19:46:08 +02:00
flush privileges; "
2020-02-10 00:40:11 +01:00
export MYSQL_PWD = ${ mysqlRootPwd }
2017-08-22 04:54:27 +02:00
# Execute SQL code
2020-02-10 00:40:11 +01:00
echo ${ SQLCODE } | mysql -u root -h ${ mysqlHost } -P ${ mysqlPort }
2017-07-20 19:46:08 +02:00
2017-08-22 04:54:27 +02:00
# Add Guacamole schema to newly created database
2018-08-29 15:18:29 +02:00
echo -e "Adding db tables..."
2020-02-10 00:40:11 +01:00
cat guacamole-auth-jdbc-${ GUACVERSION } /mysql/schema/*.sql | mysql -u root -D ${ guacDb } -h ${ mysqlHost } -P ${ mysqlPort }
2018-08-29 15:18:29 +02:00
if [ $? -ne 0 ] ; then
2018-09-13 19:21:33 +02:00
echo -e " ${ RED } Failed ${ NC } "
exit 1
else
echo -e " ${ GREEN } OK ${ NC } "
fi
2017-07-20 19:46:08 +02:00
2018-01-21 03:57:00 +01:00
# Ensure guacd is started
2020-02-10 00:40:11 +01:00
echo -e " ${ BLUE } Starting guacamole... ${ NC } "
2018-01-21 03:57:00 +01:00
service guacd start
2017-07-20 19:46:08 +02:00
# Cleanup
2018-09-13 19:21:33 +02:00
echo -e " ${ BLUE } Cleanup install files... ${ NC } "
2017-07-20 19:46:08 +02:00
rm -rf guacamole-*
2020-02-17 21:06:47 +01:00
rm -rf mysql-connector-java-*
2020-02-10 00:40:11 +01:00
unset MYSQL_PWD
2018-08-29 15:18:29 +02:00
2020-02-17 21:06:47 +01:00
# Done
2018-09-13 19:21:33 +02:00
echo -e " ${ BLUE } Installation Complete\nhttp://localhost:8080/guacamole/\nDefault login guacadmin:guacadmin\nBe sure to change the password. ${ NC } "
2020-02-17 21:06:47 +01:00
if [ [ ! -z $installDuo ] ] ; then
echo -e " ${ YELLOW } Don't forget to configure Duo in guacamole.properties. You will not be able to login otherwise.\nhttps://guacamole.apache.org/doc/ ${ GUACVERSION } /gug/duo-auth.html ${ NC } "
fi