sublinker / menu.sh
YimoEx
init
bb9df9e
#!/bin/bash
function Up {
# 获取最新的发行版标签
latest_release=$(curl --silent "https://api.github.com/repos/gooaclok819/sublinkX/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
echo "最新版本: $latest_release"
# 检测机器类型
machine_type=$(uname -m)
if [ "$machine_type" = "x86_64" ]; then
file_name="sublink_amd64"
elif [ "$machine_type" = "aarch64" ]; then
file_name="sublink_arm64"
else
echo "不支持的机器类型: $machine_type"
exit 1
fi
# 下载文件
curl -LO "https://github.com/gooaclok819/sublinkX/releases/download/$latest_release/$file_name"
# 设置文件为可执行
chmod +x $file_name
# 移动文件到指定目录
mv $file_name "$INSTALL_DIR/sublink"
echo "更新完成"
}
function Select {
# 获取最新的发行版标签
latest_release=$(curl --silent "https://api.github.com/repos/gooaclok819/sublinkX/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
# 获取服务状态
cd /usr/local/bin/sublink # 进入sublink目录
status=$(systemctl is-active sublink)
version=$(./sublink --version)
echo "最新版本:$latest_release"
echo "当前版本:$version"
# 判断服务状态并打印
if [ "$status" = "active" ]; then
echo "当前运行状态: 已运行"
else
echo "当前运行状态: 未运行"
fi
echo "1. 启动服务"
echo "2. 停止服务"
echo "3. 卸载安装"
echo "4. 查看服务状态"
echo "5. 查看运行目录"
echo "6. 修改端口"
echo "7. 更新"
echo "8. 重置账号密码"
echo "0. 退出"
echo -n "请选择一个选项: "
read option
case $option in
1)
systemctl start sublink
systemctl daemon-reload
;;
2)
systemctl stop sublink
systemctl daemon-reload
;;
3)
# 停止服务之前检查服务是否存在
if systemctl is-active --quiet sublink; then
systemctl stop sublink
fi
if systemctl is-enabled --quiet sublink; then
systemctl disable sublink
fi
# 删除服务文件
read -p "是否删除systemd服务文件(包含端口设置)(y/n): " isDelSystemd
if [ "$isDelSystemd" = "y" ]; then
sudo rm /etc/systemd/system/sublink.service
fi
# 删除相关文件和目录
sudo rm -r /usr/local/bin/sublink/sublink
sudo rm -r /usr/bin/sublink
read -p "是否删除模板文件和数据库(y/n): " isDelete
if [ "$isDelete" = "y" ]; then
sudo rm -r /usr/local/bin/sublink/db
sudo rm -r /usr/local/bin/sublink/template
sudo rm -r /usr/local/bin/sublink/logs
fi
echo "卸载完成"
;;
4)
systemctl status sublink
;;
5)
echo "运行目录: /usr/local/bin/sublink"
echo "需要备份的目录为db,template目录为模版文件可备份可不备份"
cd /usr/local/bin/sublink
;;
6)
SERVICE_FILE="/etc/systemd/system/sublink.service"
read -p "请输入新的端口号: " Port
echo "新的端口号: $Port"
PARAMETER="run --port $Port"
# 检查服务文件是否存在
if [ ! -f "$SERVICE_FILE" ]; then
echo "服务文件不存在: $SERVICE_FILE"
exit 1
fi
# 检查 ExecStart 是否已经包含该参数
if grep -q "run --port" "$SERVICE_FILE"; then
echo "参数已存在,正在替换..."
# 使用 sed 替换 ExecStart 行中的 -port 参数
sudo sed -i "s/-port [0-9]\+/-port $Port/" "$SERVICE_FILE"
else
# 如果没有 -port 参数,添加新参数
# 使用 sed 替换 ExecStart 行,添加启动参数
sudo sed -i "/^ExecStart=/ s|$| $PARAMETER|" "$SERVICE_FILE"
echo "参数已添加到 ExecStart 行: $PARAMETER"
fi
# 重新加载 systemd 守护进程
sudo systemctl daemon-reload
# 重启 sublink 服务
sudo systemctl restart sublink
echo "服务已重启。"
;;
7)
# 停止服务之前检查服务是否存在
if systemctl is-active --quiet sublink; then
systemctl stop sublink
fi
# 检查是否为最新版本
if [[ $version = $latest_release ]]; then
echo "当前已经是最新版本"
else
Up
fi
# 更新菜单
sudo rm /usr/bin/sublink
curl -o /usr/bin/sublink -H "Cache-Control: no-cache" -H "Pragma: no-cache" https://raw.githubusercontent.com/gooaclok819/sublinkX/main/menu.sh
chmod 755 "/usr/bin/sublink"
;;
8)
read -p "请输入新的账号: " User
read -p "请输入新的密码: " Password
# 运行二进制文件并传递启动参数,放在后台运行
cd /usr/local/bin/sublink
./sublink setting --username "$User" --password "$Password" &
# 获取该程序的PID
pid=$!
# 等待程序完成
wait $pid
# 如果需要可以在此处进行清理
systemctl restart sublink
;;
0)
exit 0
;;
*)
echo "无效的选项,请重新选择"
Select
;;
esac
}
Select