You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
4.2 KiB
94 lines
4.2 KiB
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" |
|
|
|
attach <ch_id> <path> [--video] |
|
Прикрепить файл к сообщению. Файл копируется в медиа-каталог канала. |
|
С флагом --video — файл обрабатывается как видео: если ffmpeg доступен, |
|
перекодируется в H.264/MP4 (720p, ≤2 Мбит); если уже в нужном формате — |
|
отправляется как есть. |
|
Пример: chatcli attach 12345 /tmp/photo.jpg |
|
chatcli attach 12345 /tmp/clip.mov --video |
|
|
|
invite <ch_id> [node_id] |
|
Создать invite-ссылку для канала (формат utun://...). |
|
Без node_id — автоматический выбор лучшего достижимого узла. |
|
С node_id — ссылка ведёт на указанный узел (hex, например 0x1234). |
|
Ссылка включает pubkey, адреса выбранного узла и ID канала. |
|
Пример: chatcli invite 12345 |
|
chatcli invite 12345 0x1a2b3c |
|
|
|
invite_nodes <ch_id> |
|
Список достижимых узлов канала, пригодных для invite (включая свой узел). |
|
Ответ содержит auto_node_id — узел, выбранный авто-логикой, |
|
и список nodes (node_id, имя). |
|
Пример: chatcli invite_nodes 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
|
|
|