#!/bin/ash # shellcheck shell=dash # trans.sh/debian.cfg 共用此脚本 # debian 9 不支持 set -E set -e is_in_china() { grep -q 1 /dev/netconf/*/is_in_china } is_ipv6_only() { ! grep -q 1 /dev/netconf/eth*/ipv4_has_internet } get_frpc_url() { # 传入 windows 或者 linux local os_type=$1 local nt_ver=$2 is_need_old_version() { [ "$nt_ver" = "6.0" ] || [ "$nt_ver" = "6.1" ] } version=$( if is_need_old_version; then echo 0.54.0 else # debian 11 initrd 没有 xargs awk # debian 12 initrd 没有 xargs # github 不支持 ipv6 if is_in_china || is_ipv6_only; then wget -O- https://mirrors.nju.edu.cn/github-release/fatedier/frp/LatestRelease/frp_sha256_checksums.txt | grep -m1 frp_ | cut -d_ -f2 else # https://api.github.com/repos/fatedier/frp/releases/latest 有请求次数限制 # root@localhost:~# wget --spider -S https://github.com/fatedier/frp/releases/latest 2>&1 | grep Location: # Location: https://github.com/fatedier/frp/releases/tag/v0.62.0 # Location: https://github.com/fatedier/frp/releases/tag/v0.62.0 [following] # 原版 wget 多了这行 wget --spider -S https://github.com/fatedier/frp/releases/latest 2>&1 | grep -m1 '^ Location:' | sed 's,.*/tag/v,,' fi fi ) if [ -z "$version" ]; then echo 'cannot find version' return 1 fi suffix=$( case "$os_type" in linux) echo tar.gz ;; windows) echo zip ;; esac ) mirror=$( # nju 没有 win7 用的旧版 # github 不支持 ipv6 # jsdelivr 不支持 github releases 文件 if is_ipv6_only; then if is_need_old_version; then echo 'NOT_SUPPORT' return 1 else echo https://mirrors.nju.edu.cn/github-release/fatedier/frp fi else if is_in_china; then if is_need_old_version; then echo https://github.com/fatedier/frp/releases/download else echo https://mirrors.nju.edu.cn/github-release/fatedier/frp fi else echo https://github.com/fatedier/frp/releases/download fi fi ) arch=$( case "$(uname -m)" in x86_64) echo amd64 ;; aarch64) echo arm64 ;; esac ) filename=frp_${version}_${os_type}_${arch}.$suffix echo "${mirror}/v${version}/${filename}" } get_frpc_url "$@"