Mumble server implemented with Ruby and async-io/rb_mumble_protocol gems.
- Clone repo
git clone git@github.com:Odebe/murmur-ruby.git - Generate SSL cert
make generate-cert - Build docker image
docker-compose build - Run container
docker-compose up -d
Not all points will be implemented.
- Messages
- TCP
- Version
- Save client version
- Send back the actual server version
- UDPTunnel (see also 'Voice parsing')
- Loopback
- Channel speech
- Target speech
- Authenticate
- Credentials checking
- Updating the server's most popular CELT codec version
- Generating aes-128-ocb
- Announce users about new client
- Sync state
- Ping
- Send a ping back
- Update client timers
- Reject
- ServerSync
- ChannelRemove
- ChannelState
- Send all states on connection
- Links
- Description
- Permissions
- Update by Admin
- UserRemove
- Announce users about client disconnection
- UserState
- Change channel
- Mute\Deafen self
- BanList
- TextMessage
- To Tree
- To client
- To channel
- PermissionDenied
- ACL
- QueryUsers
- CryptSetup
- ContextActionModify
- ContextAction
- UserList
- VoiceTarget
- PermissionQuery
- CodecVersion
- UserStats
- RequestBlob
- ServerConfig
- SuggestConfig
- Version
- UDP
- Ping
- Voice (see also 'Voice parsing')
- Stable CryptState
- TCP
- Voice parsing
- OPUS
- CELT
- Speex
- Basic role model
- Traffic shaping
- Throttling
- Leaky bucket
See example run/config.yml
host: 0.0.0.0 port: 64_738Run make generate-cert
ssl_cert: 'run/server.cert' ssl_key: 'run/server.key' # Optional field ssl_ca: 'run/ca.cert'# Bits per second max_bandwidth: 192_000 welcome_text: 'Hello world!' allow_html: false image_message_length: 0 max_users: 15 recording_allowed: true max_username_length: 20 message_length: 500Channels are defined by array in rooms key in config file.
Channel has to contain fields id, name, parent_id and position.
Root channel is mandatory and defined by parent_id: null nd id: 0.
rooms: - id: 0 name: Root parent_id: null position: 0 - id: 1 name: guest_room parent_id: 0 position: 1 - id: 2 name: forum parent_id: 0 position: 0Registered users are defined by array in users key in config file.
users: - id: 0 username: admin password: example