5 stable releases
| 3.0.2 | Dec 24, 2025 |
|---|---|
| 3.0.1 | Dec 16, 2025 |
| 2.4.5 | Sep 27, 2025 |
#1 in #библио
Used in 2 crates
145KB
3.5K
SLoC
cloudpub-common
Общая библиотека для компонентов CloudPub - платформы безопасной публикации локальных сервисов.
О библиотеке
cloudpub-common содержит общий код, используемый клиентом (cloudpub-client), сервером (cloudpub-server) и графическим интерфейсом (cloudpub-gui). Библиотека предоставляет базовую функциональность для работы с протоколами, сетевым взаимодействием, шифрованием и логированием.
Основные компоненты
Безопасность и шифрование
- TLS/SSL поддержка: Реализация через
rustlsс нативными сертификатами - Управление сертификатами: Парсинг X.509, работа с P12/PFX файлами
- Прокси поддержка: HTTP и SOCKS5 прокси с аутентификацией
Сетевое взаимодействие
- WebSocket протокол: Асинхронная работа через
tokio-tungstenite - Протокол сообщений: Protobuf-based коммуникация между компонентами
- Управление соединениями: Пулы соединений, переподключения, таймауты
Логирование и трассировка
- Структурированное логирование: На базе
tracingиtracing-subscriber - Ротация логов: Автоматическая ротация файлов логов
- Panic обработка: Перехват и логирование паник с backtrace
Использование
Добавление зависимости
[dependencies]
cloudpub-common = { version = "2.4.2", features = ["rustls"] }
Примеры использования
Инициализация логирования
use cloudpub_common::logging;
#[tokio::main]
async fn main() {
logging::init_tracing("info");
tracing::info!("Приложение запущено");
}
Работа с конфигурацией
use cloudpub_common::config::Config;
let config = Config::load()?;
println!("Сервер: {}", config.server);
println!("Токен установлен: {}", config.token.is_some());
Создание защищенного соединения
use cloudpub_common::tls;
let tls_config = tls::create_client_config()?;
let connector = TlsConnector::from(Arc::new(tls_config));
Локализация
use cloudpub_common::i18n;
let message = i18n::t!("connection-established");
println!("{}", message);
Архитектура
Модули
protocol- Определение протокола обмена сообщениямиtransport- Транспортный уровень (WebSocket, Unix sockets)tls- TLS/SSL функциональностьconfig- Управление конфигурациейlogging- Система логированияi18n- Интернационализацияutils- Вспомогательные утилиты
Протокол сообщений
Библиотека использует Protocol Buffers для определения сообщений:
message Message {
oneof payload {
PublishRequest publish = 1;
PublishResponse response = 2;
Data data = 3;
Control control = 4;
}
}
Зависимости
Основные
tokio- Асинхронная runtimebytes- Эффективная работа с байтовыми буферамиfutures- Асинхронные примитивыtracing- Структурированное логирование
Сетевые
tokio-tungstenite- WebSocket клиент/серверasync-http-proxy- HTTP прокси поддержкаasync-socks5- SOCKS5 прокси поддержка
Безопасность (опционально)
rustls- TLS имплементация на Rustrustls-native-certs- Системные сертификатыx509-parser- Парсинг X.509 сертификатовp12- Работа с PKCS#12 файлами
Сборка
# Сборка с базовыми возможностями
cargo build --package cloudpub-common
# Сборка с TLS поддержкой
cargo build --package cloudpub-common --features rustls
# Сборка с полной функциональностью
cargo build --package cloudpub-common --all-features
Тестирование
cargo test --package cloudpub-common
Версионирование
Библиотека следует семантическому версионированию (SemVer). Текущая версия: 2.4.2
Лицензия
Apache License 2.0
Вклад в проект
Приветствуются pull requests. Для крупных изменений сначала откройте issue для обсуждения.
Поддержка
- GitHub Issues
- Email: support@cloudpub.ru
Dependencies
~23–42MB
~562K SLoC