# Предложения по улучшению GoTelegram MTProxy ## Анализ текущего скрипта Скрипт уже хорошо структурирован: проверка root, установка зависимостей, меню, работа с Docker (nineseconds/mtg). Ниже — конкретные улучшения. --- ## 1. Безопасность и надёжность ### 1.1 Валидация порта - **Сейчас:** при выборе "свой порт" можно ввести нечисло или порт вне диапазона. - **Предложение:** проверять число в диапазоне 1–65535 и повторять запрос при ошибке. ```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-бота.