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 Список участников канала с полным состоянием: node_id, имя, online, connected, публичные ключи (x25519/ed25519 hex), адреса (ip, port, proto, rtt). Пример: chatcli members 12345 messages [count] Последние N сообщений канала (по умолчанию 20): id, timestamp, author_id, author_name, content_type, data. Пример: chatcli messages 12345 10 send Отправить текстовое сообщение в канал. Пример: chatcli send 12345 "hello world" invite Создать invite-ссылку для канала (формат utun://...). Ссылка включает pubkey, адреса сервера и ID канала. Пример: chatcli invite 12345 connect Подключиться к каналу по invite-ссылке. Декодирует ссылку, сохраняет pubkey и адреса узла в БД, запускает процесс подключения. Пример: chatcli connect utun://AgR0ZXN0... create Создать новый канал. Генерирует ключи 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