accounts/scripts/stunnel-start.sh

50 lines
1.4 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_common.sh"
CONF_FILE="${CLOUD_RUN_STUNNEL_CONF}"
if [ ! -f "${CONF_FILE}" ]; then
echo "❌ 未找到 stunnel 配置: ${CONF_FILE}"
exit 1
fi
if ! command -v stunnel >/dev/null; then
echo "❌ 未检测到 stunnel请先安装"
exit 1
fi
if command -v ss >/dev/null; then
if ss -ltn 2>/dev/null | grep -q ':15432'; then
echo "✅ stunnel 已在 127.0.0.1:15432 监听"
exit 0
fi
elif command -v lsof >/dev/null; then
if lsof -nP -iTCP:15432 -sTCP:LISTEN | grep -q LISTEN; then
echo "✅ stunnel 已在 127.0.0.1:15432 监听"
exit 0
fi
fi
echo ">>> 启动 stunnel (client)"
# stunnel 需要写入 /var/run优先使用 sudo 启动
if sudo -n true 2>/dev/null; then
sudo stunnel "${CONF_FILE}" &
echo "✅ stunnel 启动完成 (sudo)"
exit 0
fi
echo "⚠️ sudo 不可用,使用用户态临时配置启动"
TMP_CONF="/tmp/stunnel-account-db-client.conf"
sed \
-e 's#^pid = .*#pid = /tmp/stunnel-account-db-client.pid#' \
-e 's#^output = .*#output = /tmp/stunnel-account-db-client.log#' \
"${CONF_FILE}" > "${TMP_CONF}"
if [ ! -f /etc/ssl/certs/ca-certificates.crt ] && [ -f /etc/ssl/cert.pem ]; then
sed -i '' 's#^CAfile = .*#CAfile = /etc/ssl/cert.pem#' "${TMP_CONF}"
fi
stunnel "${TMP_CONF}" &
echo "✅ stunnel 启动完成 (user mode)"