Skip to content
AWPMasterGamesPublic

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Tebegram

Мессенджер для локальной сети: десктопное приложение, сервер и веб-версия на одном протоколе.

Обмен сообщениями и файлами, групповые чаты, голосовая связь. Разворачивается копированием папки, без базы данных, контейнеров и внешних сервисов. Работает в изолированной сети без доступа в интернет.

Релиз Лицензия Платформа .NET

Веб-версия открывается без установки: awpmastergames.github.io/Tebegram Десктопное приложение: последний релиз, файл TebegramSetup-2.0.2.exe.

QR-код на веб-версию Tebegram

Наведите камеру телефона на код, чтобы открыть веб-версию. Страница добавляется на главный экран как обычное приложение.


Содержание


Возможности

Раздел Что реализовано
Переписка личные и групповые чаты, папки, поиск по контактам и по всем пользователям сервера
Статусы сообщений часики, затем галочка при приёме сервером, затем две галочки после открытия чата собеседником; красный восклицательный знак при ошибке
Файлы любой тип размером до 16 МБ, превью фотографий и видео в чате, индикатор загрузки
Кэш медиаданных скачанное хранится локально и повторно не загружается; объём и очистка доступны в настройках
Голосовая связь звонки между двумя компьютерами либо между двумя браузерами, шумоподавление и нормализация громкости
Оформление светлая и тёмная темы, переключение без перезапуска приложения
Веб-версия PWA: устанавливается на телефон, работает офлайн, обновляется автоматически
Установка установщик Windows с проверкой обновлений

Быстрый старт

Требуется .NET 8 SDK. Сервер собирается под любой системой, десктопный клиент - только под Windows.

1. Сервер

cd Tebegram-server
dotnet run

Сервер слушает порт 5000. Проверка: открыть http://localhost:5000/Test, ответ должен быть HI!.

2. Десктопный клиент

dotnet run --project Tebegram-client

Либо загрузить готовый установщик со страницы релизов.

3. Веб-версия

Опубликованная копия доступна по адресу awpmastergames.github.io/Tebegram: устанавливать ничего не требуется, страница сама находит адрес сервера. Запущенный локально сервер раздаёт ту же версию по адресу http://localhost:5000/app.

Как клиент находит сервер

При входе в левом верхнем углу выбирается источник адреса. Вариант «main» берёт адрес из файла Adress.txt в этом репозитории, вариант «Другой» позволяет ввести адрес вручную. Выбор сохраняется между запусками. Такая схема применяется потому, что сервер обычно поднимается за туннелем со сменным адресом.


Архитектура

┌──────────────────┐                          ┌──────────────────┐
│  Клиент Windows  │                          │  Веб-клиент PWA  │
│   C#, WPF        │                          │   JavaScript     │
└────────┬─────────┘                          └─────────┬────────┘
         │                                              │
         │      HTTP: запрос и ответ                    │
         │      WebSocket: доставка по инициативе       │
         │                 сервера                      │
         └──────────────────┬───────────────────────────┘
                            ▼
                  ┌──────────────────┐
                  │      Сервер      │
                  │  ASP.NET Core    │
                  │  Minimal API     │
                  └────────┬─────────┘
                           ▼
                  ┌──────────────────┐
                  │    Хранилище     │
                  │  файлы, без СУБД │
                  └──────────────────┘

Два канала связи

По HTTP выполняется то, что инициирует пользователь: вход, загрузка истории переписки, отправка файлов. По WebSocket приходит то, что должно появляться без запроса: новое сообщение, отметка о прочтении, входящий звонок. Периодический опрос сервера не применяется.

Единый протокол

Оба клиента обращаются к серверу одинаково: одни и те же эндпоинты, единый формат сообщений, единый протокол передачи голоса. Веб-версия является вторым интерфейсом к той же системе, а не отдельным продуктом. Третий клиент добавляется без изменений серверной части.


Структура репозитория

Путь Содержимое
Tebegram-client/ десктопное приложение под Windows: C#, WPF, .NET 8
Tebegram-server/ сервер: C#, ASP.NET Core, Minimal API
docs/ веб-клиент PWA; эта же папка опубликована через GitHub Pages по адресу awpmastergames.github.io/Tebegram
Installer/ сборка установщика на Inno Setup
Adress.txt адрес сервера; клиенты читают первую строку при выборе источника «main»
Tebegram-client/Adress.txt зеркало предыдущего файла для установленных клиентов версии 2.0.0; адрес в обоих файлах должен совпадать
version.txt версия последнего релиза, по ней работает проверка обновлений

Технологии

Десктопный клиент

C#, WPF, .NET 8. Интерфейс построен на привязке данных, элементы управления переопределены собственными шаблонами. Звук обрабатывается библиотекой NAudio; фильтрация, шумовой гейт и нормализация громкости реализованы самостоятельно.

Сервер

C#, ASP.NET Core в стиле Minimal API. Около 26 HTTP-эндпоинтов и два канала WebSocket: для сообщений и для голоса. Данные хранятся в файлах с автосохранением по таймеру.

Веб-клиент

Чистый JavaScript без фреймворков и без этапа сборки. Офлайн-работа обеспечивается service worker, звонки построены на Web Audio API и AudioWorklet, установка на телефон описана манифестом PWA.

Протокол

Текстовый, со служебными разделителями. Общий для обоих клиентов, благодаря чему они взаимозаменяемы.


Ограничения и планы

Проект учебный и рассчитан на доверенную локальную сеть. Известные слабые места перечислены ниже вместе с корректными решениями.

Ограничение Корректное решение
Пароли хранятся открытым текстом хэширование алгоритмом bcrypt или Argon2
Вход выполняется методом GET, пароль попадает в адрес и журналы POST с телом запроса
WebSocket не проверяет подлинность подключения токен сессии вместо идентификатора в адресе
Права на запросах не проверяются проверка владельца на стороне сервера
Хранение в файлах: нет транзакций и индексов переход на SQLite
Голос передаётся без сжатия кодек Opus
Групповые звонки отсутствуют, комната рассчитана на двоих микширование потоков на сервере

Документация

Материал Содержание
Wiki проекта описание, установка, запуск, ответы на вопросы, кейсы тестирования, история версий
Веб-клиент и установка на телефон публикация PWA, установка на Android и iPhone
Сборка установщика параметры Inno Setup, выпуск релиза
Форма обратной связи отзывы и замечания пользователей

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages