From 373bfe13aac87b6b910a55acdb6cf9d5c432c679 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 30 May 2024 12:09:36 +0000 Subject: [PATCH] init repo --- .gitignore | 2 + composer-db.yml | 15 + docker-compose.yml | 40 + docker-guacamole-custom/Dockerfile | 36 + docker-guacamole-custom/files/entrypoint.sh | 16 + .../files/inject-trigger.sh | 25 + .../guacamole-auth-quickconnect-1.5.5.jar | Bin 0 -> 3664368 bytes docker-guacamole-custom/files/start.sh | 1231 +++++++++++++++++ initdb.sql | 666 +++++++++ 9 files changed, 2031 insertions(+) create mode 100644 .gitignore create mode 100644 composer-db.yml create mode 100644 docker-compose.yml create mode 100644 docker-guacamole-custom/Dockerfile create mode 100755 docker-guacamole-custom/files/entrypoint.sh create mode 100755 docker-guacamole-custom/files/inject-trigger.sh create mode 100644 docker-guacamole-custom/files/quickconnect/guacamole-auth-quickconnect-1.5.5.jar create mode 100755 docker-guacamole-custom/files/start.sh create mode 100644 initdb.sql diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14a49f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +config/ +db-data/ diff --git a/composer-db.yml b/composer-db.yml new file mode 100644 index 0000000..4bf1b36 --- /dev/null +++ b/composer-db.yml @@ -0,0 +1,15 @@ +version: '3' +services: + guacdb: + container_name: guacamoledb + image: mariadb:10.9.5 + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: 'MariaDBRootPass' + MYSQL_DATABASE: 'guacamole_db' + MYSQL_USER: 'guacamole_user' + MYSQL_PASSWORD: 'MariaDBUserPass' + volumes: + - './db-data:/var/lib/mysql' +volumes: + db-data: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ebd53ad --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3' +services: + guacdb: + container_name: guacamoledb + image: mariadb:10.9.5 + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: 'MariaDBRootPass' + MYSQL_DATABASE: 'guacamole_db' + MYSQL_USER: 'guacamole_user' + MYSQL_PASSWORD: 'MariaDBUserPass' + volumes: + - './db-data:/var/lib/mysql' + guacd: + container_name: guacd + image: guacamole/guacd:1.5.5 + restart: unless-stopped + ports: + - 4822:4822 + guacamole: + container_name: guacamole + #image: guacamole/guacamole:1.5.5 + build: ./docker-guacamole-custom + restart: unless-stopped + ports: + - 8080:8080 + environment: + GUACD_HOSTNAME: "guacd" + MYSQL_HOSTNAME: "guacdb" + MYSQL_DATABASE: "guacamole_db" + MYSQL_USER: "guacamole_user" + MYSQL_PASSWORD: "MariaDBUserPass" + #TOTP_ENABLED: "true" + QUICKCONNECT_ENABLED: "true" + entrypoint: /opt/guacamole/bin/entrypoint.sh + depends_on: + - guacdb + - guacd +volumes: + db-data: diff --git a/docker-guacamole-custom/Dockerfile b/docker-guacamole-custom/Dockerfile new file mode 100644 index 0000000..d46f1ed --- /dev/null +++ b/docker-guacamole-custom/Dockerfile @@ -0,0 +1,36 @@ +FROM guacamole/guacamole:1.5.5 + +COPY files/start.sh /opt/guacamole/bin/start.sh +COPY files/entrypoint.sh /opt/guacamole/bin/entrypoint.sh +COPY files/inject-trigger.sh /opt/guacamole/bin/inject-trigger.sh +COPY files/quickconnect /opt/guacamole/quickconnect + +ARG RELEASE +ARG LAUNCHPAD_BUILD_ARCH +LABEL org.opencontainers.image.ref.name=ubuntu +LABEL org.opencontainers.image.version=22.04 +CMD ["/bin/bash"] +ENV JAVA_HOME=/opt/java/openjdk +ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 +ENV JAVA_VERSION=jdk8u402-b06 +ENTRYPOINT ["/__cacert_entrypoint.sh"] +ENV CATALINA_HOME=/usr/local/tomcat +ENV PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +WORKDIR /usr/local/tomcat +ENV TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib +ENV LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib +ENV GPG_KEYS="05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5" +ENV TOMCAT_MAJOR=8 +ENV TOMCAT_VERSION=8.5.98 +ENV TOMCAT_SHA512=12f58114fe608fdc5f06e99a4ba01852396169f89d08e1ecf96ace36dd685c439519433e7750bfa7523f12c14788a3b5cb9ee3835dd1cce37e2cee121d69625e +EXPOSE 8080 +ENTRYPOINT [] +CMD ["catalina.sh" "run"] +WORKDIR /opt/guacamole +ARG UID=1001 +ARG GID=1001 +USER guacamole +EXPOSE 8080 +CMD ["/opt/guacamole/bin/start.sh"] diff --git a/docker-guacamole-custom/files/entrypoint.sh b/docker-guacamole-custom/files/entrypoint.sh new file mode 100755 index 0000000..4e676a4 --- /dev/null +++ b/docker-guacamole-custom/files/entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +/opt/guacamole/bin/start.sh & + +# Esperar que o Tomcat esteja totalmente inicializado +while ! curl -sSf http://localhost:8080/guacamole >/dev/null; do + echo "Aguardando Tomcat iniciar..." + sleep 2 +done + +# Executar o script adicional +/opt/guacamole/bin/inject-trigger.sh + +# Manter o container em execução +wait + diff --git a/docker-guacamole-custom/files/inject-trigger.sh b/docker-guacamole-custom/files/inject-trigger.sh new file mode 100755 index 0000000..b08294e --- /dev/null +++ b/docker-guacamole-custom/files/inject-trigger.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +if [ -f /home/guacamole/tomcat/webapps/guacamole/templates.js ]; then + cat <> /home/guacamole/tomcat/webapps/guacamole/templates.js + \$(window).on('load', function() { + function getHashParam(param) { + var hash = window.location.hash.substr(1); + var hashParams = new URLSearchParams(hash.split('?')[1]); + return hashParams.get(param); + } + + setTimeout(function() { + var quickconnectValue = getHashParam('quickconnect'); + if (quickconnectValue) { + var \$field = \$('.quickconnect-field'); + \$field.val(quickconnectValue); + \$field.trigger('input'); + \$field.trigger('change'); + \$('.quickconnect-button').click(); + } + }, 500); + }); +EOF +fi + diff --git a/docker-guacamole-custom/files/quickconnect/guacamole-auth-quickconnect-1.5.5.jar b/docker-guacamole-custom/files/quickconnect/guacamole-auth-quickconnect-1.5.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..6d332c1fda331378b56b7a4ad6ad31d487ea37e8 GIT binary patch literal 3664368 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