mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 20:56:14 +00:00
v2.2.1: clean branch — only v2.2.1 code with 11 security fixes
This commit is contained in:
18
.gitignore
vendored
18
.gitignore
vendored
@@ -1,18 +0,0 @@
|
|||||||
# Секреты и конфиг с токенами
|
|
||||||
.env
|
|
||||||
*.env.local
|
|
||||||
config.local.env
|
|
||||||
|
|
||||||
# Python
|
|
||||||
__pycache__/
|
|
||||||
*.py[cod]
|
|
||||||
venv/
|
|
||||||
.venv/
|
|
||||||
*.egg-info/
|
|
||||||
.eggs/
|
|
||||||
|
|
||||||
# Временные и системные
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
*.log
|
|
||||||
*.tmp
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
# Предложения по улучшению 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-бота.
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
# Установка по ссылке (ключ в команде)
|
|
||||||
|
|
||||||
Чтобы клиент или вы могли ставить бота **одной командой**, в неё подставляется ключ (GitHub Personal Access Token). «Ссылка» = эта одна строка, которую копируют и вставляют в терминал сервера.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Одна команда с ключом (готовый шаблон)
|
|
||||||
|
|
||||||
Подставьте свой **GITHUB_TOKEN** (один раз) в команду ниже и сохраните получившуюся строку. Её можно:
|
|
||||||
- отправить клиенту (пусть вставит в SSH-сессию и запустит);
|
|
||||||
- сохранить у себя как «ссылку для установки».
|
|
||||||
|
|
||||||
**Шаблон (замените `ghp_ВАШ_ТОКЕН` на свой токен):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
GITHUB_TOKEN=ghp_ВАШ_ТОКЕН bash -c 'git clone --depth 1 "https://${GITHUB_TOKEN}@github.com/anten-ka/gotelegram_pro.git" /tmp/gp && sudo -E /tmp/gp/install_gotelegram_bot.sh'
|
|
||||||
```
|
|
||||||
|
|
||||||
**Важно:** переменная `GITHUB_TOKEN` задаётся перед `bash -c`, поэтому во внутренней команде `${GITHUB_TOKEN}` подставится на сервере при выполнении. Токен попадёт в `git clone` и в установочный скрипт.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. Через скрипт из репозитория (то же самое, но через raw-ссылку)
|
|
||||||
|
|
||||||
Если репозиторий **публичный**, можно дать такую «ссылку» (подставьте свой токен):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
GITHUB_TOKEN=ghp_ВАШ_ТОКЕН curl -sL https://raw.githubusercontent.com/anten-ka/gotelegram_pro/main/install_by_key.sh | sudo -E bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Если репо **приватный**, raw-файл без доступа не откроется, поэтому используйте вариант 1 выше (клонирование по токену в одной команде).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Короткая «ссылка» через публичный Gist (приватный репо)
|
|
||||||
|
|
||||||
Чтобы команда была короче и не светить репо, можно выложить **только** маленький скрипт установки в публичный Gist. Тогда «установка по ссылке» = одна команда с ключом, а скрипт берётся по публичной ссылке.
|
|
||||||
|
|
||||||
### Шаг 1: создать Gist
|
|
||||||
|
|
||||||
1. Перейдите на https://gist.github.com
|
|
||||||
2. Создайте новый Gist (публичный).
|
|
||||||
3. Имя файла: `install_gotelegram_pro.sh`
|
|
||||||
4. Вставьте содержимое (подставьте свой репо, если другой):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
T="${GITHUB_TOKEN:?Задайте GITHUB_TOKEN}"
|
|
||||||
R="https://${T}@github.com/anten-ka/gotelegram_pro.git"
|
|
||||||
D="/tmp/gp_$$"
|
|
||||||
trap "rm -rf $D" EXIT
|
|
||||||
git clone --depth 1 --branch main "$R" "$D"
|
|
||||||
sudo -E "$D/install_gotelegram_bot.sh"
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Нажмите **Create public gist** и скопируйте **Raw**-ссылку на файл (например `https://gist.githubusercontent.com/USER/ID/raw/xxx/install_gotelegram_pro.sh`).
|
|
||||||
|
|
||||||
### Шаг 2: «ссылка» для установки
|
|
||||||
|
|
||||||
Вы даёте клиенту одну команду (вместо `ghp_ВАШ_ТОКЕН` — свой токен, вместо `ССЫЛКА_НА_RAW_GIST` — ссылку из шага 1):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
GITHUB_TOKEN=ghp_ВАШ_ТОКЕН curl -sL ССЫЛКА_НА_RAW_GIST | sudo -E bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Пример:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx curl -sL https://gist.githubusercontent.com/anten-ka/xxxxxxxx/raw/xxx/install_gotelegram_pro.sh | sudo -E bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Клиент только копирует эту строку, вставляет в терминал сервера и запускает — установка идёт по ключу из команды.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Безопасность
|
|
||||||
|
|
||||||
- Токен в команде виден в истории shell на сервере. Для разовой установки это допустимо; после установки можно отозвать токен или использовать токен с коротким сроком жизни.
|
|
||||||
- Не публикуйте готовую команду с реальным токеном в открытый доступ (сайт, чат, репо). Делитесь ею только с тем, кому доверяете установку на сервер.
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
# Установка из закрытого GitHub-репозитория (по ключу)
|
|
||||||
|
|
||||||
Инструкция для размещения проекта в **приватном** репозитории и установки на сервер **по SSH-ключу** или **по токену (PAT)**.
|
|
||||||
|
|
||||||
**Установка одной командой с ключом («ключ в ссылке»):** см. **[INSTALL_LINK.md](INSTALL_LINK.md)** — одна строка с подставленным токеном для копирования в терминал.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Размещение в закрытом репозитории
|
|
||||||
|
|
||||||
### 1.1 Создать приватный репозиторий
|
|
||||||
|
|
||||||
1. GitHub → **New repository**.
|
|
||||||
2. Имя, например: `gotelegram_pro`.
|
|
||||||
3. Выберите **Private**.
|
|
||||||
4. Не добавляйте README, .gitignore и лицензию, если пушите существующий проект.
|
|
||||||
|
|
||||||
### 1.2 Загрузить код (с локальной машины)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd "Скрипт mtproxy"
|
|
||||||
git init
|
|
||||||
git remote add origin git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git
|
|
||||||
git add .
|
|
||||||
git commit -m "GoTelegram MTProxy + bot"
|
|
||||||
git branch -M main
|
|
||||||
git push -u origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
Если репо уже есть и вы только добавляете remote:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git remote add origin git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git
|
|
||||||
git push -u origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
### 1.3 Настроить доступ «по ключу»
|
|
||||||
|
|
||||||
Доступ к приватному репо с сервера возможен двумя способами.
|
|
||||||
|
|
||||||
| Способ | Когда использовать |
|
|
||||||
|--------|--------------------|
|
|
||||||
| **SSH-ключ** | На сервере уже настроен `ssh-agent` и ключ добавлен в GitHub (Deploy key или ваш SSH key). |
|
|
||||||
| **Personal Access Token (PAT)** | Удобно для одноразовой установки или CI; токен передаётся в переменной окружения. |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. Установка по SSH-ключу
|
|
||||||
|
|
||||||
### 2.1 Добавить SSH-ключ в GitHub
|
|
||||||
|
|
||||||
**На сервере** (или с машины, с которой будете клонировать):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Сгенерировать ключ (если ещё нет)
|
|
||||||
ssh-keygen -t ed25519 -C "server-gotelegram" -f ~/.ssh/gotelegram_deploy -N ""
|
|
||||||
cat ~/.ssh/gotelegram_deploy.pub
|
|
||||||
```
|
|
||||||
|
|
||||||
- **Личный репо:** GitHub → **Settings → SSH and GPG keys → New SSH key** → вставить содержимое `.pub`.
|
|
||||||
- **Организация:** добавить ключ как **Deploy key** в настройках репозитория (Read-only достаточно).
|
|
||||||
|
|
||||||
Проверка:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ssh -T git@github.com
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2.2 Клонировать и установить
|
|
||||||
|
|
||||||
**Вариант А:** скопируйте `bootstrap_install.sh` на сервер (через scp или вставьте содержимое в файл), затем:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
chmod +x bootstrap_install.sh
|
|
||||||
GIT_REPO_SSH="git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git" sudo bash bootstrap_install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
**Вариант Б:** клонировать репо вручную и запустить установку:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git /tmp/gotelegram_pro
|
|
||||||
sudo /tmp/gotelegram_pro/install_gotelegram_bot.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Установка по токену (PAT)
|
|
||||||
|
|
||||||
### 3.1 Создать Personal Access Token
|
|
||||||
|
|
||||||
1. GitHub → **Settings → Developer settings → Personal access tokens**.
|
|
||||||
2. **Tokens (classic)** → **Generate new token**.
|
|
||||||
3. Права: минимум **repo** (полный доступ к приватным репо).
|
|
||||||
4. Скопировать токен (один раз показывается).
|
|
||||||
|
|
||||||
### 3.2 Установка одной командой (bootstrap)
|
|
||||||
|
|
||||||
Скопируйте **bootstrap_install.sh** на сервер (scp или создайте файл и вставьте содержимое из репо). Затем:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Подставьте свой токен и репо
|
|
||||||
export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
||||||
export GIT_REPO_HTTPS="https://github.com/ВАШ_ЛОГИН/gotelegram_pro.git"
|
|
||||||
sudo -E bash bootstrap_install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
`-E` сохраняет переменные окружения (в т.ч. `GITHUB_TOKEN`) при sudo.
|
|
||||||
|
|
||||||
Вариант без экспорта (токен в истории не сохраняйте в продакшене):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
GITHUB_TOKEN=ghp_xxx GIT_REPO_HTTPS=https://github.com/USER/gotelegram_pro.git sudo -E bash bootstrap_install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.3 Установка через install_gotelegram_bot.sh
|
|
||||||
|
|
||||||
Если скрипт **install_gotelegram_bot.sh** уже лежит на сервере (скопирован из репо), но папки **gotelegram-bot** рядом нет, скрипт сам попытается клонировать репо по токену:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
|
|
||||||
export GOTETELEGRAM_BOT_REPO="https://github.com/ВАШ_ЛОГИН/gotelegram_pro"
|
|
||||||
sudo -E ./install_gotelegram_bot.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Токен в процессе установки **не сохраняется** на диск, только используется для `git clone`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Безопасность
|
|
||||||
|
|
||||||
- **SSH:** используйте отдельный ключ (Deploy key) с доступом только к этому репо и при необходимости только на чтение.
|
|
||||||
- **PAT:** не коммитьте токен в репо и не оставляйте в истории shell. Для повторных установок лучше SSH или новый токен.
|
|
||||||
- После установки можно удалить клонированную папку: `rm -rf /tmp/gotelegram_pro*`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. Краткая шпаргалка
|
|
||||||
|
|
||||||
| Задача | Команда |
|
|
||||||
|--------|--------|
|
|
||||||
| Установка по SSH (репо уже клонирован) | `sudo ./install_gotelegram_bot.sh` |
|
|
||||||
| Установка по SSH (bootstrap) | `GIT_REPO_SSH=git@github.com:USER/REPO.git sudo bash bootstrap_install.sh` |
|
|
||||||
| Установка по токену (bootstrap) | `GITHUB_TOKEN=ghp_xxx GIT_REPO_HTTPS=https://github.com/USER/REPO.git sudo -E bash bootstrap_install.sh` |
|
|
||||||
| Установка по токену (только install-скрипт) | `GITHUB_TOKEN=ghp_xxx sudo -E ./install_gotelegram_bot.sh` |
|
|
||||||
|
|
||||||
Вместо `USER/REPO` подставьте свой логин и имя репозитория.
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
═══════════════════════════════════════════════════════════════
|
|
||||||
Как выложить проект в GitHub (ключ давать никому не нужно)
|
|
||||||
═══════════════════════════════════════════════════════════════
|
|
||||||
|
|
||||||
1. Создайте репозиторий на GitHub
|
|
||||||
• Откройте: https://github.com/new
|
|
||||||
• Repository name: gotelegram_pro
|
|
||||||
• Выберите Private (или Public)
|
|
||||||
• НЕ добавляйте README, .gitignore, License — нажмите Create repository
|
|
||||||
|
|
||||||
2. Настройте доступ к GitHub с этого компьютера (один раз)
|
|
||||||
|
|
||||||
Вариант А — по SSH (удобно навсегда):
|
|
||||||
• Установите Git: https://git-scm.com/download/win
|
|
||||||
• Создайте ключ: в терминале (Git Bash или PowerShell):
|
|
||||||
ssh-keygen -t ed25519 -C "your@email" -f "%USERPROFILE%\.ssh\id_ed25519" -N ""
|
|
||||||
• Скопируйте публичный ключ в буфер:
|
|
||||||
type %USERPROFILE%\.ssh\id_ed25519.pub
|
|
||||||
• GitHub → Settings → SSH and GPG keys → New SSH key → вставьте ключ
|
|
||||||
• Проверка: ssh -T git@github.com
|
|
||||||
|
|
||||||
Вариант Б — по токену (разовый или если не хотите SSH):
|
|
||||||
• GitHub → Settings → Developer settings → Personal access tokens
|
|
||||||
• Generate new token (classic), право: repo
|
|
||||||
• Скопируйте токен (ghp_...)
|
|
||||||
• При первом push Git спросит логин и пароль — в пароль вставьте этот токен
|
|
||||||
• Или: git remote set-url origin https://ВАШ_ТОКЕН@github.com/anten-ka/gotelegram_pro.git
|
|
||||||
|
|
||||||
3. Запустите выкладку
|
|
||||||
• Дважды щёлкните: push_to_github.bat
|
|
||||||
• Подтвердите отправку (y)
|
|
||||||
• Если всё настроено — код уйдёт в репо без ввода ключа в чат
|
|
||||||
|
|
||||||
Ключ или токен нужны только на вашем компьютере в настройках Git — никому (и ни в какой чат) их передавать не нужно.
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Bootstrap: клонирует приватный репозиторий (по SSH или по токену) и запускает установку.
|
|
||||||
# Использование:
|
|
||||||
# По SSH-ключу: GIT_REPO_SSH=git@github.com:USER/REPO.git bash bootstrap_install.sh
|
|
||||||
# По токену: GITHUB_TOKEN=ghp_xxx GIT_REPO_HTTPS=https://github.com/USER/REPO.git bash bootstrap_install.sh
|
|
||||||
# Или задайте репо по умолчанию ниже и запустите: sudo bash bootstrap_install.sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Репозиторий по умолчанию (подставьте свой)
|
|
||||||
REPO_SSH="${GIT_REPO_SSH:-git@github.com:anten-ka/gotelegram_pro.git}"
|
|
||||||
REPO_HTTPS="${GIT_REPO_HTTPS:-https://github.com/anten-ka/gotelegram_pro.git}"
|
|
||||||
BRANCH="${GIT_BRANCH:-main}"
|
|
||||||
CLONE_DIR="/tmp/gotelegram_pro_install_$$"
|
|
||||||
|
|
||||||
cleanup() { rm -rf "$CLONE_DIR"; }
|
|
||||||
trap cleanup EXIT
|
|
||||||
|
|
||||||
echo -e "${GREEN}[*] Установка GoTelegram Bot из приватного репозитория${NC}"
|
|
||||||
|
|
||||||
if ! command -v git &>/dev/null; then
|
|
||||||
echo -e "${YELLOW}[*] Установка git...${NC}"
|
|
||||||
if command -v apt-get &>/dev/null; then
|
|
||||||
apt-get update && apt-get install -y git
|
|
||||||
elif command -v dnf &>/dev/null; then
|
|
||||||
dnf install -y git
|
|
||||||
elif command -v yum &>/dev/null; then
|
|
||||||
yum install -y git
|
|
||||||
else
|
|
||||||
echo -e "${RED}Установите git вручную.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$GITHUB_TOKEN" ]; then
|
|
||||||
echo -e "${GREEN}[*] Клонирование по токену (HTTPS)...${NC}"
|
|
||||||
# Подставляем токен в URL для доступа к приватному репо
|
|
||||||
if [[ "$REPO_HTTPS" == https://github.com/* ]]; then
|
|
||||||
CLONE_URL="https://${GITHUB_TOKEN}@github.com/${REPO_HTTPS#https://github.com/}"
|
|
||||||
else
|
|
||||||
CLONE_URL="$REPO_HTTPS"
|
|
||||||
fi
|
|
||||||
git clone --depth 1 --branch "$BRANCH" "$CLONE_URL" "$CLONE_DIR"
|
|
||||||
elif [ -n "$GIT_REPO_SSH" ]; then
|
|
||||||
echo -e "${GREEN}[*] Клонирование по SSH...${NC}"
|
|
||||||
git clone --depth 1 --branch "$BRANCH" "$GIT_REPO_SSH" "$CLONE_DIR"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}[*] Клонирование по SSH (ключ по умолчанию)...${NC}"
|
|
||||||
git clone --depth 1 --branch "$BRANCH" "$REPO_SSH" "$CLONE_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$CLONE_DIR/install_gotelegram_bot.sh" ]; then
|
|
||||||
echo -e "${RED}В репозитории не найден install_gotelegram_bot.sh${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
chmod +x "$CLONE_DIR/install_gotelegram_bot.sh"
|
|
||||||
# Передаём токен в установочный скрипт, если использовали HTTPS (для совместимости)
|
|
||||||
export GITHUB_TOKEN
|
|
||||||
echo -e "${GREEN}[*] Запуск установки...${NC}"
|
|
||||||
exec sudo "$CLONE_DIR/install_gotelegram_bot.sh"
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Установка по ключу «в ссылке»: одна команда с токеном.
|
|
||||||
# Вариант 1 — подставьте свой GITHUB_TOKEN в команду и дайте её клиенту:
|
|
||||||
# GITHUB_TOKEN=ghp_ВАШ_ТОКЕН bash -c 'curl -sL https://raw.githubusercontent.com/anten-ka/gotelegram_pro/main/install_by_key.sh | sudo -E bash'
|
|
||||||
# Вариант 2 — если этот файл выложен в публичный Gist, «ссылка» будет короче (см. INSTALL_LINK.md).
|
|
||||||
|
|
||||||
set -e
|
|
||||||
REPO="${GOTETELEGRAM_REPO:-https://github.com/anten-ka/gotelegram_pro.git}"
|
|
||||||
BRANCH="${GIT_BRANCH:-main}"
|
|
||||||
DIR="/tmp/gotelegram_pro_$$"
|
|
||||||
trap "rm -rf $DIR" EXIT
|
|
||||||
|
|
||||||
if [ -z "$GITHUB_TOKEN" ]; then
|
|
||||||
echo "Задайте GITHUB_TOKEN. Пример:"
|
|
||||||
echo " GITHUB_TOKEN=ghp_xxx curl -sL ВАША_ССЫЛКА | sudo -E bash"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[*] Клонирование репозитория..."
|
|
||||||
git clone --depth 1 --branch "$BRANCH" "https://${GITHUB_TOKEN}@${REPO#https://}" "$DIR"
|
|
||||||
echo "[*] Запуск установки..."
|
|
||||||
exec sudo -E "$DIR/install_gotelegram_bot.sh"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Готовая ссылка в формате kaskad
|
|
||||||
# Замените YOUR_GITHUB_TOKEN на свой токен (https://github.com/settings/tokens, право repo)
|
|
||||||
# Токен нужен дважды: в curl (скачать скрипт) и в конце (чтобы скрипт скачал файлы бота из приватного репо).
|
|
||||||
|
|
||||||
curl -sL -H "Authorization: token YOUR_GITHUB_TOKEN" https://raw.githubusercontent.com/anten-ka/gotelegram_pro/main/install.sh -o /usr/local/bin/gotelegram && chmod +x /usr/local/bin/gotelegram && systemctl restart gotelegram-bot 2>/dev/null; gotelegram YOUR_GITHUB_TOKEN
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
@echo off
|
|
||||||
chcp 65001 >nul
|
|
||||||
setlocal
|
|
||||||
cd /d "%~dp0"
|
|
||||||
|
|
||||||
set REMOTE=git@github.com:anten-ka/gotelegram_pro.git
|
|
||||||
set BRANCH=main
|
|
||||||
|
|
||||||
echo [*] Репозиторий: https://github.com/anten-ka/gotelegram_pro
|
|
||||||
echo [*] Папка: %CD%
|
|
||||||
echo.
|
|
||||||
|
|
||||||
where git >nul 2>nul
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo Ошибка: git не найден. Установите Git for Windows.
|
|
||||||
pause
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist ".git" (
|
|
||||||
echo [*] Инициализация репозитория...
|
|
||||||
git init
|
|
||||||
)
|
|
||||||
|
|
||||||
git remote remove origin 2>nul
|
|
||||||
git remote add origin %REMOTE%
|
|
||||||
git branch -M %BRANCH%
|
|
||||||
git add .
|
|
||||||
git status
|
|
||||||
|
|
||||||
set /p CONFIRM="Закоммитить и отправить на GitHub? (y/n): "
|
|
||||||
if /i not "%CONFIRM%"=="y" (
|
|
||||||
echo Отменено.
|
|
||||||
pause
|
|
||||||
exit /b 0
|
|
||||||
)
|
|
||||||
|
|
||||||
git commit -m "GoTelegram MTProxy + bot (gotelegram_pro)" 2>nul || git commit --allow-empty -m "Update"
|
|
||||||
echo [*] Отправка на origin/%BRANCH%...
|
|
||||||
git push -u origin %BRANCH%
|
|
||||||
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo.
|
|
||||||
echo Не удалось отправить. Проверьте:
|
|
||||||
echo 1. Репо создан на GitHub: https://github.com/anten-ka/gotelegram_pro
|
|
||||||
echo 2. Доступ по SSH: ssh -T git@github.com
|
|
||||||
echo 3. Или настройте токен: git remote set-url origin https://ВАШ_ТОКЕН@github.com/anten-ka/gotelegram_pro.git
|
|
||||||
pause
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo Готово: https://github.com/anten-ka/gotelegram_pro
|
|
||||||
pause
|
|
||||||
Reference in New Issue
Block a user