GoTelegram MTProxy + bot (gotelegram_pro)

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-06 14:59:00 +03:00
commit 29b6e05866
11 changed files with 1030 additions and 0 deletions

99
IMPROVEMENTS.md Normal file
View File

@@ -0,0 +1,99 @@
# Предложения по улучшению GoTelegram MTProxy
## Анализ текущего скрипта
Скрипт уже хорошо структурирован: проверка root, установка зависимостей, меню, работа с Docker (nineseconds/mtg). Ниже — конкретные улучшения.
---
## 1. Безопасность и надёжность
### 1.1 Валидация порта
- **Сейчас:** при выборе "свой порт" можно ввести нечисло или порт вне диапазона.
- **Предложение:** проверять число в диапазоне 165535 и повторять запрос при ошибке.
```bash
while true; do
read -p "Введите порт (1-65535): " PORT
[[ "$PORT" =~ ^[0-9]+$ ]] && (( PORT >= 1 && PORT <= 65535 )) && break
echo "Неверный порт."
done
```
### 1.2 Проверка занятости порта
- Перед запуском контейнера проверять, что порт свободен (например, `ss -tlnp | grep -q ":$PORT "`), и выводить понятное сообщение, если порт занят.
### 1.3 Остановка только своего контейнера
- В пункте 4 (удаление) использовать `docker stop mtproto-proxy 2>/dev/null; docker rm mtproto-proxy 2>/dev/null` и проверять код возврата, чтобы не путать с отсутствием контейнера.
---
## 2. Функциональность
### 2.1 Свой домен для Fake TLS
- В списке доменов добавить пункт "Свой домен" с вводом произвольной строки и базовой проверкой (например, наличие точки, длина).
### 2.2 Рестарт прокси
- Отдельный пункт меню "Перезапустить прокси" без пересоздания контейнера: `docker restart mtproto-proxy`.
### 2.3 Логи
- Пункт "Показать логи" (последние N строк): `docker logs --tail 50 mtproto-proxy`.
### 2.4 Обновление образа mtg
- Пункт "Обновить образ mtg": `docker pull nineseconds/mtg:2`, затем предложить пересоздать прокси с теми же параметрами (сохранить secret/порт из текущего контейнера).
### 2.5 Сохранение конфигурации
- Сохранять выбранные домен и порт в файл (например, `/etc/gotelegram.conf` или `~/.gotelegram`), чтобы при обновлении/переустановке не вводить заново.
---
## 3. Удобство и совместимость
### 3.1 Поддержка RHEL/CentOS
- В `install_deps` для установки `qrencode` использовать `command -v apt-get` / `command -v yum` или `dnf`, а не только `apt-get` и `yum`, чтобы корректно работало на RHEL 8+.
### 3.2 Неинтерактивный режим
- Поддержка аргументов для автоматической установки, например:
`./setup_gotelegram.sh --domain wikipedia.org --port 443 --no-promo`
- Полезно для скриптов развёртывания и для бота.
### 3.3 Отключение промо
- Переменная окружения или флаг, например `SKIP_PROMO=1` или `--no-promo`, чтобы при первом запуске не показывать промо (для автоматизации и бота).
---
## 4. Вывод и интерфейс
### 4.1 Текстовый вывод ссылки для копирования
- В `show_config` выводить ссылку в одну строку без переносов, чтобы удобно копировать из терминала и отправлять в бота/чат.
### 4.2 Сообщение при отсутствии прокси
- В пункте 2 при отсутствии контейнера не только "Прокси не найден!", но и подсказка: "Выберите пункт 1 для установки."
### 4.3 Версия скрипта
- В начале или в меню выводить версию (например, из переменной `VERSION="1.0"`), чтобы при обновлениях было проще отлаживать.
---
## 5. Мелкие правки
### 5.1 Заголовок промо
- В рамке промо текст "ХОСТИНГ СО СКИДКОЙ..." разной длины — выровнять по ширине рамки или центрировать, чтобы рамка не "прыгала".
### 5.2 Имя контейнера
- Сейчас жёстко `mtproto-proxy`. Имеет смысл вынести в переменную в начале скрипта (например, `CONTAINER_NAME="mtproto-proxy"`), чтобы при необходимости можно было менять в одном месте.
### 5.3 Таймауты curl
- В `get_ip` уже есть `--max-time 5`. Можно добавить резервный источник (например, `ifconfig.me` или `ipecho.net/plain`) на случай недоступности основных.
---
## Приоритеты внедрения
| Приоритет | Улучшение |
|-----------|-----------|
| Высокий | Валидация порта, проверка занятости порта, неинтерактивный режим / отключение промо |
| Средний | Свой домен, рестарт, логи, сохранение конфигурации |
| Низкий | Версия скрипта, выравнивание промо, дополнительные источники IP |
Эти изменения улучшат устойчивость скрипта в автоматизации и при использовании через Telegram-бота.