install.sh: поддержка uclient-fetch (роутеры без curl/wget, напр. filogic-билды)
This commit is contained in:
parent
6520dee876
commit
9dfe8a770c
1 changed files with 13 additions and 6 deletions
19
install.sh
19
install.sh
|
|
@ -18,8 +18,9 @@
|
||||||
# Требования:
|
# Требования:
|
||||||
# - креды "login:password" (без кавычек): файл /root/creds
|
# - креды "login:password" (без кавычек): файл /root/creds
|
||||||
# на роутере или переменная окружения NIKOVPN_CREDS
|
# на роутере или переменная окружения NIKOVPN_CREDS
|
||||||
# - доступ в интернет (скрипт тянет всё только с f.n1ko.dev и vpnd.n1ko.dev;
|
# - даунлоадер: curl, wget или uclient-fetch
|
||||||
# если рядом с install.sh есть каталог bin/ — бинарники берутся из него)
|
# - доступ в интернет (бинарники — из релизов git.n1ko.dev,
|
||||||
|
# резервом f.n1ko.dev; если рядом с install.sh есть bin/ — из него)
|
||||||
#
|
#
|
||||||
# Скрипт сам определяет архитектуру (openwrt_release/apk/opkg/uname),
|
# Скрипт сам определяет архитектуру (openwrt_release/apk/opkg/uname),
|
||||||
# выбирает лучший протокол и сервер (Hysteria2 > TUIC > Naive > VLESS > SS)
|
# выбирает лучший протокол и сервер (Hysteria2 > TUIC > Naive > VLESS > SS)
|
||||||
|
|
@ -53,8 +54,8 @@ need_root() { [ "$(id -u)" = "0" ] || die "нужны права root"; }
|
||||||
|
|
||||||
# --- downloader ---
|
# --- downloader ---
|
||||||
DL=""
|
DL=""
|
||||||
for t in curl wget; do have "$t" && DL="$t" && break; done
|
for t in curl wget uclient-fetch; do have "$t" && DL="$t" && break; done
|
||||||
[ -n "$DL" ] || die "нужен curl или wget"
|
[ -n "$DL" ] || die "нужен curl, wget или uclient-fetch"
|
||||||
|
|
||||||
dl() { # $1=url $2=out ; резерв на http:// для f.n1ko.dev
|
dl() { # $1=url $2=out ; резерв на http:// для f.n1ko.dev
|
||||||
local url="$1" out="$2" ok=""
|
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
|
curl -fsSL --max-time 120 -o "$out" "$url" && ok=1
|
||||||
[ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*)
|
[ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*)
|
||||||
curl -fsSL --max-time 120 -o "$out" "http://${url#https://}" && ok=1 ;; esac
|
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
|
wget -q -T 120 -O "$out" "$url" && ok=1
|
||||||
[ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*)
|
[ -z "$ok" ] && case "$url" in https://f.n1ko.dev/*)
|
||||||
wget -q -T 120 -O "$out" "http://${url#https://}" && ok=1 ;; esac
|
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
|
fi
|
||||||
[ -n "$ok" ]
|
[ -n "$ok" ]
|
||||||
}
|
}
|
||||||
|
|
@ -74,8 +79,10 @@ pipe_dl() { # $1=url -> поток в stdout (для больших файло
|
||||||
# /tmp на OpenWRT — это RAM, крупный бинарник туда класть нельзя)
|
# /tmp на OpenWRT — это RAM, крупный бинарник туда класть нельзя)
|
||||||
if [ "$DL" = curl ]; then
|
if [ "$DL" = curl ]; then
|
||||||
curl -fsSL --max-time 600 "$1"
|
curl -fsSL --max-time 600 "$1"
|
||||||
else
|
elif [ "$DL" = wget ]; then
|
||||||
wget -q -T 600 -O - "$1"
|
wget -q -T 600 -O - "$1"
|
||||||
|
else
|
||||||
|
uclient-fetch -q --timeout=600 -O - "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue