Files
gotelegram_pro/IMPROVEMENTS.md
anten-ka 29b6e05866 GoTelegram MTProxy + bot (gotelegram_pro)
Made-with: Cursor
2026-03-06 14:59:00 +03:00

6.2 KiB
Raw Permalink Blame History

Предложения по улучшению GoTelegram MTProxy

Анализ текущего скрипта

Скрипт уже хорошо структурирован: проверка root, установка зависимостей, меню, работа с Docker (nineseconds/mtg). Ниже — конкретные улучшения.


1. Безопасность и надёжность

1.1 Валидация порта

  • Сейчас: при выборе "свой порт" можно ввести нечисло или порт вне диапазона.
  • Предложение: проверять число в диапазоне 165535 и повторять запрос при ошибке.
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-бота.