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_738
Run 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: 500
Channels 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: 0
Registered users are defined by array in users
key in config file.
users:
- id: 0
username: admin
password: example