Skip to content

Odebe/murmur-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3377bf7 · Feb 13, 2024

History

58 Commits
Feb 13, 2024
Jul 31, 2023
Jul 10, 2023
Jul 29, 2023
Jul 29, 2023
Jul 10, 2023
Jun 30, 2023
Jul 28, 2023
Feb 11, 2024
Feb 11, 2024
Jul 29, 2023
Feb 12, 2024
Feb 13, 2024
Jul 29, 2023
Jul 26, 2023
Jul 29, 2023

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.0
port: 64_738

SSL block

Selfsigned cert

Run make generate-cert

ssl_cert: 'run/server.cert'
ssl_key: 'run/server.key'

# Optional field
ssl_ca: 'run/ca.cert'
Let's Encrypt (recommended)

Server settings

# 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

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: 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

Users configuration

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

users:
  - id: 0
    username: admin
    password: example

Releases

No releases published

Packages

No packages published

Languages