Блокировка альтернативных приложений — что сделано и как откатить¶
Дата: 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/ — просто убраны из индекса.
Быстрый откат:
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"