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- кнопки и тексты.
Установка точки
- bootstrap обоих серверов (ключ, пароль root, обновление, ssh на случайном порту, nftables)
- панель: 3x-ui с логином, паролем, портом и путем, которые сгенерировал App
- маскировка: перенаправление трафика на адрес панели
- facts:
uname -aдля карточки сервера
"Переустановить" сбрасывает отпечаток ssh сервера и повторяет установку с новым паролем от провайдера или, по кнопке "Использовать старый", с паролем, присланным при добавлении сервера. Отпечаток можно сбросить и в админке.