cloudpub-common 3.0.1

Common code for the client, server, and GUI
Documentation
# 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

## Использование

### Добавление зависимости

```toml
[dependencies]
cloudpub-common = { version = "2.4.2", features = ["rustls"] }
```

### Примеры использования

#### Инициализация логирования

```rust
use cloudpub_common::logging;

#[tokio::main]
async fn main() {
    logging::init_tracing("info");
    tracing::info!("Приложение запущено");
}
```

#### Работа с конфигурацией

```rust
use cloudpub_common::config::Config;

let config = Config::load()?;
println!("Сервер: {}", config.server);
println!("Токен установлен: {}", config.token.is_some());
```

#### Создание защищенного соединения

```rust
use cloudpub_common::tls;

let tls_config = tls::create_client_config()?;
let connector = TlsConnector::from(Arc::new(tls_config));
```

#### Локализация

```rust
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 для определения сообщений:

```protobuf
message Message {
  oneof payload {
    PublishRequest publish = 1;
    PublishResponse response = 2;
    Data data = 3;
    Control control = 4;
  }
}
```

## Зависимости

### Основные
- `tokio` - Асинхронная runtime
- `bytes` - Эффективная работа с байтовыми буферами
- `futures` - Асинхронные примитивы
- `tracing` - Структурированное логирование

### Сетевые
- `tokio-tungstenite` - WebSocket клиент/сервер
- `async-http-proxy` - HTTP прокси поддержка
- `async-socks5` - SOCKS5 прокси поддержка

### Безопасность (опционально)
- `rustls` - TLS имплементация на Rust
- `rustls-native-certs` - Системные сертификаты
- `x509-parser` - Парсинг X.509 сертификатов
- `p12` - Работа с PKCS#12 файлами

## Сборка

```bash
# Сборка с базовыми возможностями
cargo build --package cloudpub-common

# Сборка с TLS поддержкой
cargo build --package cloudpub-common --features rustls

# Сборка с полной функциональностью
cargo build --package cloudpub-common --all-features
```

## Тестирование

```bash
cargo test --package cloudpub-common
```

## Версионирование

Библиотека следует семантическому версионированию (SemVer). Текущая версия: 2.4.2

## Лицензия

Apache License 2.0

## Вклад в проект

Приветствуются pull requests. Для крупных изменений сначала откройте issue для обсуждения.

## Поддержка

- [GitHub Issues]https://github.com/ermak-dev/cloudpub/issues
- Email: support@cloudpub.ru