Files
mypointvpn/src/App/README.md
T

3.0 KiB

App

Django приложение связывающее все части сайта в одном месте. Никто не импортирует App, кроме MyPointVPN, а App может импортировать все.

-[x] Реализует кастомный менеджер модели и кастомную модель пользователя с отключенным email. -[x] Модель данных для поддержки интерфейса и функционала -[ ] Настройки домена, прокси и cloudflare у готовой точки -[ ] Клиенты и статистика через API панели 3x-ui

Зависимости: Telegram (интерфейс бота, пользователи, уведомления) и serverus (настройка серверов).

Модель данных

  • Point - точка доступа: сервер с панелью 3x-ui и необязательный сервер маскировки. Владелец - Telegram.User. Хранит домен, cloudflare, прокси на выходе и доступ к панели.
  • Server - сервер точки с ролью panel или mask. Хранит текущие порт ssh, пароль root, ключ и отпечаток ssh, а также пароль root, присланный пользователем при добавлении (default_root_password).

С маскировкой клиенты подключаются к серверу маскировки, он перенаправляет трафик на панель и скрывает ее адрес. Маскировка требует домен.

Модули

  • services.py - сценарии поверх serverus: create_point, install_point, reinstall, release_point.
  • tasks.py - задачи dramatiq: запускают сценарий и присылают результат в чат. Воркер: make dj_worker.
  • bot/interface.py - интерфейс бота MyPointInterface (выбирается у бота в админке).
  • bot/texts.py - кнопки и тексты.

Установка точки

  1. bootstrap обоих серверов (ключ, пароль root, обновление, ssh на случайном порту, nftables)
  2. панель: 3x-ui с логином, паролем, портом и путем, которые сгенерировал App
  3. маскировка: перенаправление трафика на адрес панели
  4. facts: uname -a для карточки сервера

"Переустановить" сбрасывает отпечаток ssh сервера и повторяет установку с новым паролем от провайдера или, по кнопке "Использовать старый", с паролем, присланным при добавлении сервера. Отпечаток можно сбросить и в админке.