cloudpub-sdk

Crates.iocloudpub-sdk
lib.rscloudpub-sdk
version3.0.2
created_at2025-09-20 03:36:13.178534+00
updated_at2025-12-24 08:27:07.385915+00
descriptionRust SDK for CloudPub - A secure tunnel and service publishing platform
homepagehttps://github.com/ermak-dev/cloudpub
repositoryhttps://github.com/ermak-dev/cloudpub
max_upload_size
id1847371
size196,987
Ermak Development (ermak-dev)

documentation

README

cloudpub-sdk

Rust SDK

Rust SDK для CloudPub - платформы безопасной публикации локальных сервисов в интернете.

О библиотеке

cloudpub-sdk предоставляет программный интерфейс для интеграции функциональности CloudPub в ваши Rust приложения. SDK позволяет публиковать локальные сервисы, управлять туннелями и контролировать доступ программным способом.

Установка

Добавьте в Cargo.toml:

[dependencies]
cloudpub-sdk = "2"
cloudpub-common = "2"
anyhow = "1"
tokio = "1

Быстрый старт

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

use anyhow::Result;
use cloudpub_common::protocol::{Auth, Protocol};
use cloudpub_sdk::Connection;
use std::path::Path;

#[tokio::main]
async fn main() -> Result<()> {
    // Создание подключения с использованием builder pattern
    let mut conn = Connection::builder()
        .config_path(Path::new("/tmp/cloudpub.toml"))  // Путь к файлу конфигурации
        .log_level("info")                              // Уровень логирования
        .verbose(true)                                  // Вывод отладочной информации
        .credentials("user@example.com", "password")    // Учетные данные
        .timeout_secs(30)                               // Таймаут операций
        .build()
        .await?;

    // Публикация HTTP сервиса
    let endpoint = conn
        .publish(
            Protocol::Http,                         // Протокол
            "localhost:8080".to_string(),           // Локальный адрес
            Some("Мой веб-сервис".to_string()),    // Имя сервиса
            Some(Auth::None),                       // Без авторизации
        )
        .await?;

    println!("Сервис опубликован: {}", endpoint.as_url());
    println!("GUID сервиса: {}", endpoint.guid);

    // Получение списка всех сервисов
    let services = conn.ls().await?;
    for service in &services {
        println!("- {}: {}", service.guid, service.as_url());
    }

    // Остановка сервиса
    conn.stop(endpoint.guid.clone()).await?;
    println!("Сервис остановлен");

    // Запуск сервиса
    conn.start(endpoint.guid.clone()).await?;
    println!("Сервис запущен");

    // Удаление сервиса
    conn.unpublish(endpoint.guid.clone()).await?;
    println!("Сервис удален");

    // Очистка всех сервисов
    conn.clean().await?;
    println!("Все сервисы удалены");

    Ok(())
}

API Reference

Основные типы

Connection

Основной клиент для взаимодействия с CloudPub.

Endpoint

Представляет опубликованный сервис с информацией о доступе.

Protocol

Enum с поддерживаемыми протоколами: Http, Https, Tcp, Udp, OneC, WebDav, Minecraft.

Auth

Типы авторизации: None, Basic.

Примеры

Пример использования доступны в директории examples/:

# Запуск примера
cargo run --example example

Лицензия

Apache License 2.0

Поддержка

Commit count: 29

cargo fmt