Browse Source

Update all non-major dependencies (#4158)

* Update all non-major dependencies

* Add v-generate-password-hash to ignore list

* Run npm format again

---------

Co-authored-by: Jaap Marcus <[email protected]>
hestiacp-bot 2 years ago
parent
commit
2d190af625

+ 3 - 0
.prettierignore

@@ -17,6 +17,9 @@
 # Bats seems to break Prettier
 *.bats
 
+# Bin folder
+/bin/v-generate-password-hash
+
 # Exclude bats submodules if present
 /test/test_helper/*
 

+ 1 - 1
bin/v-add-backup-host

@@ -246,7 +246,7 @@ if [ "$type" = 'sftp' ]; then
 		case $rc in
 			$E_CONNECT) echo "Error: can't login to sftp $user@$host" ;;
 			$E_FTP) echo "Error: can't create temp folder on the sftp host" ;;
-			*) echo "Error Unable to connect via sftp.";;
+			*) echo "Error Unable to connect via sftp." ;;
 		esac
 		log_event "$rc" "$ARGUMENTS"
 		exit "$rc"

+ 1 - 1
bin/v-add-sys-quota

@@ -32,7 +32,7 @@ if ! find "/lib/modules/$(uname -r)" -type f -name '*quota_v*.ko*' | grep -q '.*
 fi
 
 # Checking quota package
-if ! type -P quota &>/dev/null; then
+if ! type -P quota &> /dev/null; then
 	if [ -f "/etc/redhat-release" ]; then
 		dnf -y install quota > /dev/null 2>&1
 	else

+ 35 - 35
bin/v-change-sys-hostname

@@ -37,58 +37,58 @@ check_hestia_demo_mode
 
 current_hostname="$(hostname)"
 if [[ "$current_hostname" == "$domain" ]]; then
-        echo "Current hostname \"$current_hostname\" is the same as the new one you want to use"
-        echo "I'm not going to change it"
-        exit
+	echo "Current hostname \"$current_hostname\" is the same as the new one you want to use"
+	echo "I'm not going to change it"
+	exit
 fi
 
 hostname "$domain"
 if [ -d "/etc/sysconfig" ]; then
-        # RHEL/CentOS/Amazon
-        touch /etc/sysconfig/network
-        if [ -z "$(grep HOSTNAME /etc/sysconfig/network)" ]; then
-                echo "HOSTNAME='$domain'" >>/etc/sysconfig/network
-        else
-                sed -i "s/HOSTNAME=.*/HOSTNAME='$domain'/" /etc/sysconfig/network
-        fi
+	# RHEL/CentOS/Amazon
+	touch /etc/sysconfig/network
+	if [ -z "$(grep HOSTNAME /etc/sysconfig/network)" ]; then
+		echo "HOSTNAME='$domain'" >> /etc/sysconfig/network
+	else
+		sed -i "s/HOSTNAME=.*/HOSTNAME='$domain'/" /etc/sysconfig/network
+	fi
 else
-        # Debian/Ubuntu
-        hostnamectl set-hostname "$domain"
-        echo "$domain" >/etc/hostname
+	# Debian/Ubuntu
+	hostnamectl set-hostname "$domain"
+	echo "$domain" > /etc/hostname
 fi
 
 # Update webmail's password plugin configuration
 if [ -d /etc/roundcube/ ]; then
-        sed -i "/password_hestia_host/c\$rcmail_config['password_hestia_host'] = '$domain';" /etc/roundcube/plugins/password/config.inc.php
+	sed -i "/password_hestia_host/c\$rcmail_config['password_hestia_host'] = '$domain';" /etc/roundcube/plugins/password/config.inc.php
 fi
 if [ -d /etc/rainloop/ ]; then
-        sed -i "/hestia_host/c\hestia_host = \"$domain\"" /etc/rainloop/data/_data_/_default_/configs/plugin-hestia-change-password.ini
+	sed -i "/hestia_host/c\hestia_host = \"$domain\"" /etc/rainloop/data/_data_/_default_/configs/plugin-hestia-change-password.ini
 fi
 if [ -d /etc/snappymail/ ]; then
-        sed -i "/\"hestia_host\":/c\\\"hestia_host\": \"$domain\"," /etc/snappymail/data/_data_/_default_/configs/plugin-change-password.json
+	sed -i "/\"hestia_host\":/c\\\"hestia_host\": \"$domain\"," /etc/snappymail/data/_data_/_default_/configs/plugin-change-password.json
 fi
 
 # Update /etc/hosts
 if [ -f /etc/hosts ]; then
-        if grep -q -E "^127\.0\.0\.1\s{1,}${current_hostname}$" /etc/hosts; then
-                sed -i -E "s/127\.0\.0\.1\s{1,}${current_hostname}/127\.0\.0\.1 ${domain}/" /etc/hosts
-        else
-                echo "127.0.0.1 $domain" >>/etc/hosts
-        fi
-        # Check whether hostname entries are duplicated and remove all but the last one
-        ndup_hosts="$(grep -c -E "^127\.0\.0\.1\s{1,}${domain}$" /etc/hosts)"
-        if [[ "${ndup_hosts}" -gt "1" ]]; then
-                nlines_to_del="$((ndup_hosts - 1))"
-                lines_to_del="$(grep -n -E "^127\.0\.0\.1\s{1,}${domain}$" /etc/hosts | head -n${nlines_to_del} | awk -F ':' '{print $1}')"
-                for i in $lines_to_del; do
-                        if [[ -z $list_lines ]]; then
-                                list_lines="${i}d"
-                        else
-                                list_lines+=";${i}d"
-                        fi
-                done
-                sed -i "${list_lines}" /etc/hosts
-        fi
+	if grep -q -E "^127\.0\.0\.1\s{1,}${current_hostname}$" /etc/hosts; then
+		sed -i -E "s/127\.0\.0\.1\s{1,}${current_hostname}/127\.0\.0\.1 ${domain}/" /etc/hosts
+	else
+		echo "127.0.0.1 $domain" >> /etc/hosts
+	fi
+	# Check whether hostname entries are duplicated and remove all but the last one
+	ndup_hosts="$(grep -c -E "^127\.0\.0\.1\s{1,}${domain}$" /etc/hosts)"
+	if [[ "${ndup_hosts}" -gt "1" ]]; then
+		nlines_to_del="$((ndup_hosts - 1))"
+		lines_to_del="$(grep -n -E "^127\.0\.0\.1\s{1,}${domain}$" /etc/hosts | head -n${nlines_to_del} | awk -F ':' '{print $1}')"
+		for i in $lines_to_del; do
+			if [[ -z $list_lines ]]; then
+				list_lines="${i}d"
+			else
+				list_lines+=";${i}d"
+			fi
+		done
+		sed -i "${list_lines}" /etc/hosts
+	fi
 fi
 
 #----------------------------------------------------------#

+ 4 - 4
bin/v-delete-sys-quota

@@ -42,8 +42,8 @@ if [ -n "$(echo $opt | grep $fnd)" ]; then
 fi
 
 # Disabling group and user quota
-if quotaon="$(type -P quotaon 2>/dev/null)" && quotaoff="$(type -P quotaoff 2>/dev/null)"; then
-        if "${quotaon}" -pa | grep " $mnt " | grep 'user\|group' | grep -q 'is on' &>/dev/null; then
+if quotaon="$(type -P quotaon 2> /dev/null)" && quotaoff="$(type -P quotaoff 2> /dev/null)"; then
+	if "${quotaon}" -pa | grep " $mnt " | grep 'user\|group' | grep -q 'is on' &> /dev/null; then
 		"$quotaoff" "$mnt"
 	fi
 fi
@@ -55,10 +55,10 @@ done
 
 # Deleting cron job and forcequotacheck
 if [[ -f "/etc/cron.daily/quotacheck" ]]; then
-        rm -f "/etc/cron.daily/quotacheck"
+	rm -f "/etc/cron.daily/quotacheck"
 fi
 if [[ -f "/forcequotacheck" ]]; then
-        rm -f "/forcequotacheck"
+	rm -f "/forcequotacheck"
 fi
 
 # Updating hestia.conf value

+ 0 - 1
bin/v-dump-site

@@ -67,4 +67,3 @@ fi
 log_event "$OK" "$ARGUMENTS"
 
 exit
-

+ 4 - 4
bin/v-export-rrd

@@ -133,11 +133,11 @@ elif [ "$timespan" = "yearly" ]; then
 	start=$(date -d "1 year ago" +%s)
 	step=172800
 elif [ "$timespan" = "biennially" ]; then
-        start=$(date -d "2 year ago" +%s)
-        step=345600
+	start=$(date -d "2 year ago" +%s)
+	step=345600
 elif [ "$timespan" = "triennially" ]; then
-        start=$(date -d "3 year ago" +%s)
-        step=518400
+	start=$(date -d "3 year ago" +%s)
+	step=518400
 else
 	start=$(date -d "1 day ago" +%s)
 	# every 5min

+ 60 - 61
bin/v-import-cpanel

@@ -107,11 +107,11 @@ fi
 # Extract cPanel package name
 cpanel_package_name=$(cat ./cp/$new_user | grep 'PLAN=' | cut -f2 -d'=')
 if /usr/local/hestia/bin/v-list-user-packages | grep -qw "$cpanel_package_name"; then
-    hestia_package="$cpanel_package_name"
-    echo "Package $hestia_package will be used for the user."
+	hestia_package="$cpanel_package_name"
+	echo "Package $hestia_package will be used for the user."
 else
-    hestia_package="default"  # Replace "default" with your default Hestia package name
-    echo "Default package $hestia_package will be used for the user."
+	hestia_package="default" # Replace "default" with your default Hestia package name
+	echo "Default package $hestia_package will be used for the user."
 fi
 
 # Create a new user
@@ -258,18 +258,18 @@ CPANEL_PHP_VERSION=$(echo $CPANEL_PHP_VERSION | grep -oP '(?<=php)\d+')
 HESTIA_PHP_VERSION="PHP-${CPANEL_PHP_VERSION:0:1}_${CPANEL_PHP_VERSION:1}"
 
 if $BIN/v-list-web-templates-backend | grep -qw "$HESTIA_PHP_VERSION"; then
-    echo "Setting PHP version to $HESTIA_PHP_VERSION for $main_domain1 under user $new_user"
-    $BIN/v-change-web-domain-backend-tpl $new_user $main_domain1 $HESTIA_PHP_VERSION
-    if [ $? -ne 0 ]; then
-        echo "Failed to set PHP version for $main_domain1"
-        exit 1
-    else
-        echo "PHP version for $main_domain1 set to $HESTIA_PHP_VERSION"
-    fi
+	echo "Setting PHP version to $HESTIA_PHP_VERSION for $main_domain1 under user $new_user"
+	$BIN/v-change-web-domain-backend-tpl $new_user $main_domain1 $HESTIA_PHP_VERSION
+	if [ $? -ne 0 ]; then
+		echo "Failed to set PHP version for $main_domain1"
+		exit 1
+	else
+		echo "PHP version for $main_domain1 set to $HESTIA_PHP_VERSION"
+	fi
 else
-    echo "PHP version $HESTIA_PHP_VERSION is not installed on HestiaCP."
-    echo "Please install it before trying to set it for a domain."
-    exit 1
+	echo "PHP version $HESTIA_PHP_VERSION is not installed on HestiaCP."
+	echo "Please install it before trying to set it for a domain."
+	exit 1
 fi
 
 ##################
@@ -286,12 +286,12 @@ for folder in *; do
 			echo "Domain: $folder"
 			cd $folder
 
-            		mail_account_count=$(find . -maxdepth 1 -mindepth 1 -type d \( ! -name cur ! -name new ! -name tmp \) | wc -l)
-            		if [ "$mail_account_count" -eq 0 ]; then
-                		echo "No mail accounts to restore for domain $folder."
-                		cd ..
-                		continue
-            		fi
+			mail_account_count=$(find . -maxdepth 1 -mindepth 1 -type d \( ! -name cur ! -name new ! -name tmp \) | wc -l)
+			if [ "$mail_account_count" -eq 0 ]; then
+				echo "No mail accounts to restore for domain $folder."
+				cd ..
+				continue
+			fi
 
 			for mail_account in *; do
 				echo "Import mail account: $mail_account@$folder"
@@ -302,40 +302,40 @@ for folder in *; do
 				chown -R $new_user:mail /home/$new_user/mail/$folder/
 
 				# Decompress gzipped emails
-                		decompressed_count=0
-                		for mail_file in $(find /home/$new_user/mail/$folder -type f); do
-                    			if file "$mail_file" | grep -q "gzip compressed"; then
-				       		original_time=$(stat -c %y "$mail_file" 2>/dev/null)
-                        			gunzip -c "$mail_file" > "${mail_file}.decompressed" && mv "${mail_file}.decompressed" "$mail_file"
-                        			if [ ! -z "$original_time" ]; then
+				decompressed_count=0
+				for mail_file in $(find /home/$new_user/mail/$folder -type f); do
+					if file "$mail_file" | grep -q "gzip compressed"; then
+						original_time=$(stat -c %y "$mail_file" 2> /dev/null)
+						gunzip -c "$mail_file" > "${mail_file}.decompressed" && mv "${mail_file}.decompressed" "$mail_file"
+						if [ ! -z "$original_time" ]; then
 							touch -d "$original_time" "$mail_file"
-					        fi		
+						fi
 						let decompressed_count++
-                    			fi
-                		done
+					fi
+				done
+
+				echo "$decompressed_count emails decompressed for $mail_account@$folder"
 
-                		echo "$decompressed_count emails decompressed for $mail_account@$folder"
-              
 				find /home/$new_user/mail/$folder -type f -name 'dovecot*' -delete
 
 				# Extract and update password from the shadow file
 				password_file="../../etc/${folder}/shadow"
 				if [ -f "$password_file" ]; then
-    					pass_line=$(grep "^$mail_account:" $password_file)
-    					if [ $? -eq 0 ]; then
-        					# Extract the hashed password from the shadow file
-        					pass=$(echo "$pass_line" | awk -F ":" '{print $2}')  
-                				newline="${mail_account}:{SHA512-CRYPT}$pass:${new_user}:mail::/home/${new_user}:0"
-                				newline2="ACCOUNT='${mail_account}' ALIAS='' AUTOREPLY='no' FWD='' FWD_ONLY='' MD5='{SHA512-CRYPT}$pass' QUOTA='unlimited' U_DISK='0' SUSPENDED='no' TIME='$time' DATE='$date'"
-                				escaped=$(printf '%s\n' "$newline" | sed -e 's/[\/&]/\\&/g')
-                				escaped2=$(printf '%s\n' "$newline2" | sed -e 's/[\/&]/\\&/g')
-                				sed -i "s/^${mail_account}:.*/$escaped/g" /home/${new_user}/conf/mail/${folder}/passwd
-                				sed -i "s/^ACCOUNT='${mail_account}.*/$escaped2/g" /usr/local/hestia/data/users/${new_user}/mail/${folder}.conf
-    					else
-        					echo "Warning: Password for $mail_account@$folder not found in shadow file."
-    					fi
+					pass_line=$(grep "^$mail_account:" $password_file)
+					if [ $? -eq 0 ]; then
+						# Extract the hashed password from the shadow file
+						pass=$(echo "$pass_line" | awk -F ":" '{print $2}')
+						newline="${mail_account}:{SHA512-CRYPT}$pass:${new_user}:mail::/home/${new_user}:0"
+						newline2="ACCOUNT='${mail_account}' ALIAS='' AUTOREPLY='no' FWD='' FWD_ONLY='' MD5='{SHA512-CRYPT}$pass' QUOTA='unlimited' U_DISK='0' SUSPENDED='no' TIME='$time' DATE='$date'"
+						escaped=$(printf '%s\n' "$newline" | sed -e 's/[\/&]/\\&/g')
+						escaped2=$(printf '%s\n' "$newline2" | sed -e 's/[\/&]/\\&/g')
+						sed -i "s/^${mail_account}:.*/$escaped/g" /home/${new_user}/conf/mail/${folder}/passwd
+						sed -i "s/^ACCOUNT='${mail_account}.*/$escaped2/g" /usr/local/hestia/data/users/${new_user}/mail/${folder}.conf
+					else
+						echo "Warning: Password for $mail_account@$folder not found in shadow file."
+					fi
 				else
-    					echo "Warning: Shadow file for $folder not found."
+					echo "Warning: Shadow file for $folder not found."
 				fi
 			done
 			cd ..
@@ -377,24 +377,23 @@ cd "$CRON_DIR"
 
 CRON_FILE="${new_user}"
 if [ -f "$CRON_FILE" ] && [ -s "$CRON_FILE" ]; then
-    while IFS= read -r cron_job || [ -n "$cron_job" ]; do
-        [[ "$cron_job" =~ ^(#.*|\s*|MAILTO=.*|SHELL=.*)$ ]] && continue
-        
-        min=$(echo "$cron_job" | awk '{print $1}')
-        hour=$(echo "$cron_job" | awk '{print $2}')
-        day=$(echo "$cron_job" | awk '{print $3}')
-        month=$(echo "$cron_job" | awk '{print $4}')
-        dow=$(echo "$cron_job" | awk '{print $5}')
-        cmd=$(echo "$cron_job" | awk '{for (i=6; i<=NF; i++) printf $i " "; print ""}')
-
-        $BIN/v-add-cron-job $new_user "$min" "$hour" "$day" "$month" "$dow" "$cmd"
-    done < "$CRON_FILE"
-    echo "Cron jobs restored for user $new_user."
+	while IFS= read -r cron_job || [ -n "$cron_job" ]; do
+		[[ "$cron_job" =~ ^(#.*|\s*|MAILTO=.*|SHELL=.*)$ ]] && continue
+
+		min=$(echo "$cron_job" | awk '{print $1}')
+		hour=$(echo "$cron_job" | awk '{print $2}')
+		day=$(echo "$cron_job" | awk '{print $3}')
+		month=$(echo "$cron_job" | awk '{print $4}')
+		dow=$(echo "$cron_job" | awk '{print $5}')
+		cmd=$(echo "$cron_job" | awk '{for (i=6; i<=NF; i++) printf $i " "; print ""}')
+
+		$BIN/v-add-cron-job $new_user "$min" "$hour" "$day" "$month" "$dow" "$cmd"
+	done < "$CRON_FILE"
+	echo "Cron jobs restored for user $new_user."
 else
-    echo "No cron jobs file found or it is empty for user $new_user."
+	echo "No cron jobs file found or it is empty for user $new_user."
 fi
 
-
 rm -rf "$tmpdir"
 
 echo "##############################"

+ 31 - 39
install/deb/nginx/0rtt-anti-replay.conf

@@ -1,39 +1,31 @@
-# Implement TLS 1.3 0-RTT anti-replay for NGINX
-
-# Requires: NGINX directive "ssl_early_data" on
-
-# Usage:
-
-# Make sure these "map" blocks are included in "http" block
-# Put the following two lines in SSL "server" block, before any "location" blocks
-
-# if ($anti_replay = 307) { return 307 https://$host$request_uri; }
-# if ($anti_replay = 425) { return 425; }
-
-# Pass "Early-Data" header to backend/upstream
-# Only for 0-RTT requests from clients that understand 425 status code (RFC 8470)
-
-# fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
-# proxy_set_header Early-Data $rfc_early_data;
-
-# Copyright © myrevery
-# Copyright © 7677333 (An anagram of a Anonymous Cybersecurity Research Team)
-
-map "$request_method:$is_args" $ar_idempotent {
-	default 0;
-	"~^GET:$|^(HEAD|OPTIONS|TRACE):\?*$" 1;
-}
-
-map $http_user_agent $ar_support_425 {
-	default 0;
-	"~Firefox/((58|59)|([6-9]\d)|([1-9]\d{2,}))\.\d+" 1;
-}
-
-map "$ssl_early_data:$ar_idempotent:$ar_support_425" $anti_replay {
-	1:0:0 307;
-	1:0:1 425;
-}
-
-map "$ssl_early_data:$ar_support_425" $rfc_early_data {
-	1:1 1;
-}
+# Implement TLS 1.3 0-RTT anti-replay for NGINX
+# Requires: NGINX directive "ssl_early_data" on
+# Usage:
+# Make sure these "map" blocks are included in "http" block
+# Put the following two lines in SSL "server" block, before any "location" blocks
+# if ($anti_replay = 307) { return 307 https://$host$request_uri; }
+# if ($anti_replay = 425) { return 425; }
+# Pass "Early-Data" header to backend/upstream
+# Only for 0-RTT requests from clients that understand 425 status code (RFC 8470)
+# fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
+# proxy_set_header Early-Data $rfc_early_data;
+# Copyright © myrevery
+# Copyright © 7677333 (An anagram of a Anonymous Cybersecurity Research Team)
+map "$request_method:$is_args" $ar_idempotent {
+	default                              0;
+	"~^GET:$|^(HEAD|OPTIONS|TRACE):\?*$" 1;
+}
+
+map $http_user_agent $ar_support_425 {
+	default                                           0;
+	"~Firefox/((58|59)|([6-9]\d)|([1-9]\d{2,}))\.\d+" 1;
+}
+
+map "$ssl_early_data:$ar_idempotent:$ar_support_425" $anti_replay {
+	1:0:0 307;
+	1:0:1 425;
+}
+
+map "$ssl_early_data:$ar_support_425" $rfc_early_data {
+	1:1 1;
+}

+ 1 - 1
install/deb/nginx/status.conf

@@ -8,4 +8,4 @@ server {
 		access_log  off;
 		error_log   /dev/null;
 	}
-}
+}

+ 31 - 39
install/rpm/nginx/0rtt-anti-replay.conf

@@ -1,39 +1,31 @@
-# Implement TLS 1.3 0-RTT anti-replay for NGINX
-
-# Requires: NGINX directive "ssl_early_data" on
-
-# Usage:
-
-# Make sure these "map" blocks are included in "http" block
-# Put the following two lines in SSL "server" block, before any "location" blocks
-
-# if ($anti_replay = 307) { return 307 https://$host$request_uri; }
-# if ($anti_replay = 425) { return 425; }
-
-# Pass "Early-Data" header to backend/upstream
-# Only for 0-RTT requests from clients that understand 425 status code (RFC 8470)
-
-# fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
-# proxy_set_header Early-Data $rfc_early_data;
-
-# Copyright © myrevery
-# Copyright © 7677333 (An anagram of a Anonymous Cybersecurity Research Team)
-
-map "$request_method:$is_args" $ar_idempotent {
-	default 0;
-	"~^GET:$|^(HEAD|OPTIONS|TRACE):\?*$" 1;
-}
-
-map $http_user_agent $ar_support_425 {
-	default 0;
-	"~Firefox/((58|59)|([6-9]\d)|([1-9]\d{2,}))\.\d+" 1;
-}
-
-map "$ssl_early_data:$ar_idempotent:$ar_support_425" $anti_replay {
-	1:0:0 307;
-	1:0:1 425;
-}
-
-map "$ssl_early_data:$ar_support_425" $rfc_early_data {
-	1:1 1;
-}
+# Implement TLS 1.3 0-RTT anti-replay for NGINX
+# Requires: NGINX directive "ssl_early_data" on
+# Usage:
+# Make sure these "map" blocks are included in "http" block
+# Put the following two lines in SSL "server" block, before any "location" blocks
+# if ($anti_replay = 307) { return 307 https://$host$request_uri; }
+# if ($anti_replay = 425) { return 425; }
+# Pass "Early-Data" header to backend/upstream
+# Only for 0-RTT requests from clients that understand 425 status code (RFC 8470)
+# fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
+# proxy_set_header Early-Data $rfc_early_data;
+# Copyright © myrevery
+# Copyright © 7677333 (An anagram of a Anonymous Cybersecurity Research Team)
+map "$request_method:$is_args" $ar_idempotent {
+	default                              0;
+	"~^GET:$|^(HEAD|OPTIONS|TRACE):\?*$" 1;
+}
+
+map $http_user_agent $ar_support_425 {
+	default                                           0;
+	"~Firefox/((58|59)|([6-9]\d)|([1-9]\d{2,}))\.\d+" 1;
+}
+
+map "$ssl_early_data:$ar_idempotent:$ar_support_425" $anti_replay {
+	1:0:0 307;
+	1:0:1 425;
+}
+
+map "$ssl_early_data:$ar_support_425" $rfc_early_data {
+	1:1 1;
+}

+ 1 - 1
install/rpm/nginx/status.conf

@@ -8,4 +8,4 @@ server {
 		access_log  off;
 		error_log   /dev/null;
 	}
-}
+}

+ 38 - 28
package-lock.json

@@ -31,12 +31,12 @@
 				"eslint-plugin-import": "2.29.0",
 				"husky": "8.0.3",
 				"lightningcss": "1.22.1",
-				"lint-staged": "15.0.2",
+				"lint-staged": "15.1.0",
 				"markdownlint-cli2": "0.10.0",
-				"prettier": "3.0.3",
+				"prettier": "3.1.0",
 				"prettier-plugin-nginx": "1.0.3",
 				"prettier-plugin-sh": "0.13.1",
-				"prettier-plugin-sql": "0.15.2",
+				"prettier-plugin-sql": "0.16.0",
 				"stylelint": "15.11.0",
 				"stylelint-config-standard": "34.0.0",
 				"vitepress": "1.0.0-rc.25",
@@ -3715,6 +3715,15 @@
 			"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
 			"dev": true
 		},
+		"node_modules/jsox": {
+			"version": "1.2.118",
+			"resolved": "https://registry.npmjs.org/jsox/-/jsox-1.2.118.tgz",
+			"integrity": "sha512-ubYWn4WOc7HA7icvcQuIni1I7Xx4bI4KbRXbXzlr5e48hvdizeAbflBx97B629ZNH5RZnQ657Z5Z8dFgxFVrSQ==",
+			"dev": true,
+			"bin": {
+				"jsox": "lib/cli.js"
+			}
+		},
 		"node_modules/keyv": {
 			"version": "4.5.4",
 			"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -3999,9 +4008,9 @@
 			}
 		},
 		"node_modules/lint-staged": {
-			"version": "15.0.2",
-			"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.2.tgz",
-			"integrity": "sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==",
+			"version": "15.1.0",
+			"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.1.0.tgz",
+			"integrity": "sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==",
 			"dev": true,
 			"dependencies": {
 				"chalk": "5.3.0",
@@ -4013,7 +4022,7 @@
 				"micromatch": "4.0.5",
 				"pidtree": "0.6.0",
 				"string-argv": "0.3.2",
-				"yaml": "2.3.3"
+				"yaml": "2.3.4"
 			},
 			"bin": {
 				"lint-staged": "bin/lint-staged.js"
@@ -4543,9 +4552,9 @@
 			"dev": true
 		},
 		"node_modules/node-sql-parser": {
-			"version": "4.7.0",
-			"resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.7.0.tgz",
-			"integrity": "sha512-6pKgpQ15gwzDdIZVSDYH/5rVOOEWXzIrVOcq7FLCtoo+AVXTFIDmJjgRZOhTW+mDjj9trSHELXv+2AOK4C2dlQ==",
+			"version": "4.11.0",
+			"resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.11.0.tgz",
+			"integrity": "sha512-ElheoPibjc7IVyRdsORgkzJi0DWm3f0LYSsm/eJIeUt3M/csDLTblLDR4zl5Qi7jmVjJ1KpEkPKSbgVGEzU5Xw==",
 			"dev": true,
 			"dependencies": {
 				"big-integer": "^1.6.48"
@@ -4984,9 +4993,9 @@
 			}
 		},
 		"node_modules/prettier": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
-			"integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
+			"integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==",
 			"dev": true,
 			"bin": {
 				"prettier": "bin/prettier.cjs"
@@ -5024,14 +5033,15 @@
 			}
 		},
 		"node_modules/prettier-plugin-sql": {
-			"version": "0.15.2",
-			"resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.15.2.tgz",
-			"integrity": "sha512-4h1s1u1sxi2RTdfMjubVTBJWiUsyc2/kolxqQbFp/aFoUEfMLH+t6/hFGr2FeTKTuc576wOXFtkQG2WXXvBrRA==",
+			"version": "0.16.0",
+			"resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.16.0.tgz",
+			"integrity": "sha512-ISKL8EpiW9VSaHxmezr/lYiBNgcJvCF5V4NR2SCGZcv4vawn1negBD5jVVf7VN/wqTLd56U/taJiQPhQdbrYdA==",
 			"dev": true,
 			"dependencies": {
-				"node-sql-parser": "^4.7.0",
-				"sql-formatter": "^12.2.4",
-				"tslib": "^2.6.0"
+				"jsox": "^1.2.118",
+				"node-sql-parser": "^4.11.0",
+				"sql-formatter": "^13.1.0",
+				"tslib": "^2.6.2"
 			},
 			"engines": {
 				"node": "^14.18.0 || >=16.0.0"
@@ -5593,9 +5603,9 @@
 			"dev": true
 		},
 		"node_modules/sql-formatter": {
-			"version": "12.2.4",
-			"resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-12.2.4.tgz",
-			"integrity": "sha512-Qj45LEHSfgrdYDOrAtIkR8SdS10SWcqCIM2WZwQwMKF2v9sM0K2dlThWPS7eYCUrhttZIrU1WwuIwHk7MjsWOw==",
+			"version": "13.1.0",
+			"resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-13.1.0.tgz",
+			"integrity": "sha512-/nZQXuN7KzipFNM20ko+dHY4kOr9rymSfZLUDED8rhx3m8OK5y74jcyN+y1L51ZqHqiB0kp40VdpZP99uWvQdA==",
 			"dev": true,
 			"dependencies": {
 				"argparse": "^2.0.1",
@@ -6087,9 +6097,9 @@
 			}
 		},
 		"node_modules/tslib": {
-			"version": "2.6.0",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
-			"integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==",
+			"version": "2.6.2",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+			"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
 			"dev": true
 		},
 		"node_modules/type-check": {
@@ -6947,9 +6957,9 @@
 			"dev": true
 		},
 		"node_modules/yaml": {
-			"version": "2.3.3",
-			"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz",
-			"integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==",
+			"version": "2.3.4",
+			"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+			"integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
 			"dev": true,
 			"engines": {
 				"node": ">= 14"

+ 3 - 3
package.json

@@ -39,12 +39,12 @@
 		"eslint-plugin-import": "2.29.0",
 		"husky": "8.0.3",
 		"lightningcss": "1.22.1",
-		"lint-staged": "15.0.2",
+		"lint-staged": "15.1.0",
 		"markdownlint-cli2": "0.10.0",
-		"prettier": "3.0.3",
+		"prettier": "3.1.0",
 		"prettier-plugin-nginx": "1.0.3",
 		"prettier-plugin-sh": "0.13.1",
-		"prettier-plugin-sql": "0.15.2",
+		"prettier-plugin-sql": "0.16.0",
 		"stylelint": "15.11.0",
 		"stylelint-config-standard": "34.0.0",
 		"vitepress": "1.0.0-rc.25",

+ 1 - 1
src/hst_autocompile.sh

@@ -298,7 +298,7 @@ if [ "$dontinstalldeps" != 'true' ]; then
 			echo "Requires NodeJS 18.x or higher"
 			exit 1
 		fi
-    
+
 		# Fix for Debian PHP environment
 		if [ $BUILD_ARCH == "amd64" ]; then
 			if [ ! -L /usr/local/include/curl ]; then