{%- set mumbleserver_config = pillar.get('mumbleserver_config', {}) -%} {#- present in mumbleserver_config and known in actual file options -#} {%- set processed_options = [] -%} {#- generic renderer used for mumbleserver known options, -#} {#- and unknown options -#} {%- macro render_option(keyword, default, config_dict=mumbleserver_config) -%} {%- set value = config_dict.get(keyword, default) -%} {%- if value is string or value is number -%} {{ keyword }}={{ value }} {%- else -%} {%- for single_value in value -%} {{ keyword }}={{ single_value }} {% endfor -%} {%- endif -%} {%- endmacro -%} {#- macros for render option according to present -#} {%- macro option_impl(keyword, default, present) -%} {%- if present -%} {%- do processed_options.append(keyword) -%} {%- set prefix='' -%} {%- else -%} {%- set prefix='#' -%} {%- endif -%} {#- add prefix to keyword -#} {%- set keyword = prefix ~ keyword -%} {{ render_option(keyword, default) }} {%- endmacro -%} {#- macros for render option commented by default -#} {%- macro option(keyword, default, present) -%} {{ option_impl(keyword, default, keyword in mumbleserver_config) }} {%- endmacro -%} {#- macros for render option uncommented by default -#} {%- macro option_default_uncommented(keyword, default, present) -%} {{ option_impl(keyword, default, True) }} {%- endmacro -%} # # This file is managed by salt. Manual changes risk being overwritten. # Murmur configuration file. # # General notes: # * Settings in this file are default settings and many of them can be overridden # with virtual server specific configuration via the Ice or DBus interface. # * Due to the way this configuration file is read some rules have to be # followed when specifying variable values (as in variable = value): # * Make sure to quote the value when using commas in strings or passwords. # NOT variable = super,secret BUT variable = "super,secret" # * Make sure to escape special characters like '\' or '"' correctly # NOT variable = """ BUT variable = "\"" # NOT regex = \w* BUT regex = \\w* # Path to database. If blank, will search for # murmur.sqlite in default locations or create it if not found. {{ option_default_uncommented('database', '/var/lib/mumble-server/mumble-server.sqlite') }} # If you wish to use something other than SQLite, you'll need to set the name # of the database above, and also uncomment the below. # Sticking with SQLite is strongly recommended, as it's the most well tested # and by far the fastest solution. # {{ option('dbDriver', '') }} {{ option('dbUsername', '') }} {{ option('dbPassword', '') }} {{ option('dbHost', '') }} {{ option('dbPort', '') }} {{ option('dbPrefix', 'murmur_') }} {{ option('dbOpts', '') }} # Murmur defaults to not using D-Bus. If you wish to use dbus, which is one of the # RPC methods available in Murmur, please specify so here. # {{ option_default_uncommented('dbus', 'system') }} # Alternate D-Bus service name. Only use if you are running distinct # murmurd processes connected to the same D-Bus daemon. {{ option('dbusservice', 'net.sourceforge.mumble.murmur') }} # If you want to use ZeroC Ice to communicate with Murmur, you need # to specify the endpoint to use. Since there is no authentication # with ICE, you should only use it if you trust all the users who have # shell access to your machine. # Please see the ICE documentation on how to specify endpoints. {{ option_default_uncommented('ice', '"tcp -h 127.0.0.1 -p 6502"') }} # Ice primarily uses local sockets. This means anyone who has a # user account on your machine can connect to the Ice services. # You can set a plaintext "secret" on the Ice connection, and # any script attempting to access must then have this secret # (as context with name "secret"). # Access is split in read (look only) and write (modify) # operations. Write access always includes read access, # unless read is explicitly denied (see note below). # # Note that if this is uncommented and with empty content, # access will be denied. {{ option('icesecretread', '') }} {{ option_default_uncommented('icesecretwrite', '') }} # How many login attempts do we tolerate from one IP # inside a given timeframe before we ban the connection? # Note that this is global (shared between all virtual servers), and that # it counts both successfull and unsuccessfull connection attempts. # Set either Attempts or Timeframe to 0 to disable. {{ option('autobanAttempts', '10') }} {{ option('autobanTimeframe', '120') }} {{ option('autobanTime', '300') }} # Specifies the file Murmur should log to. By default, Murmur # logs to the file 'murmur.log'. If you leave this field blank # on Unix-like systems, Murmur will force itself into foreground # mode which logs to the console. {{ option_default_uncommented('logfile', '/var/log/mumble-server/mumble-server.log') }} # If set, Murmur will write its process ID to this file # when running in daemon mode (when the -fg flag is not # specified on the command line). Only available on # Unix-like systems. {{ option_default_uncommented('pidfile', '/var/run/mumble-server/mumble-server.pid') }} # The below will be used as defaults for new configured servers. # If you're just running one server (the default), it's easier to # configure it here than through D-Bus or Ice. # # Welcome message sent to clients when they connect. {{ option_default_uncommented('welcometext', '"
Welcome to this server running Murmur.
Enjoy your stay!
"') }} # Port to bind TCP and UDP sockets to. {{ option_default_uncommented('port', '64738') }} # Specific IP or hostname to bind to. # If this is left blank (default), Murmur will bind to all available addresses. {{ option('host', '') }} # Password to join server. {{ option_default_uncommented('serverpassword', '') }} # Maximum bandwidth (in bits per second) clients are allowed # to send speech at. {{ option_default_uncommented('bandwidth', '72000') }} # Maximum number of concurrent clients allowed. {{ option_default_uncommented('users', '100') }} # Amount of users with Opus support needed to force Opus usage, in percent. # 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients. {{ option('opusthreshold', '100') }} # Maximum depth of channel nesting. Note that some databases like MySQL using # InnoDB will fail when operating on deeply nested channels. {{ option('channelnestinglimit', '10') }} # Regular expression used to validate channel names. # (Note that you have to escape backslashes with \ ) {{ option('channelname', '[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+') }} # Regular expression used to validate user names. # (Note that you have to escape backslashes with \ ) {{ option('username', '[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+') }} # Maximum length of text messages in characters. 0 for no limit. {{ option('textmessagelength', '5000') }} # Maximum length of text messages in characters, with image data. 0 for no limit. {{ option('imagemessagelength', '131072') }} # Allow clients to use HTML in messages, user comments and channel descriptions? {{ option('allowhtml', 'true') }} # Murmur retains the per-server log entries in an internal database which # allows it to be accessed over D-Bus/ICE. # How many days should such entries be kept? # Set to 0 to keep forever, or -1 to disable logging to the DB. {{ option('logdays', '31') }} # To enable public server registration, the serverpassword must be blank, and # this must all be filled out. # The password here is used to create a registry for the server name; subsequent # updates will need the same password. Don't lose your password. # The URL is your own website, and only set the registerHostname for static IP # addresses. # Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name. # {{ option('registerName', 'Mumble Server') }} {{ option('registerPassword', 'secret') }} {{ option('registerUrl', 'http://mumble.sourceforge.net/') }} {{ option('registerHostname', '') }} # If this option is enabled, the server will announce its presence via the # bonjour service discovery protocol. To change the name announced by bonjour # adjust the registerName variable. # See http://developer.apple.com/networking/bonjour/index.html for more information # about bonjour. {{ option('bonjour', 'True') }} # If you have a proper SSL certificate, you can provide the filenames here. # Otherwise, Murmur will create it's own certificate automatically. {{ option('sslCert', '') }} {{ option('sslKey', '') }} # If Murmur is started as root, which user should it switch to? # This option is ignored if Murmur isn't started with root privileges. {{ option_default_uncommented('uname', 'mumble-server') }} # If this options is enabled, only clients which have a certificate are allowed # to connect. {{ option('certrequired', 'False') }} # If enabled, clients are sent information about the servers version and operating # system. {{ option('sendversion', 'True') }} # You can configure any of the configuration options for Ice here. We recommend # leave the defaults as they are. # Please note that this section has to be last in the configuration file. # [Ice] {{ option_default_uncommented('Ice.Warn.UnknownProperties', '1') }} {{ option_default_uncommented('Ice.MessageSizeMax', '65536') }} {# Handling unknown in salt template options #} {%- for keyword in mumbleserver_config.keys() %} {%- if not keyword in processed_options -%} {#- send a blank default as it doesn't matter #} {{ render_option(keyword, '') }} {%- endif -%} {%- endfor %}