Spaces:
Sleeping
Sleeping
| 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 | |