Kontinuum Send (csend)
Kontinuum Send — это программа для быстрой и безопасной передачи файлов между устройствами в локальной сети. Работает без серверов, без интернета, без регистрации — просто два устройства, подключённых к одному Wi-Fi.
Как это работает — в двух словах
Представь, что ты хочешь передать фотографии с ноутбука на компьютер друга. Обычно тебе нужна флешка, облако или мессенджер. С csend всё проще:
- На ноутбуке выбираешь файлы и получаешь кодовую фразу — например,
3-royal-mount-dance - Говоришь фразу другу голосом
- Друг вводит фразу на своём компьютере
- Файлы летят напрямую, зашифрованные — никто в сети не может их прочитать
Три режима работы
csend можно использовать тремя способами:
| Режим | Команда | Описание |
|---|---|---|
| TUI | csend или csend tui | Интерактивный интерфейс с тремя панелями (как в Midnight Commander) |
| CLI отправка | csend send файл1 файл2 | Отправить файлы из командной строки |
| CLI приём | csend recv 3-royal-mount-dance | Принять файлы по кодовой фразе |
Ключевые технологии
| Технология | Зачем |
|---|---|
| libp2p | P2P-сеть: устройства находят друг друга и общаются напрямую |
| mDNS | Обнаружение устройств в локальной сети (как Bluetooth, но через Wi-Fi) |
| ChaCha20Poly1305 | Шифрование файлов — быстрое и надёжное |
| BLAKE3 | Хеширование — превращает фразу в ключ шифрования |
| ratatui | Красивый терминальный интерфейс |
| Tokio | Асинхронность — всё работает параллельно без зависаний |
Структура документации
Этот учебник разбит на главы, каждая из которых объясняет одну часть системы:
| # | Глава | Что узнаешь |
|---|---|---|
| 1 | Архитектура | Из каких модулей состоит программа и как они связаны |
| 2 | Протокол передачи | Какими сообщениями обмениваются устройства — «язык» системы |
| 3 | Безопасность | Как работает шифрование и почему оно надёжное |
| 4 | Сеть и обнаружение | Как устройства находят друг друга в Wi-Fi сети |
| 5 | Интерфейс (TUI) | Как устроен интерактивный интерфейс |
Рекомендуемый порядок: Сначала изучи протокол (словарь сообщений), затем безопасность (зачем шифрование), потом сеть (как устройства находят друг друга). После этого архитектура покажет, как всё собрано вместе, а TUI — как пользователь взаимодействует с системой.
Структура исходного кода
crates/kontinuum-send/
├── src/
│ ├── main.rs # Точка входа: разбор аргументов, запуск
│ ├── code.rs # Кодовые фразы: генерация, хеширование
│ ├── protocol.rs # Типы сообщений P2P-протокола
│ ├── network.rs # Настройка libp2p-сети
│ ├── transfer.rs # Передача файлов: шифрование, чанки
│ ├── send.rs # CLI-режим отправки
│ ├── receive.rs # CLI-режим приёма
│ └── tui/
│ ├── mod.rs # Главный цикл TUI
│ ├── app.rs # Состояние приложения
│ ├── ui.rs # Отрисовка интерфейса (ratatui)
│ ├── pane_navigator.rs # Панель навигации (файловый браузер)
│ ├── pane_send.rs # Панель отправки
│ ├── pane_receive.rs # Панель приёма
│ ├── file_picker.rs # Выбор файлов и директорий
│ ├── discovery_task.rs # Фоновая задача: обнаружение устройств
│ ├── p2p_task.rs # Фоновая задача: передача файлов
│ ├── theme.rs # Цветовые темы
│ └── locale.rs # Локализация (EN/RU)
└── locales/
└── app.yml # Строки перевода