diff --git a/ct/termix.sh b/ct/termix.sh index de97d2a44..71e0a030d 100644 --- a/ct/termix.sh +++ b/ct/termix.sh @@ -29,10 +29,91 @@ function update_script() { exit fi + if check_for_gh_tag "guacd" "apache/guacamole-server"; then + msg_info "Stopping guacd" + systemctl stop guacd 2>/dev/null || true + msg_ok "Stopped guacd" + + ensure_dependencies \ + libcairo2-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + libtool-bin \ + uuid-dev \ + libvncserver-dev \ + freerdp3-dev \ + libssh2-1-dev \ + libtelnet-dev \ + libwebsockets-dev \ + libpulse-dev \ + libvorbis-dev \ + libwebp-dev \ + libssl-dev \ + libpango1.0-dev \ + libswscale-dev \ + libavcodec-dev \ + libavutil-dev \ + libavformat-dev + + msg_info "Updating Guacamole Server (guacd)" + mkdir -p /opt/guacamole-server + download_file "https://github.com/apache/guacamole-server/archive/refs/tags/${CHECK_UPDATE_RELEASE}.tar.gz" "/tmp/guacamole-server.tar.gz" + tar -xzf /tmp/guacamole-server.tar.gz --strip-components=1 -C /opt/guacamole-server + rm -f /tmp/guacamole-server.tar.gz + cd /opt/guacamole-server + export CPPFLAGS="-Wno-error=deprecated-declarations" + $STD autoreconf -fi + $STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots + $STD make + $STD make install + $STD ldconfig + echo "${CHECK_UPDATE_RELEASE}" >~/.guacd + cd /opt + rm -rf /opt/guacamole-server + msg_ok "Updated Guacamole Server (guacd) to ${CHECK_UPDATE_RELEASE}" + + if [[ ! -f /etc/guacamole/guacd.conf ]]; then + mkdir -p /etc/guacamole + cat </etc/guacamole/guacd.conf +[server] +bind_host = 127.0.0.1 +bind_port = 4822 +EOF + fi + + if [[ ! -f /etc/systemd/system/guacd.service ]]; then + cat </etc/systemd/system/guacd.service +[Unit] +Description=Guacamole Proxy Daemon (guacd) +After=network.target + +[Service] +Type=forking +ExecStart=/etc/init.d/guacd start +ExecStop=/etc/init.d/guacd stop +ExecReload=/etc/init.d/guacd restart +PIDFile=/var/run/guacd.pid +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + fi + + if ! grep -q "guacd.service" /etc/systemd/system/termix.service 2>/dev/null; then + sed -i '/^After=network.target/s/$/ guacd.service/' /etc/systemd/system/termix.service + sed -i '/^\[Unit\]/a Wants=guacd.service' /etc/systemd/system/termix.service + fi + + systemctl daemon-reload + systemctl enable -q --now guacd + fi + if check_for_gh_release "termix" "Termix-SSH/Termix"; then - msg_info "Stopping Service" + msg_info "Stopping Termix" systemctl stop termix - msg_ok "Stopped Service" + msg_ok "Stopped Termix" msg_info "Backing up Data" cp -r /opt/termix/data /opt/termix_data_backup @@ -95,16 +176,16 @@ function update_script() { sed -i 's|/app/html|/opt/termix/html|g' /etc/nginx/nginx.conf sed -i 's|/app/nginx|/opt/termix/nginx|g' /etc/nginx/nginx.conf sed -i 's|listen ${PORT};|listen 80;|g' /etc/nginx/nginx.conf - + nginx -t && systemctl reload nginx msg_ok "Updated Nginx Configuration" else msg_warn "Nginx configuration not updated. If Termix doesn't work, restore from backup or update manually." fi - msg_info "Starting Service" + msg_info "Starting Termix" systemctl start termix - msg_ok "Started Service" + msg_ok "Started Termix" msg_ok "Updated successfully!" fi exit diff --git a/install/termix-install.sh b/install/termix-install.sh index 5737d0d6b..b364e4a0b 100644 --- a/install/termix-install.sh +++ b/install/termix-install.sh @@ -19,9 +19,46 @@ $STD apt install -y \ python3 \ nginx \ openssl \ - gettext-base + gettext-base \ + libcairo2-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + libtool-bin \ + uuid-dev \ + libvncserver-dev \ + freerdp3-dev \ + libssh2-1-dev \ + libtelnet-dev \ + libwebsockets-dev \ + libpulse-dev \ + libvorbis-dev \ + libwebp-dev \ + libssl-dev \ + libpango1.0-dev \ + libswscale-dev \ + libavcodec-dev \ + libavutil-dev \ + libavformat-dev msg_ok "Installed Dependencies" +msg_info "Building Guacamole Server (guacd)" +GUAC_SERVER_VERSION=$(get_latest_gh_tag "apache/guacamole-server") +mkdir -p /opt/guacamole-server +download_file "https://github.com/apache/guacamole-server/archive/refs/tags/${GUAC_SERVER_VERSION}.tar.gz" "/tmp/guacamole-server.tar.gz" +tar -xzf /tmp/guacamole-server.tar.gz --strip-components=1 -C /opt/guacamole-server +rm -f /tmp/guacamole-server.tar.gz +cd /opt/guacamole-server +export CPPFLAGS="-Wno-error=deprecated-declarations" +$STD autoreconf -fi +$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots +$STD make +$STD make install +$STD ldconfig +echo "${GUAC_SERVER_VERSION}" >~/.guacd +cd /opt +rm -rf /opt/guacamole-server +msg_ok "Built Guacamole Server (guacd) ${GUAC_SERVER_VERSION}" + NODE_VERSION="22" setup_nodejs fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" @@ -74,10 +111,36 @@ systemctl reload nginx msg_ok "Configured Nginx" msg_info "Creating Service" +mkdir -p /etc/guacamole +cat </etc/guacamole/guacd.conf +[server] +bind_host = 127.0.0.1 +bind_port = 4822 +EOF + +cat </etc/systemd/system/guacd.service +[Unit] +Description=Guacamole Proxy Daemon (guacd) +After=network.target + +[Service] +Type=forking +ExecStart=/etc/init.d/guacd start +ExecStop=/etc/init.d/guacd stop +ExecReload=/etc/init.d/guacd restart +PIDFile=/var/run/guacd.pid +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + cat </etc/systemd/system/termix.service [Unit] Description=Termix Backend -After=network.target +After=network.target guacd.service +Wants=guacd.service [Service] Type=simple @@ -92,7 +155,7 @@ RestartSec=5 [Install] WantedBy=multi-user.target EOF -systemctl enable -q --now termix +systemctl enable -q --now guacd termix msg_ok "Created Service" motd_ssh