diff --git a/guacamole/guacamole-install.sh b/guacamole/guacamole-install.sh index 3bcf7bf..520c883 100644 --- a/guacamole/guacamole-install.sh +++ b/guacamole/guacamole-install.sh @@ -16,102 +16,95 @@ DB_ROOT_PASSWORD=$(openssl rand -base64 15) DB_PASSWORD=$(openssl rand -base64 15) # Check for Reinstall -if [ "$(ls -A "${DB_PATH}")" ]; then - echo "Existing Guacamole database detected. Checking compatability for reinstall." - if [ "$(ls -A "${DB_PATH}/${DB_NAME}")" ]; then - echo "Database is compatible, continuing..." - REINSTALL="true" - else - echo "ERROR: You can not reinstall without the previous database" - echo "Please try again after removing the database, or using the same database used previously" - exit 1 - fi +if [ "$(ls -A /var/db/mysql/"${DB_NAME}" 2>/dev/null)" ]; then + echo "Existing ${APP_NAME} database detected." + echo "Starting reinstall..." + REINSTALL="true" fi -# Package installation +# Package Installation pkg install -y guacamole-server guacamole-client mariadb"${MARIADB_VERSION}"-server mariadb"${MARIADB_VERSION}"-client mysql-connector-j -# Create directories -mkdir -p "${DB_PATH}" +# Create Directories +mkdir -p /var/db/mysql mkdir -p /usr/local/etc/guacamole-client/lib mkdir -p /usr/local/etc/guacamole-client/extensions -# Enable services +# Enable Services sysrc guacd_enable="YES" sysrc tomcat9_enable="YES" sysrc mysql_enable="YES" -# Extract java connector to guacamole -cp -f /usr/local/share/java/classes/mysql-connector-j.jar /usr/local/etc/guacamole-client/lib -tar xvfz /usr/local/share/guacamole-client/guacamole-auth-jdbc.tar.gz -C /tmp/ -cp -f /tmp/guacamole-auth-jdbc-*/mysql/*.jar /usr/local/etc/guacamole-client/extensions - -# Copy guacamole server files -cp -f /usr/local/etc/guacamole-server/guacd.conf.sample /usr/local/etc/guacamole-server/guacd.conf -cp -f /usr/local/etc/guacamole-client/logback.xml.sample /usr/local/etc/guacamole-client/logback.xml -cp -f /usr/local/etc/guacamole-client/guacamole.properties.sample /usr/local/etc/guacamole-client/guacamole.properties - -# Change default bind host ip -sed -i -e 's/'localhost'/'0.0.0.0'/g' /usr/local/etc/guacamole-server/guacd.conf - -# Add database connection -echo "mysql-hostname: localhost" >> /usr/local/etc/guacamole-client/guacamole.properties -echo "mysql-port: 3306" >> /usr/local/etc/guacamole-client/guacamole.properties -echo "mysql-database: ${DB_NAME}" >> /usr/local/etc/guacamole-client/guacamole.properties -echo "mysql-username: ${DB_USER}" >> /usr/local/etc/guacamole-client/guacamole.properties -echo "mysql-password: ${DB_PASSWORD}" >> /usr/local/etc/guacamole-client/guacamole.properties +# Create and Configure Database service mysql-server start - if [ "${REINSTALL}" == "true" ]; then echo "You did a reinstall, but database passwords will still be changed." echo "New passwords will still be saved in the root directory." mysql -u root -e "SET PASSWORD FOR '${DB_USER}'@localhost = PASSWORD('${DB_PASSWORD}');" - fetch -o /root/.my.cnf https://raw.githubusercontent.com/tschettervictor/bsd-apps/main/guacamole/includes/my.cnf - sed -i '' "s|mypassword|${DB_ROOT_PASSWORD}|" /root/.my.cnf + sed -i '' -e "s|.*mysql-password.*|mysql-password: ${DB_PASSWORD};|g" /usr/local/etc/guacamole-client/guacamole.properties + fetch -o /root/.my.cnf https://raw.githubusercontent.com/tschettervictor/bsd-apps/main/guacamole/includes/my.cnf + sed -i '' "s|mypassword|${DB_ROOT_PASSWORD}|" /root/.my.cnf else if ! mysql -u root -e "CREATE DATABASE ${DB_NAME};"; then echo "Failed to create database, aborting..." exit 1 fi - mysql -u root -e "GRANT ALL ON ${DB_NAME}.* TO '${DB_USER}'@localhost IDENTIFIED BY '${DB_PASSWORD}';" - mysql -u root -e "DELETE FROM mysql.user WHERE User='';" - mysql -u root -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" - mysql -u root -e "DROP DATABASE IF EXISTS test;" - mysql -u root -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" - mysql -u root -e "FLUSH PRIVILEGES;" - mysqladmin --user=root password "${DB_ROOT_PASSWORD}" reload - fetch -o /root/.my.cnf https://raw.githubusercontent.com/tschettervictor/bsd-apps/main/guacamole/includes/my.cnf - sed -i '' "s|mypassword|${DB_ROOT_PASSWORD}|" /root/.my.cnf - cat /tmp/guacamole-auth-jdbc-*/mysql/schema/*.sql | mysql -u root -p"${DB_ROOT_PASSWORD}" ${DB_NAME} + mysql -u root -e "GRANT ALL ON ${DB_NAME}.* TO '${DB_USER}'@localhost IDENTIFIED BY '${DB_PASSWORD}';" + mysql -u root -e "DELETE FROM mysql.user WHERE User='';" + mysql -u root -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" + mysql -u root -e "DROP DATABASE IF EXISTS test;" + mysql -u root -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" + mysql -u root -e "FLUSH PRIVILEGES;" + mysqladmin --user=root password "${DB_ROOT_PASSWORD}" reload + fetch -o /root/.my.cnf https://raw.githubusercontent.com/tschettervictor/bsd-apps/main/guacamole/includes/my.cnf + sed -i '' "s|mypassword|${DB_ROOT_PASSWORD}|" /root/.my.cnf + cat /tmp/guacamole-auth-jdbc-*/mysql/schema/*.sql | mysql -u root -p"${DB_ROOT_PASSWORD}" ${DB_NAME} + cp -f /usr/local/etc/guacamole-client/guacamole.properties.sample /usr/local/etc/guacamole-client/guacamole.properties + echo "mysql-hostname: localhost" >> /usr/local/etc/guacamole-client/guacamole.properties + echo "mysql-port: 3306" >> /usr/local/etc/guacamole-client/guacamole.properties + echo "mysql-database: ${DB_NAME}" >> /usr/local/etc/guacamole-client/guacamole.properties + echo "mysql-username: ${DB_USER}" >> /usr/local/etc/guacamole-client/guacamole.properties + echo "mysql-password: ${DB_PASSWORD}" >> /usr/local/etc/guacamole-client/guacamole.properties fi -# Restart services +# Configure Guacamole +cp -f /usr/local/share/java/classes/mysql-connector-j.jar /usr/local/etc/guacamole-client/lib +tar xvfz /usr/local/share/guacamole-client/guacamole-auth-jdbc.tar.gz -C /tmp/ +cp -f /tmp/guacamole-auth-jdbc-*/mysql/*.jar /usr/local/etc/guacamole-client/extensions +cp -f /usr/local/etc/guacamole-server/guacd.conf.sample /usr/local/etc/guacamole-server/guacd.conf +cp -f /usr/local/etc/guacamole-client/logback.xml.sample /usr/local/etc/guacamole-client/logback.xml +sed -i -e 's/'localhost'/'0.0.0.0'/g' /usr/local/etc/guacamole-server/guacd.conf + +# Restart Services service mysql-server restart service guacd restart service tomcat9 restart -# Save passwords for later reference -echo "${DATABASE} root user is root and password is ${DB_ROOT_PASSWORD}" > /root/${APP_NAME}_db_password.txt -echo "Guacamole database user is ${DB_USER} and password is ${DB_PASSWORD}" >> /root/${APP_NAME}_db_password.txt -echo "Guacamole default username and password are both guacadmin." >> /root/${APP_NAME}_db_password.txt +# Save Passwords +echo "${DB_TYPE} root user is root and password is ${DB_ROOT_PASSWORD}" > /root/${APP_NAME}-Info.txt +echo "${APP_NAME} database user is ${DB_USER} and password is ${DB_PASSWORD}" >> /root/${APP_NAME}-Info.txt +echo "${APP_NAME} default username and password are both guacadmin." >> /root/${APP_NAME}-Info.txt +# Done echo "---------------" echo "Installation complete." +echo "${APP_NAME} is running on port 8080." echo "---------------" echo "Database Information" -echo "MySQL Username: root" -echo "MySQL Password: $DB_ROOT_PASSWORD" -echo "Guacamole DB User: $DB_USER" -echo "Guacamole DB Password: "$DB_PASSWORD"" -if [ "${REINSTALL}" == "true" ]; then - echo "---------------" - echo "You did a reinstall, please user your old credentials to log in." -else - echo "---------------" - echo "User Information" - echo "Default user is guacadmin" - echo "Default password is guacadmin" -fi +echo "$DB_TYPE Username: root" +echo "$DB_TYPE Password: $DB_ROOT_PASSWORD" +echo "$APP_NAME DB User: $DB_USER" +echo "$APP_NAME DB Password: $DB_PASSWORD" echo "---------------" +if [ "${REINSTALL}" == "true" ]; then + echo "You did a reinstall." + echo "Please user your old credentials to log in." + echo "---------------" +else + echo "User Information" + echo "Default ${APP_NAME} user is guacadmin" + echo "Default ${APP_NAME} password is guacadmin" + echo "---------------" +fi echo "All passwords are saved in /root/${APP_NAME}_db_password.txt" echo "---------------"