Add signed username claims and profile recovery
Some checks failed
Android CI / build (push) Has been cancelled
Some checks failed
Android CI / build (push) Has been cancelled
This commit is contained in:
12
README.md
12
README.md
@@ -14,8 +14,11 @@
|
||||
- Есть foreground service, Room-хранилище, ACK/retry очередь и UI в стиле Telegram.
|
||||
- Реализованы главный экран со списком чатов, отдельный экран диалога, меню `три точки -> Настройки`, ручная проверка обновлений и опциональная автопроверка через `version.json`.
|
||||
- В меню `три точки` доступны `Карта сети`, `Пакеты` и `Настройки`.
|
||||
- Добавлены профили пользователей: `firstName`, `lastName`, `username`, описание, локальное редактирование профиля и поиск профиля по `username`.
|
||||
- Профили распространяются как mesh-пакеты и кэшируются узлами локально; по найденному `username` можно получить `peerId`.
|
||||
- Добавлены профили пользователей: `firstName`, `lastName`, `username`, описание, локальное редактирование профиля и поиск профиля по `username`, имени, фамилии, полному имени и `peerId`.
|
||||
- Профили распространяются как mesh-пакеты и кэшируются узлами локально; по найденному `username` можно получить `peerId`, и наоборот по `peerId` в UI показывается связанный `@username`, если claim уже известен.
|
||||
- Username оформлен как подписанный lease-claim на 14 дней: если владелец не появляется в сети 2 недели, username снова становится свободным.
|
||||
- Добавлен recovery bundle для переноса профиля и права на username на новый телефон даже без доступа к старому устройству.
|
||||
- Добавлена защита от захвата чужого `username`: активный claim другого владельца не принимается, а смена `peerId` без подписи владельца не даёт забрать профиль.
|
||||
- В настройки добавлены диагностические режимы: карта сети и журнал исходящих, входящих и транзитных пакетов.
|
||||
- Обновление приложения выполняется через APK во временном каталоге: проверка версии, скачивание, остановка mesh и запуск системной установки через `Intent`.
|
||||
- При выключенном Bluetooth приложение запрашивает его включение перед запуском mesh.
|
||||
@@ -88,6 +91,10 @@
|
||||
- [x] Подключить Room и базовую схему хранения.
|
||||
- [x] Реализовать базовую регистрацию пользователя (локальный профиль).
|
||||
- [x] Добавить кэш профилей из mesh-сети и поиск по `username`.
|
||||
- [x] Добавить поиск профилей по имени, фамилии, полному имени и `peerId`.
|
||||
- [x] Добавить lease-механику для `username` с автоматическим освобождением через 14 дней неактивности.
|
||||
- [x] Добавить перенос профиля на новый телефон через recovery bundle.
|
||||
- [x] Добавить защиту от захвата чужого `username` и подмены `peerId` в профиле.
|
||||
- [x] Добавить журнал исходящих, входящих и транзитных пакетов.
|
||||
- [x] Добавить режим карты сети в настройках.
|
||||
- [x] Добавить логирование сети и debug-экран маршрутов.
|
||||
@@ -123,4 +130,5 @@
|
||||
- Все узлы равноправны на уровне текущей архитектуры: каждое устройство может обнаруживать соседей, принимать и ретранслировать пакеты.
|
||||
- Количество пользователей не бесконечно. Практический предел зависит от плотности устройств, качества BLE-эфира, числа одновременных соединений, частоты ретрансляции и ограничений батареи Android.
|
||||
- Каталог профилей хранится распределённо: каждый узел кэширует увиденные профильные пакеты, поэтому поиск по `username` зависит от того, успел ли профиль распространиться по mesh.
|
||||
- Право на `username` определяется не текущим `peerId`, а подписанным claim владельца. Это защищает имя от простого копирования `peerId` другим устройством.
|
||||
- Для школы такая схема подходит как офлайн-сеть без интернета, но для больших нагрузок всё равно понадобятся дополнительные оптимизации маршрутизации, дедупликации и доставки.
|
||||
|
||||
Reference in New Issue
Block a user