install.sh: стриминг бинарников сразу в dest без staging в /tmp
/tmp на OpenWRT — tmpfs (RAM): 14МБ sing-box.gz на низкобюджетных роутерах вымывали userspace (включая dropbear). Теперь gzip-поток идёт прямо в /usr/bin, как в nikovpn.py
This commit is contained in:
parent
e2d5e21ab0
commit
6520dee876
1 changed files with 33 additions and 18 deletions
51
install.sh
51
install.sh
|
|
@ -70,6 +70,33 @@ dl() { # $1=url $2=out ; резерв на http:// для f.n1ko.dev
|
|||
[ -n "$ok" ]
|
||||
}
|
||||
|
||||
pipe_dl() { # $1=url -> поток в stdout (для больших файлов: без staging в tmpfs,
|
||||
# /tmp на OpenWRT — это RAM, крупный бинарник туда класть нельзя)
|
||||
if [ "$DL" = curl ]; then
|
||||
curl -fsSL --max-time 600 "$1"
|
||||
else
|
||||
wget -q -T 600 -O - "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
fetch_gz() { # $1=имя-файла $2=dest ; источники: локальный bin/ -> релиз -> f.n1ko.dev
|
||||
local f="$1" out="$2" ok=0
|
||||
if [ -f "$REPO_DIR/bin/$f" ]; then
|
||||
gzip -dc "$REPO_DIR/bin/$f" > "$out" 2>/dev/null && [ -s "$out" ] && ok=1
|
||||
fi
|
||||
if [ $ok != 1 ]; then
|
||||
log "Качаю $f из релизов git.n1ko.dev ..."
|
||||
pipe_dl "$REL_URL/$f" | gzip -dc > "$out" 2>/dev/null
|
||||
[ -s "$out" ] && ok=1
|
||||
fi
|
||||
if [ $ok != 1 ]; then
|
||||
log "Качаю $f с f.n1ko.dev ..."
|
||||
pipe_dl "$BASE_URL/bin/$f" | gzip -dc > "$out" 2>/dev/null
|
||||
[ -s "$out" ] && ok=1
|
||||
fi
|
||||
[ $ok = 1 ]
|
||||
}
|
||||
|
||||
# --- API (HTTP Basic auth) ---
|
||||
API_AUTH=""; API_AUTH_V=""
|
||||
api_init_auth() {
|
||||
|
|
@ -462,28 +489,16 @@ install_bins() {
|
|||
|
||||
if [ "$skip_sb" != 1 ]; then
|
||||
log "Получаю sing-box ($SB_ARCH) ..."
|
||||
dl "$REL_URL/sing-box-$SB_ARCH.gz" "$TMP/sing-box.gz" || \
|
||||
dl "$BASE_URL/bin/sing-box-$SB_ARCH.gz" "$TMP/sing-box.gz" || \
|
||||
cp "$REPO_DIR/bin/sing-box-$SB_ARCH.gz" "$TMP/sing-box.gz" 2>/dev/null
|
||||
[ -s "$TMP/sing-box.gz" ] || die "не удалось скачать sing-box"
|
||||
gzip -dc "$TMP/sing-box.gz" > "$TMP/sing-box" 2>/dev/null || die "повреждённый архив sing-box"
|
||||
chmod +x "$TMP/sing-box"
|
||||
"$TMP/sing-box" version >/dev/null 2>&1 || die "sing-box не запускается на этой системе (архитектура?)"
|
||||
mv "$TMP/sing-box" "$SB_PATH"
|
||||
rm -f "$TMP/sing-box.gz"
|
||||
fetch_gz "sing-box-$SB_ARCH.gz" "$SB_PATH" || die "не удалось скачать sing-box"
|
||||
chmod +x "$SB_PATH"
|
||||
"$SB_PATH" version >/dev/null 2>&1 || die "sing-box не запускается на этой системе (архитектура?)"
|
||||
fi
|
||||
|
||||
if [ "$TUNNEL" = "ipt2socks" ] && [ "$skip_ipt" != 1 ]; then
|
||||
log "Получаю ipt2socks ($IPT_ARCH) ..."
|
||||
dl "$REL_URL/ipt2socks-$IPT_ARCH.gz" "$TMP/ipt2socks.gz" || \
|
||||
dl "$BASE_URL/bin/ipt2socks-$IPT_ARCH.gz" "$TMP/ipt2socks.gz" || \
|
||||
cp "$REPO_DIR/bin/ipt2socks-$IPT_ARCH.gz" "$TMP/ipt2socks.gz" 2>/dev/null
|
||||
[ -s "$TMP/ipt2socks.gz" ] || die "не удалось скачать ipt2socks"
|
||||
gzip -dc "$TMP/ipt2socks.gz" > "$TMP/ipt2socks" 2>/dev/null || die "повреждённый архив ipt2socks"
|
||||
chmod +x "$TMP/ipt2socks"
|
||||
"$TMP/ipt2socks" -V >/dev/null 2>&1 || die "ipt2socks не запускается на этой системе (архитектура?)"
|
||||
mv "$TMP/ipt2socks" "$IPT_PATH"
|
||||
rm -f "$TMP/ipt2socks.gz"
|
||||
fetch_gz "ipt2socks-$IPT_ARCH.gz" "$IPT_PATH" || die "не удалось скачать ipt2socks"
|
||||
chmod +x "$IPT_PATH"
|
||||
"$IPT_PATH" -V >/dev/null 2>&1 || die "ipt2socks не запускается на этой системе (архитектура?)"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue