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::permissionsandPermissionDenied. - pki_
types - Certificate/key DER types used by
ClientIdentityandServerCert. 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/*Removemessages. - 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 whilePacketTap::enabledsays 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.