Files
utun2/tools/chatcli_commands.txt
T
evgeny 38c9f229bc stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll
- stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close
- utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP),
  add deferred drain in both Phase J and L
- stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39,
  exchange ed25519_pubkey in both handshake directions
- etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in
  etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb
- chat_sync.c: fix lk->conn NULL dereference for TCP links
- test_stcp.c: update stcp_server_create/stcp_client_connect callsites
- tools/chat_tcp_test: change transport udp→tcp
2026-08-07 00:48:27 +03:00

78 lines
3.0 KiB
Plaintext

chatcli — headless chat CLI for uTun
=====================================
TCP JSON-RPC клиент для управления чатом uTun без GUI.
Настройка сервера
-----------------
В конфиге uTun в секции [chatserver] добавить:
headless_control_bind=127.0.0.1:9999
Протокол
--------
JSON line: запрос {"id":N,"cmd":"...","params"} → ответ {"id":N,"ok":true,"data":...}
При подписке (subscribe) сервер шлёт асинхронные события: {"event":"...",...}
Переменные окружения
--------------------
CHATCLI_HOST — хост по умолчанию (127.0.0.1)
CHATCLI_PORT — порт по умолчанию (9999)
Команды
-------
ping
Проверка соединения и uptime сервера.
Пример: chatcli ping
status
Статус узла: NTP синхронизация, активные соединения, NAT.
Пример: chatcli status
channels
Список всех каналов с метаданными: id, имя, owner, число мемберов,
число сообщений, сколько онлайн.
Пример: chatcli channels
members <ch_id>
Список участников канала с полным состоянием:
node_id, имя, online, connected, публичные ключи (x25519/ed25519 hex),
адреса (ip, port, proto, rtt).
Пример: chatcli members 12345
messages <ch_id> [count]
Последние N сообщений канала (по умолчанию 20):
id, timestamp, author_id, author_name, content_type, data.
Пример: chatcli messages 12345 10
send <ch_id> <text>
Отправить текстовое сообщение в канал.
Пример: chatcli send 12345 "hello world"
invite <ch_id>
Создать invite-ссылку для канала (формат utun://...).
Ссылка включает pubkey, адреса сервера и ID канала.
Пример: chatcli invite 12345
connect <utun://...>
Подключиться к каналу по invite-ссылке.
Декодирует ссылку, сохраняет pubkey и адреса узла в БД,
запускает процесс подключения.
Пример: chatcli connect utun://AgR0ZXN0...
create <name>
Создать новый канал. Генерирует ключи X25519/Ed25519,
подписывает join-сообщение.
Пример: chatcli create "My Group"
listen
Подписаться на события и слушать в реальном времени.
Получает: новые сообщения, изменения мемберов, приглашения.
Выход: Ctrl+C
Пример: chatcli listen
Настройки хоста/порта
---------------------
chatcli --host 192.168.1.1 --port 8888 channels
CHATCLI_HOST=10.0.0.1 CHATCLI_PORT=7777 chatcli status