Skip to content

Commit c77dcaf

Browse files
committed
增加http脚本
1 parent 2488821 commit c77dcaf

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

examples/track-http/setup.sh

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/bin/bash
2+
cd "$(dirname "$0")"
3+
4+
ENV_FILE=".env"
5+
6+
# 如果文件不存在,创建一个空的
7+
if [ ! -f "$ENV_FILE" ]; then
8+
touch "$ENV_FILE"
9+
fi
10+
11+
# 辅助函数:获取 .env 中的值
12+
get_env_value() {
13+
# 使用 grep 查找 key,然后用 cut/sed 提取值,去除引号
14+
# 匹配 key='value' 或 key=value
15+
grep "^$1=" "$ENV_FILE" | sed -E "s/^$1=['"]?(.*)['"]?$/\1/" | tail -n 1
16+
}
17+
18+
# 辅助函数:更新或追加 .env 中的值
19+
set_env_value() {
20+
local key="$1"
21+
local val="$2"
22+
23+
if grep -q "^$key=" "$ENV_FILE"; then
24+
# 如果存在,使用 sed 替换 (针对 Linux 和 Mac 的 sed 兼容性,这里使用临时文件)
25+
# 匹配 key='...' 或 key=... 并替换
26+
sed -i.bak "s|^$key=.*|$key='$val'|" "$ENV_FILE" && rm "$ENV_FILE.bak"
27+
else
28+
# 如果不存在,追加到文件末尾
29+
# 确保文件末尾有换行
30+
[ -n "$(tail -c1 "$ENV_FILE")" ] && echo "" >> "$ENV_FILE"
31+
echo "$key='$val'" >> "$ENV_FILE"
32+
fi
33+
}
34+
35+
echo "========================================"
36+
echo "Track-HTTP 智能补全部署配置"
37+
echo "========================================"
38+
39+
# 1. 处理 IP
40+
CURRENT_IP=$(get_env_value "SERVER_IP_PUBLIC")
41+
# 去除可能的回车符
42+
CURRENT_IP=$(echo "$CURRENT_IP" | tr -d '\r')
43+
44+
if [ -z "$CURRENT_IP" ]; then
45+
read -p "请输入服务器公网IP (Enter Public IP): " SERVER_IP_PUBLIC
46+
if [ -z "$SERVER_IP_PUBLIC" ]; then
47+
echo "错误: IP地址不能为空."
48+
exit 1
49+
fi
50+
set_env_value "SERVER_IP_PUBLIC" "$SERVER_IP_PUBLIC"
51+
52+
# 检查 HOSTNAME 是否设置,如果没有也设置为 IP
53+
CURRENT_HOST=$(get_env_value "SERVER_HOSTNAME")
54+
if [ -z "$CURRENT_HOST" ]; then
55+
set_env_value "SERVER_HOSTNAME" "$SERVER_IP_PUBLIC"
56+
fi
57+
58+
echo "已设置 IP: $SERVER_IP_PUBLIC"
59+
else
60+
echo "使用现有 IP: $CURRENT_IP"
61+
fi
62+
63+
# 2. 处理密码
64+
generate_password() {
65+
if command -v openssl &> /dev/null; then
66+
openssl rand -base64 15 | tr -dc 'a-zA-Z0-9' | head -c 12
67+
else
68+
tr -dc A-Za-z0-9 </dev/urandom | head -c 12
69+
fi
70+
}
71+
72+
PASSWORDS=(
73+
"MYSQL_PASSWORD"
74+
"REDIS_PASSWORD"
75+
"MONGODB_PASSWORD"
76+
"RABBITMQ_PASSWORD"
77+
"MINIO_PASSWORD"
78+
"MAIL_PASSWORD"
79+
)
80+
81+
echo "正在检查密码配置..."
82+
83+
for key in "${PASSWORDS[@]}"; do
84+
current_val=$(get_env_value "$key")
85+
current_val=$(echo "$current_val" | tr -d '\r')
86+
87+
if [ -z "$current_val" ]; then
88+
new_pass=$(generate_password)
89+
set_env_value "$key" "$new_pass"
90+
echo " [已补全] $key"
91+
else
92+
echo " [已存在] $key (保持不变)"
93+
fi
94+
done
95+
96+
echo "----------------------------------------"
97+
echo "配置检查完成!(.env updated)"
98+
echo "现在你可以运行: docker compose up -d"

0 commit comments

Comments
 (0)