mirror of
https://git.koehlerweb.org/frodovdr/guac-install
synced 2024-11-14 22:47:14 +01:00
d07bfcb98b
* Support Upgrade From Older Versions First I've added a MySQL Root Password Prompt, it will verify that the user is entering the correct password and will not continue until the MySQL Root Password is entered correctly. Second, I'm just getting the tomcat version number from /etc/ folder name...This seems to work well enough (instead of making the user edit the script manually)...Maybe someone can come up with a better solution? Third, I'm using the Version.js file to get the currently installed versions number. This allows for supporting multiple version number upgrades (E.G going from 0.8.2 to 0.9.14). The script will now loop through all of the SQL Upgrade files, and apply any that are newer than the OLDVERSION... I.E. Going from 0.9.9 to 0.9.13 should automatically install `upgrade-pre-0.9.10.sql` & `upgrade-pre-0.9.11.sql` & `upgrade-pre-0.9.13.sql` * Remove GUACAMOLE_HOME According to the documentation this is now a default search path, so this isn't required anymore * Version Control for Ubuntu and Debian This might need more work but it should install the proper packages for both Ubuntu and Debian and account for Tomcat 8.0.x and 8.5.x differences... http://tomcat.apache.org/whichversion.html 7.x does not say end of life... but 8.0.x does. The distro maintainers have different versions of Tomcat8 so we can check for 8.5.x or newer options and install, otherwise go the safer route and install Tomcat7 * Remove rm and ln of tomcat/.guacamole According to the documentation this is not required (it may not have been required to begin with?) * No Longer Incubating!
102 lines
3.3 KiB
Bash
102 lines
3.3 KiB
Bash
#!/bin/bash
|
|
|
|
# Get MySQL root password
|
|
echo
|
|
while true
|
|
do
|
|
read -s -p "Enter MySQL ROOT Password: " mysqlrootpassword
|
|
export MYSQL_PWD=${mysqlrootpassword}
|
|
echo
|
|
mysql -u root guacamole_db -e"quit" && break
|
|
echo
|
|
done
|
|
echo
|
|
|
|
# Version Numbers of Guacamole and MySQL Connector/J to download
|
|
VERSION="0.9.14"
|
|
MCJVERSION="5.1.45"
|
|
|
|
# Get Tomcat Version
|
|
TOMCAT=$(ls /etc/ | grep tomcat)
|
|
|
|
# Get Current Guacamole Version
|
|
OLDVERSION=$(grep -oP 'Guacamole.API_VERSION = "\K[0-9\.]+' /var/lib/${TOMCAT}/webapps/guacamole/guacamole-common-js/modules/Version.js)
|
|
|
|
# Set SERVER to be the preferred download server from the Apache CDN
|
|
SERVER="http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/${VERSION}"
|
|
|
|
# Stop tomcat
|
|
service ${TOMCAT} stop
|
|
|
|
# Download Guacamole server
|
|
wget -O guacamole-server-${VERSION}.tar.gz ${SERVER}/source/guacamole-server-${VERSION}.tar.gz
|
|
if [ ! -f ./guacamole-server-${VERSION}.tar.gz ]; then
|
|
echo "Failed to download guacamole-server-${VERSION}.tar.gz"
|
|
echo "${SERVER}/source/guacamole-server-${VERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Download Guacamole client
|
|
wget -O guacamole-${VERSION}.war ${SERVER}/binary/guacamole-${VERSION}.war
|
|
if [ ! -f ./guacamole-${VERSION}.war ]; then
|
|
echo "Failed to download guacamole-${VERSION}.war"
|
|
echo "${SERVER}/binary/guacamole-${VERSION}.war"
|
|
exit
|
|
fi
|
|
|
|
# Download SQL components
|
|
wget -O guacamole-auth-jdbc-${VERSION}.tar.gz ${SERVER}/binary/guacamole-auth-jdbc-${VERSION}.tar.gz
|
|
if [ ! -f ./guacamole-auth-jdbc-${VERSION}.tar.gz ]; then
|
|
echo "Failed to download guacamole-auth-jdbc-${VERSION}.tar.gz"
|
|
echo "${SERVER}/binary/guacamole-auth-jdbc-${VERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Download the MySQL Connector/J
|
|
wget -O mysql-connector-java-${MCJVERSION}.tar.gz https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MCJVERSION}.tar.gz
|
|
if [ ! -f ./mysql-connector-java-${MCJVERSION}.tar.gz ]; then
|
|
echo "Failed to download mysql-connector-java-${MCJVERSION}.tar.gz"
|
|
echo "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MCJVERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Upgrade Guacamole Server
|
|
tar -xzf guacamole-server-${VERSION}.tar.gz
|
|
cd guacamole-server-${VERSION}
|
|
./configure --with-init-dir=/etc/init.d
|
|
make
|
|
make install
|
|
ldconfig
|
|
systemctl enable guacd
|
|
cd ..
|
|
|
|
# Upgrade Guacamole Client
|
|
mv guacamole-${VERSION}.war /etc/guacamole/guacamole.war
|
|
|
|
# Upgrade SQL Components
|
|
tar -xzf guacamole-auth-jdbc-${VERSION}.tar.gz
|
|
cp guacamole-auth-jdbc-${VERSION}/mysql/guacamole-auth-jdbc-mysql-${VERSION}.jar /etc/guacamole/extensions/
|
|
tar -xzf mysql-connector-java-${MCJVERSION}.tar.gz
|
|
cp mysql-connector-java-${MCJVERSION}/mysql-connector-java-${MCJVERSION}-bin.jar /etc/guacamole/lib/
|
|
rm -rf mysql-connector-java-${MCJVERSION}*
|
|
|
|
# Get list of SQL Upgrade Files
|
|
UPGRADEFILES=($(ls -1 guacamole-auth-jdbc-${VERSION}/mysql/schema/upgrade/ | sort -V))
|
|
|
|
# Compare SQL Upgrage Files against old version, apply upgrades as needed
|
|
for FILE in ${UPGRADEFILES[@]}
|
|
do
|
|
FILEVERSION=$(echo ${FILE} | grep -oP 'upgrade-pre-\K[0-9\.]+(?=\.)')
|
|
if [[ $(echo -e "${FILEVERSION}\n${OLDVERSION}" | sort -V | head -n1) == ${OLDVERSION} && ${FILEVERSION} != ${OLDVERSION} ]]
|
|
then
|
|
mysql -u root guacamole_db < guacamole-auth-jdbc-${VERSION}/mysql/schema/upgrade/${FILE}
|
|
fi
|
|
done
|
|
|
|
# Start tomcat
|
|
service ${TOMCAT} start
|
|
|
|
# Cleanup
|
|
rm -rf guacamole*
|
|
unset MYSQL_PWD
|