Skip to content

Kontinuum Send (csend)

Kontinuum Send — это программа для быстрой и безопасной передачи файлов между устройствами в локальной сети. Работает без серверов, без интернета, без регистрации — просто два устройства, подключённых к одному Wi-Fi.

Как это работает — в двух словах

Представь, что ты хочешь передать фотографии с ноутбука на компьютер друга. Обычно тебе нужна флешка, облако или мессенджер. С csend всё проще:

  1. На ноутбуке выбираешь файлы и получаешь кодовую фразу — например, 3-royal-mount-dance
  2. Говоришь фразу другу голосом
  3. Друг вводит фразу на своём компьютере
  4. Файлы летят напрямую, зашифрованные — никто в сети не может их прочитать
plantuml Diagram

Три режима работы

csend можно использовать тремя способами:

РежимКомандаОписание
TUIcsend или csend tuiИнтерактивный интерфейс с тремя панелями (как в Midnight Commander)
CLI отправкаcsend send файл1 файл2Отправить файлы из командной строки
CLI приёмcsend recv 3-royal-mount-danceПринять файлы по кодовой фразе

Ключевые технологии

ТехнологияЗачем
libp2pP2P-сеть: устройства находят друг друга и общаются напрямую
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               # Строки перевода