diff --git a/install.sh b/install.sh index ddf866f..27f5d29 100755 --- a/install.sh +++ b/install.sh @@ -18,8 +18,9 @@ # Требования: # - креды "login:password" (без кавычек): файл /root/creds # на роутере или переменная окружения NIKOVPN_CREDS -# - доступ в интернет (скрипт тянет всё только с f.n1ko.dev и vpnd.n1ko.dev; -# если рядом с install.sh есть каталог bin/ — бинарники берутся из него) +# - даунлоадер: curl, wget или uclient-fetch +# - доступ в интернет (бинарники — из релизов git.n1ko.dev, +# резервом f.n1ko.dev; если рядом с install.sh есть bin/ — из него) # # Скрипт сам определяет архитектуру (openwrt_release/apk/opkg/uname), # выбирает лучший протокол и сервер (Hysteria2 > TUIC > Naive > VLESS > SS) @@ -53,8 +54,8 @@ need_root() { [ "$(id -u)" = "0" ] || die "нужны права root"; } # --- downloader --- DL="" -for t in curl wget; do have "$t" && DL="$t" && break; done -[ -n "$DL" ] || die "нужен curl или wget" +for t in curl wget uclient-fetch; do have "$t" && DL="$t" && break; done +[ -n "$DL" ] || die "нужен curl, wget или uclient-fetch" dl() { # $1=url $2=out ; резерв на http:// для f.n1ko.dev local url="$1" out="$2" ok="" @@ -62,10 +63,14 @@ dl() { # $1=url $2=out ; резерв на http:// для f.n1ko.dev curl -fsSL --max-time 120 -o "$out" "$url" && ok=1 [ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*) curl -fsSL --max-time 120 -o "$out" "http://${url#https://}" && ok=1 ;; esac - else + elif [ "$DL" = wget ]; then wget -q -T 120 -O "$out" "$url" && ok=1 [ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*) wget -q -T 120 -O "$out" "http://${url#https://}" && ok=1 ;; esac + else + uclient-fetch -q --timeout=120 -O "$out" "$url" && ok=1 + [ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*) + uclient-fetch -q --timeout=120 -O "$out" "http://${url#https://}" && ok=1 ;; esac fi [ -n "$ok" ] } @@ -74,8 +79,10 @@ pipe_dl() { # $1=url -> поток в stdout (для больших файло # /tmp на OpenWRT — это RAM, крупный бинарник туда класть нельзя) if [ "$DL" = curl ]; then curl -fsSL --max-time 600 "$1" - else + elif [ "$DL" = wget ]; then wget -q -T 600 -O - "$1" + else + uclient-fetch -q --timeout=600 -O - "$1" fi }