Fix self_update URL to kaskad-pro, add GitHub PAT support for private repo updates, auto-restart services on update

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-05 18:12:02 +03:00
parent 0aef390214
commit 1ba8f98533

View File

@@ -382,16 +382,38 @@ flush_rules() {
# ─── Auto-update ────────────────────────────────────────────── # ─── Auto-update ──────────────────────────────────────────────
self_update() { self_update() {
local url="https://raw.githubusercontent.com/anten-ka/kaskad/main/install.sh" local repo_url="https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh"
local update_token
update_token=$(bot_get_state "system" "UPDATE_TOKEN" 2>/dev/null)
echo -e "${YELLOW}[*] Загрузка обновления...${NC}" echo -e "${YELLOW}[*] Загрузка обновления...${NC}"
if wget -qO /tmp/kaskad_update.sh "$url" 2>/dev/null; then
local ok=0
if [ -n "$update_token" ]; then
curl -sL -H "Authorization: token $update_token" "$repo_url" -o /tmp/kaskad_update.sh 2>/dev/null && ok=1
fi
if [ "$ok" -eq 0 ]; then
wget -qO /tmp/kaskad_update.sh "$repo_url" 2>/dev/null && ok=1
fi
if [ "$ok" -eq 0 ] && [ -n "$update_token" ]; then
wget -qO /tmp/kaskad_update.sh --header="Authorization: token $update_token" "$repo_url" 2>/dev/null && ok=1
fi
if [ "$ok" -eq 1 ] && [ -s /tmp/kaskad_update.sh ]; then
cp -f /tmp/kaskad_update.sh /usr/local/bin/gokaskad cp -f /tmp/kaskad_update.sh /usr/local/bin/gokaskad
chmod +x /usr/local/bin/gokaskad chmod +x /usr/local/bin/gokaskad
rm -f /tmp/kaskad_update.sh rm -f /tmp/kaskad_update.sh
echo -e "${GREEN}[OK] Скрипт обновлён! Перезапустите: gokaskad${NC}"
systemctl restart kaskad-bot 2>/dev/null
systemctl restart kaskad-monitor 2>/dev/null
echo -e "${GREEN}[OK] Скрипт обновлён! Службы перезапущены.${NC}"
echo -e "${GREEN}Перезапустите меню: gokaskad${NC}"
log_action "Self-update completed" log_action "Self-update completed"
else else
echo -e "${RED}[ERROR] Не удалось скачать обновление.${NC}" echo -e "${RED}[ERROR] Не удалось скачать обновление.${NC}"
echo -e "${YELLOW}Если репо приватный, задайте токен: меню 8 → доп. опции${NC}"
rm -f /tmp/kaskad_update.sh
fi fi
read -p "Нажмите Enter..." read -p "Нажмите Enter..."
} }
@@ -1349,11 +1371,19 @@ bot_menu() {
echo -e "Токен: ${YELLOW}$token_display${NC}" echo -e "Токен: ${YELLOW}$token_display${NC}"
echo -e "Chat ID: ${YELLOW}${BOT_CHAT_ID:-не задан}${NC}" echo -e "Chat ID: ${YELLOW}${BOT_CHAT_ID:-не задан}${NC}"
echo "" echo ""
local ut_display="не задан"
local ut_val
ut_val=$(bot_get_state "system" "UPDATE_TOKEN" 2>/dev/null)
[ -n "$ut_val" ] && ut_display="***${ut_val: -6}"
echo -e "Update Token: ${YELLOW}$ut_display${NC}"
echo ""
echo -e "1) Установить токен бота" echo -e "1) Установить токен бота"
echo -e "2) Получить Chat ID (авто)" echo -e "2) Получить Chat ID (авто)"
echo -e "3) Установить Chat ID вручную" echo -e "3) Установить Chat ID вручную"
echo -e "4) ${GREEN}Запустить бота${NC}" echo -e "4) ${GREEN}Запустить бота${NC}"
echo -e "5) ${RED}Остановить бота${NC}" echo -e "5) ${RED}Остановить бота${NC}"
echo -e "6) Установить токен обновления (GitHub PAT)"
echo -e "0) Назад" echo -e "0) Назад"
read -p "Выбор: " choice read -p "Выбор: " choice
@@ -1398,6 +1428,15 @@ bot_menu() {
;; ;;
4) start_bot; read -p "Enter..." ;; 4) start_bot; read -p "Enter..." ;;
5) stop_bot; read -p "Enter..." ;; 5) stop_bot; read -p "Enter..." ;;
6)
echo -e "Введите GitHub PAT (для скачивания обновлений из приватного репо):"
read -p "> " new_ut
if [ -n "$new_ut" ]; then
bot_set_state "system" "UPDATE_TOKEN=$new_ut"
echo -e "${GREEN}[OK] Токен обновления сохранён.${NC}"
fi
read -p "Enter..."
;;
0) return ;; 0) return ;;
esac esac
done done