mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-06-15 17:02:48 +00:00
Compare commits
4 Commits
v2.4.6
...
8f249c35e5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f249c35e5 | ||
|
|
bb2502e1fc | ||
|
|
b10ea54ce9 | ||
|
|
2f3045bcc0 |
2
bootstrap.sh
Normal file → Executable file
2
bootstrap.sh
Normal file → Executable file
@@ -6,7 +6,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
REPO="anten-ka/gotelegram_pro"
|
REPO="anten-ka/gotelegram_pro"
|
||||||
BRANCH="${GOTELEGRAM_BRANCH:-test}"
|
BRANCH="${GOTELEGRAM_BRANCH:-test}"
|
||||||
PAT="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"
|
PAT="${GOTELEGRAM_PAT:-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}"
|
||||||
INSTALL_DIR="/opt/gotelegram"
|
INSTALL_DIR="/opt/gotelegram"
|
||||||
# Use raw.githubusercontent.com (CDN) — faster and avoids Contents API caching
|
# Use raw.githubusercontent.com (CDN) — faster and avoids Contents API caching
|
||||||
# issues that occasionally return 404 for recently added files on non-default branches.
|
# issues that occasionally return 404 for recently added files on non-default branches.
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ logger = logging.getLogger(__name__)
|
|||||||
# CONFIGURATION
|
# CONFIGURATION
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
||||||
GOTELEGRAM_VERSION = "2.4.6"
|
GOTELEGRAM_VERSION = "2.4.7"
|
||||||
GOTELEGRAM_CONFIG = "/opt/gotelegram/config.json"
|
GOTELEGRAM_CONFIG = "/opt/gotelegram/config.json"
|
||||||
TELEMT_CONFIG = "/etc/telemt/config.toml"
|
TELEMT_CONFIG = "/etc/telemt/config.toml"
|
||||||
TELEMT_SERVICE = "telemt"
|
TELEMT_SERVICE = "telemt"
|
||||||
|
|||||||
15
install.sh
15
install.sh
@@ -1138,21 +1138,14 @@ mark_promo_shown() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ── Promo with QR + delay (on install + once per day) ───────────────────
|
# ── Promo with QR + delay (on install + once per day) ───────────────────
|
||||||
|
# QR показываем ТОЛЬКО для чаевых/донатов. Для хостеров оставлены только
|
||||||
|
# текстовые ссылки и промокоды (см. _promo_block) — QR-коды хостеров
|
||||||
|
# визуально конкурировали с чаевыми и перегружали экран.
|
||||||
show_promo_with_qr() {
|
show_promo_with_qr() {
|
||||||
_promo_block
|
_promo_block
|
||||||
|
|
||||||
# QR codes
|
# QR только для чаевых
|
||||||
if command -v qrencode &>/dev/null; then
|
if command -v qrencode &>/dev/null; then
|
||||||
echo -e " ${DIM}$(t promo_qr_host1)${NC}"
|
|
||||||
qrencode -t UTF8 -m 1 "https://vk.cc/ct29NQ" 2>/dev/null | while IFS= read -r qr_line; do
|
|
||||||
echo " $qr_line"
|
|
||||||
done
|
|
||||||
echo ""
|
|
||||||
echo -e " ${DIM}$(t promo_qr_host2)${NC}"
|
|
||||||
qrencode -t UTF8 -m 1 "https://vk.cc/cUxAhj" 2>/dev/null | while IFS= read -r qr_line; do
|
|
||||||
echo " $qr_line"
|
|
||||||
done
|
|
||||||
echo ""
|
|
||||||
echo -e " ${DIM}$(t promo_qr_tips)${NC}"
|
echo -e " ${DIM}$(t promo_qr_tips)${NC}"
|
||||||
qrencode -t UTF8 -m 1 "https://pay.cloudtips.ru/p/7410814f" 2>/dev/null | while IFS= read -r qr_line; do
|
qrencode -t UTF8 -m 1 "https://pay.cloudtips.ru/p/7410814f" 2>/dev/null | while IFS= read -r qr_line; do
|
||||||
echo " $qr_line"
|
echo " $qr_line"
|
||||||
|
|||||||
2
lib/common.sh
Executable file → Normal file
2
lib/common.sh
Executable file → Normal file
@@ -3,7 +3,7 @@
|
|||||||
# Colors, logging, spinner, system helpers, v1 compat, i18n-aware
|
# Colors, logging, spinner, system helpers, v1 compat, i18n-aware
|
||||||
|
|
||||||
# ── Version ───────────────────────────────────────────────────────────────────
|
# ── Version ───────────────────────────────────────────────────────────────────
|
||||||
GOTELEGRAM_VERSION="2.4.6"
|
GOTELEGRAM_VERSION="2.4.7"
|
||||||
GOTELEGRAM_NAME="GoTelegram"
|
GOTELEGRAM_NAME="GoTelegram"
|
||||||
|
|
||||||
# ── Пути ──────────────────────────────────────────────────────────────────────
|
# ── Пути ──────────────────────────────────────────────────────────────────────
|
||||||
|
|||||||
87
lib/telemt.sh
Executable file → Normal file
87
lib/telemt.sh
Executable file → Normal file
@@ -19,27 +19,55 @@ get_latest_telemt_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_telemt_download_url() {
|
get_telemt_download_url() {
|
||||||
local arch
|
# 1) Сначала пробуем GitHub Releases API — он отдаёт точное имя ассета
|
||||||
|
# последнего релиза (в т.ч. если в репо есть несколько архитектур,
|
||||||
|
# pre-release и т.д.). Это наш предпочтительный путь.
|
||||||
|
local resp url arch
|
||||||
arch=$(get_arch)
|
arch=$(get_arch)
|
||||||
local resp
|
|
||||||
resp=$(curl -s --max-time 10 "$TELEMT_RELEASE_API" 2>/dev/null)
|
resp=$(curl -s --max-time 10 "$TELEMT_RELEASE_API" 2>/dev/null)
|
||||||
if [ -z "$resp" ]; then return 1; fi
|
if [ -n "$resp" ]; then
|
||||||
|
url=$(echo "$resp" | jq -r --arg a "$arch" '
|
||||||
|
.assets[]?.browser_download_url
|
||||||
|
| select(test("linux"))
|
||||||
|
| select(
|
||||||
|
($a == "amd64" and (test("x86_64|amd64"))) or
|
||||||
|
($a == "arm64" and (test("aarch64|arm64"))) or
|
||||||
|
($a == "armv7" and (test("armv7"))) or
|
||||||
|
(test($a))
|
||||||
|
)
|
||||||
|
| select(test("gnu"))
|
||||||
|
' 2>/dev/null | head -1)
|
||||||
|
if [ -n "$url" ] && [ "$url" != "null" ]; then
|
||||||
|
echo "$url"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# URL format: telemt-x86_64-linux-gnu.tar.gz (arch BEFORE linux)
|
# 2) Fallback: API не ответил / отдал 403 (rate limit на shared-IP VPS),
|
||||||
local arch_pattern
|
# отдал пустой JSON, или jq не нашёл подходящий ассет.
|
||||||
|
# Берём прямой "magic redirect" CDN-URL — он не считается в API rate
|
||||||
|
# limit и всегда указывает на последний релиз.
|
||||||
|
local arch_name
|
||||||
case "$arch" in
|
case "$arch" in
|
||||||
amd64) arch_pattern="(amd64|x86_64)" ;;
|
amd64) arch_name="x86_64" ;;
|
||||||
arm64) arch_pattern="(arm64|aarch64)" ;;
|
arm64) arch_name="aarch64" ;;
|
||||||
armv7) arch_pattern="(armv7|arm)" ;;
|
armv7) arch_name="armv7" ;;
|
||||||
*) arch_pattern="${arch}" ;;
|
*) arch_name="$arch" ;;
|
||||||
esac
|
esac
|
||||||
|
echo "https://github.com/${TELEMT_GITHUB}/releases/latest/download/telemt-${arch_name}-linux-gnu.tar.gz"
|
||||||
|
}
|
||||||
|
|
||||||
echo "$resp" | jq -r ".assets[].browser_download_url" 2>/dev/null \
|
# Fallback URL using musl libc (some minimal distros / older glibc)
|
||||||
| grep -iE "$arch_pattern" \
|
get_telemt_download_url_musl() {
|
||||||
| grep -i "linux" \
|
local arch arch_name
|
||||||
| grep -v "sha256" \
|
arch=$(get_arch)
|
||||||
| grep "gnu" \
|
case "$arch" in
|
||||||
| head -1
|
amd64) arch_name="x86_64" ;;
|
||||||
|
arm64) arch_name="aarch64" ;;
|
||||||
|
armv7) arch_name="armv7" ;;
|
||||||
|
*) arch_name="$arch" ;;
|
||||||
|
esac
|
||||||
|
echo "https://github.com/${TELEMT_GITHUB}/releases/latest/download/telemt-${arch_name}-linux-musl.tar.gz"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ── Установленная версия ─────────────────────────────────────────────────────
|
# ── Установленная версия ─────────────────────────────────────────────────────
|
||||||
@@ -69,18 +97,35 @@ download_telemt() {
|
|||||||
log_info "Скачивание: $url"
|
log_info "Скачивание: $url"
|
||||||
|
|
||||||
if ! curl -L -s --max-time 120 -o "$tmp_file" "$url"; then
|
if ! curl -L -s --max-time 120 -o "$tmp_file" "$url"; then
|
||||||
log_error "Ошибка скачивания telemt"
|
log_warning "Не удалось скачать gnu-сборку, пробую musl..."
|
||||||
rm -f "$tmp_file"
|
url=$(get_telemt_download_url_musl)
|
||||||
return 1
|
log_info "Скачивание: $url"
|
||||||
|
if ! curl -L -s --max-time 120 -o "$tmp_file" "$url"; then
|
||||||
|
log_error "Ошибка скачивания telemt (gnu и musl)"
|
||||||
|
rm -f "$tmp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверяем что файл не пустой и не HTML
|
# Проверяем что файл не пустой и не HTML
|
||||||
local file_size
|
local file_size
|
||||||
file_size=$(stat -c%s "$tmp_file" 2>/dev/null || echo 0)
|
file_size=$(stat -c%s "$tmp_file" 2>/dev/null || echo 0)
|
||||||
if [ "$file_size" -lt 1000 ]; then
|
if [ "$file_size" -lt 1000 ]; then
|
||||||
log_error "Скачанный файл слишком маленький ($file_size байт) — возможна ошибка сети"
|
# Try musl as fallback if gnu came back empty/error-html
|
||||||
rm -f "$tmp_file"
|
log_warning "Файл подозрительно мал ($file_size байт), пробую musl-сборку..."
|
||||||
return 1
|
url=$(get_telemt_download_url_musl)
|
||||||
|
log_info "Скачивание: $url"
|
||||||
|
if ! curl -L -s --max-time 120 -o "$tmp_file" "$url"; then
|
||||||
|
log_error "Ошибка скачивания telemt (musl fallback)"
|
||||||
|
rm -f "$tmp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
file_size=$(stat -c%s "$tmp_file" 2>/dev/null || echo 0)
|
||||||
|
if [ "$file_size" -lt 1000 ]; then
|
||||||
|
log_error "Скачанный файл слишком маленький ($file_size байт) — возможна ошибка сети"
|
||||||
|
rm -f "$tmp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Определяем тип файла и распаковываем
|
# Определяем тип файла и распаковываем
|
||||||
|
|||||||
Reference in New Issue
Block a user