Files
podkop/install.sh
2025-09-22 13:27:39 +03:00

155 lines
4.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# --- Настройки ---
GITEA_API="https://git.ownsrv.ru/api/v1/repos/yanistyle/podkop/releases/latest"
DOWNLOAD_DIR="/tmp/podkop"
TOKEN="YOUR_TOKEN_HERE" # <--- сюда твой Gitea токен
COUNT=3
rm -rf "$DOWNLOAD_DIR"
mkdir -p "$DOWNLOAD_DIR"
msg() { printf "\033[32;1m%s\033[0m\n" "$1"; }
main() {
check_system
sing_box
/usr/sbin/ntpd -q -p 194.190.168.1 -p 216.239.35.0 -p 216.239.35.4 -p 162.159.200.1 -p 162.159.200.123
opkg update || { echo "opkg update failed"; exit 1; }
if [ -f "/etc/init.d/podkop" ]; then
msg "Podkop is already installed. Upgraded..."
else
msg "Installing podkop..."
fi
download_packages
install_packages
}
download_packages() {
msg "Fetching latest release info from Gitea..."
RELEASE_JSON=$(wget -qO- --header="Authorization: token $TOKEN" "$GITEA_API")
# Находим все .ipk ссылки
URLS=$(echo "$RELEASE_JSON" | grep -o 'https://[^"]*\.ipk')
if [ -z "$URLS" ]; then
msg "No packages found in latest release"
exit 1
fi
for url in $URLS; do
file=$(basename "$url")
filepath="$DOWNLOAD_DIR/$file"
attempt=0
while [ $attempt -lt $COUNT ]; do
msg "Downloading $file (attempt $((attempt+1)))..."
if wget -q -O "$filepath" "$url"; then
if [ -s "$filepath" ]; then
msg "$file successfully downloaded"
break
fi
fi
msg "Download error $file. Retry..."
rm -f "$filepath"
attempt=$((attempt+1))
done
if [ $attempt -eq $COUNT ]; then
msg "Failed to download $file after $COUNT attempts"
fi
done
}
install_packages() {
for pkg in podkop luci-app-podkop; do
file=$(ls "$DOWNLOAD_DIR" | grep "^$pkg" | head -n 1)
if [ -n "$file" ]; then
msg "Installing $file"
opkg install "$DOWNLOAD_DIR/$file"
sleep 3
fi
done
ru=$(ls "$DOWNLOAD_DIR" | grep "luci-i18n-podkop-ru" | head -n 1)
if [ -n "$ru" ]; then
if opkg list-installed | grep -q luci-i18n-podkop-ru; then
msg "Upgraded ru translation..."
opkg remove luci-i18n-podkop*
opkg install "$DOWNLOAD_DIR/$ru"
else
msg "Русский язык интерфейса ставим? y/n (Need a Russian translation?)"
while true; do
read -r RUS
case $RUS in
y)
opkg remove luci-i18n-podkop*
opkg install "$DOWNLOAD_DIR/$ru"
break
;;
n)
break
;;
*)
echo "Введите y или n"
;;
esac
done
fi
fi
# Чистим
find "$DOWNLOAD_DIR" -type f -name '*podkop*' -exec rm {} \;
}
check_system() {
MODEL=$(cat /tmp/sysinfo/model 2>/dev/null || echo "Unknown")
msg "Router model: $MODEL"
openwrt_version=$(cat /etc/openwrt_release 2>/dev/null | grep DISTRIB_RELEASE | cut -d"'" -f2 | cut -d'.' -f1 || echo "Unknown")
if [ "$openwrt_version" = "23" ]; then
msg "OpenWrt 23.05 не поддерживается начиная с podkop 0.5.0"
exit 1
fi
AVAILABLE_SPACE=$(df /overlay 2>/dev/null | awk 'NR==2 {print $4}' || echo 0)
REQUIRED_SPACE=15360
if [ "$AVAILABLE_SPACE" -lt "$REQUIRED_SPACE" ]; then
msg "Insufficient space. Available: $((AVAILABLE_SPACE/1024))MB, Required: $((REQUIRED_SPACE/1024))MB"
exit 1
fi
if ! nslookup google.com >/dev/null 2>&1; then
msg "DNS not working"
exit 1
fi
if opkg list-installed | grep -q https-dns-proxy; then
msg "Сonflicting package detected: https-dns-proxy. Remove?"
while true; do
read -r DNSPROXY
case $DNSPROXY in
yes|y|Y) opkg remove --force-depends luci-app-https-dns-proxy https-dns-proxy luci-i18n-https-dns-proxy*; break ;;
*) msg "Exit"; exit 1 ;;
esac
done
fi
}
sing_box() {
if ! opkg list-installed | grep -q "^sing-box"; then return; fi
sing_box_version=$(sing-box version | head -n 1 | awk '{print $3}')
required_version="1.12.4"
if [ "$(echo -e "$sing_box_version\n$required_version" | sort -V | head -n 1)" != "$required_version" ]; then
msg "sing-box version $sing_box_version is older than required $required_version"
msg "Removing old version..."
opkg remove sing-box
fi
}
main