Document server link generation and channel addition commands

This commit is contained in:
evgeny committed 2026-10-28 11:13:34 +01:00
1 parent f1ff394f83
commit 52dadf8b23
3 files changed
+32 -5

No files matched your search

+12 -4
View File
@@ -73,7 +73,7 @@ Servers, clients, networks, маршруты, allowed_keys и NTP добавля
| nat | tun_ifname, tun_ip (IPv4), nat_via, port_start/end, forward=proto:node_id:IPv4:internal_port:external_port |
| tcp_proxy_client | enabled, tun_name/ip, mtu, via_node, socks/http_proxy enabled/addr, forward=port -> IPv4:port |
| tcp_proxy_server | tcp_recv_buf, fib, so_mark, netif, bind_ip, connect_timeout |
| chatserver / chat | db_path, join_password, allowed_groups, storage sizes, headless/audio binds и chat_setting API |
| chatserver / chat | db_path, add_key, allowed_groups, storage sizes, headless/audio binds и chat_setting API |
| ntp | enabled, server, interval |
| stun | enabled, server |
| reality | enabled, server_name, dest, short_id/short_ids, public/private_key, version, time_window, relay_idle_timeout, fingerprint |
@@ -93,9 +93,17 @@ auto_sockets принимает no/yes/android, auto_socket_protocols — tcp/ud
`print_config` выводит снимок в config/INFO. Private/signing keys заменены признаками наличия;
сети выводятся независимо от количества firewall rules.
`print_chatserver_invite_link` печатает bootstrap utun:// v3 в config/INFO и stderr при включённом чате:
channel_id=join_key=0, до 32 конфигурационных адресов, socketId=0, SNI до 63 байтов.
Это не invite конкретного канала и не снимок фактического bind/NAT.
`[chatserver] add_key` — 32 ненулевых случайных байта (64 HEX-символа), разрешающие запросить
добавление сервера в произвольный канал приглашающего. При загрузке из файла отсутствующий ключ
создаёт и атомарно сохраняет config_updater; заданный ошибочный/нулевой ключ отклоняется.
Ключ постоянный: перезапуск сохраняет ссылку, явная замена запрещает новые операции по старой ссылке.
Уже добавленные каналы от смены ключа не удаляются. Старое join_password больше не используется.
Серверную ссылку собирает `chat_server_link_build` через общий кодек из текущей проекции NODEINFO:
публичный ключ, socket_id, IP/port, протоколы и REALITY плюс add_key. Отдельный тип SERVER версии 0x04
не содержит ID канала или временного JOIN-ключа. Получить её можно через `chatcli server_link`;
foreground CLI также выводит её в stderr после старта. Обычный лог содержит только node/endpoints,
полную ссылку и add_key в него не выводим.
`update_config_keys` — устаревшее добавление global-секции с двумя проверенными HEX-ключами в конец файла.
Возвращает 0/-1, проверяет запись/закрытие, но не атомарно и не согласует node_id; штатный путь — config_updater.
+4
View File
@@ -2,6 +2,7 @@
Модуль обеспечивает согласованные X25519-ключи и node_id в INI-файле до его загрузки ядром.
При включённом REALITY также обеспечивает private_key и непустой список short_ids.
При наличии [chatserver] или global.chatserver_enabled обеспечивает постоянный add_key сервера.
Публичный контракт приведён в config_updater.h, общий разбор строк — в config_ini.h.
## Выбор значений
@@ -21,6 +22,9 @@
Некорректный/пустой/отсутствующий short_ids заменяется четырьмя случайными ID.
Корректный список сохраняется целиком. Ошибка одного элемента отклоняет весь список.
- При выключенном REALITY его параметры не исправляются.
- Отсутствующий [chatserver] add_key генерируется через RAND_bytes (32 байта) и сохраняется
той же атомарной заменой файла. Заданный неверный/нулевой ключ вызывает отказ без изменения файла:
автоматическая ротация секрета запрещена. Повторный запуск сохраняет корректный ключ побайтно.
HEX проверяется посимвольно до декодирования. Частичные результаты проверки не применяются.
Встроенный NUL и физические строки длиннее 1022 байтов до LF запрещены; CR учитывается в этом пределе.
+16 -1
View File
@@ -106,11 +106,26 @@ invite_nodes <ch_id>
и список nodes (node_id, имя).
Пример: chatcli invite_nodes 12345
server_link
Получить серверную utun:// ссылку текущего узла с постоянным ключом добавления.
Требуются включённый chatserver, сохранённый add_key и опубликованные адреса.
Ссылка секретная; старые серверные ссылки версии 0x03 нужно получить заново.
Пример на сервере: chatcli server_link
server_add <ch_id> <utun://...>
Добавить выбранный свой канал на сервер по его серверной ссылке.
Клиент создаёт обычное приглашение через себя и передаёт его серверу вместе с кодом доступа.
Сервер проверяет код и выполняет обычный JOIN по установленному соединению.
Ответ adding=true означает запуск; итог приходит событием connect_result через listen.
Повторное добавление не создаёт второй канал. Неверный/сменённый ключ даёт результат -10.
Пример на клиенте: chatcli server_add 12345 'utun://...'
connect <utun://...>
Подключиться к каналу по invite-ссылке.
Декодирует ссылку, сохраняет pubkey и адреса узла в БД,
запускает процесс подключения.
Пример: chatcli connect utun://AgR0ZXN0...
Принимает только ссылку CHANNEL версии 0x04; серверная ссылка требует server_add.
Пример: chatcli connect 'utun://...'
create <name>
Создать новый канал. Генерирует ключи X25519/Ed25519,