mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-02-04 10:11:28 +08:00
env start.sh
This commit is contained in:
4
.env
4
.env
@ -93,3 +93,7 @@ export CLASH_ALLOW_LAN=false
|
|||||||
# export CLASH_TUN_DEVICE=
|
# export CLASH_TUN_DEVICE=
|
||||||
# export CLASH_TUN_MTU=
|
# export CLASH_TUN_MTU=
|
||||||
# export CLASH_TUN_DNS_HIJACK='any:53'
|
# export CLASH_TUN_DNS_HIJACK='any:53'
|
||||||
|
|
||||||
|
# 订阅转换
|
||||||
|
export SUBCONVERTER_URL="http://127.0.0.1:25500"
|
||||||
|
export SUBCONVERTER_READY="false"
|
||||||
|
|||||||
39
start.sh
39
start.sh
@ -429,25 +429,44 @@ if [ "$SKIP_CONFIG_REBUILD" != "true" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- GUARANTEE: make sure runtime config exists after download ---
|
|
||||||
CONFIG_FILE="${CONFIG_FILE:-$Temp_Dir/config.yaml}"
|
CONFIG_FILE="${CONFIG_FILE:-$Temp_Dir/config.yaml}"
|
||||||
mkdir -p "$Temp_Dir" || true
|
mkdir -p "$Temp_Dir" || true
|
||||||
|
|
||||||
if [ "$ReturnStatus" -eq 0 ] && [ -s "$Temp_Dir/clash.yaml" ]; then
|
if [ "$ReturnStatus" -eq 0 ] && [ -s "$Temp_Dir/clash.yaml" ]; then
|
||||||
# 1) 订阅作为完整配置写入运行态 config
|
SRC_YAML="$Temp_Dir/clash.yaml"
|
||||||
cp -f "$Temp_Dir/clash.yaml" "$CONFIG_FILE"
|
|
||||||
|
|
||||||
# 2) 强制注入 external-controller / external-ui(运行态兜底)
|
# 1) 判断是否是完整 Clash 配置(关键字段之一存在即可)
|
||||||
|
if grep -qE '^(proxies:|proxy-providers:|rules:|port:|mixed-port:|dns:)' "$SRC_YAML"; then
|
||||||
|
cp -f "$SRC_YAML" "$CONFIG_FILE"
|
||||||
|
echo "[INFO] subscription already is a full clash config"
|
||||||
|
else
|
||||||
|
# 2) 非完整配置:尝试用 subconverter 转换
|
||||||
|
echo "[INFO] subscription is not a full config, try conversion via subconverter..."
|
||||||
|
|
||||||
|
export IN_FILE="$SRC_YAML"
|
||||||
|
export OUT_FILE="$Temp_Dir/clash_converted.yaml"
|
||||||
|
|
||||||
|
set +e
|
||||||
|
bash "$Server_Dir/scripts/clash_profile_conversion.sh"
|
||||||
|
conv_rc=$?
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$conv_rc" -eq 0 ] && [ -s "$OUT_FILE" ]; then
|
||||||
|
cp -f "$OUT_FILE" "$CONFIG_FILE"
|
||||||
|
echo "[INFO] conversion ok -> runtime config ready"
|
||||||
|
else
|
||||||
|
echo "[WARN] conversion skipped/failed, will keep original and rely on fallback"
|
||||||
|
cp -f "$SRC_YAML" "$CONFIG_FILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3) 强制注入 external-controller / external-ui(运行态兜底)
|
||||||
force_write_controller_and_ui "$CONFIG_FILE" || true
|
force_write_controller_and_ui "$CONFIG_FILE" || true
|
||||||
|
|
||||||
# 3) 强制注入 secret
|
# 4) 强制注入 secret
|
||||||
force_write_secret "$CONFIG_FILE" || true
|
force_write_secret "$CONFIG_FILE" || true
|
||||||
|
|
||||||
# =========================
|
# 5) 自检:失败则回退到旧配置
|
||||||
# 配置自检:防止无效订阅导致服务崩溃
|
|
||||||
# - 若新生成的 CONFIG_FILE 非法
|
|
||||||
# - 自动回退到 conf/config.yaml(上一次可用配置)
|
|
||||||
# =========================
|
|
||||||
BIN="${Server_Dir}/bin/clash-linux-amd64"
|
BIN="${Server_Dir}/bin/clash-linux-amd64"
|
||||||
NEW_CFG="$CONFIG_FILE"
|
NEW_CFG="$CONFIG_FILE"
|
||||||
OLD_CFG="${Conf_Dir}/config.yaml"
|
OLD_CFG="${Conf_Dir}/config.yaml"
|
||||||
|
|||||||
Reference in New Issue
Block a user