Перейти к содержанию

Блокировка альтернативных приложений — что сделано и как откатить

Дата: 17 марта 2026 Причина: Безопасность трафика — предотвращение блокировки РКН subscription URL и ссылок на альтернативные приложения Статус: Все user-facing точки заблокированы. Backend API не тронут (используется VPN-приложениями напрямую).


Что заблокировано

1. Личный кабинет (lk_front/, GitLab project #40)

Страница /alternative-apps — subscription URL + инструкции V2Ray + ссылки на приложения

Файл Что изменено Как откатить
src/pages-components/alternative-apps/index.tsx Компонент заменён на {t('blocked')} текст Восстановить оригинал: platform selector, Instructions, OriginalApp components
src/pages-components/downloads/alternative-apps/index.tsx Кнопка-ссылка заменена на заблокированный текст Восстановить <Link href={ROUTE.ALTERNATIVE_APPS}> кнопку
public/locales/ru/alternative-apps.json Добавлен ключ "blocked" Удалить ключ (не используется другими компонентами)
public/locales/en/alternative-apps.json Добавлен ключ "blocked" Удалить ключ

Deploy: push в main → CI auto-builds → ручной update_service_prod в GitLab CI Target: 10.99.87.63, контейнер vpn-lk, порт 8082 URL доступа: shiva-app.io/account (работает), shivavpn.io/account (заблокирован РКН)

Быстрый откат:

cd lk_front
git revert HEAD~3..HEAD   # откатить последние 3 коммита (block + text updates)
git push origin main
# затем запустить update_service_prod в GitLab CI

2. User Bot (telegram-user-bot/, GitLab project #58)

Файл Что изменено Как откатить
src/shivavpn/handlers/v2ray/vless.py v2ray_entry → показывает blocked message вместо subscription URLs Восстановить оригинал: db.account_num_check_send_subscriptions flow
src/shivavpn/handlers/v2ray/guides.py send_guide_v2ray + selected_platform → blocked message Восстановить оригинал: platform keyboard + instruction messages
src/shivavpn/handlers/download.py Убрана V2Ray кнопка из install_apps() keyboard Добавить обратно: [types.InlineKeyboardButton(text="V2Ray", callback_data="v2ray_vpn")]
src/shivavpn/handlers/subscription.py shiva_light, remna_trial, remna_status → blocked message Восстановить оригинал: _show_shiva_light, trial creation, status check

Deploy: push в main → ручной перезапуск на karmann2 (screen sessions)

ssh -J root@212.70.189.60:2255 -p 2255 -i ~/.ssh/id_ed25519_shivavpn root@212.70.189.68
kill $(pgrep -f 'shivavpn/bot.py')
su - kadmin -c 'cd /home/kadmin/telegram_bots/shivavpn/src/shivavpn && screen -S shiva_bot -X stuff "python3 bot.py\n"'

Быстрый откат:

cd telegram-user-bot
git revert HEAD~3..HEAD
git push origin main
# затем SSH на karmann2 и перезапустить бот

3. Блог (frontend/, GitLab project #37)

Файл Что изменено Как откатить
public/data/blog/articles/articles.json Удалена запись subscription-links-for-third-party-apps Добавить запись обратно (см. git history)

Protected branch

main branch ЗАЩИЩЁН — нужен MR. Текущий MR: !233. JSON-файлы статей остались в public/data/blog/articles/ru/ и en/ — просто убраны из индекса.

Быстрый откат:

cd frontend
git revert <commit-hash>
# создать MR, смёрджить, задеплоить

Backend API (не заблокированы — используются VPN-приложениями)

Эти endpoints используются клиентскими приложениями напрямую и не тронуты:

Endpoint Auth Назначение
GET /api/account/subscription-url JWT Возвращает subscription URLs для авторизованного пользователя
GET /s/{opaqueToken} Public (token-based) Subscription proxy — возвращает VLESS config feed
GET /api/v2/subscription/{account}?token={hmac} HMAC XUI subscription feed
GET /api/v2/subscription/vless/{account} Public 302 redirect на Remnawave
GET /api/v2/subscription/whitelist/{account} Public Whitelist VLESS feed

Полная карта точек

Полная карта всех subscription URL и ссылок на альтернативные приложения: docs/guides/KNOWLEDGE-BASE-INDEX.md → раздел "Subscription URL & Alternative Apps"