100 lines
3.8 KiB
Bash
100 lines
3.8 KiB
Bash
## 自动更新naiveproxy脚本
|
||
# 脚本会自动下载最新版本的naiveproxy并保存到/var/www/download/naive目录下,并记录版本号到version.txt文件中。
|
||
# 脚本会自动下载最新版本的naiveproxy插件并保存到/var/www/download/naive目录下,并命名为naiveproxy-plugin-android.apk。
|
||
# 脚本会记录日志到/var/www/download/naive/.update.log文件中。
|
||
|
||
#!/bin/sh
|
||
# 测试代码。获取脚本位置并进入脚本
|
||
# SCRIPT_DIR=$(cd $(dirname $0); pwd)
|
||
# cd $SCRIPT_DIR
|
||
#DOWNLOAD_DIR=$SCRIPT_DIR
|
||
DOWNLOAD_DIR="/var/www/download/naive"
|
||
LOG_FILE="$DOWNLOAD_DIR/.update.log"
|
||
VERSION_FILE="$DOWNLOAD_DIR/version.txt"
|
||
REPO="klzgrad/naiveproxy"
|
||
API_URL="https://api.github.com/repos/$REPO/releases/latest"
|
||
VERSIONS=("linux-x64" "mac-arm64" "mac-x64")
|
||
NAME="naiveproxy"
|
||
TAIL="tar.xz"
|
||
# 检查jq curl 是否安装,如果未安装,则退出脚本
|
||
for cmd in jq curl; do
|
||
if ! command -v $cmd &>/dev/null; then
|
||
echo "$cmd 未安装,请安装后再运行脚本"
|
||
if [ -f /etc/redhat-release ]; then
|
||
sudo yum install -y $cmd
|
||
elif [ -f /etc/lsb-release ]; then
|
||
sudo apt-get install -y $cmd
|
||
else
|
||
echo "系统不支持,请手动安装 $cmd"
|
||
exit 1
|
||
fi
|
||
fi
|
||
done
|
||
|
||
LATEST_VERSION=$(curl -s $API_URL | jq -r '.tag_name')
|
||
# 如果LATEST_VERSION为空或者为null,说明获取失败,退出脚本
|
||
if [ -z "$LATEST_VERSION" ] || [ "$LATEST_VERSION" = "null" ]; then
|
||
echo "获取版本号失败,退出脚本"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查本地是否有版本文件
|
||
if [ -f "$DOWNLOAD_DIR/version.txt" ]; then
|
||
LOCAL_VERSION=$(cat "$DOWNLOAD_DIR/version.txt")
|
||
else
|
||
LOCAL_VERSION=""
|
||
fi
|
||
|
||
# 比较本地版本和最新版本
|
||
if [ "$LATEST_VERSION" != "$LOCAL_VERSION" ]; then
|
||
# echo "版本不一致,下载最新版本 $LATEST_VERSION"
|
||
|
||
# 删除旧文件
|
||
rm -rf "$DOWNLOAD_DIR"/*.${TAIL}
|
||
rm -rf "$DOWNLOAD_DIR"/*.apk
|
||
|
||
# 下载新版本
|
||
for VERSION in "${VERSIONS[@]}"; do
|
||
FILENAME="${NAME}-${LATEST_VERSION}-${VERSION}.${TAIL}"
|
||
URL="https://github.com/$REPO/releases/download/$LATEST_VERSION/$FILENAME"
|
||
if ! curl -s -o "$DOWNLOAD_DIR/$FILENAME" "$URL"; then
|
||
echo "下载 $FILENAME 失败"
|
||
echo "$(date) [FAILD] $FILENAME DOWNLOAD FAILED." >>"$LOG_FILE"
|
||
continue
|
||
fi
|
||
# 修改最新的文件名
|
||
if [ -f "$DOWNLOAD_DIR/$FILENAME" ]; then
|
||
mv "$DOWNLOAD_DIR/$FILENAME" "$DOWNLOAD_DIR/${NAME}-${VERSION}.${TAIL}"
|
||
echo "$(date) [SUCESS] UPDATED $FILENAME." >>"$LOG_FILE"
|
||
# echo "下载 $FILENAME 成功"
|
||
else
|
||
echo "下载 $FILENAME 失败"
|
||
echo "$(date) [FAILD] $FILENAME DOWNLOAD FAILED." >>"$LOG_FILE"
|
||
fi
|
||
done
|
||
|
||
# 下载apk插件
|
||
APK_FILENAME="naiveproxy-plugin-${LATEST_VERSION}-arm64-v8a.apk"
|
||
URL="https://github.com/$REPO/releases/download/$LATEST_VERSION/$APK_FILENAME"
|
||
if ! curl -s -o "$DOWNLOAD_DIR/$APK_FILENAME" "$URL"; then
|
||
echo "下载 $APK_FILENAME 失败"
|
||
echo "$(date) [FAILD] $APK_FILENAME DOWNLOAD FAILED." >>"$LOG_FILE"
|
||
elif [ -f "$DOWNLOAD_DIR/$APK_FILENAME" ]; then
|
||
# 如果文件下载成功,则重命名文件
|
||
mv "$DOWNLOAD_DIR/$APK_FILENAME" "$DOWNLOAD_DIR/naiveproxy-plugin-android.apk"
|
||
# echo "下载 $APK_FILENAME 成功"
|
||
echo "$(date) [SUCESS] UPDATED $_APK_FILENAME." >>"$LOG_FILE"
|
||
else
|
||
echo "下载 $APK_FILENAME 失败"
|
||
echo "$(date) [FAILD] $APK_FILENAME DOWNLOAD FAILED." >>"$LOG_FILE"
|
||
fi
|
||
# 记录日志到文件
|
||
|
||
# 保存最新版本号
|
||
echo "$LATEST_VERSION" >"$VERSION_FILE"
|
||
else
|
||
echo "版本一致,无需更新"
|
||
# 记录日志到文:
|
||
echo "$(date) $LATEST_VERSION NO UPDATE NEEDED" >>"$LOG_FILE"
|
||
fi
|