Hello, good afternoon everyone!
I am currently using HestiaCP 1.92 and have Roundcube version 1.68. From what I’ve seen, in some newer installations, Roundcube is already coming with version 1.69.
I would like to know the correct procedure to update my Roundcube to version 1.69.
I searched the forum but couldn’t find any information on this. I appreciate any help in advance!
Hi @molero.renan
You can execute this command:
v-add-sys-roundcube
If it doesn’t install the new version, edit the file /usr/local/hestia/install/upgrade/upgrade.conf
and replace
rc_v='1.6.8'
by
rc_v='1.6.9'
And execute again v-add-sys-roundcube
Here you have a detailed guide, just change the versions to the current ones and also the admin user (If you are using other administrator user with new Hestia 1.9.x version use it instead of admin).
Update to 1.8…12 and the issue should be solved aswell!
Hi,
If you are using Hestia 1.8.11 and installed Roundcube, you should have the version 1.6.5. Four months ago, Roundcube released the version 1.6.6 (just a service release so not too much important) but three days ago, appeared a new Roundcube version 1.6.7 and this is a security release that fixes three vulnerabilities:
Fix cross-site scripting (XSS) vulnerability in handling SVG animate attributes.
Fix cross-site scripting (XSS) vuln…
1 Like
eris
February 8, 2025, 8:12am
3
I am sure we already have it set to 1.6.9
johnny
February 8, 2025, 4:39pm
4
Sounds like it may be related to [Bug] Roundcube not upgraded after install of HestiaCP 1.9.2 · Issue #4781 · hestiacp/hestiacp · GitHub
Im still stuck on 1.6.8 I tried running as root v-add-sys-roundcube
but it didn’t do anything. I can confirm /usr/local/hestia/install/upgrade/upgrade.conf
is set to 1.6.9
johnny
February 8, 2025, 4:48pm
6
Thanks for confirming @eris
Could you please show the output of this command (the output will be large)?
sudo bash -x /usr/local/hestia/bin/v-add-sys-roundcube
johnny
February 8, 2025, 5:15pm
8
Your right its alot, Total 1611 Lines. First half here it is, Redacted Pub IP and PHPMYAdmin Key
root@web:/etc# sudo bash -x /usr/local/hestia/bin/v-add-sys-roundcube
+ source /etc/hestiacp/hestia.conf
++ export HESTIA=/usr/local/hestia
++ HESTIA=/usr/local/hestia
++ [[ -f /etc/hestiacp/local.conf ]]
+ source /usr/local/hestia/func/main.sh
++ '[' -z '' ']'
++ '[' -z '' ']'
++ '[' -z /usr/local/hestia ']'
++ source_conf /usr/local/hestia/conf/hestia.conf
++ IFS='= '
++ read -r lhs rhs
++ [[ ! ANTISPAM_SYSTEM =~ ^ *# ]]
++ [[ -n ANTISPAM_SYSTEM ]]
++ rhs=''\''spamd'\'''
++ rhs=''\''spamd'\'''
++ rhs=''\''spamd'
++ rhs=spamd
++ declare -g ANTISPAM_SYSTEM=spamd
++ IFS='= '
++ read -r lhs rhs
++ [[ ! ANTIVIRUS_SYSTEM =~ ^ *# ]]
++ [[ -n ANTIVIRUS_SYSTEM ]]
++ rhs=''\''clamav-daemon'\'''
++ rhs=''\''clamav-daemon'\'''
++ rhs=''\''clamav-daemon'
++ rhs=clamav-daemon
++ declare -g ANTIVIRUS_SYSTEM=clamav-daemon
++ IFS='= '
++ read -r lhs rhs
++ [[ ! API =~ ^ *# ]]
++ [[ -n API ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g API=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! API_ALLOWED_IP =~ ^ *# ]]
++ [[ -n API_ALLOWED_IP ]]
++ rhs=''\''127.0.0.1,REDACTED_IP'\'''
++ rhs=''\''127.0.0.1,REDACTED_IP'\'''
++ rhs=''\''127.0.0.1,REDACTED_IP'
++ rhs=127.0.0.1,REDACTED_IP
++ declare -g API_ALLOWED_IP=127.0.0.1,REDACTED_IP
++ IFS='= '
++ read -r lhs rhs
++ [[ ! API_SYSTEM =~ ^ *# ]]
++ [[ -n API_SYSTEM ]]
++ rhs=''\''1'\'''
++ rhs=''\''1'\'''
++ rhs=''\''1'
++ rhs=1
++ declare -g API_SYSTEM=1
++ IFS='= '
++ read -r lhs rhs
++ [[ ! APP_NAME =~ ^ *# ]]
++ [[ -n APP_NAME ]]
++ rhs=''\''Hestia Control Panel'\'''
++ rhs=''\''Hestia Control Panel'\'''
++ rhs=''\''Hestia Control Panel'
++ rhs='Hestia Control Panel'
++ declare -g 'APP_NAME=Hestia Control Panel'
++ IFS='= '
++ read -r lhs rhs
++ [[ ! BACKEND_PORT =~ ^ *# ]]
++ [[ -n BACKEND_PORT ]]
++ rhs=''\''8083'\'''
++ rhs=''\''8083'\'''
++ rhs=''\''8083'
++ rhs=8083
++ declare -g BACKEND_PORT=8083
++ IFS='= '
++ read -r lhs rhs
++ [[ ! BACKUP_GZIP =~ ^ *# ]]
++ [[ -n BACKUP_GZIP ]]
++ rhs=''\''4'\'''
++ rhs=''\''4'\'''
++ rhs=''\''4'
++ rhs=4
++ declare -g BACKUP_GZIP=4
++ IFS='= '
++ read -r lhs rhs
++ [[ ! BACKUP_INCREMENTAL =~ ^ *# ]]
++ [[ -n BACKUP_INCREMENTAL ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g BACKUP_INCREMENTAL=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! BACKUP_MODE =~ ^ *# ]]
++ [[ -n BACKUP_MODE ]]
++ rhs=''\''zstd'\'''
++ rhs=''\''zstd'\'''
++ rhs=''\''zstd'
++ rhs=zstd
++ declare -g BACKUP_MODE=zstd
++ IFS='= '
++ read -r lhs rhs
++ [[ ! BACKUP_SYSTEM =~ ^ *# ]]
++ [[ -n BACKUP_SYSTEM ]]
++ rhs=''\''local'\'''
++ rhs=''\''local'\'''
++ rhs=''\''local'
++ rhs=local
++ declare -g BACKUP_SYSTEM=local
++ IFS='= '
++ read -r lhs rhs
++ [[ ! CRON_SYSTEM =~ ^ *# ]]
++ [[ -n CRON_SYSTEM ]]
++ rhs=''\''cron'\'''
++ rhs=''\''cron'\'''
++ rhs=''\''cron'
++ rhs=cron
++ declare -g CRON_SYSTEM=cron
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DB_PMA_ALIAS =~ ^ *# ]]
++ [[ -n DB_PMA_ALIAS ]]
++ rhs=''\''phpmyadmin'\'''
++ rhs=''\''phpmyadmin'\'''
++ rhs=''\''phpmyadmin'
++ rhs=phpmyadmin
++ declare -g DB_PMA_ALIAS=phpmyadmin
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DB_SYSTEM =~ ^ *# ]]
++ [[ -n DB_SYSTEM ]]
++ rhs=''\''mysql'\'''
++ rhs=''\''mysql'\'''
++ rhs=''\''mysql'
++ rhs=mysql
++ declare -g DB_SYSTEM=mysql
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DEBUG_MODE =~ ^ *# ]]
++ [[ -n DEBUG_MODE ]]
++ rhs=''\''false'\'''
++ rhs=''\''false'\'''
++ rhs=''\''false'
++ rhs=false
++ declare -g DEBUG_MODE=false
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DISABLE_IP_CHECK =~ ^ *# ]]
++ [[ -n DISABLE_IP_CHECK ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g DISABLE_IP_CHECK=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DISK_QUOTA =~ ^ *# ]]
++ [[ -n DISK_QUOTA ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g DISK_QUOTA=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DNS_CLUSTER_SYSTEM =~ ^ *# ]]
++ [[ -n DNS_CLUSTER_SYSTEM ]]
++ rhs=''\''hestia'\'''
++ rhs=''\''hestia'\'''
++ rhs=''\''hestia'
++ rhs=hestia
++ declare -g DNS_CLUSTER_SYSTEM=hestia
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DNS_SYSTEM =~ ^ *# ]]
++ [[ -n DNS_SYSTEM ]]
++ rhs=''\''bind9'\'''
++ rhs=''\''bind9'\'''
++ rhs=''\''bind9'
++ rhs=bind9
++ declare -g DNS_SYSTEM=bind9
++ IFS='= '
++ read -r lhs rhs
++ [[ ! DOMAINDIR_WRITABLE =~ ^ *# ]]
++ [[ -n DOMAINDIR_WRITABLE ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g DOMAINDIR_WRITABLE=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! ENFORCE_SUBDOMAIN_OWNERSHIP =~ ^ *# ]]
++ [[ -n ENFORCE_SUBDOMAIN_OWNERSHIP ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g ENFORCE_SUBDOMAIN_OWNERSHIP=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FILE_MANAGER =~ ^ *# ]]
++ [[ -n FILE_MANAGER ]]
++ rhs=''\''true'\'''
++ rhs=''\''true'\'''
++ rhs=''\''true'
++ rhs=true
++ declare -g FILE_MANAGER=true
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FIREWALL_EXTENSION =~ ^ *# ]]
++ [[ -n FIREWALL_EXTENSION ]]
++ rhs=''\''fail2ban'\'''
++ rhs=''\''fail2ban'\'''
++ rhs=''\''fail2ban'
++ rhs=fail2ban
++ declare -g FIREWALL_EXTENSION=fail2ban
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FIREWALL_SYSTEM =~ ^ *# ]]
++ [[ -n FIREWALL_SYSTEM ]]
++ rhs=''\''iptables'\'''
++ rhs=''\''iptables'\'''
++ rhs=''\''iptables'
++ rhs=iptables
++ declare -g FIREWALL_SYSTEM=iptables
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FROM_EMAIL =~ ^ *# ]]
++ [[ -n FROM_EMAIL ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g FROM_EMAIL=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FROM_NAME =~ ^ *# ]]
++ [[ -n FROM_NAME ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g FROM_NAME=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! FTP_SYSTEM =~ ^ *# ]]
++ [[ -n FTP_SYSTEM ]]
++ rhs=''\''vsftpd'\'''
++ rhs=''\''vsftpd'\'''
++ rhs=''\''vsftpd'
++ rhs=vsftpd
++ declare -g FTP_SYSTEM=vsftpd
++ IFS='= '
++ read -r lhs rhs
++ [[ ! HIDE_DOCS =~ ^ *# ]]
++ [[ -n HIDE_DOCS ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g HIDE_DOCS=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! IMAP_SYSTEM =~ ^ *# ]]
++ [[ -n IMAP_SYSTEM ]]
++ rhs=''\''dovecot'\'''
++ rhs=''\''dovecot'\'''
++ rhs=''\''dovecot'
++ rhs=dovecot
++ declare -g IMAP_SYSTEM=dovecot
++ IFS='= '
++ read -r lhs rhs
++ [[ ! INACTIVE_SESSION_TIMEOUT =~ ^ *# ]]
++ [[ -n INACTIVE_SESSION_TIMEOUT ]]
++ rhs=''\''60'\'''
++ rhs=''\''60'\'''
++ rhs=''\''60'
++ rhs=60
++ declare -g INACTIVE_SESSION_TIMEOUT=60
++ IFS='= '
++ read -r lhs rhs
++ [[ ! LANGUAGE =~ ^ *# ]]
++ [[ -n LANGUAGE ]]
++ rhs=''\''en'\'''
++ rhs=''\''en'\'''
++ rhs=''\''en'
++ rhs=en
++ declare -g LANGUAGE=en
++ IFS='= '
++ read -r lhs rhs
++ [[ ! LOGIN_STYLE =~ ^ *# ]]
++ [[ -n LOGIN_STYLE ]]
++ rhs=''\''old'\'''
++ rhs=''\''old'\'''
++ rhs=''\''old'
++ rhs=old
++ declare -g LOGIN_STYLE=old
++ IFS='= '
++ read -r lhs rhs
++ [[ ! MAIL_SYSTEM =~ ^ *# ]]
++ [[ -n MAIL_SYSTEM ]]
++ rhs=''\''exim4'\'''
++ rhs=''\''exim4'\'''
++ rhs=''\''exim4'
++ rhs=exim4
++ declare -g MAIL_SYSTEM=exim4
++ IFS='= '
++ read -r lhs rhs
++ [[ ! PHPMYADMIN_KEY =~ ^ *# ]]
++ [[ -n PHPMYADMIN_KEY ]]
++ rhs=''\''REDACTED_KEY'\'''
++ rhs=''\''REDACTED_KEY'\'''
++ rhs=''\''REDACTED_KEY'
++ rhs=REDACTED_KEY
++ declare -g PHPMYADMIN_KEY=REDACTED_KEY
++ IFS='= '
++ read -r lhs rhs
++ [[ ! PLUGIN_APP_INSTALLER =~ ^ *# ]]
++ [[ -n PLUGIN_APP_INSTALLER ]]
++ rhs=''\''true'\'''
++ rhs=''\''true'\'''
++ rhs=''\''true'
++ rhs=true
++ declare -g PLUGIN_APP_INSTALLER=true
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_BACKUP_SUSPENDED_USERS =~ ^ *# ]]
++ [[ -n POLICY_BACKUP_SUSPENDED_USERS ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g POLICY_BACKUP_SUSPENDED_USERS=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_CSRF_STRICTNESS =~ ^ *# ]]
++ [[ -n POLICY_CSRF_STRICTNESS ]]
++ rhs=''\''1'\'''
++ rhs=''\''1'\'''
++ rhs=''\''1'
++ rhs=1
++ declare -g POLICY_CSRF_STRICTNESS=1
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYNC_ERROR_DOCUMENTS =~ ^ *# ]]
++ [[ -n POLICY_SYNC_ERROR_DOCUMENTS ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_SYNC_ERROR_DOCUMENTS=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYNC_SKELETON =~ ^ *# ]]
++ [[ -n POLICY_SYNC_SKELETON ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_SYNC_SKELETON=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYSTEM_ENABLE_BACON =~ ^ *# ]]
++ [[ -n POLICY_SYSTEM_ENABLE_BACON ]]
++ rhs=''\''false'\'''
++ rhs=''\''false'\'''
++ rhs=''\''false'
++ rhs=false
++ declare -g POLICY_SYSTEM_ENABLE_BACON=false
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYSTEM_HIDE_ADMIN =~ ^ *# ]]
++ [[ -n POLICY_SYSTEM_HIDE_ADMIN ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g POLICY_SYSTEM_HIDE_ADMIN=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYSTEM_HIDE_SERVICES =~ ^ *# ]]
++ [[ -n POLICY_SYSTEM_HIDE_SERVICES ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g POLICY_SYSTEM_HIDE_SERVICES=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYSTEM_PASSWORD_RESET =~ ^ *# ]]
++ [[ -n POLICY_SYSTEM_PASSWORD_RESET ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g POLICY_SYSTEM_PASSWORD_RESET=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_SYSTEM_PROTECTED_ADMIN =~ ^ *# ]]
++ [[ -n POLICY_SYSTEM_PROTECTED_ADMIN ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_SYSTEM_PROTECTED_ADMIN=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_CHANGE_THEME =~ ^ *# ]]
++ [[ -n POLICY_USER_CHANGE_THEME ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_CHANGE_THEME=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_DELETE_LOGS =~ ^ *# ]]
++ [[ -n POLICY_USER_DELETE_LOGS ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_DELETE_LOGS=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_EDIT_DETAILS =~ ^ *# ]]
++ [[ -n POLICY_USER_EDIT_DETAILS ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_EDIT_DETAILS=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_EDIT_DNS_TEMPLATES =~ ^ *# ]]
++ [[ -n POLICY_USER_EDIT_DNS_TEMPLATES ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_EDIT_DNS_TEMPLATES=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_EDIT_WEB_TEMPLATES =~ ^ *# ]]
++ [[ -n POLICY_USER_EDIT_WEB_TEMPLATES ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_EDIT_WEB_TEMPLATES=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_VIEW_LOGS =~ ^ *# ]]
++ [[ -n POLICY_USER_VIEW_LOGS ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g POLICY_USER_VIEW_LOGS=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! POLICY_USER_VIEW_SUSPENDED =~ ^ *# ]]
++ [[ -n POLICY_USER_VIEW_SUSPENDED ]]
++ rhs=''\''false'\'''
++ rhs=''\''false'\'''
++ rhs=''\''false'
++ rhs=false
++ declare -g POLICY_USER_VIEW_SUSPENDED=false
++ IFS='= '
++ read -r lhs rhs
++ [[ ! PROXY_PORT =~ ^ *# ]]
++ [[ -n PROXY_PORT ]]
++ rhs=''\''80'\'''
++ rhs=''\''80'\'''
++ rhs=''\''80'
++ rhs=80
++ declare -g PROXY_PORT=80
++ IFS='= '
++ read -r lhs rhs
++ [[ ! PROXY_SSL_PORT =~ ^ *# ]]
++ [[ -n PROXY_SSL_PORT ]]
++ rhs=''\''443'\'''
++ rhs=''\''443'\'''
++ rhs=''\''443'
++ rhs=443
++ declare -g PROXY_SSL_PORT=443
++ IFS='= '
++ read -r lhs rhs
++ [[ ! PROXY_SYSTEM =~ ^ *# ]]
++ [[ -n PROXY_SYSTEM ]]
++ rhs=''\''nginx'\'''
++ rhs=''\''nginx'\'''
++ rhs=''\''nginx'
++ rhs=nginx
++ declare -g PROXY_SYSTEM=nginx
++ IFS='= '
++ read -r lhs rhs
++ [[ ! RELEASE_BRANCH =~ ^ *# ]]
++ [[ -n RELEASE_BRANCH ]]
++ rhs=''\''release'\'''
++ rhs=''\''release'\'''
++ rhs=''\''release'
++ rhs=release
++ declare -g RELEASE_BRANCH=release
++ IFS='= '
++ read -r lhs rhs
++ [[ ! RESOURCES_LIMIT =~ ^ *# ]]
++ [[ -n RESOURCES_LIMIT ]]
++ rhs=''\''no'\'''
++ rhs=''\''no'\'''
++ rhs=''\''no'
++ rhs=no
++ declare -g RESOURCES_LIMIT=no
++ IFS='= '
++ read -r lhs rhs
++ [[ ! ROOT_USER =~ ^ *# ]]
++ [[ -n ROOT_USER ]]
++ rhs=''\''admin'\'''
++ rhs=''\''admin'\'''
++ rhs=''\''admin'
++ rhs=admin
++ declare -g ROOT_USER=admin
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_ADDR =~ ^ *# ]]
++ [[ -n SERVER_SMTP_ADDR ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_ADDR=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_HOST =~ ^ *# ]]
++ [[ -n SERVER_SMTP_HOST ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_HOST=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_PASSWD =~ ^ *# ]]
++ [[ -n SERVER_SMTP_PASSWD ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_PASSWD=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_PORT =~ ^ *# ]]
++ [[ -n SERVER_SMTP_PORT ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_PORT=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_SECURITY =~ ^ *# ]]
++ [[ -n SERVER_SMTP_SECURITY ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_SECURITY=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SERVER_SMTP_USER =~ ^ *# ]]
++ [[ -n SERVER_SMTP_USER ]]
++ rhs=''\'''\'''
++ rhs=''\'''\'''
++ rhs=\'
++ rhs=
++ declare -g SERVER_SMTP_USER=
++ IFS='= '
++ read -r lhs rhs
++ [[ ! STATS_SYSTEM =~ ^ *# ]]
++ [[ -n STATS_SYSTEM ]]
++ rhs=''\''awstats'\'''
++ rhs=''\''awstats'\'''
++ rhs=''\''awstats'
++ rhs=awstats
++ declare -g STATS_SYSTEM=awstats
++ IFS='= '
++ read -r lhs rhs
++ [[ ! SUBJECT_EMAIL =~ ^ *# ]]
++ [[ -n SUBJECT_EMAIL ]]
++ rhs=''\''{{subject}}'\'''
++ rhs=''\''{{subject}}'\'''
++ rhs=''\''{{subject}}'
++ rhs='{{subject}}'
++ declare -g 'SUBJECT_EMAIL={{subject}}'
++ IFS='= '
++ read -r lhs rhs
++ [[ ! THEME =~ ^ *# ]]
++ [[ -n THEME ]]
++ rhs=''\''dark'\'''
++ rhs=''\''dark'\'''
++ rhs=''\''dark'
++ rhs=dark
++ declare -g THEME=dark
++ IFS='= '
++ read -r lhs rhs
++ [[ ! TITLE =~ ^ *# ]]
++ [[ -n TITLE ]]
++ rhs=''\''{{page}} - {{hostname}} - {{appname}}'\'''
++ rhs=''\''{{page}} - {{hostname}} - {{appname}}'\'''
++ rhs=''\''{{page}} - {{hostname}} - {{appname}}'
++ rhs='{{page}} - {{hostname}} - {{appname}}'
++ declare -g 'TITLE={{page}} - {{hostname}} - {{appname}}'
++ IFS='= '
++ read -r lhs rhs
++ [[ ! UPDATE_HOSTNAME_SSL =~ ^ *# ]]
++ [[ -n UPDATE_HOSTNAME_SSL ]]
++ rhs=''\''yes'\'''
++ rhs=''\''yes'\'''
++ rhs=''\''yes'
++ rhs=yes
++ declare -g UPDATE_HOSTNAME_SSL=yes
++ IFS='= '
++ read -r lhs rhs
++ [[ ! UPGRADE_SEND_EMAIL =~ ^ *# ]]
++ [[ -n UPGRADE_SEND_EMAIL ]]
++ rhs=''\''true'\'''
++ rhs=''\''true'\'''
++ rhs=''\''true'
++ rhs=true
++ declare -g UPGRADE_SEND_EMAIL=true
++ IFS='= '
++ read -r lhs rhs
++ [[ ! UPGRADE_SEND_EMAIL_LOG =~ ^ *# ]]
++ [[ -n UPGRADE_SEND_EMAIL_LOG ]]
++ rhs=''\''false'\'''
++ rhs=''\''false'\'''
++ rhs=''\''false'
++ rhs=false
++ declare -g UPGRADE_SEND_EMAIL_LOG=false
++ IFS='= '
++ read -r lhs rhs
++ [[ ! USE_SERVER_SMTP =~ ^ *# ]]
++ [[ -n USE_SERVER_SMTP ]]
++ rhs=''\''false'\'''
++ rhs=''\''false'\'''
++ rhs=''\''false'
++ rhs=false
++ declare -g USE_SERVER_SMTP=false
++ IFS='= '
++ read -r lhs rhs
++ [[ ! VERSION =~ ^ *# ]]
++ [[ -n VERSION ]]
++ rhs=''\''1.9.2'\'''
++ rhs=''\''1.9.2'\'''
++ rhs=''\''1.9.2'
++ rhs=1.9.2
++ declare -g VERSION=1.9.2
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEBMAIL_ALIAS =~ ^ *# ]]
++ [[ -n WEBMAIL_ALIAS ]]
++ rhs=''\''webmail'\'''
++ rhs=''\''webmail'\'''
++ rhs=''\''webmail'
++ rhs=webmail
++ declare -g WEBMAIL_ALIAS=webmail
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEBMAIL_SYSTEM =~ ^ *# ]]
++ [[ -n WEBMAIL_SYSTEM ]]
++ rhs=''\''roundcube'\'''
++ rhs=''\''roundcube'\'''
++ rhs=''\''roundcube'
++ rhs=roundcube
++ declare -g WEBMAIL_SYSTEM=roundcube
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_BACKEND =~ ^ *# ]]
++ [[ -n WEB_BACKEND ]]
++ rhs=''\''php-fpm'\'''
++ rhs=''\''php-fpm'\'''
++ rhs=''\''php-fpm'
++ rhs=php-fpm
++ declare -g WEB_BACKEND=php-fpm
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_PORT =~ ^ *# ]]
++ [[ -n WEB_PORT ]]
++ rhs=''\''8080'\'''
++ rhs=''\''8080'\'''
++ rhs=''\''8080'
++ rhs=8080
++ declare -g WEB_PORT=8080
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_RGROUPS =~ ^ *# ]]
++ [[ -n WEB_RGROUPS ]]
++ rhs=''\''www-data'\'''
++ rhs=''\''www-data'\'''
++ rhs=''\''www-data'
++ rhs=www-data
++ declare -g WEB_RGROUPS=www-data
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_SSL =~ ^ *# ]]
++ [[ -n WEB_SSL ]]
++ rhs=''\''mod_ssl'\'''
++ rhs=''\''mod_ssl'\'''
++ rhs=''\''mod_ssl'
++ rhs=mod_ssl
++ declare -g WEB_SSL=mod_ssl
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_SSL_PORT =~ ^ *# ]]
++ [[ -n WEB_SSL_PORT ]]
++ rhs=''\''8443'\'''
++ rhs=''\''8443'\'''
++ rhs=''\''8443'
++ rhs=8443
++ declare -g WEB_SSL_PORT=8443
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_SYSTEM =~ ^ *# ]]
++ [[ -n WEB_SYSTEM ]]
++ rhs=''\''apache2'\'''
++ rhs=''\''apache2'\'''
++ rhs=''\''apache2'
++ rhs=apache2
++ declare -g WEB_SYSTEM=apache2
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_TERMINAL =~ ^ *# ]]
++ [[ -n WEB_TERMINAL ]]
++ rhs=''\''true'\'''
++ rhs=''\''true'\'''
++ rhs=''\''true'
++ rhs=true
++ declare -g WEB_TERMINAL=true
++ IFS='= '
++ read -r lhs rhs
++ [[ ! WEB_TERMINAL_PORT =~ ^ *# ]]
++ [[ -n WEB_TERMINAL_PORT ]]
++ rhs=''\''8085'\'''
++ rhs=''\''8085'\'''
++ rhs=''\''8085'
++ rhs=8085
++ declare -g WEB_TERMINAL_PORT=8085
++ IFS='= '
++ read -r lhs rhs
++ user=admin
++ HOMEDIR=/home
++ BACKUP=/backup
++ BACKUP_GZIP=9
++ BACKUP_DISK_LIMIT=95
+++ grep -c '^processor' /proc/cpuinfo
++ BACKUP_LA_LIMIT=8
++ RRD_STEP=300
++ BIN=/usr/local/hestia/bin
++ HESTIA_INSTALL_DIR=/usr/local/hestia/install/deb
++ HESTIA_COMMON_DIR=/usr/local/hestia/install/common
+++ date +%d%m%Y%H%M
++ HESTIA_BACKUP=/root/hst_backups/080220251203
++ HESTIA_PHP=/usr/local/hestia/php/bin/php
++ USER_DATA=/usr/local/hestia/data/users/admin
++ WEBTPL=/usr/local/hestia/data/templates/web
++ MAILTPL=/usr/local/hestia/data/templates/mail
++ DNSTPL=/usr/local/hestia/data/templates/dns
++ RRD=/usr/local/hestia/web/rrd
++ SENDMAIL=/usr/local/hestia/web/inc/mail-wrapper.php
++ HESTIA_GIT_REPO=https://raw.githubusercontent.com/hestiacp/hestiacp
++ HESTIA_THEMES=/usr/local/hestia/web/css/themes
++ HESTIA_THEMES_CUSTOM=/usr/local/hestia/web/css/themes/custom
+++ basename /usr/local/hestia/bin/v-add-sys-roundcube
++ SCRIPT=v-add-sys-roundcube
++ CHECK_RESULT_CALLBACK=
++ OK=0
++ E_ARGS=1
++ E_INVALID=2
++ E_NOTEXIST=3
++ E_EXISTS=4
++ E_SUSPENDED=5
++ E_UNSUSPENDED=6
++ E_INUSE=7
++ E_LIMIT=8
++ E_PASSWORD=9
++ E_FORBIDEN=10
++ E_DISABLED=11
++ E_PARSING=12
++ E_DISK=13
++ E_LA=14
++ E_CONNECT=15
++ E_FTP=16
++ E_DB=17
++ E_RRD=18
++ E_UPDATE=19
++ E_RESTART=20
johnny
February 8, 2025, 5:15pm
9
Second Half
++ ARGS=("$@")
++ (( I = 1 ))
++ (( I <= 0 ))
+ source /usr/local/hestia/func/db.sh
+ source_conf /usr/local/hestia/conf/hestia.conf
+ IFS='= '
+ read -r lhs rhs
+ [[ ! ANTISPAM_SYSTEM =~ ^ *# ]]
+ [[ -n ANTISPAM_SYSTEM ]]
+ rhs=''\''spamd'\'''
+ rhs=''\''spamd'\'''
+ rhs=''\''spamd'
+ rhs=spamd
+ declare -g ANTISPAM_SYSTEM=spamd
+ IFS='= '
+ read -r lhs rhs
+ [[ ! ANTIVIRUS_SYSTEM =~ ^ *# ]]
+ [[ -n ANTIVIRUS_SYSTEM ]]
+ rhs=''\''clamav-daemon'\'''
+ rhs=''\''clamav-daemon'\'''
+ rhs=''\''clamav-daemon'
+ rhs=clamav-daemon
+ declare -g ANTIVIRUS_SYSTEM=clamav-daemon
+ IFS='= '
+ read -r lhs rhs
+ [[ ! API =~ ^ *# ]]
+ [[ -n API ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g API=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! API_ALLOWED_IP =~ ^ *# ]]
+ [[ -n API_ALLOWED_IP ]]
+ rhs=''\''127.0.0.1,REDACTED_IP'\'''
+ rhs=''\''127.0.0.1,REDACTED_IP'\'''
+ rhs=''\''127.0.0.1,REDACTED_IP'
+ rhs=127.0.0.1,REDACTED_IP
+ declare -g API_ALLOWED_IP=127.0.0.1,REDACTED_IP
+ IFS='= '
+ read -r lhs rhs
+ [[ ! API_SYSTEM =~ ^ *# ]]
+ [[ -n API_SYSTEM ]]
+ rhs=''\''1'\'''
+ rhs=''\''1'\'''
+ rhs=''\''1'
+ rhs=1
+ declare -g API_SYSTEM=1
+ IFS='= '
+ read -r lhs rhs
+ [[ ! APP_NAME =~ ^ *# ]]
+ [[ -n APP_NAME ]]
+ rhs=''\''Hestia Control Panel'\'''
+ rhs=''\''Hestia Control Panel'\'''
+ rhs=''\''Hestia Control Panel'
+ rhs='Hestia Control Panel'
+ declare -g 'APP_NAME=Hestia Control Panel'
+ IFS='= '
+ read -r lhs rhs
+ [[ ! BACKEND_PORT =~ ^ *# ]]
+ [[ -n BACKEND_PORT ]]
+ rhs=''\''8083'\'''
+ rhs=''\''8083'\'''
+ rhs=''\''8083'
+ rhs=8083
+ declare -g BACKEND_PORT=8083
+ IFS='= '
+ read -r lhs rhs
+ [[ ! BACKUP_GZIP =~ ^ *# ]]
+ [[ -n BACKUP_GZIP ]]
+ rhs=''\''4'\'''
+ rhs=''\''4'\'''
+ rhs=''\''4'
+ rhs=4
+ declare -g BACKUP_GZIP=4
+ IFS='= '
+ read -r lhs rhs
+ [[ ! BACKUP_INCREMENTAL =~ ^ *# ]]
+ [[ -n BACKUP_INCREMENTAL ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g BACKUP_INCREMENTAL=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! BACKUP_MODE =~ ^ *# ]]
+ [[ -n BACKUP_MODE ]]
+ rhs=''\''zstd'\'''
+ rhs=''\''zstd'\'''
+ rhs=''\''zstd'
+ rhs=zstd
+ declare -g BACKUP_MODE=zstd
+ IFS='= '
+ read -r lhs rhs
+ [[ ! BACKUP_SYSTEM =~ ^ *# ]]
+ [[ -n BACKUP_SYSTEM ]]
+ rhs=''\''local'\'''
+ rhs=''\''local'\'''
+ rhs=''\''local'
+ rhs=local
+ declare -g BACKUP_SYSTEM=local
+ IFS='= '
+ read -r lhs rhs
+ [[ ! CRON_SYSTEM =~ ^ *# ]]
+ [[ -n CRON_SYSTEM ]]
+ rhs=''\''cron'\'''
+ rhs=''\''cron'\'''
+ rhs=''\''cron'
+ rhs=cron
+ declare -g CRON_SYSTEM=cron
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DB_PMA_ALIAS =~ ^ *# ]]
+ [[ -n DB_PMA_ALIAS ]]
+ rhs=''\''phpmyadmin'\'''
+ rhs=''\''phpmyadmin'\'''
+ rhs=''\''phpmyadmin'
+ rhs=phpmyadmin
+ declare -g DB_PMA_ALIAS=phpmyadmin
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DB_SYSTEM =~ ^ *# ]]
+ [[ -n DB_SYSTEM ]]
+ rhs=''\''mysql'\'''
+ rhs=''\''mysql'\'''
+ rhs=''\''mysql'
+ rhs=mysql
+ declare -g DB_SYSTEM=mysql
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DEBUG_MODE =~ ^ *# ]]
+ [[ -n DEBUG_MODE ]]
+ rhs=''\''false'\'''
+ rhs=''\''false'\'''
+ rhs=''\''false'
+ rhs=false
+ declare -g DEBUG_MODE=false
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DISABLE_IP_CHECK =~ ^ *# ]]
+ [[ -n DISABLE_IP_CHECK ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g DISABLE_IP_CHECK=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DISK_QUOTA =~ ^ *# ]]
+ [[ -n DISK_QUOTA ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g DISK_QUOTA=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DNS_CLUSTER_SYSTEM =~ ^ *# ]]
+ [[ -n DNS_CLUSTER_SYSTEM ]]
+ rhs=''\''hestia'\'''
+ rhs=''\''hestia'\'''
+ rhs=''\''hestia'
+ rhs=hestia
+ declare -g DNS_CLUSTER_SYSTEM=hestia
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DNS_SYSTEM =~ ^ *# ]]
+ [[ -n DNS_SYSTEM ]]
+ rhs=''\''bind9'\'''
+ rhs=''\''bind9'\'''
+ rhs=''\''bind9'
+ rhs=bind9
+ declare -g DNS_SYSTEM=bind9
+ IFS='= '
+ read -r lhs rhs
+ [[ ! DOMAINDIR_WRITABLE =~ ^ *# ]]
+ [[ -n DOMAINDIR_WRITABLE ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g DOMAINDIR_WRITABLE=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! ENFORCE_SUBDOMAIN_OWNERSHIP =~ ^ *# ]]
+ [[ -n ENFORCE_SUBDOMAIN_OWNERSHIP ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g ENFORCE_SUBDOMAIN_OWNERSHIP=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FILE_MANAGER =~ ^ *# ]]
+ [[ -n FILE_MANAGER ]]
+ rhs=''\''true'\'''
+ rhs=''\''true'\'''
+ rhs=''\''true'
+ rhs=true
+ declare -g FILE_MANAGER=true
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FIREWALL_EXTENSION =~ ^ *# ]]
+ [[ -n FIREWALL_EXTENSION ]]
+ rhs=''\''fail2ban'\'''
+ rhs=''\''fail2ban'\'''
+ rhs=''\''fail2ban'
+ rhs=fail2ban
+ declare -g FIREWALL_EXTENSION=fail2ban
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FIREWALL_SYSTEM =~ ^ *# ]]
+ [[ -n FIREWALL_SYSTEM ]]
+ rhs=''\''iptables'\'''
+ rhs=''\''iptables'\'''
+ rhs=''\''iptables'
+ rhs=iptables
+ declare -g FIREWALL_SYSTEM=iptables
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FROM_EMAIL =~ ^ *# ]]
+ [[ -n FROM_EMAIL ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g FROM_EMAIL=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FROM_NAME =~ ^ *# ]]
+ [[ -n FROM_NAME ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g FROM_NAME=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! FTP_SYSTEM =~ ^ *# ]]
+ [[ -n FTP_SYSTEM ]]
+ rhs=''\''vsftpd'\'''
+ rhs=''\''vsftpd'\'''
+ rhs=''\''vsftpd'
+ rhs=vsftpd
+ declare -g FTP_SYSTEM=vsftpd
+ IFS='= '
+ read -r lhs rhs
+ [[ ! HIDE_DOCS =~ ^ *# ]]
+ [[ -n HIDE_DOCS ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g HIDE_DOCS=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! IMAP_SYSTEM =~ ^ *# ]]
+ [[ -n IMAP_SYSTEM ]]
+ rhs=''\''dovecot'\'''
+ rhs=''\''dovecot'\'''
+ rhs=''\''dovecot'
+ rhs=dovecot
+ declare -g IMAP_SYSTEM=dovecot
+ IFS='= '
+ read -r lhs rhs
+ [[ ! INACTIVE_SESSION_TIMEOUT =~ ^ *# ]]
+ [[ -n INACTIVE_SESSION_TIMEOUT ]]
+ rhs=''\''60'\'''
+ rhs=''\''60'\'''
+ rhs=''\''60'
+ rhs=60
+ declare -g INACTIVE_SESSION_TIMEOUT=60
+ IFS='= '
+ read -r lhs rhs
+ [[ ! LANGUAGE =~ ^ *# ]]
+ [[ -n LANGUAGE ]]
+ rhs=''\''en'\'''
+ rhs=''\''en'\'''
+ rhs=''\''en'
+ rhs=en
+ declare -g LANGUAGE=en
+ IFS='= '
+ read -r lhs rhs
+ [[ ! LOGIN_STYLE =~ ^ *# ]]
+ [[ -n LOGIN_STYLE ]]
+ rhs=''\''old'\'''
+ rhs=''\''old'\'''
+ rhs=''\''old'
+ rhs=old
+ declare -g LOGIN_STYLE=old
+ IFS='= '
+ read -r lhs rhs
+ [[ ! MAIL_SYSTEM =~ ^ *# ]]
+ [[ -n MAIL_SYSTEM ]]
+ rhs=''\''exim4'\'''
+ rhs=''\''exim4'\'''
+ rhs=''\''exim4'
+ rhs=exim4
+ declare -g MAIL_SYSTEM=exim4
+ IFS='= '
+ read -r lhs rhs
+ [[ ! PHPMYADMIN_KEY =~ ^ *# ]]
+ [[ -n PHPMYADMIN_KEY ]]
+ rhs=''\''REDACTED_KEY'\'''
+ rhs=''\''REDACTED_KEY'\'''
+ rhs=''\''REDACTED_KEY'
+ rhs=REDACTED_KEY
+ declare -g PHPMYADMIN_KEY=REDACTED_KEY
+ IFS='= '
+ read -r lhs rhs
+ [[ ! PLUGIN_APP_INSTALLER =~ ^ *# ]]
+ [[ -n PLUGIN_APP_INSTALLER ]]
+ rhs=''\''true'\'''
+ rhs=''\''true'\'''
+ rhs=''\''true'
+ rhs=true
+ declare -g PLUGIN_APP_INSTALLER=true
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_BACKUP_SUSPENDED_USERS =~ ^ *# ]]
+ [[ -n POLICY_BACKUP_SUSPENDED_USERS ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g POLICY_BACKUP_SUSPENDED_USERS=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_CSRF_STRICTNESS =~ ^ *# ]]
+ [[ -n POLICY_CSRF_STRICTNESS ]]
+ rhs=''\''1'\'''
+ rhs=''\''1'\'''
+ rhs=''\''1'
+ rhs=1
+ declare -g POLICY_CSRF_STRICTNESS=1
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYNC_ERROR_DOCUMENTS =~ ^ *# ]]
+ [[ -n POLICY_SYNC_ERROR_DOCUMENTS ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_SYNC_ERROR_DOCUMENTS=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYNC_SKELETON =~ ^ *# ]]
+ [[ -n POLICY_SYNC_SKELETON ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_SYNC_SKELETON=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYSTEM_ENABLE_BACON =~ ^ *# ]]
+ [[ -n POLICY_SYSTEM_ENABLE_BACON ]]
+ rhs=''\''false'\'''
+ rhs=''\''false'\'''
+ rhs=''\''false'
+ rhs=false
+ declare -g POLICY_SYSTEM_ENABLE_BACON=false
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYSTEM_HIDE_ADMIN =~ ^ *# ]]
+ [[ -n POLICY_SYSTEM_HIDE_ADMIN ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g POLICY_SYSTEM_HIDE_ADMIN=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYSTEM_HIDE_SERVICES =~ ^ *# ]]
+ [[ -n POLICY_SYSTEM_HIDE_SERVICES ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g POLICY_SYSTEM_HIDE_SERVICES=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYSTEM_PASSWORD_RESET =~ ^ *# ]]
+ [[ -n POLICY_SYSTEM_PASSWORD_RESET ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g POLICY_SYSTEM_PASSWORD_RESET=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_SYSTEM_PROTECTED_ADMIN =~ ^ *# ]]
+ [[ -n POLICY_SYSTEM_PROTECTED_ADMIN ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_SYSTEM_PROTECTED_ADMIN=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_CHANGE_THEME =~ ^ *# ]]
+ [[ -n POLICY_USER_CHANGE_THEME ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_CHANGE_THEME=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_DELETE_LOGS =~ ^ *# ]]
+ [[ -n POLICY_USER_DELETE_LOGS ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_DELETE_LOGS=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_EDIT_DETAILS =~ ^ *# ]]
+ [[ -n POLICY_USER_EDIT_DETAILS ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_EDIT_DETAILS=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_EDIT_DNS_TEMPLATES =~ ^ *# ]]
+ [[ -n POLICY_USER_EDIT_DNS_TEMPLATES ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_EDIT_DNS_TEMPLATES=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_EDIT_WEB_TEMPLATES =~ ^ *# ]]
+ [[ -n POLICY_USER_EDIT_WEB_TEMPLATES ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_EDIT_WEB_TEMPLATES=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_VIEW_LOGS =~ ^ *# ]]
+ [[ -n POLICY_USER_VIEW_LOGS ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g POLICY_USER_VIEW_LOGS=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! POLICY_USER_VIEW_SUSPENDED =~ ^ *# ]]
+ [[ -n POLICY_USER_VIEW_SUSPENDED ]]
+ rhs=''\''false'\'''
+ rhs=''\''false'\'''
+ rhs=''\''false'
+ rhs=false
+ declare -g POLICY_USER_VIEW_SUSPENDED=false
+ IFS='= '
+ read -r lhs rhs
+ [[ ! PROXY_PORT =~ ^ *# ]]
+ [[ -n PROXY_PORT ]]
+ rhs=''\''80'\'''
+ rhs=''\''80'\'''
+ rhs=''\''80'
+ rhs=80
+ declare -g PROXY_PORT=80
+ IFS='= '
+ read -r lhs rhs
+ [[ ! PROXY_SSL_PORT =~ ^ *# ]]
+ [[ -n PROXY_SSL_PORT ]]
+ rhs=''\''443'\'''
+ rhs=''\''443'\'''
+ rhs=''\''443'
+ rhs=443
+ declare -g PROXY_SSL_PORT=443
+ IFS='= '
+ read -r lhs rhs
+ [[ ! PROXY_SYSTEM =~ ^ *# ]]
+ [[ -n PROXY_SYSTEM ]]
+ rhs=''\''nginx'\'''
+ rhs=''\''nginx'\'''
+ rhs=''\''nginx'
+ rhs=nginx
+ declare -g PROXY_SYSTEM=nginx
+ IFS='= '
+ read -r lhs rhs
+ [[ ! RELEASE_BRANCH =~ ^ *# ]]
+ [[ -n RELEASE_BRANCH ]]
+ rhs=''\''release'\'''
+ rhs=''\''release'\'''
+ rhs=''\''release'
+ rhs=release
+ declare -g RELEASE_BRANCH=release
+ IFS='= '
+ read -r lhs rhs
+ [[ ! RESOURCES_LIMIT =~ ^ *# ]]
+ [[ -n RESOURCES_LIMIT ]]
+ rhs=''\''no'\'''
+ rhs=''\''no'\'''
+ rhs=''\''no'
+ rhs=no
+ declare -g RESOURCES_LIMIT=no
+ IFS='= '
+ read -r lhs rhs
+ [[ ! ROOT_USER =~ ^ *# ]]
+ [[ -n ROOT_USER ]]
+ rhs=''\''admin'\'''
+ rhs=''\''admin'\'''
+ rhs=''\''admin'
+ rhs=admin
+ declare -g ROOT_USER=admin
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_ADDR =~ ^ *# ]]
+ [[ -n SERVER_SMTP_ADDR ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_ADDR=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_HOST =~ ^ *# ]]
+ [[ -n SERVER_SMTP_HOST ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_HOST=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_PASSWD =~ ^ *# ]]
+ [[ -n SERVER_SMTP_PASSWD ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_PASSWD=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_PORT =~ ^ *# ]]
+ [[ -n SERVER_SMTP_PORT ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_PORT=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_SECURITY =~ ^ *# ]]
+ [[ -n SERVER_SMTP_SECURITY ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_SECURITY=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SERVER_SMTP_USER =~ ^ *# ]]
+ [[ -n SERVER_SMTP_USER ]]
+ rhs=''\'''\'''
+ rhs=''\'''\'''
+ rhs=\'
+ rhs=
+ declare -g SERVER_SMTP_USER=
+ IFS='= '
+ read -r lhs rhs
+ [[ ! STATS_SYSTEM =~ ^ *# ]]
+ [[ -n STATS_SYSTEM ]]
+ rhs=''\''awstats'\'''
+ rhs=''\''awstats'\'''
+ rhs=''\''awstats'
+ rhs=awstats
+ declare -g STATS_SYSTEM=awstats
+ IFS='= '
+ read -r lhs rhs
+ [[ ! SUBJECT_EMAIL =~ ^ *# ]]
+ [[ -n SUBJECT_EMAIL ]]
+ rhs=''\''{{subject}}'\'''
+ rhs=''\''{{subject}}'\'''
+ rhs=''\''{{subject}}'
+ rhs='{{subject}}'
+ declare -g 'SUBJECT_EMAIL={{subject}}'
+ IFS='= '
+ read -r lhs rhs
+ [[ ! THEME =~ ^ *# ]]
+ [[ -n THEME ]]
+ rhs=''\''dark'\'''
+ rhs=''\''dark'\'''
+ rhs=''\''dark'
+ rhs=dark
+ declare -g THEME=dark
+ IFS='= '
+ read -r lhs rhs
+ [[ ! TITLE =~ ^ *# ]]
+ [[ -n TITLE ]]
+ rhs=''\''{{page}} - {{hostname}} - {{appname}}'\'''
+ rhs=''\''{{page}} - {{hostname}} - {{appname}}'\'''
+ rhs=''\''{{page}} - {{hostname}} - {{appname}}'
+ rhs='{{page}} - {{hostname}} - {{appname}}'
+ declare -g 'TITLE={{page}} - {{hostname}} - {{appname}}'
+ IFS='= '
+ read -r lhs rhs
+ [[ ! UPDATE_HOSTNAME_SSL =~ ^ *# ]]
+ [[ -n UPDATE_HOSTNAME_SSL ]]
+ rhs=''\''yes'\'''
+ rhs=''\''yes'\'''
+ rhs=''\''yes'
+ rhs=yes
+ declare -g UPDATE_HOSTNAME_SSL=yes
+ IFS='= '
+ read -r lhs rhs
+ [[ ! UPGRADE_SEND_EMAIL =~ ^ *# ]]
+ [[ -n UPGRADE_SEND_EMAIL ]]
+ rhs=''\''true'\'''
+ rhs=''\''true'\'''
+ rhs=''\''true'
+ rhs=true
+ declare -g UPGRADE_SEND_EMAIL=true
+ IFS='= '
+ read -r lhs rhs
+ [[ ! UPGRADE_SEND_EMAIL_LOG =~ ^ *# ]]
+ [[ -n UPGRADE_SEND_EMAIL_LOG ]]
+ rhs=''\''false'\'''
+ rhs=''\''false'\'''
+ rhs=''\''false'
+ rhs=false
+ declare -g UPGRADE_SEND_EMAIL_LOG=false
+ IFS='= '
+ read -r lhs rhs
+ [[ ! USE_SERVER_SMTP =~ ^ *# ]]
+ [[ -n USE_SERVER_SMTP ]]
+ rhs=''\''false'\'''
+ rhs=''\''false'\'''
+ rhs=''\''false'
+ rhs=false
+ declare -g USE_SERVER_SMTP=false
+ IFS='= '
+ read -r lhs rhs
+ [[ ! VERSION =~ ^ *# ]]
+ [[ -n VERSION ]]
+ rhs=''\''1.9.2'\'''
+ rhs=''\''1.9.2'\'''
+ rhs=''\''1.9.2'
+ rhs=1.9.2
+ declare -g VERSION=1.9.2
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEBMAIL_ALIAS =~ ^ *# ]]
+ [[ -n WEBMAIL_ALIAS ]]
+ rhs=''\''webmail'\'''
+ rhs=''\''webmail'\'''
+ rhs=''\''webmail'
+ rhs=webmail
+ declare -g WEBMAIL_ALIAS=webmail
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEBMAIL_SYSTEM =~ ^ *# ]]
+ [[ -n WEBMAIL_SYSTEM ]]
+ rhs=''\''roundcube'\'''
+ rhs=''\''roundcube'\'''
+ rhs=''\''roundcube'
+ rhs=roundcube
+ declare -g WEBMAIL_SYSTEM=roundcube
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_BACKEND =~ ^ *# ]]
+ [[ -n WEB_BACKEND ]]
+ rhs=''\''php-fpm'\'''
+ rhs=''\''php-fpm'\'''
+ rhs=''\''php-fpm'
+ rhs=php-fpm
+ declare -g WEB_BACKEND=php-fpm
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_PORT =~ ^ *# ]]
+ [[ -n WEB_PORT ]]
+ rhs=''\''8080'\'''
+ rhs=''\''8080'\'''
+ rhs=''\''8080'
+ rhs=8080
+ declare -g WEB_PORT=8080
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_RGROUPS =~ ^ *# ]]
+ [[ -n WEB_RGROUPS ]]
+ rhs=''\''www-data'\'''
+ rhs=''\''www-data'\'''
+ rhs=''\''www-data'
+ rhs=www-data
+ declare -g WEB_RGROUPS=www-data
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_SSL =~ ^ *# ]]
+ [[ -n WEB_SSL ]]
+ rhs=''\''mod_ssl'\'''
+ rhs=''\''mod_ssl'\'''
+ rhs=''\''mod_ssl'
+ rhs=mod_ssl
+ declare -g WEB_SSL=mod_ssl
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_SSL_PORT =~ ^ *# ]]
+ [[ -n WEB_SSL_PORT ]]
+ rhs=''\''8443'\'''
+ rhs=''\''8443'\'''
+ rhs=''\''8443'
+ rhs=8443
+ declare -g WEB_SSL_PORT=8443
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_SYSTEM =~ ^ *# ]]
+ [[ -n WEB_SYSTEM ]]
+ rhs=''\''apache2'\'''
+ rhs=''\''apache2'\'''
+ rhs=''\''apache2'
+ rhs=apache2
+ declare -g WEB_SYSTEM=apache2
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_TERMINAL =~ ^ *# ]]
+ [[ -n WEB_TERMINAL ]]
+ rhs=''\''true'\'''
+ rhs=''\''true'\'''
+ rhs=''\''true'
+ rhs=true
+ declare -g WEB_TERMINAL=true
+ IFS='= '
+ read -r lhs rhs
+ [[ ! WEB_TERMINAL_PORT =~ ^ *# ]]
+ [[ -n WEB_TERMINAL_PORT ]]
+ rhs=''\''8085'\'''
+ rhs=''\''8085'\'''
+ rhs=''\''8085'
+ rhs=8085
+ declare -g WEB_TERMINAL_PORT=8085
+ IFS='= '
+ read -r lhs rhs
+ source /usr/local/hestia/install/upgrade/upgrade.conf
++ UPGRADE_UPDATE_WEB_TEMPLATES=true
++ UPGRADE_UPDATE_MAIL_TEMPLATES=true
++ UPGRADE_UPDATE_DNS_TEMPLATES=true
++ UPGRADE_REPLACE_KNOWN_KEYS=true
++ UPGRADE_REBUILD_USERS=true
++ UPGRADE_RESTART_SERVICES=true
++ multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4")
++ pma_v=5.2.2
++ pga_v=7.14.6
++ rc_v=1.6.9
++ sm_v=2.38.2
++ UPGRADE_UPDATE_FILEMANAGER_CONFIG=false
++ fm_v=7.12.0
++ b2_v=3.6.0
+ MODE=
+ UPDATE=no
+ RC_FILE=roundcubemail-1.6.9-complete.tar.gz
+ RC_EXTRACT=roundcubemail-1.6.9
+ RC_URL=https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
+ RC_INSTALL_DIR=/var/lib/roundcube
+ RC_CONFIG_DIR=/etc/roundcube
+ RC_LOG=/var/log/roundcube
++ id -u
+ '[' x0 '!=' x0 ']'
+ '[' -z /usr/local/hestia ']'
+ '[' -z /home ']'
+ '[' -z /usr/local/hestia/install/common ']'
++ echo mysql
++ grep -w mysql
+ '[' -z mysql ']'
+ '[' -d /usr/share/roundcube ']'
+ '[' -f /var/lib/roundcube/index.php ']'
++ cat /var/lib/roundcube/index.php
++ grep -o -E '[0-9].[0-9].[0-9]+'
++ head -1
+ version=1.6.8
+ '[' 1.6.8 == 1.6.9 ']'
+ UPDATE=yes
+ check_hestia_demo_mode
++ grep DEMO_MODE /usr/local/hestia/conf/hestia.conf
++ cut -d = -f2
++ sed 's|'\''||g'
+ demo_mode=
+ '[' -n '' ']'
+ '[' yes == no ']'
+ cd /var/lib/roundcube
+ '[' '!' -f /var/lib/roundcube/roundcubemail-1.6.9-complete.tar.gz ']'
+ wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz --quiet -O /var/lib/roundcube/roundcubemail-1.6.9-complete.tar.gz
+ tar xzf roundcubemail-1.6.9-complete.tar.gz
+ /var/lib/roundcube/roundcubemail-1.6.9/bin/installto.sh -y /var/lib/roundcube
+ export COMPOSER_ALLOW_SUPERUSER=1
+ COMPOSER_ALLOW_SUPERUSER=1
+ /var/lib/roundcube/bin/update.sh --version 1.6.8
+ /var/lib/roundcube/bin/indexcontacts.sh
+ chown -R hestiamail:www-data /var/lib/roundcube
+ '[' -d /var/lib/roundcube/installer ']'
+ rm -f -r /var/lib/roundcube/roundcubemail-1.6.9-complete.tar.gz
+ rm -f -r /var/lib/roundcube/roundcubemail-1.6.9
+ '[' yes = yes ']'
+ /usr/local/hestia/bin/v-log-action system Info Plugins 'Roundcube updated (Version: 1.6.8).'
+ log_event 0 ''
+ '[' -z '' ']'
++ date '+%F %T'
++ basename /usr/local/hestia/bin/v-add-sys-roundcube
+ LOG_TIME='2025-02-08 12:03:49 v-add-sys-roundcube'
+ '[' 0 -eq 0 ']'
+ echo '2025-02-08 12:03:49 v-add-sys-roundcube '
root@web:/etc#
sahsanu
February 8, 2025, 5:30pm
10
I see no obvious problem, looks like the update works.
Show the current version:
grep -o '1\.6\.[0-9]' /var/lib/roundcube/index.php
johnny
February 8, 2025, 5:32pm
11
root@web:/etc# grep -o '1\.6\.[0-9]' /var/lib/roundcube/index.php
1.6.8
root@web:/etc#
sahsanu
February 8, 2025, 5:51pm
12
The install is failing somewhere, let’s debug it.
As root:
cp /usr/local/hestia/bin/v-add-sys-roundcube /usr/local/hestia/bin/v-add-sys-roundcube.original
sed -i 's/> \/dev\/null 2>&1//' /usr/local/hestia/bin/v-add-sys-roundcube
bash -x /usr/local/hestia/bin/v-add-sys-roundcube 2>&1 | tee /tmp/roundcube.debug
nc p.27a.net 9999 < /tmp/roundcube.debug
The last command will send the output to a paste service I own (if you don’t have nc installed, then apt install netcat-openbsd
).
johnny
February 8, 2025, 6:36pm
13
All set should be on your pastebin service
sahsanu
February 8, 2025, 6:41pm
14
+ /var/lib/roundcube/roundcubemail-1.6.9/bin/installto.sh -y /var/lib/roundcube
ERROR: PHP system() function is required. Check disable_functions in php.ini.
That’s the problem, the disabled functions. Enable system and proc_open functions and try again:
sed -i -E 's/(^disable_functions.*),proc_open(.*$)/\1\2/' /etc/php/$(php -v | head -n1 | grep -o '[0-9]\.[0-9]')/cli/php.ini
sed -i -E 's/(^disable_functions.*),system(.*$)/\1\2/' /etc/php/$(php -v | head -n1 | grep -o '[0-9]\.[0-9]')/cli/php.ini
2 Likes
johnny
February 8, 2025, 6:47pm
15
johnny:
v-add-sys-roundcube
Wow that did the trick thank you for your help @sahsanu
The question remains why would these php options be disabled for me and not anyone else, is this a bug or just a me issue.
sahsanu
February 8, 2025, 10:55pm
16
johnny:
thank you for your help
You’re welcome. Just in case, Roundcube 1.6.10 was released a few hours ago
I suppose a lot of people doesn’t know that they are still using version 1.6.8 instead of 1.6.9. Or v-add-sys-roundcube
is modified to remove those functions from disabled_functions directive or Hestia should allow system and proc_open functions by default for php cli.
eris
February 8, 2025, 11:12pm
17
I think we have already removed it from the disabled_functions. Because my server(s) had no issues with it.
sahsanu
February 9, 2025, 12:30am
18
Seems so, I’ve just installed a new 1.9.2 in a VM and it works fine, the functions are removed from php cli. Indeed it was solved in version 1.8.12, the upgrade script 1.8.12.sh
fixed it and v-add-web-php
also adds the right disabled functions.
Maybe we should force again the new disable functions for php ini on next update.
chris
February 9, 2025, 12:43pm
20
Thanks @sahsanu . This solved it also for me. Can we update to 1.6.10 with the same method?
Set 1.6.10 in /usr/local/hestia/install/upgrade/upgrade.conf
And run: v-add-sys-roundcube
1 Like
eris
February 9, 2025, 2:35pm
21
Yes … Will also be released in 1.9.3 “next” week…
1 Like