Skip to content

Commit 3a86286

Browse files
authored
Update softrouter.sh
1 parent af1a0e3 commit 3a86286

1 file changed

Lines changed: 60 additions & 48 deletions

File tree

softrouter.sh

Lines changed: 60 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
#!/bin/sh
2-
# ech-wk OpenWrt helper by ChatGPT
3-
# 使用前先: chmod +x /root/ech-wk.sh 然后: /root/ech-wk.sh
2+
# ech-wk OpenWrt 自动安装脚本,支持自动获取最新版本
43

54
REPO_OWNER="byJoey"
65
REPO_NAME="ech-wk"
76
BIN_PATH="/usr/bin/ech-workers"
87
TMP_DIR="/tmp/ech-workers"
98

10-
# 默认值(第一次生成配置用,可以之后在菜单里改)
9+
# 默认配置
1110
DEFAULT_BEST_IP="joeyblog.net"
1211
DEFAULT_SERVER_ADDR="echo.example.com:443"
1312
DEFAULT_LISTEN_ADDR="0.0.0.0:30001"
1413
DEFAULT_TOKEN=""
1514
DEFAULT_DNS="https://dns.alidns.com/dns-query"
1615
DEFAULT_ECH_DOMAIN="cloudflare-ech.com"
17-
DEFAULT_ROUTING="global" # 分流模式 默认值是 global,bypass_cn 表示绕过中国地区
16+
DEFAULT_ROUTING="global" # 默认分流模式 global
17+
18+
# 更新包列表
19+
update_package_list() {
20+
echo "更新 opkg 包列表..."
21+
opkg update || { echo "更新失败"; exit 1; }
22+
echo "包列表更新完成"
23+
}
1824

1925
# 检查并安装缺失的依赖
2026
install_dependencies() {
@@ -24,25 +30,25 @@ install_dependencies() {
2430
# 检查 curl
2531
if ! command -v curl >/dev/null 2>&1; then
2632
echo "缺少 curl,正在安装..."
27-
opkg update && opkg install curl || { echo "安装 curl 失败"; MISSING=1; }
33+
opkg install curl || { echo "安装 curl 失败"; MISSING=1; }
2834
fi
2935

3036
# 检查 tar
3137
if ! command -v tar >/dev/null 2>&1; then
3238
echo "缺少 tar,正在安装..."
33-
opkg update && opkg install tar || { echo "安装 tar 失败"; MISSING=1; }
39+
opkg install tar || { echo "安装 tar 失败"; MISSING=1; }
3440
fi
3541

3642
# 检查 jq
3743
if ! command -v jq >/dev/null 2>&1; then
3844
echo "缺少 jq,正在安装..."
39-
opkg update && opkg install jq || { echo "安装 jq 失败"; MISSING=1; }
45+
opkg install jq || { echo "安装 jq 失败"; MISSING=1; }
4046
fi
4147

4248
# 检查 procd
4349
if ! command -v procd >/dev/null 2>&1; then
4450
echo "缺少 procd,正在安装..."
45-
opkg update && opkg install procd || { echo "安装 procd 失败"; MISSING=1; }
51+
opkg install procd || { echo "安装 procd 失败"; MISSING=1; }
4652
fi
4753

4854
if [ $MISSING -eq 1 ]; then
@@ -57,56 +63,57 @@ install_dependencies() {
5763
get_latest_release_url() {
5864
echo "正在获取 GitHub 最新发布版本..."
5965

60-
# 检查架构
61-
ARCH=$(uname -m)
62-
if [ "$ARCH" = "x86_64" ]; then
63-
DOWNLOAD_URL="https://github.com/byJoey/ech-wk/releases/download/latest/ECHWorkers-linux-amd64-softrouter.tar.gz"
64-
elif [ "$ARCH" = "aarch64" ]; then
65-
DOWNLOAD_URL="https://github.com/byJoey/ech-wk/releases/download/latest/ECHWorkers-linux-arm64-softrouter.tar.gz"
66-
else
67-
echo "不支持此架构:$ARCH"
66+
# 获取最新 release 的信息
67+
RELEASE_INFO=$(curl -s "https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/releases/latest")
68+
if [ $? -ne 0 ]; then
69+
echo "获取 release 信息失败"
70+
return 1
71+
fi
72+
73+
# 获取下载链接
74+
DOWNLOAD_URL=$(echo "$RELEASE_INFO" | jq -r '.assets[] | select(.name | test("linux-amd64")) | .browser_download_url')
75+
if [ -z "$DOWNLOAD_URL" ]; then
76+
echo "未找到合适的下载链接"
6877
return 1
6978
fi
7079

7180
echo "下载链接: $DOWNLOAD_URL"
7281
echo $DOWNLOAD_URL
7382
}
7483

84+
# 安装二进制文件
7585
ensure_binary() {
76-
if [ -x "$BIN_PATH" ]; then
77-
return 0
78-
fi
79-
80-
echo "找不到二进制: $BIN_PATH"
81-
echo "自动下载最新版本..."
82-
83-
DOWNLOAD_URL=$(get_latest_release_url)
84-
if [ $? -ne 0 ]; then
85-
echo "下载失败!"
86-
return 1
87-
fi
88-
89-
echo "开始下载..."
90-
mkdir -p "$(dirname "$BIN_PATH")"
91-
mkdir -p "$TMP_DIR"
92-
93-
# 使用 curl 下载压缩包
94-
curl -L -o "$TMP_DIR/ech-workers.tar.gz" "$DOWNLOAD_URL" || {
95-
echo "下载失败"; return 1; }
96-
97-
echo "下载完成,开始解压..."
98-
# 解压下载的文件
99-
tar -zxvf "$TMP_DIR/ech-workers.tar.gz" -C "$TMP_DIR" || {
100-
echo "解压失败"; return 1; }
101-
102-
# 假设解压后文件名是 ech-workers,请根据实际情况调整
103-
mv "$TMP_DIR/ech-workers" "$BIN_PATH" || {
104-
echo "移动失败"; return 1; }
105-
106-
chmod +x "$BIN_PATH"
107-
echo "安装完成: $BIN_PATH"
86+
if [ -x "$BIN_PATH" ]; then
87+
return 0
88+
fi
89+
90+
echo "找不到二进制: $BIN_PATH"
91+
echo "自动下载最新版本..."
92+
93+
DOWNLOAD_URL=$(get_latest_release_url)
94+
if [ $? -ne 0 ]; then
95+
echo "下载失败!"
96+
return 1
97+
fi
98+
99+
echo "开始下载..."
100+
mkdir -p "$(dirname "$BIN_PATH")"
101+
mkdir -p "$TMP_DIR"
102+
103+
# 使用 curl 下载压缩包
104+
curl -L -o "$TMP_DIR/ech-workers.tar.gz" "$DOWNLOAD_URL" || { echo "下载失败"; return 1; }
105+
106+
echo "下载完成,开始解压..."
107+
tar -zxvf "$TMP_DIR/ech-workers.tar.gz" -C "$TMP_DIR" || { echo "解压失败"; return 1; }
108+
109+
# 假设解压后文件名是 ech-workers,请根据实际情况调整
110+
mv "$TMP_DIR/ech-workers" "$BIN_PATH" || { echo "安装失败"; return 1; }
111+
112+
chmod +x "$BIN_PATH"
113+
echo "安装完成: $BIN_PATH"
108114
}
109115

116+
# 确保配置文件存在
110117
ensure_conf() {
111118
if [ -f "$CONF_FILE" ]; then
112119
return 0
@@ -125,6 +132,7 @@ EOF
125132
echo "已生成默认配置: $CONF_FILE"
126133
}
127134

135+
# 启动服务
128136
ensure_init() {
129137
if [ -f "$INIT_FILE" ]; then
130138
return 0
@@ -168,10 +176,12 @@ EOF
168176
echo "已创建启动脚本: $INIT_FILE 并设置开机自启"
169177
}
170178

179+
# 加载配置
171180
load_conf() {
172181
[ -f "$CONF_FILE" ] && . "$CONF_FILE"
173182
}
174183

184+
# 保存配置
175185
save_conf() {
176186
mkdir -p "$(dirname "$CONF_FILE")"
177187
cat >"$CONF_FILE" <<EOF
@@ -185,6 +195,7 @@ ROUTING="${ROUTING}"
185195
EOF
186196
}
187197

198+
# 菜单界面
188199
show_menu() {
189200
while true; do
190201
clear
@@ -291,6 +302,7 @@ show_menu() {
291302
}
292303

293304
# 入口
305+
update_package_list # 更新包列表
294306
install_dependencies # 自动安装依赖
295307
ensure_conf
296308
show_menu

0 commit comments

Comments
 (0)