1
0
mirror of https://git.koehlerweb.org/frodovdr/guac-install synced 2025-07-06 22:43:34 +02:00

0.9.14 Release (#23)

* 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!
This commit is contained in:
Chase Wright
2018-01-20 08:23:04 -06:00
committed by GitHub
parent 37e2481c7f
commit d07bfcb98b
5 changed files with 125 additions and 83 deletions

View File

@ -1,22 +1,12 @@
#!/bin/bash
# Version numbers of Guacamole and MySQL Connector/J to download
VERSION="0.9.13"
MCJVERSION="5.1.44"
VERSION="0.9.14"
MCJVERSION="5.1.45"
# Update apt so we can search apt-cache for newest tomcat version supported
apt update
# tomcat8 seems to be broken, tomcat7 and tomcat6 should work
if [ $(apt-cache search "^tomcat7$" | wc -l) -gt 0 ]; then
TOMCAT="tomcat7"
else
TOMCAT="tomcat6"
fi
# If you want to force a specific tomcat install and not go with the newest just set it here and uncomment:
#TOMCAT=""
# Get MySQL root password and Guacamole User password
echo
while true
@ -45,24 +35,43 @@ echo
debconf-set-selections <<< "mysql-server mysql-server/root_password password $mysqlrootpassword"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $mysqlrootpassword"
# Ubuntu and Debian have different names of the libjpeg-turbo library for some reason...
source /etc/lsb-release
if [ $DISTRIB_ID == "Ubuntu" ]
# Ubuntu and Debian have different package names for libjpeg
# Ubuntu and Debian versions have differnet package names for libpng-dev
source /etc/os-release
if [[ "${NAME}" == "Ubuntu" ]]
then
JPEGTURBO="libjpeg-turbo8-dev"
else
if [[ "${VERSION_ID}" == "16.04" ]]
then
LIBPNG="libpng12-dev"
else
LIBPNG="libpng-dev"
fi
elif [[ "${NAME}" == *"Debian"* ]]
then
JPEGTURBO="libjpeg62-turbo-dev"
if [[ "${PRETTY_NAME}" == *"stretch"* ]]
then
LIBPNG="libpng-dev"
else
LIBPNG="libpng12-dev"
else
echo "Unsupported Distro - Ubuntu or Debian Only"
exit
fi
# Ubuntu 16.10 has a different name for libpng12-dev for some reason...
if [ $DISTRIB_RELEASE == "16.10" ]
# Tomcat 8.0.x is End of Life, however Tomcat 7.x is not...
# If Tomcat 8.5.x or newer is available install it, otherwise install Tomcat 7
if [[ $(apt-cache show tomcat8 | egrep "Version: 8.[5-9]" | wc -l) -gt 0 ]]
then
LIBPNG="libpng-dev"
TOMCAT="tomcat8"
else
LIBPNG="libpng12-dev"
TOMCAT="tomcat7"
fi
# Uncomment to manually force a tomcat version
#TOMCAT=""
# Install features
apt -y install build-essential libcairo2-dev ${JPEGTURBO} ${LIBPNG} libossp-uuid-dev libavcodec-dev libavutil-dev \
libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev \
@ -74,49 +83,44 @@ if [ $? != 0 ]; then
exit
fi
# Add GUACAMOLE_HOME to $TOMCAT ENV
echo "" >> /etc/default/${TOMCAT}
echo "# GUACAMOLE ENV VARIABLE" >> /etc/default/${TOMCAT}
echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/${TOMCAT}
# Set SERVER to be the preferred download server from the Apache CDN
SERVER="http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/${VERSION}-incubating"
SERVER="http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/${VERSION}"
# Download Guacamole Server
wget -O guacamole-server-${VERSION}-incubating.tar.gz ${SERVER}/source/guacamole-server-${VERSION}-incubating.tar.gz
if [ ! -f ./guacamole-server-${VERSION}-incubating.tar.gz ]; then
echo "Failed to download guacamole-server-${VERSION}-incubating.tar.gz"
echo "${SERVER}/source/guacamole-server-${VERSION}-incubating.tar.gz"
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}-incubating.war ${SERVER}/binary/guacamole-${VERSION}-incubating.war
if [ ! -f ./guacamole-${VERSION}-incubating.war ]; then
echo "Failed to download guacamole-${VERSION}-incubating.war"
echo "${SERVER}/binary/guacamole-${VERSION}-incubating.war"
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 Guacamole authentication extensions
wget -O guacamole-auth-jdbc-${VERSION}-incubating.tar.gz ${SERVER}/binary/guacamole-auth-jdbc-${VERSION}-incubating.tar.gz
if [ ! -f ./guacamole-auth-jdbc-${VERSION}-incubating.tar.gz ]; then
echo "Failed to download guacamole-auth-jdbc-${VERSION}-incubating.tar.gz"
echo "${SERVER}/binary/guacamole-auth-jdbc-${VERSION}-incubating.tar.gz"
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 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 guacamole-server-${VERSION}-incubating.tar.gz"
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
# Extract Guacamole files
tar -xzf guacamole-server-${VERSION}-incubating.tar.gz
tar -xzf guacamole-auth-jdbc-${VERSION}-incubating.tar.gz
tar -xzf guacamole-server-${VERSION}.tar.gz
tar -xzf guacamole-auth-jdbc-${VERSION}.tar.gz
tar -xzf mysql-connector-java-${MCJVERSION}.tar.gz
# Make directories
@ -124,7 +128,7 @@ mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions
# Install guacd
cd guacamole-server-${VERSION}-incubating
cd guacamole-server-${VERSION}
./configure --with-init-dir=/etc/init.d
make
make install
@ -136,11 +140,11 @@ cd ..
BUILD_FOLDER=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)
# Move files to correct locations
mv guacamole-${VERSION}-incubating.war /etc/guacamole/guacamole.war
mv guacamole-${VERSION}.war /etc/guacamole/guacamole.war
ln -s /etc/guacamole/guacamole.war /var/lib/${TOMCAT}/webapps/
ln -s /usr/local/lib/freerdp/guac*.so /usr/lib/${BUILD_FOLDER}/freerdp/
cp mysql-connector-java-${MCJVERSION}/mysql-connector-java-${MCJVERSION}-bin.jar /etc/guacamole/lib/
cp guacamole-auth-jdbc-${VERSION}-incubating/mysql/guacamole-auth-jdbc-mysql-${VERSION}-incubating.jar /etc/guacamole/extensions/
cp guacamole-auth-jdbc-${VERSION}/mysql/guacamole-auth-jdbc-mysql-${VERSION}.jar /etc/guacamole/extensions/
# Configure guacamole.properties
echo "mysql-hostname: localhost" >> /etc/guacamole/guacamole.properties
@ -148,8 +152,6 @@ echo "mysql-port: 3306" >> /etc/guacamole/guacamole.properties
echo "mysql-database: guacamole_db" >> /etc/guacamole/guacamole.properties
echo "mysql-username: guacamole_user" >> /etc/guacamole/guacamole.properties
echo "mysql-password: $guacdbuserpassword" >> /etc/guacamole/guacamole.properties
rm -rf /usr/share/${TOMCAT}/.guacamole
ln -s /etc/guacamole /usr/share/${TOMCAT}/.guacamole
# restart tomcat
service ${TOMCAT} restart
@ -167,7 +169,7 @@ flush privileges;"
echo $SQLCODE | mysql -u root -p$mysqlrootpassword
# Add Guacamole schema to newly created database
cat guacamole-auth-jdbc-${VERSION}-incubating/mysql/schema/*.sql | mysql -u root -p$mysqlrootpassword guacamole_db
cat guacamole-auth-jdbc-${VERSION}/mysql/schema/*.sql | mysql -u root -p$mysqlrootpassword guacamole_db
# Cleanup
rm -rf guacamole-*