Skip to content

A collection of Blizzard NGDP tools written for Rust.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

wowemulation-dev/cascette-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

cascette-rs

Open-source Rust implementation of Blizzard's NGDP (Next Generation Distribution Pipeline) for World of Warcraft emulation.

Discord License License CI Status Crates.io Version docs.rs

🎯 Project Status

Current Version: 0.1.0 (Ready for Release)

Core Components

Component Version Status Description
ngdp-bpsv 0.1.0 βœ… Stable BPSV parser/writer for NGDP formats
ribbit-client 0.1.0 βœ… Stable Ribbit protocol client with signature verification
tact-client 0.1.0 βœ… Stable TACT HTTP client for version/CDN queries
ngdp-cdn 0.1.0 βœ… Stable CDN content delivery with parallel downloads
ngdp-cache 0.1.0 βœ… Stable Caching layer for NGDP operations
ngdp-client 0.1.0 βœ… Stable CLI tool for NGDP operations

Implementation Progress

  • βœ… Ribbit Protocol: Full implementation including V1/V2, signature verification, all endpoints
  • βœ… TACT Protocol: HTTP/HTTPS clients for version and CDN queries
  • βœ… BPSV Format: Complete parser and builder with zero-copy optimizations
  • βœ… CDN Operations: Parallel downloads, streaming, retry logic, rate limiting
  • βœ… Caching: Transparent caching for all protocols with TTL support
  • βœ… CLI Tool: Feature-complete command-line interface
  • 🚧 CASC Storage: Local storage implementation (planned for v0.2.0)
  • 🚧 TVFS: TACT Virtual File System (planned for v0.2.0)

πŸš€ Quick Start

Library Usage

Add to your Cargo.toml:

[dependencies]
ribbit-client = "0.1"
ngdp-bpsv = "0.1"

Basic example:

use ribbit_client::{Region, RibbitClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a client for US region
    let client = RibbitClient::new(Region::US);

    // Request WoW versions with typed API
    let versions = client.get_product_versions("wow").await?;

    // Print version information
    for entry in &versions.entries {
        println!(
            "{}: {} (build {})",
            entry.region, entry.versions_name, entry.build_id
        );
    }

    Ok(())
}

πŸ“¦ Installation

CLI Tool

cargo install ngdp-client

Library Usage

cargo add ribbit-client ngdp-bpsv tact-client ngdp-cdn ngdp-cache

From source

git clone https://github.com/wowemulation-dev/cascette-rs
cd cascette-rs
cargo build --release
# CLI binary will be at target/release/ngdp

πŸ“š Documentation

πŸ“š Online References

πŸ”§ Features

Complete

  • BPSV Parser/Writer (ngdp-bpsv)

    • βœ… Complete BPSV format support with zero-copy parsing
    • βœ… Type-safe field definitions (STRING, HEX, DEC)
    • βœ… Schema validation and sequence number handling
    • βœ… Builder pattern for document creation
    • βœ… Round-trip compatibility
  • Ribbit Protocol Client (ribbit-client)

    • βœ… All Blizzard regions (US, EU, CN, KR, TW, SG)
    • βœ… V1 (MIME) and V2 (raw) protocol support
    • βœ… Typed API for all endpoints
    • βœ… PKCS#7/CMS signature verification
    • βœ… Certificate and OCSP support
    • βœ… Automatic retry with exponential backoff
    • βœ… DNS caching for performance
  • TACT HTTP Client (tact-client)

    • βœ… Version and CDN configuration queries
    • βœ… Support for V1 (port 1119) and V2 (HTTPS) protocols
    • βœ… Typed response parsing
    • βœ… Automatic retry handling
    • βœ… All Blizzard regions supported
  • CDN Content Delivery (ngdp-cdn)

    • βœ… Parallel downloads with progress tracking
    • βœ… Streaming operations for large files
    • βœ… Automatic retry with rate limit handling
    • βœ… Content verification
    • βœ… Configurable connection pooling
    • βœ… Automatic fallback to backup CDN servers
    • βœ… Built-in support for community mirrors (arctium.tools, reliquaryhq.com)
  • Caching Layer (ngdp-cache)

    • βœ… Transparent caching for all NGDP operations
    • βœ… TTL-based expiration policies
    • βœ… Streaming I/O for memory efficiency
    • βœ… CDN-compatible directory structure
    • βœ… Batch operations for performance
  • CLI Tool (ngdp-client)

    • βœ… Product queries and version information
    • βœ… Certificate operations
    • βœ… BPSV inspection
    • βœ… Multiple output formats (text, JSON, BPSV)
    • βœ… Beautiful terminal formatting

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Special thanks to the WoW emulation community and the documentation efforts at wowdev.wiki.

πŸ“„ License

This project is dual-licensed under either:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


Note: This project is not affiliated with or endorsed by Blizzard Entertainment. It is an independent implementation based on reverse engineering efforts by the community for educational and preservation purposes.

About

A collection of Blizzard NGDP tools written for Rust.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •