60 lines
1.8 KiB
Bash
60 lines
1.8 KiB
Bash
#!/bin/sh
|
||
|
||
set -e
|
||
|
||
API_URL="https://api.github.com/repos/shtorm-7/sing-box-extended/releases/latest"
|
||
FILE_PATTERN="linux-arm64.tar.gz"
|
||
TMP_DIR="/tmp/sing-box-install"
|
||
ARCHIVE_NAME="sing-box-latest.tar.gz"
|
||
DEST_FILE="/usr/bin/sing-box"
|
||
|
||
echo "[*] Ищу последнюю версию для $FILE_PATTERN..."
|
||
|
||
DOWNLOAD_URL=$(wget -qO- "$API_URL" | tr ',' '\n' | grep "browser_download_url" | grep "$FILE_PATTERN" | awk -F '"' '{print $4}')
|
||
|
||
if [ -z "$DOWNLOAD_URL" ]; then
|
||
echo "[!] ОШИБКА: Не смог найти URL для скачивания."
|
||
echo "Проверь $FILE_PATTERN или репозиторий. Может, ГитХаб лежит?"
|
||
exit 1
|
||
fi
|
||
|
||
echo "[+] Нашел: $DOWNLOAD_URL"
|
||
|
||
echo "[*] Готовлю место в /tmp..."
|
||
rm -rf "$TMP_DIR"
|
||
mkdir -p "$TMP_DIR"
|
||
cd "$TMP_DIR"
|
||
|
||
echo "[*] Качаю..."
|
||
wget -O "$ARCHIVE_NAME" "$DOWNLOAD_URL"
|
||
|
||
echo "[*] Гашу старый sing-box... (если он запущен)"
|
||
service sing-box stop >/dev/null 2>&1 || true
|
||
killall sing-box >/dev/null 2>&1 || true
|
||
|
||
echo "[*] Распаковываю архив (полностью)..."
|
||
tar -xzf "$ARCHIVE_NAME"
|
||
|
||
echo "[*] Ищу бинарный файл..."
|
||
BINARY_PATH=$(find . -type f -name sing-box | head -n 1)
|
||
|
||
if [ -z "$BINARY_PATH" ]; then
|
||
echo "[!] ОШИБКА: Архив распаковался, но внутри нет файла 'sing-box'!"
|
||
exit 1
|
||
fi
|
||
|
||
echo "[+] Файл найден: $BINARY_PATH"
|
||
|
||
echo "[*] Ставлю новый бинарник в $DEST_FILE..."
|
||
mv "$BINARY_PATH" "$DEST_FILE"
|
||
|
||
echo "[*] Даю права на запуск..."
|
||
chmod +x "$DEST_FILE"
|
||
|
||
echo "[*] Убираю за собой мусор (архив и распакованные папки)..."
|
||
cd /
|
||
rm -rf "$TMP_DIR"
|
||
|
||
echo "[+] Готово! Обновление установлено."
|
||
|