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