diff --git a/cattools.sh b/cattools.sh index ddd625c..63cbda1 100644 --- a/cattools.sh +++ b/cattools.sh @@ -46,14 +46,15 @@ menu() { echo " CatTools " echo " https://github.com/miaoermua/cattools " echo "----------------------------------------------------------" - echo "1. SetIP - 设置 IP" - echo "2. network_wizard - 网络向导" - echo "3. Debug - 抓取日志" - echo "4. catwrt_update - 检查更新" - echo "5. use_repo - 启用软件源" - echo "6. diagnostics - 网络诊断" - echo "7. sysupgrade - 系统更新" - echo "0. Exit - 退出" + echo "1. SetIP - 设置 IP" + echo "2. network_wizard - 网络向导" + echo "3. Debug - 抓取日志" + echo "4. catwrt_update - 检查更新" + echo "5. use_repo - 启用软件源" + echo "6. diagnostics - 网络诊断" + echo "7. sysupgrade - 系统更新" + echo "8. use_mirrors_repo - 选择软件源镜像" + echo "0. Exit - 退出" echo "----------------------------------------------------------" echo -n "请输入数字并回车(Please enter your choice): " } @@ -635,6 +636,154 @@ sysupgrade() { sysupgrade -v $firmware_url } +# Use Mirrors repo and History repo +use_mirrors_repo() { + if [ -f "/var/opkg-lists/istore_compat" ]; then + rm /var/opkg-lists/istore_compat + fi + + echo "==============================================================================" + echo "Warning:" + echo "软件源纯属免费分享,赞助我们复制链接在浏览器打开,这对我们继续保持在线服务有很大影响。" + echo "本人不对所有软件进行保证,我们没有第三方商业服务,风险需要自行承担。" + echo "支持我们: https://www.miaoer.xyz/sponsor" + echo "你需要同意 CatWrt 软件源用户协议,请确认是否继续 (10 秒内按 [Ctrl]+[C] 取消操作)" + echo "==============================================================================" + + for i in $(seq 10 -1 1); do + echo -n "$i " + sleep 1 + done + get_url_prefix() { + local version=$1 + local arch=$2 + + case "$version" in + v23.8) + case "$arch" in + amd64) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/amd64/" + ;; + mt798x) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/mt798x/" + ;; + *) + echo "不支持的架构" + exit 1 + ;; + esac + ;; + v23.2) + case "$arch" in + amd64) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/history/v23.2/amd64/" + ;; + mt798x) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/history/v23.2/mt7986a/" + ;; + *) + echo "不支持的架构" + exit 1 + ;; + esac + ;; + v22.12) + case "$arch" in + amd64) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/history/v22.12/amd64/" + ;; + aarch64_generic) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/rkarm/" + ;; + aarch64_cortex-a53) + echo "https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo/history/v22.12/aarch64_cortex-a53/" + ;; + *) + echo "不支持的架构" + exit 1 + ;; + esac + ;; + *) + echo "不支持的版本" + exit 1 + ;; + esac + } + + OPENWRT_RELEASE_FILE="/etc/openwrt_release" + + if [ -f "$RELEASE" ]; then + # Read release information + . "$RELEASE" + elif [ -f "$OPENWRT_RELEASE_FILE" ]; then + if grep -q "R22.12.1" "$OPENWRT_RELEASE_FILE"; then + version="v22.12" + if grep -q "aarch64_cortex-a53" "$OPENWRT_RELEASE_FILE"; then + arch="aarch64_cortex-a53" + elif grep -q "aarch64_generic" "$OPENWRT_RELEASE_FILE"; then + arch="aarch64_generic" + fi + else + echo "$OPENWRT_RELEASE_FILE 不包含支持的版本信息" + exit 1 + fi + else + echo "$RELEASE 和 $OPENWRT_RELEASE_FILE 文件都不存在或者设备不被 CatWrt LTS 支持!" + exit 1 + fi + + if [ -z "$version" ] || [ -z "$arch" ]; then + echo "缺少必要的版本或架构信息" + exit 1 + fi + + url_prefix=$(get_url_prefix "$version" "$arch") + + # Display options + echo "请选择源:" + echo "1 主站" + echo "2 cfnetlify" + echo "3 netlify" + echo "4 cfvercel" + echo "5 vercel" + + read -p "请输入数字并回车(Please enter your choice): " choice + + case "$choice" in + 1) + conf_file="distfeeds.conf" + ;; + 2) + conf_file="cfnetlify.conf" + ;; + 3) + conf_file="netlify.conf" + ;; + 4) + conf_file="cfvercel.conf" + ;; + 5) + conf_file="vercel.conf" + ;; + *) + echo "无效的选择" + exit 1 + ;; + esac + + # Download the selected configuration file and rename it to distfeeds.conf + curl --connect-timeout 5 --retry 2 -o /etc/opkg/distfeeds.conf "${url_prefix}${conf_file}" + + if [ -f "/var/lock/opkg.lock" ]; then + rm /var/lock/opkg.lock + fi + + opkg update + + echo "源已切换到 ${url_prefix}${conf_file}" +} + while true; do menu read choice @@ -660,6 +809,9 @@ while true; do 7) sysupgrade ;; + 8) + use_mirrors_repo + ;; 0) echo "Exiting..." break