Skip to main content

Crate mumcord_protocol

Crate mumcord_protocol 

Source
Expand description

Mumble protocol implementation.

The control channel (connect) gives a Handle for commands and a stream of Events. The voice transport plugs in via Event::CryptSetup / Handle::send_crypt_setup for UDP crypto and Event::UdpTunnel / Handle::send_tunnel for TCP-tunnelled voice.

Re-exports§

pub use ban::ADDRESS_LEN;
pub use ban::Ban;
pub use ban::format_start;
pub use ban::from_message;
pub use ban::parse_iso;
pub use ban::query_message;
pub use ban::to_message;
pub use ban::wire_mask;
pub use client::ConnectConfig;
pub use client::Connection;
pub use client::DisconnectReason;
pub use client::Event;
pub use client::Handle;
pub use client::LowOutcome;
pub use client::PLUGIN_DATA_MAX;
pub use client::PluginData;
pub use client::PluginTicket;
pub use client::SyncProgress;
pub use client::TextMessage;
pub use client::TextTarget;
pub use client::UdpPing;
pub use client::connect;
pub use client::connect_with_progress;
pub use client::connect_with_tap;
pub use client::set_client_release;
pub use error::CommandError;
pub use error::ConnectError;
pub use error::DenyKind;
pub use error::PermissionDenied;
pub use error::ProtocolError;
pub use error::RejectReason;
pub use query::LEGACY_ANSWER_LEN;
pub use query::LEGACY_QUERY_LEN;
pub use query::QueryAnswer;
pub use query::decode_answer;
pub use query::encode_legacy_query;
pub use query::encode_query;
pub use registered::RegisteredUser;
pub use state::Channel;
pub use state::CryptSetup;
pub use state::ServerInfo;
pub use state::ServerState;
pub use state::User;
pub use state::UserChange;
pub use tap::PacketTap;
pub use tap::TapDirection;
pub use tap::TapPacing;
pub use tap::TapPluginData;
pub use tap::TappedFrame;
pub use tls::CertVerifier;
pub use tls::ClientIdentity;
pub use tls::ServerCert;
pub use tls::cert_hash;
pub use version::MumbleVersion;
pub use voice::CryptStats;
pub use voice::LinkStats;
pub use voice::MAX_VOICE_PAYLOAD;
pub use voice::OutgoingAudio;
pub use voice::Transport;
pub use voice::VOICE_TARGET_MAX;
pub use voice::VoiceEvent;
pub use voice::VoicePacket;
pub use voice::VoiceTransport;
pub use voice::WhisperKind;

Modules§

ban
The server’s ban list (Epic 4, issue #254).
client
The control-channel connection: login, background read/write tasks, the event stream and the command API.
error
Typed errors for connecting, sending commands and server denials.
framing
TCP control-channel framing: every message is a 2-byte big-endian type, a 4-byte big-endian payload length and the payload (a protobuf message, or a raw voice packet for UdpTunnel).
permissions
Mumble ACL permission bits, as found in ServerState::permissions and PermissionDenied.
pki_types
Certificate/key DER types used by ClientIdentity and ServerCert. Re-exports the contents of the rustls-pki-types crate for easy access
proto
Control-channel messages generated from the vendored Mumble.proto.
query
The public server query behind the mumble:// link card (issue #175).
registered
The server’s list of registered users (Epic 4, issue #256).
state
The client’s view of the server: channel tree, connected users and server settings, built from the deltas in ChannelState/UserState/*Remove messages.
tap
A read-only view of the control channel for debugging tools such as Mumcord’s packet inspector. The connection hands every frame it writes or reads to a PacketTap, but only while PacketTap::enabled says so; otherwise the cost is one atomic load per frame.
tls
TLS setup: client certificate authentication and a server-certificate check that hands the decision to the caller. Mumble servers are usually self-signed, so instead of CA validation the caller pins the fingerprint (trust on first use). Handshake signatures are still verified, so the peer must really own the presented certificate.
udp_proto
UDP voice messages generated from the vendored MumbleUDP.proto.
version
Mumble version numbers and the features that depend on the server version.
voice
Voice transport: encrypted UDP (OCB2-AES128) to the server with automatic fallback to the TCP tunnel when UDP is blocked or stops working, and recovery back to UDP.