HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //var/packages/SynologyApplicationService/conf/systemd/config_setup.sh
#!/bin/bash

. /var/packages/SynologyApplicationService/scripts/utils

# pgbouncer
PGBOUNCER_CONF=/var/packages/SynologyApplicationService/target/etc/pgbouncer.ini

# valkey
VALKEY_CONF=/var/packages/SynologyApplicationService/etc/valkey.conf
VALKEY_CONF_TEMPLATE=/var/packages/SynologyApplicationService/target/etc/conf/valkey.conf.template
VALKEY_ACL=/var/packages/SynologyApplicationService/etc/valkey_user.acl
VALKEY_ACL_TEMPLATE=/var/packages/SynologyApplicationService/target/etc/conf/valkey_user.acl.template
VALKEY_ADMIN_PASS=/var/packages/SynologyApplicationService/target/etc/valkey_admin_pass.env
ROLE_FILE=/var/packages/SynologyApplicationService/tmp/valkey_start_as_role

# haproxy
HAPROXY_CONF=/var/packages/SynologyApplicationService/etc/haproxy.cfg
HAPROXY_CONF_TEMPLATE=/var/packages/SynologyApplicationService/target/etc/conf/haproxy.cfg.template

UpdatePgbouncerHost()
{
	local target_host="\/var\/run\/postgresql"
	if GSMIsSupported && ! GSMIsController; then
		if ! controller_ip="$(/usr/syno/bin/hcm-sentinel-tool get-controller-floating-ip)"; then
			/bin/logger -s -p err "Failed to get controller floating ip"
			exit 1
		fi
		sed -i "s/\/var\/run\/postgresql/$controller_ip/g" $PGBOUNCER_CONF
	elif FSDNIsSupported; then
		if ! FSDNIsAdminNode; then
			if ! target_host="$(/usr/syno/bin/aacore get-ntb-addr remote)"; then
				/bin/logger -s -p err "Failed to get remote ntb address from non-admin node"
				exit 1
			fi
		fi
		sed -i -E "s/(^.*=\s*host=)[^ ]+/\1$target_host/" $PGBOUNCER_CONF
	fi
}

UpdateValkeyConfig()
{
	if ! FSDNIsSupported; then
		return 1
	fi

	cp $VALKEY_CONF_TEMPLATE $VALKEY_CONF
	if [ ! -f $VALKEY_ACL ]; then
		cp $VALKEY_ACL_TEMPLATE $VALKEY_ACL
		chmod 700 $VALKEY_ACL
	fi

	. $VALKEY_ADMIN_PASS
	if ! grep -q "user $REDISCLI_USER" $VALKEY_ACL; then
		echo "user $REDISCLI_USER on +@all ~* >$REDISCLI_AUTH" >> $VALKEY_ACL
	fi

	if ! FSDNIsAdminNode; then
		echo -e "REPLICAOF $(/usr/syno/bin/aacore get-ntb-addr remote) 29000" >> $VALKEY_CONF
	fi
}

UpdateHaproxyConfig()
{
	if ! FSDNIsSupported; then
		return 1
	fi

	cp $HAPROXY_CONF_TEMPLATE $HAPROXY_CONF
	local where_is_primary=""
	local local_ip="$(/usr/syno/bin/aacore get-ntb-addr local)"
	local remote_ip="$(/usr/syno/bin/aacore get-ntb-addr remote)"

	if [ -f $ROLE_FILE ]; then
		local role=$(<"$ROLE_FILE")
		role=$(echo "$role" | xargs)

		if [ "$role" = "primary" ]; then
			where_is_primary="local"
		elif [ "$role" = "replica" ]; then
			where_is_primary="remote"
		fi
	elif FSDNIsAdminNode; then
		where_is_primary="local"
	else
		where_is_primary="remote"
	fi

	sed -i "s|__BACKEND_NAME__|valkey_backend_$where_is_primary|g" $HAPROXY_CONF
	sed -i "s|__LOCAL_IP__|$local_ip|g" $HAPROXY_CONF
	sed -i "s|__REMOTE_IP__|$remote_ip|g" $HAPROXY_CONF
}

case $1 in
	"UpdatePgbouncerHost")
		mkdir -p /run/SynologyApplicationService
		chown SynologyApplicationService:SynologyApplicationService /run/SynologyApplicationService
		/bin/rm -f /run/SynologyApplicationService/.s.PGSQL.6432
		UpdatePgbouncerHost
		;;
	"UpdateHaproxyConfig")
		UpdateHaproxyConfig
		;;
	"UpdateValkeyConfig")
		UpdateValkeyConfig
		;;
	*)
		echo "Wrong Action"
		exit 1
		;;
esac