995eed0a9b
We've been passing around `Stream`s of `Frame`s everywhere even though we never made use of the async nature of those (i.e. we used future::ready everywhere). This resulted in unnecessarily complicated an hard to read code. Instead we now have a simple VecDeque outbound_buf which we push packets on if we want them to be sent. No more passing around complicated return values. |
||
---|---|---|
src | ||
.gitignore | ||
agpl-3.0.txt | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
mumble-web-proxy
mumble-web-proxy is a Mumble to WebSocket+WebRTC proxy.
The Mumble protocol uses TCP for control and UDP for voice. This proxy bridges those to WebSocket for control and WebRTC for voice.
While not limited to, its primary use-case is allowing mumble-web to connect to vanilla Mumble 1.2/1.3 servers.
Note that it requires an extension to the Mumble protocol which has not yet been stabilized and as such may change at any time, so make sure to keep mumble-web and mumble-web-proxy in sync.
Installing
Prerequisites
- Rust 1.39+ (e.g. via rustup)
- libnice development headers (
libnice-devel
on Fedora,libnice-dev
on Debian) - clang (
clang
on Fedora and Debian)
Building
For now, mumble-web-proxy must be built from source. Pre-built binaries may be provided at a later point in development.
Make sure you have Cargo (Rust's package manager) installed (e.g. via rustup), then run:
git clone https://github.com/johni0702/mumble-web-proxy
cd mumble-web-proxy
cargo build --release
The final binary will be at target/release/mumble-web-proxy
.
Running
mumble-web-proxy can only accept insecure websocket connections, so you will want to run it behind some web server which can terminate TLS. See mumble-web's README for an example.
Run mumble-web-proxy --help
to see available options.
E.g. if you want the proxy to listen on port 64737
and connect to your Mumble server at mumbleserver:64738
, run:
mumble-web-proxy --listen-ws 64737 --server mumbleserver:64738
Firewalls or NAT
If your mumble-web-proxy is running behind a firewall or NAT, you need to allocate a range of ports to it which it can use for ICE connection establishment.
mumble-web-proxy --listen-ws 64737 --server mumbleserver:64738 --ice-port-min 20000 --ice-port-max 21000
For NATs, you additionally need to provide it with its publicly reachable IP address(es):
--ice-ipv4 1.2.3.4 --ice-ipv6 1:2:3:4:5::6
License
mumble-web-proxy is available under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.