Skip to content

Repository files navigation

MurmurRuby

Mumble server implemented with Ruby and async-io/rb_mumble_protocol gems.

Installation

Docker compose

  • 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

Roadmap

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
    • UDP
      • Ping
      • Voice (see also 'Voice parsing')
      • Stable CryptState
  • Voice parsing
    • OPUS
    • CELT
    • Speex
  • Basic role model
  • Traffic shaping
    • Throttling
    • Leaky bucket

Configuration

See example run/config.yml

General configuration parameters

Connection block

host: 0.0.0.0port: 64_738

SSL block

Selfsigned cert

Run make generate-cert

ssl_cert: 'run/server.cert'ssl_key: 'run/server.key'# Optional fieldssl_ca: 'run/ca.cert'
Let's Encrypt (recommended)

Server settings

# Bits per secondmax_bandwidth: 192_000welcome_text: 'Hello world!'allow_html: falseimage_message_length: 0max_users: 15recording_allowed: truemax_username_length: 20message_length: 500

Channel configuration

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: 0name: Rootparent_id: nullposition: 0
- id: 1name: guest_roomparent_id: 0position: 1
- id: 2name: forumparent_id: 0position: 0

Users configuration

Registered users are defined by array in users key in config file.

users:
- id: 0username: adminpassword: example

About

Mumble server written in Ruby and async-io

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages