Commit graph

6 commits

Author SHA1 Message Date
Folist
46d279394a Релиз 0.3.0: канал баг-репортов + фиксы панели
- Двусторонний приём баг-репортов в личку бота (флаг BUGREPORT_INBOX),
  редирект-заглушка на @TelemaxSvv_bot у остальных.
- Фикс «Открыть чат»: проба живости темы + TOPIC_ID_INVALID.
- «Начать чат»: имя контакта на теме + карточка контакта для 1:1.
- README: фича баг-репортов + обновлённая «Обратная связь».
2026-08-18 12:42:36 +03:00
Folist
ab5a46693f Релиз 0.2.0: README + версия
Пульт управления (/panel), поиск контакта MAX и старт чата, нативные reply
в обе стороны, зеркалирование удаления чата, уведомление о слёте MAX-сессии,
имя группы/диалога и участники в /info. Версия 0.1.0 → 0.2.0.
2026-08-17 21:32:04 +03:00
Folist
f28739d860 Прокси для Telegram (SOCKS5/HTTP/HTTPS) + уведомления об ошибках в ТГ
Фаза 1 — ядро прокси:
- src/telegram/proxy.ts: агент из TELEGRAM_PROXY (socks5/http/https), редакция
  кред в логах, override в ./data (перекрывает env), singleton на старте.
- app.ts: агент в Telegraf; upload.ts: то же для скачивания файлов с
  api.telegram.org/file (единственная точка мимо Telegraf). MAX всегда напрямую.
- setup.sh: вопрос про прокси до проверки связи; проверка Telegram, getUpdates и
  setChatPhoto идут через прокси; TELEGRAM_PROXY пишется в .env.

Фаза 2 — веб-панель:
- Эндпоинты GET/POST /api/proxy, /api/proxy/test, /api/system/restart.
- Карточка «Telegram-прокси» в Configuration: тест вживую + сохранить и
  перезапустить (persist в ./data, применение self-restart'ом).

Фаза 3 — ошибки моста в ТГ, без спама:
- src/bridge/errorReporter.ts: троттлинг (10 мин на ключ + 6/час потолок).
- Хуки: потеря/восстановление связи с MAX (дебаунс 60с), сбой доставки в
  Telegram, unhandled/uncaught (общий текст, без утечки токенов).
2026-08-16 20:06:05 +03:00
Folist
f6ee386a61 Аудит безопасности: HTTPS-панель, скоуп доверия CA, сериализация MAX-запросов
- redactSecrets: маскируются password/trackId/phone и любые строки от 512
  символов — пароль MAX больше не попадает в лог веб-панели открытым текстом
- Веб-панель по умолчанию работает по HTTPS с самоподписанным сертификатом
  (генерируется при первом старте в .data/tls); старые http-ссылки получают
  301-редирект на том же порту (polyglot по первому байту; resume строго в
  process.nextTick — иначе TLS-хендшейк зависает); /apikey даёт https-ссылку;
  PANEL_TLS=off для установки за своим reverse proxy
- Сертификаты Минцифры больше не доверяются всему контейнеру через
  NODE_EXTRA_CA_CERTS — src/max/ca.ts скоупит их только на соединения с MAX
  (ca в tls.connect + undici-агент для CDN-загрузок); Telegram и GitHub
  проверяются только по стандартным корням Mozilla
- Запросы одного опкода к MAX сериализуются (request() в client.ts) — два
  конкурентных MSG_SEND больше не перепутают messageId-связки редактирования
  и удаления
- Починена гонка первого чтения в ChatMapStore: конкурентные обращения
  форкали кэш, и часть upsert'ов молча терялась на диске
- Graceful shutdown по SIGTERM/SIGINT; в панели — реконнект WebSocket и
  периодическое обновление метрик; сравнение id в patchCachedChatLastMessage
  переведено на String() (BigInt-чаты не совпадали)
- Удалён мёртвый код: эндпоинты /api/debug/*, getPollVoters,
  createTelegramBot, цепочка historySynced, getChats(marker)
- React/Tailwind/lucide перенесены в devDependencies — рантайм-образ легче;
  vitest 4, npm audit: 0 уязвимостей; chmod 600 для .env в setup.sh/update.sh
- Новые тесты: redactSecrets, сторы (эвикшн/нормализация/конкурентность),
  сериализация запросов — всего 41
2026-08-14 21:13:26 +03:00
Folist
6ccb1a3fb2 Rename project TelgaMax -> Telemax
Cosmetic rename only — no functional changes. Working title sounded worse.
2026-08-13 16:05:51 +03:00
Folist
50c304fa8c Initial public release: MAX <-> Telegram bridge
Two-way message/media bridge between MAX and Telegram forum topics, with
group management, polls, calls, forwarding, and admin commands (/help,
/reboot, /kill, /donate) from Telegram. Includes one-command install
(install.sh) and interactive first-run setup (setup.sh) for a bare Ubuntu
server.
2026-08-13 16:00:10 +03:00