svxreflector.conf - Configuration file for the SvxReflector
conference server audio reflector
The svxreflector server is used to interconnect multiple
SvxLink nodes into one network. This man-page describe the configuration
file format for it.
SvxReflector look for configuration files in a number of places.
First it tries to find a user specific configuration file. It will look for
a user specific configuration file in:
$HOME/.svxlink/svxreflector.conf. If no user specific configuration
file can be found, svxreflector will look for the system wide configuration
file /etc/svxlink/svxreflector.conf. The --config command line
option may also be used to specify an arbitrary configuration file.
The configuration file is in the famous INI-file format. A generic
example of how such a file might look like is shown below.
[SECTION1]
VALUE1=1
VALUE2="TWO "
VAULE3="Multi "
"line"
[SECTION2]
VALUE1=2
This is a simple format that contain name=value pairs that belong
to a section. In written text, a specific configuration variable can be
referred to as SECTION1/VALUE2 meaning "configuration variable VALUE2
in section SECTION1".
The same variable name can exist in two different sections. For
example VALUE1 in section SECTION1 have the value 1 and VALUE1 in section
SECTION2 have the value 2. Values containing spaces at the beginning or end
of the line must be surrounded by citation characters (see SECTION1/VALUE2).
Likewise with a multi line value (see SECTION1/VALUE3).
Here is the description of all configuration variables that
svxreflector understands. The configuration variables are described section
for section.
The GLOBAL section contains application global configuration
data.
- CFG_DIR
- Specify the path to a directory that contain additional configuration
files. If a relative path is specified, the path will be relative to the
directory where the main configuration file is at. All files in the
specified directory will be read as additional configuration. Filenames
starting with a dot are ignored.
- TIMESTAMP_FORMAT
- This variable specifies the format of the timestamp that is written in
front of each row in the log file. The format string is in the same format
as specified in the strftime(3) manual page. The default is
"%c" which is described as: "the preferred date and time
representation for the current locale". The environment variables
LC_TIME, LC_ALL and LANG will affect how this time format will look. For
example, setting LC_TIME="sv_SE.UTF8" will give you Swedish
timestamp representation. Other examples of format specifiers are:
- %d - The day of the month as a decimal number (range 01 to 31)
- %b - The abbreviated month name according to the current
locale
- %Y - The year as a decimal number including the century
- %H - The hour as a decimal number using a 24-hour clock (range 00
to 23)
- %M - The minute as a decimal number (range 00 to 59)
- %S - The second as a decimal number (range 00 to 61)
So, TIMESTAMP_FORMAT="%d %b %Y %H:%M:%S" would give a
timestamp looking something like: "29 Nov 2005 22:31:59".
- LISTEN_PORT
- The TCP and UDP port number to use for network communications. The default
is 5300. Make sure to open this port for incoming traffic to the server on
both TCP and UDP. Clients do not have to open any ports in their
firewalls.
- SQL_TIMEOUT
- Use this configuration variable to set a time in seconds after which a
clients audio is blocked if he has been talking for too long. The default
is 0 (disabled).
- SQL_TIMEOUT_BLOCKTIME
- If a client has been talking for longer than the time specified in the
SQL_TIMEOUT configuration variable he will not be able to talk
again until the time in this configuration variable have elapsed. If not
specified, the default is one second.
- CODECS
- A comma separated list of allowed codecs. For the moment only one codec
can be specified. Choose from the following codecs: OPUS, SPEEX, GSM, S16
(uncompressed signed 16 bit), RAW (uncompressed 32 bit floats). The
default is OPUS and you should have a very good reason for changing this
since that codec provide both low bandwidth (~20kbps by default) and very
good audio quality.
- TG_FOR_V1_CLIENTS
- Set which talk group to place protocol version 1 clients in. Without this
configuration version 1 clients will not be able to use the reflector
since they cannot select a talk group by themselves. Talk groups should
normally be configured to start with the ITU-T E.212 Mobile Country Code
(MCC) for your country, e.g. 240 for Sweden.
- RANDOM_QSY_RANGE
- Specify in which talk group range the reflector server should select
random talk groups used when using the QSY functionality. The range is
specified using two colon separated values. The first one is the lower
limit and the second value is the number of talk groups in the range. As
an example, if set to 1239900:100 QSY talk groups will be selected from
the range 1239900 to 1239999. The recommended lower range to use is
<MCC>9900 where MCC is the ITU-T E.212 Mobile Country Code for your
country, e.g. 240 for Sweden.
- HTTP_SRV_PORT
- Set which port to use for the HTTP server. The HTTP server can be used to
fetch reflector status. No port is set by default. Don't expose this port
to the public Internet. There are multiple reasons for that. The built in
web server is very simple and could be incompatible with some clients. It
has not been audited for security problems so there may be security
issues. There is also the risk of some client overwhelming the reflector
with requests causing disturbances in the reflector operation.
Example: HTTP_SRV_PORT=8080
All users must be specified in the USERS section. Usernames are
totally arbitrary but typically the callsign is used. The purpose is to map
each username to a password. However, the password is not given directly but
instead a reference to the PASSWORDS section is given. It's done like this
so that multiple nodes can share a single password.
An example of how the USERS and PASSWORDS sections may look is
given below.
[USERS]
SM0ABC-1=MyNodes
SM0ABC-2=MyNodes
SM1XYZ=SM1XYZ
[PASSWORDS]
MyNodes="A very strong password!"
SM1XYZ="Another very good password?"
This will set up SM0ABC-1 and SM0ABC-2 to use the
same password specified by MyNodes in the PASSWORDS section. User
SM1XYZ have his own password.
It is possible to set configuration parameters that are only
applied to one talkgroup. Those parameters are placed in a configuration
section named "TG#<talkgroup id>". Example:
[TG#9999]
AUTO_QSY_AFTER=300
ALLOW=S[A-M]\\d.*|LA8PV
SHOW_ACTIVITY=0
The following configuration variables are valid in a talkgroup
configuration section.
- AUTO_QSY_AFTER
- Set this to the number of seconds after which an automatic QSY to a random
talkgroup is requested. This is typically used to keep call channels and
wide area channels clear so that stations does not dwell there for too
long. Auto QSY is only triggered directly aftar a talker stop event. The
default is that auto QSY is disabled (AUTO_QSY_AFTER=0).
- ALLOW
- A regular expression that must match the whole callsign of the nodes that
try to select this talkgroup. The regular expression standard used is the
same as for ECMAScript with the exception that the backslash special
patterns (e.g. \s, \d etc) must be expressed with double backslash
notation (e.g. \\s, \\d etc).
An example that match most Swedish callsigns and a specific
Norwegian one is "S[A-M]\\d.*|LA8PV". That expression will for
example match LA8PV, SM0SVX, SK3W, SA7ABC etc.
- SHOW_ACTIVITY
- If set to 0, do not indicate in the http status message when the talkgroup
is in use by a node. Default is 1 = show activity.
- /etc/svxlink/svxreflector.conf
- The system wide configuration file.
- ~/.svxlink/svxreflector.conf
- Per user configuration file.
- /etc/svxlink/svxreflector.d/*
- Additional configuration files. This directory is setup by the CFG_DIR
configuration variable.
Tobias Blomberg (SM0SVX) <sm0svx at svxlink dot org>
Bugs should be reported using the issue tracker at
https://github.com/sm0svx/svxlink.
Questions about SvxLink should not be asked using the issue
tracker. Instead use the group set up for this purpose at groups.io:
https://groups.io/g/svxlink
svxreflector(1), svxlink(1),
svxlink.conf(5),